summaryrefslogtreecommitdiff
path: root/Mac/Tools/IDE/Wcontrols.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Tools/IDE/Wcontrols.py')
-rw-r--r--Mac/Tools/IDE/Wcontrols.py817
1 files changed, 408 insertions, 409 deletions
diff --git a/Mac/Tools/IDE/Wcontrols.py b/Mac/Tools/IDE/Wcontrols.py
index 58fc31bfb9..00b06ac0d3 100644
--- a/Mac/Tools/IDE/Wcontrols.py
+++ b/Mac/Tools/IDE/Wcontrols.py
@@ -4,430 +4,429 @@ import Wbase
class ControlWidget(Wbase.ClickableWidget):
-
- """Baseclass for all native controls."""
-
- def __init__(self, possize, title = "Control", procID = 0, callback = None, value = 0, min = 0, max = 1, viewsize = 0):
- Wbase.ClickableWidget.__init__(self, possize)
- self._control = None
- self._title = title
- self._callback = callback
- self._procID = procID
- self._value = value
- self._min = min
- self._max = max
- self._enabled = 1
- self._viewsize = viewsize
-
- def open(self):
- self._calcbounds()
-
- # NewControl doesn't accept 32-bit value, min, or max, so for consistency
- # with the new 32-bit set/get methods, out-of-range values are initially
- # set as zero, followed by a 32-bit set of the actual value.
- # Values not representable in 16 bits will fail on MacOS 8.1, however
- # the vast majority of control usage should still be compatible.
- _value, _min, _max = self._value, self._min, self._max
- if -32768 <= _value <= 32767:
- bigvalue = None
- else:
- bigvalue = _value
- _value = 0
- if -32768 <= _min <= 32767:
- bigmin = None
- else:
- bigmin = _min
- _min = 0
- if -32768 <= _max <= 32767:
- bigmax = None
- else:
- bigmax = _max
- _max = 0
- self._control = Ctl.NewControl(self._parentwindow.wid,
- self._bounds,
- self._title,
- 1,
- _value,
- _min,
- _max,
- self._procID,
- 0)
- if bigvalue:
- self._control.SetControl32BitValue(bigvalue)
- if bigmin:
- self._control.SetControl32BitMinimum(bigmin)
- if bigmax:
- self._control.SetControl32BitMaximum(bigmax)
- if self._viewsize:
- try:
- self._control.SetControlViewSize(self._viewsize)
- # Not available in MacOS 8.1, but that's OK since it only affects
- # proportional scrollbars which weren't available in 8.1 either.
- except NotImplementedError:
- pass
- self.enable(self._enabled)
-
- def adjust(self, oldbounds):
- self.SetPort()
- self._control.HideControl()
- self._control.MoveControl(self._bounds[0], self._bounds[1])
- self._control.SizeControl(self._bounds[2] - self._bounds[0], self._bounds[3] - self._bounds[1])
- if self._visible:
- Qd.EraseRect(self._bounds)
- self._control.ShowControl()
- self.GetWindow().ValidWindowRect(self._bounds)
-
- def close(self):
- self._control.HideControl()
- self._control = None
- Wbase.ClickableWidget.close(self)
-
- def enable(self, onoff):
- if self._control and self._enabled <> onoff:
- self._control.HiliteControl((not onoff) and 255)
- self._enabled = onoff
-
- def show(self, onoff):
- self._visible = onoff
- for w in self._widgets:
- w.show(onoff)
- if onoff:
- self._control.ShowControl()
- else:
- self._control.HideControl()
-
- def activate(self, onoff):
- self._activated = onoff
- if self._enabled:
- if onoff:
- self._control.ActivateControl()
- else:
- self._control.DeactivateControl()
-
- def draw(self, visRgn = None):
- if self._visible:
- self._control.Draw1Control()
-
- def test(self, point):
- if Qd.PtInRect(point, self._bounds) and self._enabled:
- return 1
- #ctltype, control = Ctl.FindControl(point, self._parentwindow.wid)
- #if self._enabled and control == self._control:
- # return 1
-
- def click(self, point, modifiers):
- if not self._enabled:
- return
- part = self._control.TrackControl(point)
- if part:
- if self._callback:
- Wbase.CallbackCall(self._callback, 0)
-
- def settitle(self, title):
- if self._control:
- self._control.SetControlTitle(title)
- self._title = title
-
- def gettitle(self):
- return self._title
-
- def set(self, value):
- if self._control:
- if -32768 <= value <= 32767:
- # No 32-bit control support in MacOS 8.1, so use
- # the 16-bit interface when possible.
- self._control.SetControlValue(value)
- else:
- self._control.SetControl32BitValue(value)
- else:
- self._value = value
-
- def get(self):
- if self._control:
- try:
- return self._control.GetControl32BitValue()
- # No 32-bit control support in MacOS 8.1, so fall
- # back to the 16-bit interface when needed.
- except NotImplementedError:
- return self._control.GetControlValue()
- else:
- return self._value
+
+ """Baseclass for all native controls."""
+
+ def __init__(self, possize, title = "Control", procID = 0, callback = None, value = 0, min = 0, max = 1, viewsize = 0):
+ Wbase.ClickableWidget.__init__(self, possize)
+ self._control = None
+ self._title = title
+ self._callback = callback
+ self._procID = procID
+ self._value = value
+ self._min = min
+ self._max = max
+ self._enabled = 1
+ self._viewsize = viewsize
+
+ def open(self):
+ self._calcbounds()
+
+ # NewControl doesn't accept 32-bit value, min, or max, so for consistency
+ # with the new 32-bit set/get methods, out-of-range values are initially
+ # set as zero, followed by a 32-bit set of the actual value.
+ # Values not representable in 16 bits will fail on MacOS 8.1, however
+ # the vast majority of control usage should still be compatible.
+ _value, _min, _max = self._value, self._min, self._max
+ if -32768 <= _value <= 32767:
+ bigvalue = None
+ else:
+ bigvalue = _value
+ _value = 0
+ if -32768 <= _min <= 32767:
+ bigmin = None
+ else:
+ bigmin = _min
+ _min = 0
+ if -32768 <= _max <= 32767:
+ bigmax = None
+ else:
+ bigmax = _max
+ _max = 0
+ self._control = Ctl.NewControl(self._parentwindow.wid,
+ self._bounds,
+ self._title,
+ 1,
+ _value,
+ _min,
+ _max,
+ self._procID,
+ 0)
+ if bigvalue:
+ self._control.SetControl32BitValue(bigvalue)
+ if bigmin:
+ self._control.SetControl32BitMinimum(bigmin)
+ if bigmax:
+ self._control.SetControl32BitMaximum(bigmax)
+ if self._viewsize:
+ try:
+ self._control.SetControlViewSize(self._viewsize)
+ # Not available in MacOS 8.1, but that's OK since it only affects
+ # proportional scrollbars which weren't available in 8.1 either.
+ except NotImplementedError:
+ pass
+ self.enable(self._enabled)
+
+ def adjust(self, oldbounds):
+ self.SetPort()
+ self._control.HideControl()
+ self._control.MoveControl(self._bounds[0], self._bounds[1])
+ self._control.SizeControl(self._bounds[2] - self._bounds[0], self._bounds[3] - self._bounds[1])
+ if self._visible:
+ Qd.EraseRect(self._bounds)
+ self._control.ShowControl()
+ self.GetWindow().ValidWindowRect(self._bounds)
+
+ def close(self):
+ self._control.HideControl()
+ self._control = None
+ Wbase.ClickableWidget.close(self)
+
+ def enable(self, onoff):
+ if self._control and self._enabled <> onoff:
+ self._control.HiliteControl((not onoff) and 255)
+ self._enabled = onoff
+
+ def show(self, onoff):
+ self._visible = onoff
+ for w in self._widgets:
+ w.show(onoff)
+ if onoff:
+ self._control.ShowControl()
+ else:
+ self._control.HideControl()
+
+ def activate(self, onoff):
+ self._activated = onoff
+ if self._enabled:
+ if onoff:
+ self._control.ActivateControl()
+ else:
+ self._control.DeactivateControl()
+
+ def draw(self, visRgn = None):
+ if self._visible:
+ self._control.Draw1Control()
+
+ def test(self, point):
+ if Qd.PtInRect(point, self._bounds) and self._enabled:
+ return 1
+ #ctltype, control = Ctl.FindControl(point, self._parentwindow.wid)
+ #if self._enabled and control == self._control:
+ # return 1
+
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ part = self._control.TrackControl(point)
+ if part:
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0)
+
+ def settitle(self, title):
+ if self._control:
+ self._control.SetControlTitle(title)
+ self._title = title
+
+ def gettitle(self):
+ return self._title
+
+ def set(self, value):
+ if self._control:
+ if -32768 <= value <= 32767:
+ # No 32-bit control support in MacOS 8.1, so use
+ # the 16-bit interface when possible.
+ self._control.SetControlValue(value)
+ else:
+ self._control.SetControl32BitValue(value)
+ else:
+ self._value = value
+
+ def get(self):
+ if self._control:
+ try:
+ return self._control.GetControl32BitValue()
+ # No 32-bit control support in MacOS 8.1, so fall
+ # back to the 16-bit interface when needed.
+ except NotImplementedError:
+ return self._control.GetControlValue()
+ else:
+ return self._value
class Button(ControlWidget):
-
- """Standard push button."""
-
- procID = Controls.pushButProc | Controls.useWFont
-
- def __init__(self, possize, title = "Button", callback = None):
- ControlWidget.__init__(self, possize, title, self.procID, callback, 0, 0, 1)
- self._isdefault = 0
-
- def push(self):
- if not self._enabled:
- return
- # emulate the pushing of the button
- import time
- self._control.HiliteControl(Controls.kControlButtonPart)
- self._parentwindow.wid.GetWindowPort().QDFlushPortBuffer(None) # needed under OSX
- time.sleep(0.1)
- self._control.HiliteControl(0)
- if self._callback:
- Wbase.CallbackCall(self._callback, 0)
-
- def enable(self, onoff):
- if self._control and self._enabled <> onoff:
- self._control.HiliteControl((not onoff) and 255)
- self._enabled = onoff
-
- def show(self, onoff):
- ControlWidget.show(self, onoff)
-
- def draw(self, visRgn = None):
- if self._visible:
- self._control.Draw1Control()
-
- def open(self):
- ControlWidget.open(self)
- if self._isdefault:
- self._setdefault(self._isdefault)
-
- def _setdefault(self, onoff):
- c = self._control
- if c is not None:
- if onoff:
- data = "\xFF"
- else:
- data = "\0"
- # hide before changing state, otherwise the button isn't always
- # redrawn correctly, although it's quite different under Aqua
- # and Classic...
- c.HideControl()
- c.SetControlData(Controls.kControlNoPart,
- Controls.kControlPushButtonDefaultTag, data)
- c.ShowControl()
- self._isdefault = onoff
-
- def adjust(self, oldbounds):
- if self._isdefault:
- old = Qd.InsetRect(oldbounds, -4, -4)
- new = Qd.InsetRect(self._bounds, -4, -4)
- Qd.EraseRect(old)
- self.GetWindow().InvalWindowRect(old)
- self.GetWindow().InvalWindowRect(new)
- ControlWidget.adjust(self, oldbounds)
+
+ """Standard push button."""
+
+ procID = Controls.pushButProc | Controls.useWFont
+
+ def __init__(self, possize, title = "Button", callback = None):
+ ControlWidget.__init__(self, possize, title, self.procID, callback, 0, 0, 1)
+ self._isdefault = 0
+
+ def push(self):
+ if not self._enabled:
+ return
+ # emulate the pushing of the button
+ import time
+ self._control.HiliteControl(Controls.kControlButtonPart)
+ self._parentwindow.wid.GetWindowPort().QDFlushPortBuffer(None) # needed under OSX
+ time.sleep(0.1)
+ self._control.HiliteControl(0)
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0)
+
+ def enable(self, onoff):
+ if self._control and self._enabled <> onoff:
+ self._control.HiliteControl((not onoff) and 255)
+ self._enabled = onoff
+
+ def show(self, onoff):
+ ControlWidget.show(self, onoff)
+
+ def draw(self, visRgn = None):
+ if self._visible:
+ self._control.Draw1Control()
+
+ def open(self):
+ ControlWidget.open(self)
+ if self._isdefault:
+ self._setdefault(self._isdefault)
+
+ def _setdefault(self, onoff):
+ c = self._control
+ if c is not None:
+ if onoff:
+ data = "\xFF"
+ else:
+ data = "\0"
+ # hide before changing state, otherwise the button isn't always
+ # redrawn correctly, although it's quite different under Aqua
+ # and Classic...
+ c.HideControl()
+ c.SetControlData(Controls.kControlNoPart,
+ Controls.kControlPushButtonDefaultTag, data)
+ c.ShowControl()
+ self._isdefault = onoff
+
+ def adjust(self, oldbounds):
+ if self._isdefault:
+ old = Qd.InsetRect(oldbounds, -4, -4)
+ new = Qd.InsetRect(self._bounds, -4, -4)
+ Qd.EraseRect(old)
+ self.GetWindow().InvalWindowRect(old)
+ self.GetWindow().InvalWindowRect(new)
+ ControlWidget.adjust(self, oldbounds)
class BevelButton(Button):
- procID = Controls.kControlBevelButtonNormalBevelProc | Controls.useWFont
+ procID = Controls.kControlBevelButtonNormalBevelProc | Controls.useWFont
class CheckBox(ControlWidget):
-
- """Standard checkbox."""
-
- def __init__(self, possize, title = "Checkbox", callback = None, value = 0):
- procID = Controls.checkBoxProc | Controls.useWFont
- ControlWidget.__init__(self, possize, title, procID, callback, value, 0, 1)
-
- def click(self, point, modifiers):
- if not self._enabled:
- return
- part = self._control.TrackControl(point)
- if part:
- self.toggle()
- if self._callback:
- Wbase.CallbackCall(self._callback, 0, self.get())
-
- def push(self):
- if not self._enabled:
- return
- self.toggle()
- if self._callback:
- Wbase.CallbackCall(self._callback, 0, self.get())
-
- def toggle(self):
- self.set(not self.get())
+
+ """Standard checkbox."""
+
+ def __init__(self, possize, title = "Checkbox", callback = None, value = 0):
+ procID = Controls.checkBoxProc | Controls.useWFont
+ ControlWidget.__init__(self, possize, title, procID, callback, value, 0, 1)
+
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ part = self._control.TrackControl(point)
+ if part:
+ self.toggle()
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0, self.get())
+
+ def push(self):
+ if not self._enabled:
+ return
+ self.toggle()
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0, self.get())
+
+ def toggle(self):
+ self.set(not self.get())
class RadioButton(ControlWidget):
-
- """Standard radiobutton."""
-
- # XXX We need a radiogroup widget; this is too kludgy.
-
- def __init__(self, possize, title, thebuttons, callback = None, value = 0):
- procID = Controls.radioButProc | Controls.useWFont
- ControlWidget.__init__(self, possize, title, procID, callback, value, 0, 1)
- self.thebuttons = thebuttons
- thebuttons.append(self)
-
- def close(self):
- self.thebuttons = None
- ControlWidget.close(self)
-
- def click(self, point, modifiers):
- if not self._enabled:
- return
- part = self._control.TrackControl(point)
- if part:
- self.set(1)
- if self._callback:
- Wbase.CallbackCall(self._callback, 0, 1)
-
- def push(self):
- if not self._enabled:
- return
- self.set(1)
- if self._callback:
- Wbase.CallbackCall(self._callback, 0, 1)
-
- def set(self, value):
- for button in self.thebuttons:
- if button._control:
- button._control.SetControlValue(button == self)
- else:
- button._value = (button == self)
+
+ """Standard radiobutton."""
+
+ # XXX We need a radiogroup widget; this is too kludgy.
+
+ def __init__(self, possize, title, thebuttons, callback = None, value = 0):
+ procID = Controls.radioButProc | Controls.useWFont
+ ControlWidget.__init__(self, possize, title, procID, callback, value, 0, 1)
+ self.thebuttons = thebuttons
+ thebuttons.append(self)
+
+ def close(self):
+ self.thebuttons = None
+ ControlWidget.close(self)
+
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ part = self._control.TrackControl(point)
+ if part:
+ self.set(1)
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0, 1)
+
+ def push(self):
+ if not self._enabled:
+ return
+ self.set(1)
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 0, 1)
+
+ def set(self, value):
+ for button in self.thebuttons:
+ if button._control:
+ button._control.SetControlValue(button == self)
+ else:
+ button._value = (button == self)
class Scrollbar(ControlWidget):
-
- """Standard scrollbar."""
-
- def __init__(self, possize, callback=None, value=0, min=0, max=0, livefeedback=1):
- if livefeedback:
- procID = Controls.kControlScrollBarLiveProc
- else:
- procID = Controls.scrollBarProc
- ControlWidget.__init__(self, possize, "", procID, callback, value, min, max)
-
- # interface
-# def set(self, value):
-# if self._callback:
-# Wbase.CallbackCall(self._callback, 1, value)
-
- def up(self):
- if self._callback:
- Wbase.CallbackCall(self._callback, 1, '+')
-
- def down(self):
- if self._callback:
- Wbase.CallbackCall(self._callback, 1, '-')
-
- def pageup(self):
- if self._callback:
- Wbase.CallbackCall(self._callback, 1, '++')
-
- def pagedown(self):
- if self._callback:
- Wbase.CallbackCall(self._callback, 1, '--')
-
- def setmin(self, min):
- if self._control is not None:
- if -32768 <= min <= 32767:
- # No 32-bit control support in MacOS 8.1, so use
- # the 16-bit interface when possible.
- self._control.SetControlMinimum(min)
- else:
- self._control.SetControl32BitMinimum(min)
- else:
- self._min = min
-
- def setmax(self, max):
- if self._control is not None:
- if -32768 <= max <= 32767:
- # No 32-bit control support in MacOS 8.1, so use
- # the 16-bit interface when possible.
- self._control.SetControlMaximum(max)
- else:
- self._control.SetControl32BitMaximum(max)
- else:
- self._max = max
-
- def setviewsize(self, viewsize):
- if self._control is not None:
- try:
- self._control.SetControlViewSize(viewsize)
- # Not available in MacOS 8.1, but that's OK since it only affects
- # proportional scrollbars which weren't available in 8.1 either.
- except NotImplementedError:
- pass
- else:
- self._viewsize = viewsize
-
- def getmin(self):
- try:
- return self._control.GetControl32BitMinimum()
- # No 32-bit control support in MacOS 8.1, so fall
- # back to the 16-bit interface when needed.
- except NotImplementedError:
- return self._control.GetControlMinimum()
-
- def getmax(self):
- try:
- return self._control.GetControl32BitMaximum()
- # No 32-bit control support in MacOS 8.1, so fall
- # back to the 16-bit interface when needed.
- except NotImplementedError:
- return self._control.GetControlMaximum()
-
- # internals
- def click(self, point, modifiers):
- if not self._enabled:
- return
- def hitter(ctl, part, self=self):
- if part:
- self._hit(part)
- part = self._control.TrackControl(point, hitter)
-
- def _hit(self, part):
- value = None
- if part == Controls.inThumb:
- try:
- value = self._control.GetControl32BitValue()
- # No 32-bit control support in MacOS 8.1, so fall
- # back to the 16-bit interface when needed.
- except NotImplementedError:
- value = self._control.GetControlValue()
- elif part == Controls.inUpButton:
- value = "+"
- elif part == Controls.inDownButton:
- value = "-"
- elif part == Controls.inPageUp:
- value = "++"
- elif part == Controls.inPageDown:
- value = "--"
- if value is not None and self._callback:
- Wbase.CallbackCall(self._callback, 1, value)
-
- def draw(self, visRgn = None):
- if self._visible:
- self._control.Draw1Control()
- #Qd.FrameRect(self._bounds)
-
- def adjust(self, oldbounds):
- self.SetPort()
- self.GetWindow().InvalWindowRect(oldbounds)
- self._control.HideControl()
- self._control.MoveControl(self._bounds[0], self._bounds[1])
- self._control.SizeControl(self._bounds[2] - self._bounds[0], self._bounds[3] - self._bounds[1])
- if self._visible:
- Qd.EraseRect(self._bounds)
- if self._activated:
- self._control.ShowControl()
- else:
- Qd.FrameRect(self._bounds)
- self.GetWindow().ValidWindowRect(self._bounds)
+ """Standard scrollbar."""
-def _scalebarvalue(absmin, absmax, curmin, curmax):
- if curmin <= absmin and curmax >= absmax:
- return None
- if curmin <= absmin:
- return 0
- if curmax >= absmax:
- return 32767
- perc = float(curmin-absmin) / float((absmax - absmin) - (curmax - curmin))
- return int(perc*32767)
+ def __init__(self, possize, callback=None, value=0, min=0, max=0, livefeedback=1):
+ if livefeedback:
+ procID = Controls.kControlScrollBarLiveProc
+ else:
+ procID = Controls.scrollBarProc
+ ControlWidget.__init__(self, possize, "", procID, callback, value, min, max)
+
+ # interface
+# def set(self, value):
+# if self._callback:
+# Wbase.CallbackCall(self._callback, 1, value)
+
+ def up(self):
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 1, '+')
+
+ def down(self):
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 1, '-')
+ def pageup(self):
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 1, '++')
+
+ def pagedown(self):
+ if self._callback:
+ Wbase.CallbackCall(self._callback, 1, '--')
+
+ def setmin(self, min):
+ if self._control is not None:
+ if -32768 <= min <= 32767:
+ # No 32-bit control support in MacOS 8.1, so use
+ # the 16-bit interface when possible.
+ self._control.SetControlMinimum(min)
+ else:
+ self._control.SetControl32BitMinimum(min)
+ else:
+ self._min = min
+
+ def setmax(self, max):
+ if self._control is not None:
+ if -32768 <= max <= 32767:
+ # No 32-bit control support in MacOS 8.1, so use
+ # the 16-bit interface when possible.
+ self._control.SetControlMaximum(max)
+ else:
+ self._control.SetControl32BitMaximum(max)
+ else:
+ self._max = max
+
+ def setviewsize(self, viewsize):
+ if self._control is not None:
+ try:
+ self._control.SetControlViewSize(viewsize)
+ # Not available in MacOS 8.1, but that's OK since it only affects
+ # proportional scrollbars which weren't available in 8.1 either.
+ except NotImplementedError:
+ pass
+ else:
+ self._viewsize = viewsize
+
+ def getmin(self):
+ try:
+ return self._control.GetControl32BitMinimum()
+ # No 32-bit control support in MacOS 8.1, so fall
+ # back to the 16-bit interface when needed.
+ except NotImplementedError:
+ return self._control.GetControlMinimum()
+
+ def getmax(self):
+ try:
+ return self._control.GetControl32BitMaximum()
+ # No 32-bit control support in MacOS 8.1, so fall
+ # back to the 16-bit interface when needed.
+ except NotImplementedError:
+ return self._control.GetControlMaximum()
+
+ # internals
+ def click(self, point, modifiers):
+ if not self._enabled:
+ return
+ def hitter(ctl, part, self=self):
+ if part:
+ self._hit(part)
+ part = self._control.TrackControl(point, hitter)
+
+ def _hit(self, part):
+ value = None
+ if part == Controls.inThumb:
+ try:
+ value = self._control.GetControl32BitValue()
+ # No 32-bit control support in MacOS 8.1, so fall
+ # back to the 16-bit interface when needed.
+ except NotImplementedError:
+ value = self._control.GetControlValue()
+ elif part == Controls.inUpButton:
+ value = "+"
+ elif part == Controls.inDownButton:
+ value = "-"
+ elif part == Controls.inPageUp:
+ value = "++"
+ elif part == Controls.inPageDown:
+ value = "--"
+ if value is not None and self._callback:
+ Wbase.CallbackCall(self._callback, 1, value)
+
+ def draw(self, visRgn = None):
+ if self._visible:
+ self._control.Draw1Control()
+ #Qd.FrameRect(self._bounds)
+
+ def adjust(self, oldbounds):
+ self.SetPort()
+ self.GetWindow().InvalWindowRect(oldbounds)
+ self._control.HideControl()
+ self._control.MoveControl(self._bounds[0], self._bounds[1])
+ self._control.SizeControl(self._bounds[2] - self._bounds[0], self._bounds[3] - self._bounds[1])
+ if self._visible:
+ Qd.EraseRect(self._bounds)
+ if self._activated:
+ self._control.ShowControl()
+ else:
+ Qd.FrameRect(self._bounds)
+ self.GetWindow().ValidWindowRect(self._bounds)
+
+
+def _scalebarvalue(absmin, absmax, curmin, curmax):
+ if curmin <= absmin and curmax >= absmax:
+ return None
+ if curmin <= absmin:
+ return 0
+ if curmax >= absmax:
+ return 32767
+ perc = float(curmin-absmin) / float((absmax - absmin) - (curmax - curmin))
+ return int(perc*32767)