]> git.saurik.com Git - wxWidgets.git/commitdiff
* bugfixes for tree move operations and undo/redo
authorRoman Rolinsky <rolinsky@femagsoft.com>
Mon, 7 May 2007 22:25:57 +0000 (22:25 +0000)
committerRoman Rolinsky <rolinsky@femagsoft.com>
Mon, 7 May 2007 22:25:57 +0000 (22:25 +0000)
* Mac LnF ameliorations
* some sizing/spacing changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45870 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/wx/tools/XRCed/panel.py
wxPython/wx/tools/XRCed/params.py
wxPython/wx/tools/XRCed/tools.py
wxPython/wx/tools/XRCed/tree.py
wxPython/wx/tools/XRCed/undo.py
wxPython/wx/tools/XRCed/xrced.py

index 361ab59b6683c5120ed877e3776e3504d41fe258..cf2a2df7112e470ff5590db5c53ea2d45ffa7473 100644 (file)
@@ -70,7 +70,7 @@ class Panel(wx.Notebook):
         if g.conf.panic:
             topSizer.Add(sizer, 1, wx.EXPAND)
         else:
-            topSizer.Add(sizer, 0, wx.ALL, 5)
+            topSizer.Add(sizer, 1, wx.ALL, 5)
         return sizer
 
     def SetData(self, xxx):
@@ -281,7 +281,7 @@ class PropPage(ParamPage):
     def __init__(self, parent, label, xxx):
         ParamPage.__init__(self, parent, xxx)
         self.box = wx.StaticBox(self, -1, label)
-        self.box.SetFont(g.labelFont())
+        #self.box.SetFont(g.labelFont())
         topSizer = wx.StaticBoxSizer(self.box, wx.VERTICAL)
         sizer = wx.FlexGridSizer(len(xxx.allParams), 2, 1, 5)
         sizer.AddGrowableCol(1)
@@ -370,7 +370,7 @@ class StylePage(ParamPage):
     def __init__(self, parent, label, xxx):
         ParamPage.__init__(self, parent, xxx)
         box = wx.StaticBox(self, -1, label)
-        box.SetFont(g.labelFont())
+        #box.SetFont(g.labelFont())
         topSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
         sizer = wx.FlexGridSizer(len(xxx.styles), 2, 1, 5)
         sizer.AddGrowableCol(1)
index c62d3e1f495d6dcca447ba37846c3d3a13f935e4..fd7601985c82e1b5bcacfb1af96f22b8fcf6ade4 100644 (file)
@@ -263,7 +263,7 @@ class ParamFont(PPanel):
         PPanel.OnChange(self, evt)
         self.textModified = True
     def _defaultValue(self):
-        return [`g._sysFont.GetPointSize()`, 'default', 'normal', 'normal', '0', '', '']
+        return [`g.sysFont().GetPointSize()`, 'default', 'normal', 'normal', '0', '', '']
     def GetValue(self):
         if self.textModified:           # text has newer value
             try:
@@ -287,7 +287,7 @@ class ParamFont(PPanel):
                 self.value = self._defaultValue()
         # Make initial font
         # Default values
-        size = g._sysFont.GetPointSize()
+        size = g.sysFont().GetPointSize()
         family = wx.DEFAULT
         style = weight = wx.NORMAL
         underlined = 0
index d512ef7ba770bc61b37deb144ad277b930d253a2..abb8297b0c07154c3596ff3c8b6a17a5ed6bf7ee 100644 (file)
@@ -56,7 +56,6 @@ class Tools(wx.Panel):
              (ID_NEW.STATIC_TEXT, images.getToolStaticTextBitmap()),
              (ID_NEW.STATIC_BITMAP, images.getToolStaticBitmapBitmap()),
              (ID_NEW.STATIC_LINE, images.getToolStaticLineBitmap()),
-             
              (ID_NEW.BUTTON, images.getToolButtonBitmap()),
              (ID_NEW.BITMAP_BUTTON, images.getToolBitmapButtonBitmap()),
              (ID_NEW.STATIC_BOX, images.getToolStaticBoxBitmap()),
@@ -102,7 +101,6 @@ class Tools(wx.Panel):
         # wxMSW does not generate click events for StaticBox
         if wx.Platform == '__WXMSW__':
             self.Bind(wx.EVT_LEFT_DOWN, self.OnClickBox)
-
         self.drag = None
 
     def AddButton(self, id, image, text):
@@ -129,9 +127,9 @@ class Tools(wx.Panel):
         box.gnum = len(self.groups)
         box.Bind(wx.EVT_LEFT_DOWN, self.OnClickBox)
         boxSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
