[wxPython-users] Creating new cursors
Christopher Barker
Chris.Barker at noaa.gov
Fri Aug 11 14:11:56 PDT 2006
1) you've hard coded the path to the cursors to your setup.
2) Once I fixed that, It runs, but doesn't appear to do much. I get a
bar, and a text box on wither side, but that's it.
3) You really don't want to use:
from wxPython.wx import *
you should rather use:
import wx
Does Boa generate code like that?
Maybe you could narrow down the problem by creating a sample that Isn't
the whole DoubleSlider, but is just a simple Panel or something that
you set the Cursors on.
-Chris
Tatiana Al-Chueyr Pereira Martins wrote:
> Hi all!
>
> I was doing some tests, trying to create a new form of slider, where you
> can
> resize the bar which defines min and max, and move this bar along x axis
> with the mouse.
>
> In order to show easily the features for the user, the cursor is changed so
> that when one passes the mouse over the left/right border you see you can
> resize it, and when one passes the mouse over the center area, an open hand
> appears and when one presses the left button, the hand is closed, so you
> can
> move it.
>
> The problem is in the creation of this two "new cursors" (open and closed
> hand), from a png image, the transparency appears black in white background
> and white in black background. :( has anyone ever had this problem? do you
> know how to fix it?
>
> I might be doing something very wrong, so I attached the code files
> (they`re
> pretty durty job.. just wanted to see things working quickly) and the
> images
> that I use to create the new cursors.
>
> I`d be greatefull if someone could help me on this..!
> Thanks!
>
> Tatiana
>
> Using:
> Windows XP
> Python 2.3.5
> wxPython 2.4.2.4
>
>
> ------------------------------------------------------------------------
>
>
> ------------------------------------------------------------------------
>
>
> ------------------------------------------------------------------------
>
> #!/usr/bin/env python
> #Boa:App:BoaApp
>
> from wxPython.wx import *
>
> import wxDoubleSlider
>
> modules ={'wxDoubleSlider': [1, 'Main frame of Application', 'wxDoubleSlider.py']}
>
> class BoaApp(wxApp):
> def OnInit(self):
> wxInitAllImageHandlers()
> self.main = wxDoubleSlider.create(None)
> self.main.Show()
> self.SetTopWindow(self.main)
> return True
>
> def main():
> application = BoaApp(0)
> application.MainLoop()
>
> if __name__ == '__main__':
> main()
>
>
> ------------------------------------------------------------------------
>
> #Boa:Frame:wxDoubleSlider
>
> from wxPython.wx import *
> from wxPython.lib.intctrl import * # necessary for using wxIntCtrl (int text box)
>
> def create(parent):
> return wxDoubleSlider(parent)
>
> [wxID_WXDOUBLESLIDER, wxID_WXDOUBLESLIDERBUTTON,
> wxID_WXDOUBLESLIDERSTATICLINE1, wxID_WXDOUBLESLIDERTEXTLEFT,
> wxID_WXDOUBLESLIDERTEXTRIGHT,
> ] = map(lambda _init_ctrls: wxNewId(), range(5))
>
> class wxDoubleSlider(wxFrame):
> def _init_ctrls(self, prnt):
> # generated method, don't edit
> wxFrame.__init__(self, id=wxID_WXDOUBLESLIDER, name='wxDoubleSlider',
> parent=prnt, pos=wxPoint(279, 288), size=wxSize(240, 34),
> style=wxDEFAULT_FRAME_STYLE, title='Double Slider')
> self.SetClientSize(wxSize(240, 34))
>
> self.textLeft = wxIntCtrl(allow_long=False, allow_none=False,
> default_color=wxBLACK, id=wxID_WXDOUBLESLIDERTEXTLEFT,
> limited=False, max=4000, min=0, name='textLeft', oob_color=wxRED,
> parent=self, pos=wxPoint(2, 4), size=wxSize(36, 26), style=0,
> value=0)
>
> self.textRight = wxIntCtrl(allow_long=False, allow_none=False,
> default_color=wxBLACK, id=wxID_WXDOUBLESLIDERTEXTRIGHT,
> limited=False, max=4000, min=0, name='textRight', oob_color=wxRED,
> parent=self, pos=wxPoint(202, 4), size=wxSize(36, 26), style=0,
> value=0)
>
> self.staticLine1 = wxStaticLine(id=wxID_WXDOUBLESLIDERSTATICLINE1,
> name='staticLine1', parent=self, pos=wxPoint(40, 16),
> size=wxSize(160, 1), style=wxTRANSPARENT_WINDOW)
>
> self.button = wxButton(id=wxID_WXDOUBLESLIDERBUTTON, label='',
> name='button', parent=self, pos=wxPoint(41, 6), size=wxSize(160,
> 22), style=0)
>
> def __init__(self, parent):
>
> self._init_ctrls(parent)
> self.vars() # global attributes
> self.evt() # treated events
>
> # setting initial values for text areas
> self.SetRange(self.thresholdMin, self.thresholdMax)
>
>
>
> def SetRange(self, minValue, maxValue):
> self.textRight.SetValue(maxValue)
> self.textRight.SetMax(maxValue)
> self.textLeft.SetValue(minValue)
> self.textLeft.SetMin(minValue)
>
> def GetMin(self, value):
> value = self.textLeft.GetValue()
>
> def GetMax(self, value):
> value = self.textRight.GetValue()
>
> def vars(self):
>
>
> # Control if button will move or not
> self.case = "null"
> self.buttonMove = 0
>
> # Vertical button position won't change
> self.verticalPos = self.button.GetPosition()[1]
>
>
> self.leftLimit = self.staticLine1.GetPosition()[0]
> self.rightLimit = self.staticLine1.GetSize()[0] + self.staticLine1.GetPosition()[0]
>
> self.leftNewPos = self.leftLimit
> self.rightNewPos = self.rightLimit
>
> buttonSize = self.rightNewSize = self.button.GetSize()[0]
>
>
> # Limits of the permited moving area for the button
> self.leftButtontAreaLimit = self.staticLine1.GetPosition()[0]
> self.rightButtontAreaLimit = self.staticLine1.GetSize()[0] + self.staticLine1.GetPosition()[0]
>
> # Threshold values - to be setted
> self.thresholdMin = 0
> self.thresholdMax = 4000
> self.thresholdQuotient = (self.thresholdMax - self.thresholdMin)/buttonSize
>
>
> # Cursors
> self.wxOPENHAND_CURSOR = wxCursorFromImage(wxImage('/home/tati/imagens/icones/openhand-final.png'))
> self.wxCLOSEHAND_CURSOR = wxCursorFromImage(wxImage('/home/tati/imagens/icones/closehand.png'))
>
>
>
> def evt(self):
>
> # events related to the button
> EVT_LEFT_DOWN(self.button, lambda e: self.click_button(e))
> EVT_MOTION(self.button, lambda e:self.move_button(e))
> EVT_LEAVE_WINDOW(self.button, lambda e:self.leave_button(e))
> EVT_LEFT_UP(self.button, lambda e:self.unclick_button(e))
>
> # events related to the text area
> EVT_TEXT(self.textLeft, self.textLeft.GetId(), self.checkLeftText)
> EVT_KEY_DOWN(self.textLeft, self.updateLeftText)
> #EVT_LEAVE_WINDOW(self.textLeft, self.updateLeftText)
> EVT_TEXT(self.textRight, self.textRight.GetId(), self.checkRightText)
> EVT_KEY_DOWN(self.textRight, self.updateRightText)
> #EVT_LEAVE_WINDOW(self.textRight, self.updateRightText)
>
> #-------------------------------------------------------------------------------
>
> def click_button(self, event):
>
> if (-1 < event.GetX() < 5):
> self.case = "left"
> self.lastX = event.GetX()
> elif ( (self.button.GetSize()[0]-5) < event.GetX() < (self.button.GetSize()[0]+1) ):
> self.case = "right"
> self.lastX = event.GetX()
> elif ( ((self.button.GetSize()[0]/2)-5) < event.GetX() < ((self.button.GetSize()[0]/2)+5) ):
> self.case = "center"
> self.lastX = event.GetX()
> cursor = self.wxCLOSEHAND_CURSOR
> self.button.SetCursor(cursor)
> else:
> self.case = "null"
>
> if (self.case == "left") or (self.case == "right") or (self.case == "center"):
> self.buttonMove = 1
>
> event.Skip()
>
>
> def move_button(self, event):
> # related to movement and resize of the button
>
> if (-1 < event.GetX() < 5):
> self.cursorCase = "left"
> elif ( (self.button.GetSize()[0]-5) < event.GetX() < (self.button.GetSize()[0]+1) ):
> self.cursorCase = "right"
> elif ( ((self.button.GetSize()[0]/2)-5) < event.GetX() < ((self.button.GetSize()[0]/2)+5) ):
> self.cursorCase = "center"
> elif (not self.buttonMove):
> self.cursorCase = "null"
>
> # CHECKING CURSOR
> if (self.buttonMove):
> if (self.cursorCase == "left") or (self.cursorCase == "right"):
> cursor = wxStockCursor(wxCURSOR_SIZEWE)
> self.button.SetCursor(cursor)
> elif (self.cursorCase == "center"):
> cursor = self.wxCLOSEHAND_CURSOR
> self.button.SetCursor(cursor)
> else:
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
> else: # (not self.buttonMove)
> if (self.cursorCase == "left") or (self.cursorCase == "right"):
> cursor = wxStockCursor(wxCURSOR_SIZEWE)
> self.button.SetCursor(cursor)
> elif (self.cursorCase == "center"):
> cursor = self.wxOPENHAND_CURSOR
> self.button.SetCursor(cursor)
> else:
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
>
>
> # CHECKING MOVEMENT
> if (self.buttonMove):
> if (self.case == "left"):
> if ((self.lastX - event.GetX()) <= 0):
> diffX = abs(self.lastX - event.GetX())
> self.leftNewPos = self.leftNewPos + diffX
> case = 1
> else:
> diffX = abs(self.lastX - event.GetX())
> self.leftNewPos = self.leftNewPos - diffX
> case = 2
>
> if (self.leftButtontAreaLimit <= self.leftNewPos < (self.rightLimit - 10)):
> # setting the new button size
> if (case == 1):
> buttonSizeX = self.button.GetSize()[0] - diffX
> else:
> buttonSizeX = self.button.GetSize()[0] + diffX
>
> buttonSizeY = self.button.GetSize()[1]
> self.button.SetSize((buttonSizeX, buttonSizeY))
>
> # putting the button in the right position
> self.button.SetPosition((self.leftNewPos, self.verticalPos))
> self.leftLimit = self.leftNewPos
>
> else:
> self.leftNewPos = self.leftLimit
>
> self.textLeft.SetValue((self.leftNewPos - 40)*self.thresholdQuotient)
>
>
> elif (self.case == "right"):
>
> self.rightNewSize = self.button.GetSize()[0]
> diffX = abs(self.lastX - event.GetX())
>
> if ((self.lastX - event.GetX()) >= 0):
> self.rightNewSize = self.rightNewSize - diffX
> self.rightNewPos = self.rightNewSize + self.button.GetPosition()[0]
> self.lastX = self.lastX - diffX
> else:
> self.rightNewSize = self.rightNewSize + diffX
> self.rightNewPos = self.rightNewSize + self.button.GetPosition()[0]
> self.lastX = self.lastX + diffX
>
>
> if (self.rightButtontAreaLimit >= self.rightNewPos> (self.leftLimit + 10)):
> buttonSizeY = self.button.GetSize()[1]
> self.button.SetSize((self.rightNewSize, buttonSizeY))
> self.rightLimit = self.rightNewPos
>
> else:
> self.rightNewPos = self.rightLimit
>
> self.textRight.SetValue((self.rightNewPos - 40)*self.thresholdQuotient)
> elif (self.case == "center"):
> (X, Y) = self.button.GetPosition()
> diffX = self.lastX - event.GetX()
> if ((X-diffX) >= self.leftButtontAreaLimit) and ((X-diffX + self.button.GetSize()[0]) <= self.rightButtontAreaLimit):
> self.button.SetPosition((X-diffX, Y))
> self.leftNewPos = self.leftLimit = (X-diffX)
> ## print "moveButton: self.leftLimit", self.leftLimit
> self.rightNewPos = self.rightLimit = (X-diffX+self.button.GetSize()[0])
> self.textLeft.SetValue((X-diffX - 40)*self.thresholdQuotient)
> self.textRight.SetValue((X-diffX - 40 + self.button.GetSize()[0])*self.thresholdQuotient)
>
>
> else:
> pass
> else: # (not self.buttonMove)
> if (self.case == "left") or (self.case == "right"):
> #print "nao move"
> pass
> else:
> #print "nao move"
> pass
>
> event.Skip()
>
> def unclick_button(self, event):
>
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
> self.buttonMove = 0
> self.case = "null"
>
> event.Skip()
>
>
> def leave_button(self, event):
>
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
> self.buttonMove = 0
> self.case = "null"
>
> event.Skip()
>
>
>
> #-------------------------------------------------------------------------------
> def checkLeftText(self, event):
>
> self.currentLeftTextValue = self.textLeft.GetValue()
> self.pos_currentLeftTextValue = (self.currentLeftTextValue/self.thresholdQuotient) + 40
>
> maxValue = (self.rightLimit - 40)*self.thresholdQuotient - 1
> self.textLeft.SetMax(maxValue)
>
>
> if (self.leftButtontAreaLimit <= self.pos_currentLeftTextValue < self.rightLimit):
> self.validValue = 1
> else:
> self.validValue = 0
>
> event.Skip()
>
>
> def updateLeftText(self, event):
>
>
> if (event.GetKeyCode() == 13): #enter
>
> if self.validValue:
>
> if (self.pos_currentLeftTextValue < self.rightLimit - 10):
> self.leftNewPos = self.leftLimit = newPos = self.pos_currentLeftTextValue
> else: #elif ( self.rightLimit - 10 <= self.pos_currentLeftTextValue < self.rightLimit):
> self.leftNewPos = self.leftLimit = newPos = self.rightLimit - 11
>
> lastPos = (self.button.GetPosition()[0])
> diff = newPos - lastPos
>
> buttonSizeX = self.button.GetSize()[0] - diff
> buttonSizeY = self.button.GetSize()[1]
>
> self.button.SetPosition((newPos, self.verticalPos))
> self.button.SetSize((buttonSizeX, buttonSizeY))
>
> event.Skip()
>
>
>
> def checkRightText(self, event):
>
> self.currentRightTextValue = self.textRight.GetValue()
> self.pos_currentRightTextValue = (self.currentRightTextValue/self.thresholdQuotient) + 40
>
> minValue = (self.leftLimit - 40)*self.thresholdQuotient + 1
> self.textRight.SetMin(minValue)
>
>
> max = (self.rightButtontAreaLimit- 40)* self.thresholdQuotient
> min = (self.leftLimit - 40)*self.thresholdQuotient
>
> if (min < self.currentRightTextValue <= max):
> self.validValue = 1
> else:
> self.validValue = 0
>
> event.Skip()
>
>
> def updateRightText(self, event):
>
>
> if (event.GetKeyCode() == 13): #enter
>
> if self.validValue:
>
> if (self.pos_currentRightTextValue > self.leftLimit + 10):
> self.rightNewPos = self.rightLimit = newPos = self.pos_currentRightTextValue
> else: #elif ( self.rightLimit - 10 <= self.pos_currentLeftTextValue < self.rightLimit):
> self.rightNewPos = self.rightLimit = newPos = self.leftLimit + 11
>
> lastPos = (self.button.GetPosition()[0] + self.button.GetSize()[0])
>
> diff = newPos - lastPos
>
>
> buttonSizeX = self.button.GetSize()[0] + diff
> buttonSizeY = self.button.GetSize()[1]
>
> self.button.SetSize((buttonSizeX, buttonSizeY))
>
> event.Skip()
>
>
>
>
> ------------------------------------------------------------------------
>
> #Boa:Frame:wxDoubleSlider
>
> from wxPython.wx import *
> from wxPython.lib.intctrl import * # necessary for using wxIntCtrl (int text box)
>
> def create(parent):
> return wxDoubleSlider(parent)
>
> [wxID_WXDOUBLESLIDER, wxID_WXDOUBLESLIDERBACKGROUNDLINE,
> wxID_WXDOUBLESLIDERBUTTON, wxID_WXDOUBLESLIDERDOUBLESLIDERPANEL,
> wxID_WXDOUBLESLIDERLEFTTEXT, wxID_WXDOUBLESLIDERRIGHTTEXT,
> wxID_WXDOUBLESLIDERTRANSPARENTPANEL,
> ] = map(lambda _init_ctrls: wxNewId(), range(7))
>
> class wxDoubleSlider(wxFrame):
> def _init_ctrls(self, prnt):
> # generated method, don't edit
> wxFrame.__init__(self, id=wxID_WXDOUBLESLIDER, name='wxDoubleSlider',
> parent=prnt, pos=wxPoint(305, 361), size=wxSize(248, 70),
> style=wxDEFAULT_FRAME_STYLE, title='Double Slider')
> self.SetClientSize(wxSize(240, 34))
>
> self.doubleSliderPanel = wxPanel(id=wxID_WXDOUBLESLIDERDOUBLESLIDERPANEL,
> name='doubleSliderPanel', parent=self, pos=wxPoint(0, 0),
> size=wxSize(240, 34), style=wxTAB_TRAVERSAL)
>
> self.backgroundLine = wxStaticLine(id=wxID_WXDOUBLESLIDERBACKGROUNDLINE,
> name='backgroundLine', parent=self.doubleSliderPanel,
> pos=wxPoint(40, 16), size=wxSize(160, 1), style=0)
> self.backgroundLine.Enable(False)
> self.backgroundLine.SetForegroundColour(wxColour(223, 224, 227))
>
> self.transparentPanel = wxPanel(id=wxID_WXDOUBLESLIDERTRANSPARENTPANEL,
> name=u'transparentPanel', parent=self.doubleSliderPanel,
> pos=wxPoint(0, 0), size=wxSize(240, 34),
> style=wxTRANSPARENT_WINDOW)
> self.transparentPanel.Show(True)
>
> self.leftText = wxIntCtrl(allow_long=False, allow_none=False,
> default_color=wxBLACK, id=wxID_WXDOUBLESLIDERLEFTTEXT,
> limited=False, max=4000, min=0, name='leftText', oob_color=wxRED,
> parent=self.transparentPanel, pos=wxPoint(2, 4), size=wxSize(36,
> 26), style=0, value=0)
>
> self.rightText = wxIntCtrl(allow_long=False, allow_none=False,
> default_color=wxBLACK, id=wxID_WXDOUBLESLIDERRIGHTTEXT,
> limited=False, max=4000, min=0, name='rightText', oob_color=wxRED,
> parent=self.transparentPanel, pos=wxPoint(202, 4), size=wxSize(36,
> 26), style=0, value=0)
>
> self.button = wxButton(id=wxID_WXDOUBLESLIDERBUTTON, label='',
> name='button', parent=self.transparentPanel, pos=wxPoint(41, 6),
> size=wxSize(160, 22), style=0)
>
> def __init__(self, parent):
>
> self._init_ctrls(parent)
> self.vars() # global attributes
> self.evt() # events to be considerated
>
> print "background", self.transparentPanel.GetBackgroundColour()
> #self.transparentPanel.SetBackgroundColour(wxTransparent)
> #print "background (depois)", self.transparentPanel.GetBackgroundColour()
> print "foreground", self.transparentPanel.GetForegroundColour()
>
> self.SetRange(self.minValue, self.maxValue)
>
>
> def SetRange(self, minValue, maxValue):
> self.rightText.SetValue(maxValue)
> self.rightText.SetMax(maxValue)
> self.leftText.SetValue(minValue)
> self.leftText.SetMin(minValue)
>
> def GetMin(self, value):
> value = self.leftText.GetValue()
>
> def GetMax(self, value):
> value = self.rightText.GetValue()
>
> def vars(self):
> import sys
>
>
> buttonSize = self.rightNewSize = self.button.GetSize()[0]
>
> # setting range value
> self.minValue = 0
> self.maxValue = 4000
> self.quotientValue = (self.maxValue - self.minValue)/buttonSize
>
>
> # used to control movement and resizing of the button
> self.case = "null"
> self.buttonMove = 0
>
> self.leftLimit = self.backgroundLine.GetPosition()[0]
> self.rightLimit = self.backgroundLine.GetSize()[0] + self.backgroundLine.GetPosition()[0]
>
> self.leftNewPos = self.leftLimit
> self.rightNewPos = self.rightLimit
>
>
> # vertical button position -> won't change
> self.verticalPos = self.button.GetPosition()[1]
>
>
>
>
> # Limits of the permited moving area for the button
> self.leftButtontAreaLimit = self.backgroundLine.GetPosition()[0]
> self.rightButtontAreaLimit = self.backgroundLine.GetSize()[0] + self.backgroundLine.GetPosition()[0]
>
>
> # New cursors used
>
> if (sys.platform == 'win32'):
> dir = "C:/Tati/desenvolvendo/double_slider_3/"
> else:
> dir = '/home/tati/promed3.0/Icones/'
>
> self.wxOPENHAND_CURSOR = wxCursorFromImage(wxImage(dir + 'cursor_openhand.png'))
> self.wxCLOSEHAND_CURSOR = wxCursorFromImage(wxImage(dir + 'cursor_closehand.png'))
>
>
>
> def evt(self):
>
> # events related to the button
> EVT_LEFT_DOWN(self.button, lambda e: self.click_button(e))
> EVT_MOTION(self.button, lambda e:self.move_button(e))
> EVT_LEAVE_WINDOW(self.button, lambda e:self.leave_button(e))
> EVT_LEFT_UP(self.button, lambda e:self.unclick_button(e))
>
> # events related to the text area
> EVT_TEXT(self.leftText, self.leftText.GetId(), self.checkLeftText)
> EVT_KEY_DOWN(self.leftText, self.updateLeftText)
> #EVT_LEAVE_WINDOW(self.leftText, self.updateLeftText)
> EVT_TEXT(self.rightText, self.rightText.GetId(), self.checkRightText)
> EVT_KEY_DOWN(self.rightText, self.updateRightText)
> #EVT_LEAVE_WINDOW(self.rightText, self.updateRightText)
>
> #-------------------------------------------------------------------------------
> #---------------------------Resize and Move Button------------------------------
> #-------------------------------------------------------------------------------
>
> def click_button(self, event):
>
> if (-1 < event.GetX() < 5):
> self.case = "left"
> self.lastX = event.GetX()
> elif ( (self.button.GetSize()[0]-5) < event.GetX() < (self.button.GetSize()[0]+1) ):
> self.case = "right"
> self.lastX = event.GetX()
> elif ( ((self.button.GetSize()[0]/2)-5) < event.GetX() < ((self.button.GetSize()[0]/2)+5) ):
> self.case = "center"
> self.lastX = event.GetX()
> cursor = self.wxCLOSEHAND_CURSOR
> self.button.SetCursor(cursor)
> else:
> self.case = "null"
>
> if (self.case == "left") or (self.case == "right") or (self.case == "center"):
> self.buttonMove = 1
>
> event.Skip()
>
> #-------------------------------------------------------------------------------
>
> def move_button(self, event):
> # related to movement and resize of the button
>
> if (-1 < event.GetX() < 5):
> self.cursorCase = "left"
> elif ( (self.button.GetSize()[0]-5) < event.GetX() < (self.button.GetSize()[0]+1) ):
> self.cursorCase = "right"
> elif ( ((self.button.GetSize()[0]/2)-5) < event.GetX() < ((self.button.GetSize()[0]/2)+5) ):
> self.cursorCase = "center"
> elif (not self.buttonMove):
> self.cursorCase = "null"
>
> # CHECKING CURSOR
> if (self.buttonMove):
> if (self.cursorCase == "left") or (self.cursorCase == "right"):
> cursor = wxStockCursor(wxCURSOR_SIZEWE)
> self.button.SetCursor(cursor)
> elif (self.cursorCase == "center"):
> cursor = self.wxCLOSEHAND_CURSOR
> self.button.SetCursor(cursor)
> else:
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
> else: # (not self.buttonMove)
> if (self.cursorCase == "left") or (self.cursorCase == "right"):
> cursor = wxStockCursor(wxCURSOR_SIZEWE)
> self.button.SetCursor(cursor)
> elif (self.cursorCase == "center"):
> cursor = self.wxOPENHAND_CURSOR
>
> self.button.SetCursor(cursor)
> else:
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
>
>
> # CHECKING MOVEMENT
> if (self.buttonMove):
> if (self.case == "left"):
> if ((self.lastX - event.GetX()) <= 0):
> diffX = abs(self.lastX - event.GetX())
> self.leftNewPos = self.leftNewPos + diffX
> case = 1
> else:
> diffX = abs(self.lastX - event.GetX())
> self.leftNewPos = self.leftNewPos - diffX
> case = 2
>
> if (self.leftButtontAreaLimit <= self.leftNewPos < (self.rightLimit - 10)):
> # setting the new button size
> if (case == 1):
> buttonSizeX = self.button.GetSize()[0] - diffX
> else:
> buttonSizeX = self.button.GetSize()[0] + diffX
>
> buttonSizeY = self.button.GetSize()[1]
> self.button.SetSize((buttonSizeX, buttonSizeY))
>
> # putting the button in the right position
> self.button.SetPosition((self.leftNewPos, self.verticalPos))
> self.leftLimit = self.leftNewPos
>
> else:
> self.leftNewPos = self.leftLimit
>
> self.leftText.SetValue((self.leftNewPos - 40)*self.quotientValue)
>
>
> elif (self.case == "right"):
>
> self.rightNewSize = self.button.GetSize()[0]
> diffX = abs(self.lastX - event.GetX())
>
> if ((self.lastX - event.GetX()) >= 0):
> self.rightNewSize = self.rightNewSize - diffX
> self.rightNewPos = self.rightNewSize + self.button.GetPosition()[0]
> self.lastX = self.lastX - diffX
> else:
> self.rightNewSize = self.rightNewSize + diffX
> self.rightNewPos = self.rightNewSize + self.button.GetPosition()[0]
> self.lastX = self.lastX + diffX
>
>
> if (self.rightButtontAreaLimit >= self.rightNewPos> (self.leftLimit + 10)):
> buttonSizeY = self.button.GetSize()[1]
> self.button.SetSize((self.rightNewSize, buttonSizeY))
> self.rightLimit = self.rightNewPos
>
> else:
> self.rightNewPos = self.rightLimit
>
> self.rightText.SetValue((self.rightNewPos - 40)*self.quotientValue)
> elif (self.case == "center"):
> (X, Y) = self.button.GetPosition()
> diffX = self.lastX - event.GetX()
> if ((X-diffX) >= self.leftButtontAreaLimit) and ((X-diffX + self.button.GetSize()[0]) <= self.rightButtontAreaLimit):
> self.button.SetPosition((X-diffX, Y))
> self.leftNewPos = self.leftLimit = (X-diffX)
> ## print "moveButton: self.leftLimit", self.leftLimit
> self.rightNewPos = self.rightLimit = (X-diffX+self.button.GetSize()[0])
> self.leftText.SetValue((X-diffX - 40)*self.quotientValue)
> self.rightText.SetValue((X-diffX - 40 + self.button.GetSize()[0])*self.quotientValue)
>
>
> else:
> pass
> else: # (not self.buttonMove)
> if (self.case == "left") or (self.case == "right"):
> #print "nao move"
> pass
> else:
> #print "nao move"
> pass
>
> event.Skip()
>
> #-------------------------------------------------------------------------------
>
> def unclick_button(self, event):
>
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
> self.buttonMove = 0
> self.case = "null"
>
> event.Skip()
>
>
> def leave_button(self, event):
>
> cursor = wxSTANDARD_CURSOR
> self.button.SetCursor(cursor)
> self.buttonMove = 0
> self.case = "null"
>
> event.Skip()
>
>
> #-------------------------------------------------------------------------------
> #-------------------------------Text Treatment----------------------------------
> #-------------------------------------------------------------------------------
> def checkLeftText(self, event):
>
> self.currentLeftTextValue = self.leftText.GetValue()
> self.pos_currentLeftTextValue = (self.currentLeftTextValue/self.quotientValue) + 40
>
> maxValue = (self.rightLimit - 40)*self.quotientValue - 1
> self.leftText.SetMax(maxValue)
>
>
> if (self.leftButtontAreaLimit <= self.pos_currentLeftTextValue < self.rightLimit):
> self.validValue = 1
> else:
> self.validValue = 0
>
> event.Skip()
>
> #-------------------------------------------------------------------------------
>
> def updateLeftText(self, event):
>
>
> if (event.GetKeyCode() == 13): #enter
>
> if self.validValue:
>
> if (self.pos_currentLeftTextValue < self.rightLimit - 10):
> self.leftNewPos = self.leftLimit = newPos = self.pos_currentLeftTextValue
> else: #elif ( self.rightLimit - 10 <= self.pos_currentLeftTextValue < self.rightLimit):
> self.leftNewPos = self.leftLimit = newPos = self.rightLimit - 11
>
> lastPos = (self.button.GetPosition()[0])
> diff = newPos - lastPos
>
> buttonSizeX = self.button.GetSize()[0] - diff
> buttonSizeY = self.button.GetSize()[1]
>
> self.button.SetPosition((newPos, self.verticalPos))
> self.button.SetSize((buttonSizeX, buttonSizeY))
>
> event.Skip()
>
> #-------------------------------------------------------------------------------
>
> def checkRightText(self, event):
>
> self.currentRightTextValue = self.rightText.GetValue()
> self.pos_currentRightTextValue = (self.currentRightTextValue/self.quotientValue) + 40
>
> minValue = (self.leftLimit - 40)*self.quotientValue + 1
> self.rightText.SetMin(minValue)
>
>
> max = (self.rightButtontAreaLimit- 40)* self.quotientValue
> min = (self.leftLimit - 40)*self.quotientValue
>
> if (min < self.currentRightTextValue <= max):
> self.validValue = 1
> else:
> self.validValue = 0
>
> event.Skip()
>
> #-------------------------------------------------------------------------------
>
> def updateRightText(self, event):
>
>
> if (event.GetKeyCode() == 13): #enter
>
> if self.validValue:
>
> if (self.pos_currentRightTextValue > self.leftLimit + 10):
> self.rightNewPos = self.rightLimit = newPos = self.pos_currentRightTextValue
> else: #elif ( self.rightLimit - 10 <= self.pos_currentLeftTextValue < self.rightLimit):
> self.rightNewPos = self.rightLimit = newPos = self.leftLimit + 11
>
> lastPos = (self.button.GetPosition()[0] + self.button.GetSize()[0])
>
> diff = newPos - lastPos
>
>
> buttonSizeX = self.button.GetSize()[0] + diff
> buttonSizeY = self.button.GetSize()[1]
>
> self.button.SetSize((buttonSizeX, buttonSizeY))
>
> event.Skip()
>
>
>
>
> ------------------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: wxPython-users-unsubscribe at lists.wxwidgets.org
> For additional commands, e-mail: wxPython-users-help at lists.wxwidgets.org
--
Christopher Barker, Ph.D.
Oceanographer
NOAA/OR&R/HAZMAT (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the wxpython-users
mailing list