backport of XRCed changes from today

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2007-05-01 06:03:28 +00:00
parent 3f4ec51e47
commit c3e1d30aea
6 changed files with 45 additions and 11 deletions

View File

@@ -348,6 +348,7 @@ class PropPage(ParamPage):
self.origChecks.append((param, True))
self.origControls.append((param, value, True))
except KeyError:
# Optional param not present in xxx - set empty value
self.checks[param].SetValue(False)
w.SetValue('')
w.Enable(False)

View File

@@ -397,9 +397,11 @@ class ParamUnit(PPanel):
def GetValue(self):
return self.text.GetValue()
def SetValue(self, value):
self.freeze = True
if not value: value = '0'
self.text.SetValue(value)
self.Change(0)
self.freeze = False
def Change(self, x):
self.freeze = True
# Check if we are working with dialog units

View File

@@ -100,6 +100,8 @@ class Tools(wx.Panel):
wx.EVT_KEY_DOWN(self, self.OnKeyDown)
wx.EVT_KEY_UP(self, self.OnKeyUp)
self.drag = None
def AddButton(self, id, image, text):
from wx.lib import buttons
button = buttons.GenBitmapButton(self, id, image, size=self.TOOL_SIZE,
@@ -107,7 +109,8 @@ class Tools(wx.Panel):
button.SetBezelWidth(0)
wx.EVT_KEY_DOWN(button, self.OnKeyDown)
wx.EVT_KEY_UP(button, self.OnKeyUp)
wx.EVT_RIGHT_DOWN(button, self.OnRightClick)
wx.EVT_LEFT_DOWN(button, self.OnLeftDownOnButton)
wx.EVT_MOTION(button, self.OnMotionOnButton)
button.SetToolTipString(text)
self.curSizer.Add(button)
self.groups[-1][1][id] = button
@@ -160,11 +163,32 @@ class Tools(wx.Panel):
else: box.SetLabel('[-] ' + box.name)
self.Layout()
# Drag
def OnRightClick(self, evt):
# DaD
def OnLeftDownOnButton(self, evt):
self.posDown = evt.GetPosition()
self.idDown = evt.GetId()
self.btnDown = evt.GetEventObject()
evt.Skip()
def OnMotionOnButton(self, evt):
# Detect dragging
if evt.Dragging() and evt.LeftIsDown():
d = evt.GetPosition() - self.posDown
if max(abs(d[0]), abs(d[1])) >= 5:
if self.btnDown.HasCapture():
# Generate up event to release mouse
evt = wx.MouseEvent(wx.EVT_LEFT_UP.typeId)
evt.SetId(self.idDown)
# Set flag to prevent normal button operation this time
self.drag = True
self.btnDown.ProcessEvent(evt)
self.StartDrag()
evt.Skip()
def StartDrag(self):
do = MyDataObject()
do.SetData(str(evt.GetId()))
bm = evt.GetEventObject().GetBitmapLabel()
do.SetData(str(self.idDown))
bm = self.btnDown.GetBitmapLabel()
# wxGTK requires wxIcon cursor, wxWIN and wxMAC require wxCursor
if wx.Platform == '__WXGTK__':
icon = wx.EmptyIcon()

View File

@@ -501,7 +501,7 @@ class XML_Tree(wx.TreeCtrl):
# Register events
wx.EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged)
# One works on Linux, another on Windows
if wx.Platform == '__WXGTK__':
if wx.Platform == '__WXGTK__': # !!! MAC too?
wx.EVT_TREE_ITEM_ACTIVATED(self, self.GetId(), self.OnItemActivated)
else:
wx.EVT_LEFT_DCLICK(self, self.OnDClick)
@@ -582,6 +582,7 @@ class XML_Tree(wx.TreeCtrl):
self.rootObj = xxxMainNode(self.dom)
self.root = self.AddRoot('XML tree', self.rootImage,
data=wx.TreeItemData(self.rootObj))
self.itemColour = self.GetItemTextColour(self.root)
self.SetItemHasChildren(self.root)
self.testElem = self.dom.createElement('dummy')
self.mainNode.appendChild(self.testElem)
@@ -601,7 +602,6 @@ class XML_Tree(wx.TreeCtrl):
self.rootObj = xxxMainNode(self.dom)
self.root = self.AddRoot('XML tree', self.rootImage,
data=wx.TreeItemData(self.rootObj))
self.itemColour = self.GetItemTextColour(self.root)
self.SetItemHasChildren(self.root)
nodes = self.mainNode.childNodes[:]
for node in nodes:
@@ -1038,7 +1038,10 @@ class XML_Tree(wx.TreeCtrl):
wx.EVT_CLOSE(testWin, self.OnCloseTestWin)
wx.EVT_SIZE(testWin, self.OnSizeTestWin)
# Add drop target
testWin.SetDropTarget(DropTarget())
if testWin.panel:
testWin.panel.SetDropTarget(DropTarget())
else:
testWin.SetDropTarget(DropTarget())
# Reset highlights
testWin.highLight = testWin.highLightDT = None
if highLight and not self.pendingHighLight:
@@ -1346,8 +1349,7 @@ class DropTarget(wx.PyDropTarget):
# Set color of highlighted item back to normal
if hl and hl.item:
if hl.item != parentItem:
if hasattr(g.tree, 'itemColour'):
g.tree.SetItemTextColour(hl.item, g.tree.itemColour)
g.tree.SetItemTextColour(hl.item, g.tree.itemColour)
# Highlight future parent
g.tree.itemColour = g.tree.GetItemTextColour(parentItem) # save current
g.testWin.highLightDT = updateHL(hl, HighLightDTBox, pos, size)

View File

@@ -274,7 +274,8 @@ class UndoEdit:
# Save current state for redo
map(ParamPage.SaveState, g.panel.pages)
pages = map(ParamPage.GetState, g.panel.pages)
map(ParamPage.SetState, g.panel.pages, self.pages)
if self.pages:
map(ParamPage.SetState, g.panel.pages, self.pages)
self.pages = pages
self.update(selected)
def redo(self):

View File

@@ -1101,6 +1101,10 @@ Homepage: http://xrced.sourceforge.net\
print msg
def OnCreate(self, evt):
# Ignore fake events generated while dragging
if g.tools.drag:
g.tools.drag = False
return
selected = tree.selection
if tree.ctrl: appendChild = False
else: appendChild = not tree.NeedInsert(selected)