include('wintools') include("wincontrolworks") func _create(_data) var(ctrl) fvar(style_) if (isndef(TickPosition)) if (Orientation == "Vertical" and (TickPosition == "Top" or TickPosition == "Bottom")) error("Inconsistent setting for Orientation and TickPosition!") end if (Orientation == "Horizontal" and (TickPosition == "Left" or TickPosition == "Right")) error("Inconsistent setting for Orientation and TickPosition!") end end beginStyle('wxSL_'+ upper(Orientation)) addStyle(isNdef(TickLabels), 'wxSL_LABELS') addStyle(isndef(TickPosition), 'wxSL_' + TickPosition) addStyle(isndef(TickBothSides), 'wxSL_BOTH') style_ = endStyle() println(slider, ' = new wxSlider(this, ID_', upper(slider), ', ', Value, ', ', Minimum, ', ', Maximum, ', wxPoint(', Left, ', ', Top, '), wxSize(', Width, ', ', Height, '), ', style_, ');') println(slider + '->SetLineSize(' + SingleStep + ');') println(slider + '->SetPageSize(' + PageStep + ');') if(isndef(TickInterval)) println(slider + '->SetTickFreq(' + TickInterval + ', 0);') end ctrl = slider registerId(ctrl) if(linked(onValueChanged)) createEventExArg1(ctrl, 'EVT_COMMAND_SCROLL', 'wxScrollEvent', 'onValueChanged', 'event.GetPosition()'@int) end if(linked(onSliderMoved)) createEventExArg1(ctrl, 'EVT_COMMAND_SCROLL_THUMBTRACK', 'wxScrollEvent', 'onSliderMoved', 'event.GetPosition()'@int) end if(linked(onSliderReleased)) createEventEx(ctrl, 'EVT_COMMAND_SCROLL_THUMBRELEASE', 'wxScrollEvent', 'onSliderReleased') end end func initFree() _create('') end func init() lng.decl_priv_var(slider, 'wxSlider*') if(not linked(doCreate)) fvar(old) old = block.select(BLK_BODY) _create('') block.select(old) end end func doCreate(data) _create(data) end func doMaximum(_data) println(ctrl+'->SetRange(', ctrl + '->GetMin(), ', _data, ');') end func doMinimum(_data) println(ctrl+'->SetRange(', _data, ', ', ctrl + '->GetMax());') end func doValue(_data) println(ctrl + '->SetValue(', _data, ');') end func CurrentValue() return(ctrl + '->GetValue()') end