0.1.8-3
------- Notebook page highlighting fix. Highlight resizes when the window is resized. ParamUnit spin button detects event handler re-entry (wxGTK probably has a bug in wxSpinButton with repeated events). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44694 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
0.1.8-3
|
||||||
|
-------
|
||||||
|
|
||||||
|
Notebook page highlighting fix. Highlight resizes when the window
|
||||||
|
is resized. ParamUnit spin button detects event handler re-entry
|
||||||
|
(wxGTK probably has a bug in wxSpinButton with repeated events).
|
||||||
|
|
||||||
0.1.8-2
|
0.1.8-2
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@ import sys
|
|||||||
# Global constants
|
# Global constants
|
||||||
|
|
||||||
progname = 'XRCed'
|
progname = 'XRCed'
|
||||||
version = '0.1.8-2'
|
version = '0.1.8-3'
|
||||||
# Minimal wxWidgets version
|
# Minimal wxWidgets version
|
||||||
MinWxVersion = (2,6,0)
|
MinWxVersion = (2,6,0)
|
||||||
if wx.VERSION[:3] < MinWxVersion:
|
if wx.VERSION[:3] < MinWxVersion:
|
||||||
|
@@ -237,6 +237,7 @@ class ParamPage(wx.Panel):
|
|||||||
xxx.setSpecial(param, value)
|
xxx.setSpecial(param, value)
|
||||||
else:
|
else:
|
||||||
paramObj.update(value)
|
paramObj.update(value)
|
||||||
|
|
||||||
# Save current state
|
# Save current state
|
||||||
def SaveState(self):
|
def SaveState(self):
|
||||||
self.origChecks = map(lambda i: (i[0], i[1].GetValue()), self.checks.items())
|
self.origChecks = map(lambda i: (i[0], i[1].GetValue()), self.checks.items())
|
||||||
|
@@ -57,8 +57,7 @@ class ParamBinaryOr(PPanel):
|
|||||||
self.button = wx.Button(self, self.ID_BUTTON_CHOICES, 'Edit...', size=buttonSize)
|
self.button = wx.Button(self, self.ID_BUTTON_CHOICES, 'Edit...', size=buttonSize)
|
||||||
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
wx.EVT_BUTTON(self, self.ID_BUTTON_CHOICES, self.OnButtonChoices)
|
wx.EVT_BUTTON(self, self.ID_BUTTON_CHOICES, self.OnButtonChoices)
|
||||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||||
def GetValue(self):
|
def GetValue(self):
|
||||||
@@ -192,8 +191,7 @@ class ParamColour(PPanel):
|
|||||||
self.button = wx.Panel(self, self.ID_BUTTON, wx.DefaultPosition, wx.Size(20, 20))
|
self.button = wx.Panel(self, self.ID_BUTTON, wx.DefaultPosition, wx.Size(20, 20))
|
||||||
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
|
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
self.textModified = False
|
self.textModified = False
|
||||||
wx.EVT_PAINT(self.button, self.OnPaintButton)
|
wx.EVT_PAINT(self.button, self.OnPaintButton)
|
||||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||||
@@ -254,8 +252,7 @@ class ParamFont(PPanel):
|
|||||||
self.button = wx.Button(self, self.ID_BUTTON_SELECT, 'Select...', size=buttonSize)
|
self.button = wx.Button(self, self.ID_BUTTON_SELECT, 'Select...', size=buttonSize)
|
||||||
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
self.textModified = False
|
self.textModified = False
|
||||||
wx.EVT_BUTTON(self, self.ID_BUTTON_SELECT, self.OnButtonSelect)
|
wx.EVT_BUTTON(self, self.ID_BUTTON_SELECT, self.OnButtonSelect)
|
||||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||||
@@ -348,8 +345,7 @@ class ParamInt(PPanel):
|
|||||||
self.spin.SetRange(-2147483648, 2147483647) # min/max integers
|
self.spin.SetRange(-2147483648, 2147483647) # min/max integers
|
||||||
sizer.Add(self.spin)
|
sizer.Add(self.spin)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
wx.EVT_SPINCTRL(self, self.ID_SPIN_CTRL, self.OnChange)
|
wx.EVT_SPINCTRL(self, self.ID_SPIN_CTRL, self.OnChange)
|
||||||
def GetValue(self):
|
def GetValue(self):
|
||||||
return str(self.spin.GetValue())
|
return str(self.spin.GetValue())
|
||||||
@@ -369,8 +365,7 @@ class ParamIntNN(PPanel):
|
|||||||
self.spin.SetRange(0, 10000) # min/max integers
|
self.spin.SetRange(0, 10000) # min/max integers
|
||||||
sizer.Add(self.spin)
|
sizer.Add(self.spin)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
wx.EVT_SPINCTRL(self, self.ID_SPIN_CTRL, self.OnChange)
|
wx.EVT_SPINCTRL(self, self.ID_SPIN_CTRL, self.OnChange)
|
||||||
def GetValue(self):
|
def GetValue(self):
|
||||||
return str(self.spin.GetValue())
|
return str(self.spin.GetValue())
|
||||||
@@ -387,26 +382,24 @@ class ParamUnit(PPanel):
|
|||||||
self.ID_TEXT_CTRL = wx.NewId()
|
self.ID_TEXT_CTRL = wx.NewId()
|
||||||
self.ID_SPIN_BUTTON = wx.NewId()
|
self.ID_SPIN_BUTTON = wx.NewId()
|
||||||
sizer = wx.BoxSizer(wx.HORIZONTAL)
|
sizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
self.spin = wx.SpinButton(self, self.ID_SPIN_BUTTON, style = wx.SP_VERTICAL, size=(-1,1))
|
self.spin = wx.SpinButton(self, self.ID_SPIN_BUTTON, style = wx.SP_VERTICAL)
|
||||||
textW = 60 - self.spin.GetSize()[0]
|
textW = 60 - self.spin.GetSize()[0]
|
||||||
self.text = wx.TextCtrl(self, self.ID_TEXT_CTRL, size=(textW,-1))
|
self.text = wx.TextCtrl(self, self.ID_TEXT_CTRL, size=(textW,-1))
|
||||||
self.spin.SetRange(-10000, 10000)
|
self.spin.SetRange(-10000, 10000)
|
||||||
sizer.Add(self.text, 0, wx.EXPAND)
|
sizer.Add(self.text, 0, wx.EXPAND)
|
||||||
sizer.Add(self.spin, 0, wx.EXPAND)
|
sizer.Add(self.spin, 0, wx.EXPAND)
|
||||||
#sizer.SetMinSize((50,-1))
|
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
self.spin.Bind(wx.EVT_SPIN_UP, self.OnSpinUp)
|
||||||
wx.EVT_SPIN_UP(self, self.ID_SPIN_BUTTON, self.OnSpinUp)
|
self.spin.Bind(wx.EVT_SPIN_DOWN, self.OnSpinDown)
|
||||||
wx.EVT_SPIN_DOWN(self, self.ID_SPIN_BUTTON, self.OnSpinDown)
|
|
||||||
def GetValue(self):
|
def GetValue(self):
|
||||||
return self.text.GetValue()
|
return self.text.GetValue()
|
||||||
def SetValue(self, value):
|
def SetValue(self, value):
|
||||||
self.freeze = True
|
if not value: value = '0'
|
||||||
if not value: value = '0'
|
|
||||||
self.text.SetValue(value)
|
self.text.SetValue(value)
|
||||||
self.freeze = False
|
self.Change(0)
|
||||||
def Change(self, x):
|
def Change(self, x):
|
||||||
|
self.freeze = True
|
||||||
# Check if we are working with dialog units
|
# Check if we are working with dialog units
|
||||||
value = self.text.GetValue()
|
value = self.text.GetValue()
|
||||||
units = ''
|
units = ''
|
||||||
@@ -416,14 +409,19 @@ class ParamUnit(PPanel):
|
|||||||
try:
|
try:
|
||||||
intValue = int(value) + x
|
intValue = int(value) + x
|
||||||
self.spin.SetValue(intValue)
|
self.spin.SetValue(intValue)
|
||||||
self.text.SetValue(str(intValue) + units)
|
if x: # 0 can be passed to update spin value only
|
||||||
self.SetModified()
|
self.text.SetValue(str(intValue) + units)
|
||||||
|
self.SetModified()
|
||||||
except:
|
except:
|
||||||
# !!! Strange, if I use wx.LogWarning, event is re-generated
|
# !!! Strange, if I use wx.LogWarning, event is re-generated
|
||||||
print 'ERROR: incorrect unit format'
|
print 'ERROR: incorrect unit format'
|
||||||
|
self.freeze = False
|
||||||
def OnSpinUp(self, evt):
|
def OnSpinUp(self, evt):
|
||||||
|
self.freeze = True
|
||||||
self.Change(1)
|
self.Change(1)
|
||||||
def OnSpinDown(self, evt):
|
def OnSpinDown(self, evt):
|
||||||
|
if self.freeze: return
|
||||||
|
self.freeze = True
|
||||||
self.Change(-1)
|
self.Change(-1)
|
||||||
|
|
||||||
class ParamMultilineText(PPanel):
|
class ParamMultilineText(PPanel):
|
||||||
@@ -437,8 +435,7 @@ class ParamMultilineText(PPanel):
|
|||||||
self.button = wx.Button(self, self.ID_BUTTON_EDIT, 'Edit...', size=buttonSize)
|
self.button = wx.Button(self, self.ID_BUTTON_EDIT, 'Edit...', size=buttonSize)
|
||||||
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
wx.EVT_BUTTON(self, self.ID_BUTTON_EDIT, self.OnButtonEdit)
|
wx.EVT_BUTTON(self, self.ID_BUTTON_EDIT, self.OnButtonEdit)
|
||||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||||
def GetValue(self):
|
def GetValue(self):
|
||||||
@@ -467,8 +464,7 @@ class ParamText(PPanel):
|
|||||||
else: option = 0
|
else: option = 0
|
||||||
sizer.Add(self.text, option, wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.BOTTOM, 2)
|
sizer.Add(self.text, option, wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.BOTTOM, 2)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||||
def GetValue(self):
|
def GetValue(self):
|
||||||
return self.text.GetValue()
|
return self.text.GetValue()
|
||||||
@@ -612,8 +608,7 @@ class ParamContent(PPanel):
|
|||||||
self.button = wx.Button(self, self.ID_BUTTON_EDIT, 'Edit...', size=buttonSize)
|
self.button = wx.Button(self, self.ID_BUTTON_EDIT, 'Edit...', size=buttonSize)
|
||||||
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
self.textModified = False
|
self.textModified = False
|
||||||
wx.EVT_BUTTON(self, self.ID_BUTTON_EDIT, self.OnButtonEdit)
|
wx.EVT_BUTTON(self, self.ID_BUTTON_EDIT, self.OnButtonEdit)
|
||||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||||
@@ -753,8 +748,7 @@ class RadioBox(PPanel):
|
|||||||
topSizer.Add(button, 0, wx.RIGHT, 5)
|
topSizer.Add(button, 0, wx.RIGHT, 5)
|
||||||
wx.EVT_RADIOBUTTON(self, button.GetId(), self.OnRadioChoice)
|
wx.EVT_RADIOBUTTON(self, button.GetId(), self.OnRadioChoice)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(topSizer)
|
self.SetSizerAndFit(topSizer)
|
||||||
topSizer.Fit(self)
|
|
||||||
def SetStringSelection(self, value):
|
def SetStringSelection(self, value):
|
||||||
self.freeze = True
|
self.freeze = True
|
||||||
for i in self.choices:
|
for i in self.choices:
|
||||||
@@ -813,8 +807,7 @@ class ParamFile(PPanel):
|
|||||||
self.button = wx.Button(self, self.ID_BUTTON_BROWSE, 'Browse...',size=buttonSize)
|
self.button = wx.Button(self, self.ID_BUTTON_BROWSE, 'Browse...',size=buttonSize)
|
||||||
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
self.SetAutoLayout(True)
|
self.SetAutoLayout(True)
|
||||||
self.SetSizer(sizer)
|
self.SetSizerAndFit(sizer)
|
||||||
sizer.Fit(self)
|
|
||||||
self.textModified = False
|
self.textModified = False
|
||||||
wx.EVT_BUTTON(self, self.ID_BUTTON_BROWSE, self.OnButtonBrowse)
|
wx.EVT_BUTTON(self, self.ID_BUTTON_BROWSE, self.OnButtonBrowse)
|
||||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||||
|
@@ -612,6 +612,7 @@ class XML_Tree(wx.TreeCtrl):
|
|||||||
# Reset selection object
|
# Reset selection object
|
||||||
self.selection = None
|
self.selection = None
|
||||||
return node
|
return node
|
||||||
|
|
||||||
# Find position relative to the top-level window
|
# Find position relative to the top-level window
|
||||||
def FindNodePos(self, item, obj=None):
|
def FindNodePos(self, item, obj=None):
|
||||||
# Root at (0,0)
|
# Root at (0,0)
|
||||||
@@ -631,15 +632,12 @@ class XML_Tree(wx.TreeCtrl):
|
|||||||
if g.testWin.highLight:
|
if g.testWin.highLight:
|
||||||
g.testWin.highLight.Remove()
|
g.testWin.highLight.Remove()
|
||||||
break
|
break
|
||||||
# Find first ancestor which is a wxWindow (not a sizer)
|
# For sizers and notebooks we must select the first window-like parent
|
||||||
winParent = itemParent
|
winParent = itemParent
|
||||||
while self.GetPyData(winParent).isSizer:
|
while self.GetPyData(winParent).isSizer or \
|
||||||
|
self.GetPyData(winParent).treeObject().__class__ == xxxNotebook:
|
||||||
winParent = self.GetItemParent(winParent)
|
winParent = self.GetItemParent(winParent)
|
||||||
# Notebook children are layed out in a little strange way
|
parentPos = self.FindNodePos(winParent)
|
||||||
if self.GetPyData(itemParent).treeObject().__class__ == xxxNotebook:
|
|
||||||
parentPos = wx.Point(0,0)
|
|
||||||
else:
|
|
||||||
parentPos = self.FindNodePos(winParent)
|
|
||||||
# Position (-1,-1) is really (0,0)
|
# Position (-1,-1) is really (0,0)
|
||||||
pos = obj.GetPosition()
|
pos = obj.GetPosition()
|
||||||
if pos == (-1,-1): pos = (0,0)
|
if pos == (-1,-1): pos = (0,0)
|
||||||
@@ -700,7 +698,6 @@ class XML_Tree(wx.TreeCtrl):
|
|||||||
# If some data was modified, apply changes
|
# If some data was modified, apply changes
|
||||||
if g.panel.IsModified():
|
if g.panel.IsModified():
|
||||||
self.Apply(xxx, oldItem)
|
self.Apply(xxx, oldItem)
|
||||||
#if conf.autoRefresh:
|
|
||||||
if g.testWin:
|
if g.testWin:
|
||||||
if g.testWin.highLight:
|
if g.testWin.highLight:
|
||||||
g.testWin.highLight.Remove()
|
g.testWin.highLight.Remove()
|
||||||
@@ -959,9 +956,11 @@ class XML_Tree(wx.TreeCtrl):
|
|||||||
testWin.toolBar = res.LoadToolBar(testWin, STD_NAME)
|
testWin.toolBar = res.LoadToolBar(testWin, STD_NAME)
|
||||||
testWin.SetToolBar(testWin.toolBar)
|
testWin.SetToolBar(testWin.toolBar)
|
||||||
testWin.Show(True)
|
testWin.Show(True)
|
||||||
|
# Catch some events, set highlight
|
||||||
if testWin:
|
if testWin:
|
||||||
testWin.item = item
|
testWin.item = item
|
||||||
wx.EVT_CLOSE(testWin, self.OnCloseTestWin)
|
wx.EVT_CLOSE(testWin, self.OnCloseTestWin)
|
||||||
|
wx.EVT_SIZE(testWin, self.OnSizeTestWin)
|
||||||
testWin.highLight = None
|
testWin.highLight = None
|
||||||
if highLight and not self.pendingHighLight:
|
if highLight and not self.pendingHighLight:
|
||||||
self.HighLight(highLight)
|
self.HighLight(highLight)
|
||||||
@@ -987,6 +986,11 @@ class XML_Tree(wx.TreeCtrl):
|
|||||||
def OnCloseTestWin(self, evt):
|
def OnCloseTestWin(self, evt):
|
||||||
self.CloseTestWindow()
|
self.CloseTestWindow()
|
||||||
|
|
||||||
|
def OnSizeTestWin(self, evt):
|
||||||
|
if g.testWin.highLight:
|
||||||
|
self.HighLight(g.testWin.highLight.item)
|
||||||
|
evt.Skip()
|
||||||
|
|
||||||
# Return index in parent, for real window children
|
# Return index in parent, for real window children
|
||||||
def WindowIndex(self, item):
|
def WindowIndex(self, item):
|
||||||
n = 0 # index of sibling
|
n = 0 # index of sibling
|
||||||
|
@@ -317,7 +317,6 @@ class xxxObject:
|
|||||||
# Special processing for growablecols-like parameters
|
# Special processing for growablecols-like parameters
|
||||||
# represented by several nodes
|
# represented by several nodes
|
||||||
def special(self, tag, node):
|
def special(self, tag, node):
|
||||||
print 'special',tag
|
|
||||||
if not self.params.has_key(tag):
|
if not self.params.has_key(tag):
|
||||||
# Create new multi-group
|
# Create new multi-group
|
||||||
self.params[tag] = xxxParamMulti(node)
|
self.params[tag] = xxxParamMulti(node)
|
||||||
|
Reference in New Issue
Block a user