-        boxSizer.Add((0, 4))
+        boxSizer.Add((0, 0))
         self.boxes[id] = box
-        self.curSizer = wx.GridSizer(0, 3)
+        self.curSizer = wx.GridSizer(0, 3, 3, 3)
         boxSizer.Add(self.curSizer)
         self.sizer.Add(boxSizer, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND, 4)
         self.groups.append((box,{}))
@@ -139,7 +137,6 @@ class Tools(wx.Panel):
     # Enable/disable group
     def EnableGroup(self, gnum, enable = True):
         grp = self.groups[gnum]
-        #grp[0].Enable(enable)
         for b in grp[1].values(): b.Enable(enable)
 
     # Show/hide group
@@ -367,3 +364,4 @@ class Tools(wx.Panel):
                 self.EnableGroupItem(GROUP_MENUS, ID_NEW.MENU_BAR)
         # Save state
         self.state = state
+        self.Refresh()
index 0e88c4eba38c8be1de673e425fb3353e6fc656f8..5357edb90787368759d0ddf10f07f2e780c7a161 100644 (file)
@@ -1109,8 +1109,9 @@ class XML_Tree(wx.TreeCtrl):
         n = 0                           # index of sibling
         prev = self.GetPrevSibling(item)
         while prev.IsOk():
-            # MenuBar is not a child
-            if not isinstance(self.GetPyData(prev), xxxMenuBar):
+            # MenuBar and sizers are not real children (who else?)
+            if not isinstance(self.GetPyData(prev), xxxMenuBar) and not \
+                    isinstance(self.GetPyData(prev), xxxSizer):
                 n += 1
             prev = self.GetPrevSibling(prev)
         return n
index f883f88e933ceee468e390e80647c5b2a56e0b97..4ad8909b2b1c9574ce17515248bd241712a5ab3c 100644 (file)
@@ -210,6 +210,10 @@ class UndoMove:
 
         selected = g.tree.InsertNode(self.oldParent, parent, elem, nextItem)
         g.tree.EnsureVisible(selected)
+        # Highlight is outdated
+        if g.testWin and g.testWin.highLight:
+            g.testWin.highLight.Remove()
+            g.tree.needUpdate = True
         g.tree.SelectItem(selected)
     def redo(self):
         item = g.tree.GetFirstChild(self.oldParent)[0]
@@ -248,6 +252,10 @@ class UndoMove:
         for i in range(self.newIndex): nextItem = g.tree.GetNextSibling(nextItem) 
         selected = g.tree.InsertNode(self.newParent, parent, elem, nextItem)
         g.tree.EnsureVisible(selected)
+        # Highlight is outdated
+        if g.testWin and g.testWin.highLight:
+            g.testWin.highLight.Remove()
+            g.tree.needUpdate = True
         g.tree.SelectItem(selected)
 
 class UndoEdit:
index a3f1c6b9fe0f6c92b335bcea26df2b9086019854..afc6dd32ff893153d72bbab252bf1e351a25c456 100644 (file)
@@ -92,14 +92,29 @@ class Locator(wx.EvtHandler):
     def ProcessEvent(self, evt):
         print evt
 
+class TaskBarIcon(wx.TaskBarIcon):
+    def __init__(self, frame):
+        wx.TaskBarIcon.__init__(self)
+        self.frame = frame
+        # Set the image
+        self.SetIcon(images.getIconIcon(), "XRCed")
+
 class Frame(wx.Frame):
     def __init__(self, pos, size):
-        wx.Frame.__init__(self, None, -1, '', pos, size)
+        pre = wx.PreFrame()
+#        pre.SetExtraStyle(wx.FRAME_EX_METAL)
+        pre.Create(None, -1, '', pos, size)
+        self.PostCreate(pre)
+        #wx.Frame.__init__(self, None, -1, '', pos, size)
         global frame
         frame = g.frame = self
         bar = self.CreateStatusBar(2)
         bar.SetStatusWidths([-1, 40])
         self.SetIcon(images.getIconIcon())
+        try:
+            self.tbicon = TaskBarIcon(self)
+        except:
+            self.tbicon = None
 
         # Idle flag
         self.inIdle = False
@@ -156,7 +171,6 @@ class Frame(wx.Frame):
         self.ID_TOOL_PASTE = wx.NewId()
         menu.Append(self.ID_LOCATE, '&Locate\tCtrl-L', 'Locate control in test window and select it')
         menuBar.Append(menu, '&Edit')
-
         menu = wx.Menu()
         self.ID_EMBED_PANEL = wx.NewId()
         menu.Append(self.ID_EMBED_PANEL, '&Embed Panel',
@@ -204,11 +218,12 @@ class Frame(wx.Frame):
 
         # Create toolbar
         tb = self.CreateToolBar(wx.TB_HORIZONTAL | wx.NO_BORDER | wx.TB_FLAT)
-        tb.SetToolBitmapSize((24,24))
+        
         # Hide some icons on Mac to reduce the toolbar size,
         # and comply more with the Apple LnF, besides
         # wxMac icons are ugly
         if wx.Platform != '__WXMAC__':
+            tb.SetToolBitmapSize((24,24))
             new_bmp  = wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_TOOLBAR)
             open_bmp = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR)
             save_bmp = wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_TOOLBAR)
@@ -231,7 +246,7 @@ class Frame(wx.Frame):
         tb.AddSimpleTool(self.ID_TOOL_LOCATE,
                         images.getLocateBitmap(), #images.getLocateArmedBitmap(),
                         'Locate', 'Locate control in test window and select it', True)
-        tb.AddControl(wx.StaticLine(tb, -1, size=(-1,23), style=wx.LI_VERTICAL))
+#        tb.AddControl(wx.StaticLine(tb, -1, size=(-1,23), style=wx.LI_VERTICAL))
         tb.AddSimpleTool(self.ID_TEST, images.getTestBitmap(), 'Test', 'Test window')
         tb.AddSimpleTool(self.ID_REFRESH, images.getRefreshBitmap(),
                          'Refresh', 'Refresh view')
@@ -343,7 +358,10 @@ class Frame(wx.Frame):
             sizer2.Add(panel, 1, wx.EXPAND)
             miniFrame.Show(True)
             splitter.Initialize(tree)
-        sizer1.Add(splitter, 1, wx.EXPAND)
+        if wx.Platform == '__WXMAC__':
+            sizer1.Add(splitter, 1, wx.EXPAND|wx.RIGHT, 5)
+        else:
+            sizer1.Add(splitter, 1, wx.EXPAND)
         sizer.Add(sizer1, 1, wx.EXPAND)
         self.SetAutoLayout(True)
         self.SetSizer(sizer)
@@ -763,10 +781,9 @@ class Frame(wx.Frame):
         # Check compatibility
         if not self.ItemsAreCompatible(tree.GetPyData(pparent).treeObject(), tree.GetPyData(selected).treeObject()): return
 
-        # Remove highlight, update testWin
         if g.testWin and g.testWin.highLight:
             g.testWin.highLight.Remove()
-            tree.needUpdate = True
+        tree.needUpdate = True
 
         # Undo info
         self.lastOp = 'MOVELEFT'
@@ -807,7 +824,6 @@ class Frame(wx.Frame):
 
         selected = tree.InsertNode(pparent, tree.GetPyData(pparent).treeObject(), elem, nextItem)
         newIndex = tree.ItemIndex(selected)
-        tree.oldItem = None
         tree.SelectItem(selected)
 
         undoMan.RegisterUndo(UndoMove(oldParent, oldIndex, pparent, newIndex))
@@ -833,7 +849,7 @@ class Frame(wx.Frame):
         # Remove highlight, update testWin
         if g.testWin and g.testWin.highLight:
             g.testWin.highLight.Remove()
-            tree.needUpdate = True
+        tree.needUpdate = True
 
         # Undo info
         self.lastOp = 'MOVERIGHT'
@@ -871,7 +887,6 @@ class Frame(wx.Frame):
         selected = tree.InsertNode(newParent, tree.GetPyData(newParent).treeObject(), elem, wx.TreeItemId())
 
         newIndex = tree.ItemIndex(selected)
-        tree.oldItem = None
         tree.SelectItem(selected)
 
         undoMan.RegisterUndo(UndoMove(oldParent, oldIndex, newParent, newIndex))
@@ -1324,8 +1339,11 @@ Homepage: http://xrced.sourceforge.net\
         menuId = evt.GetMenuId()
         if menuId != -1:
             menu = evt.GetEventObject()
-            help = menu.GetHelpString(menuId)
-            self.SetStatusText(help)
+            try:
+                help = menu.GetHelpString(menuId)
+                self.SetStatusText(help)
+            except:
+                self.SetStatusText('')
         else:
             self.SetStatusText('')
 
@@ -1346,6 +1364,7 @@ Homepage: http://xrced.sourceforge.net\
     def OnIdle(self, evt):
         if self.inIdle: return          # Recursive call protection
         self.inIdle = True
+        #print 'onidle',tree.needUpdate,tree.pendingHighLight
         try:
             if tree.needUpdate:
                 if conf.autoRefresh: