controls/ProjectPropertiesPanel.py
changeset 714 131ea7f237b9
parent 711 5f6a743dcde5
--- a/controls/ProjectPropertiesPanel.py	Fri Jun 15 18:03:25 2012 +0200
+++ b/controls/ProjectPropertiesPanel.py	Mon Jun 25 20:03:53 2012 +0200
@@ -24,8 +24,20 @@
 
 import wx
 
+#-------------------------------------------------------------------------------
+#                                 Helpers
+#-------------------------------------------------------------------------------
+
 REQUIRED_PARAMS = ["projectName", "productName", "productVersion", "companyName"]
 
+[TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, PROJECTTREE, 
+ POUINSTANCEVARIABLESPANEL, LIBRARYTREE, SCALING, PAGETITLES
+] = range(10)
+
+#-------------------------------------------------------------------------------
+#                       Project Properties Panel
+#-------------------------------------------------------------------------------
+
 class ProjectPropertiesPanel(wx.Notebook):
     
     def AddSizerParams(self, parent, sizer, params):
@@ -36,25 +48,20 @@
             elif idx == len(params) - 1:
                 border |= wx.BOTTOM
             
-            st = wx.StaticText(id=-1, parent=parent, 
-                  label=label, name=name + '_label',
-                  pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-            sizer.AddWindow(st, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
+            st = wx.StaticText(parent, label=label)
+            sizer.AddWindow(st, border=10, 
+                  flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
             
-            tc_id = wx.NewId()
-            tc = wx.TextCtrl(id=tc_id, parent=parent, 
-                  name=name, pos=wx.Point(0, 0), 
-                  size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER)
+            tc = wx.TextCtrl(parent, style=wx.TE_PROCESS_ENTER)
             setattr(self, name, tc)
             callback = self.GetTextCtrlChangedFunction(tc, name)
-            self.Bind(wx.EVT_TEXT_ENTER, callback, id=tc_id)
+            self.Bind(wx.EVT_TEXT_ENTER, callback, tc)
             tc.Bind(wx.EVT_KILL_FOCUS, callback)
-            sizer.AddWindow(tc, 0, border=10, flag=wx.GROW|border|wx.RIGHT)
+            sizer.AddWindow(tc, border=10, 
+                  flag=wx.GROW|border|wx.RIGHT)
 
     def __init__(self, parent, controller=None, window=None, enable_required=True):
-        wx.Notebook.__init__(self, id=-1, parent=parent, 
-              name='ProjectPropertiesPanel', style=0, 
-              pos=wx.Point(0, 0), size=wx.Size(500, 300))
+        wx.Notebook.__init__(self, parent, size=wx.Size(500, 300))
 
         self.Controller = controller
         self.ParentWindow = window
@@ -62,9 +69,7 @@
         
         # Project Panel elements
 
-        self.ProjectPanel = wx.Panel(id=-1, parent=self, 
-              name='ProjectPanel', pos=wx.Point(0, 0),
-              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
+        self.ProjectPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
         projectpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=5, vgap=15)
         projectpanel_sizer.AddGrowableCol(1)
         self.ProjectPanel.SetSizer(projectpanel_sizer)
@@ -80,9 +85,7 @@
         
         # Author Panel elements
 
-        self.AuthorPanel = wx.Panel(id=-1, parent=self,
-              name='AuthorPanel', pos=wx.Point(0, 0),
-              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
+        self.AuthorPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
         authorpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=4, vgap=15)
         authorpanel_sizer.AddGrowableCol(1)
         self.AuthorPanel.SetSizer(authorpanel_sizer)
@@ -97,56 +100,48 @@
 
         # Graphics Panel elements
 
-        self.GraphicsPanel = wx.Panel(id=-1, parent=self, 
-              name='GraphicsPanel', pos=wx.Point(0, 0),
-              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
+        self.GraphicsPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
         graphicpanel_sizer = wx.FlexGridSizer(cols=1, hgap=5, rows=4, vgap=5)
         graphicpanel_sizer.AddGrowableCol(0)
         graphicpanel_sizer.AddGrowableRow(3)
         self.GraphicsPanel.SetSizer(graphicpanel_sizer)
         
-        pageSize_st = wx.StaticText(id=-1, parent=self.GraphicsPanel,
-              label=_('Page Size (optional):'), name='pageSize_label', 
-              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-        graphicpanel_sizer.AddWindow(pageSize_st, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT|wx.RIGHT)
+        pageSize_st = wx.StaticText(self.GraphicsPanel,
+              label=_('Page Size (optional):'))
+        graphicpanel_sizer.AddWindow(pageSize_st, border=10, 
+              flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT|wx.RIGHT)
         
         pageSize_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
         pageSize_sizer.AddGrowableCol(1)
-        graphicpanel_sizer.AddSizer(pageSize_sizer, 0, border=10, flag=wx.GROW|wx.LEFT|wx.RIGHT)
+        graphicpanel_sizer.AddSizer(pageSize_sizer, border=10, 
+              flag=wx.GROW|wx.LEFT|wx.RIGHT)
         
         for name, label in [('PageWidth', _('Width:')),
                             ('PageHeight', _('Height:'))]:
-            st = wx.StaticText(id=-1, parent=self.GraphicsPanel,
-                  label=label, name=name + "_label",
-                  pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-            pageSize_sizer.AddWindow(st, 0, border=12, flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT)
+            st = wx.StaticText(self.GraphicsPanel, label=label)
+            pageSize_sizer.AddWindow(st, border=12, 
+                  flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT)
             
-            sp_id = wx.NewId()
-            sp = wx.SpinCtrl(id=sp_id, parent=self.GraphicsPanel, 
-                  name=name, pos=wx.Point(0, 0),
-                  size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER, 
-                  min=0, max=2**16)
+            sp = wx.SpinCtrl(self.GraphicsPanel, 
+                  min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
             setattr(self, name, sp)
             callback = self.GetPageSizeChangedFunction(sp, name)
-            self.Bind(wx.EVT_TEXT_ENTER, callback, id=sp_id)
+            self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
             sp.Bind(wx.EVT_KILL_FOCUS, callback)
-            pageSize_sizer.AddWindow(sp, 0, border=0, flag=wx.GROW)
-        
-        scaling_st = wx.StaticText(id=-1, parent=self.GraphicsPanel,
-              label=_('Grid Resolution:'), name='scaling_label', 
-              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-        graphicpanel_sizer.AddWindow(scaling_st, 0, border=10, flag=wx.GROW|wx.LEFT|wx.RIGHT)
-        
-        scaling_nb = wx.Notebook(id=-1, parent=self.GraphicsPanel, 
-              name='ScalingNotebook', pos=wx.Point(0, 0), 
-              size=wx.Size(0, 0), style=0)
-        graphicpanel_sizer.AddWindow(scaling_nb, 0, border=10, flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+            pageSize_sizer.AddWindow(sp, flag=wx.GROW)
+        
+        scaling_st = wx.StaticText(self.GraphicsPanel,
+              label=_('Grid Resolution:'))
+        graphicpanel_sizer.AddWindow(scaling_st, border=10, 
+              flag=wx.GROW|wx.LEFT|wx.RIGHT)
+        
+        scaling_nb = wx.Notebook(self.GraphicsPanel)
+        graphicpanel_sizer.AddWindow(scaling_nb, border=10, 
+              flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
         
         self.Scalings = {}
         for language, translation in [("FBD",_("FBD")), ("LD",_("LD")), ("SFC",_("SFC"))]:
-            scaling_panel = wx.Panel(id=-1, parent=scaling_nb, 
-                  name=language + '_panel', pos=wx.Point(0, 0),
-                  size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
+            scaling_panel = wx.Panel(scaling_nb, style=wx.TAB_TRAVERSAL)
             scalingpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
             scalingpanel_sizer.AddGrowableCol(1)
             scaling_panel.SetSizer(scalingpanel_sizer)
@@ -159,21 +154,18 @@
                 else:
                     border = wx.BOTTOM
                 
-                st = wx.StaticText(id=-1, parent=scaling_panel,
-                      label=label, name=name + '_label', 
-                      pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-                scalingpanel_sizer.AddWindow(st, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
+                st = wx.StaticText(scaling_panel, label=label)
+                scalingpanel_sizer.AddWindow(st, border=10, 
+                      flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
                 
-                sp_id = wx.NewId()
-                sp = wx.SpinCtrl(id=sp_id, parent=scaling_panel, 
-                      name=name, pos=wx.Point(0, 0),
-                      size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER, 
-                      min=0, max=2**16)
+                sp = wx.SpinCtrl(scaling_panel, 
+                      min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
                 scaling_controls.append(sp)
                 callback = self.GetScalingChangedFunction(sp, language, name)
-                self.Bind(wx.EVT_TEXT_ENTER, callback, id=sp_id)
+                self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
                 sp.Bind(wx.EVT_KILL_FOCUS, callback)
-                scalingpanel_sizer.AddWindow(sp, 0, border=10, flag=wx.GROW|border|wx.RIGHT)
+                scalingpanel_sizer.AddWindow(sp, border=10, 
+                      flag=wx.GROW|border|wx.RIGHT)
         
             self.Scalings[language] = scaling_controls
             scaling_nb.AddPage(scaling_panel, translation)
@@ -190,30 +182,30 @@
         miscellaneouspanel_sizer.AddGrowableRow(1)
         self.MiscellaneousPanel.SetSizer(miscellaneouspanel_sizer)
         
-        language_label = wx.StaticText(id=-1, parent=self.MiscellaneousPanel,
-              label=_('Language (optional):'), name='language_label', 
-              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-        miscellaneouspanel_sizer.AddWindow(language_label, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT)
-        
-        language_id = wx.NewId()
-        self.Language = wx.ComboBox(id=language_id, parent=self.MiscellaneousPanel, 
-              name='Language', pos=wx.Point(0, 0),
-              size=wx.Size(0, 28), style=wx.CB_READONLY)
-        self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, id=language_id)
-        miscellaneouspanel_sizer.AddWindow(self.Language, 0, border=10, flag=wx.GROW|wx.TOP|wx.RIGHT)
-        
-        description_label = wx.StaticText(id=-1, parent=self.MiscellaneousPanel,
-              label=_('Content Description (optional):'), name='description_label', 
-              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-        miscellaneouspanel_sizer.AddWindow(description_label, 0, border=10, flag=wx.BOTTOM|wx.LEFT)
-        
-        description_id = wx.NewId()
-        self.ContentDescription = wx.TextCtrl(id=description_id, parent=self.MiscellaneousPanel, 
-              name='ContentDescription', pos=wx.Point(0, 0),
-              size=wx.Size(0, 24), style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
-        self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged, id=description_id)
-        self.ContentDescription.Bind(wx.EVT_KILL_FOCUS, self.OnContentDescriptionChanged)
-        miscellaneouspanel_sizer.AddWindow(self.ContentDescription, 0, border=10, flag=wx.GROW|wx.BOTTOM|wx.RIGHT)
+        language_label = wx.StaticText(self.MiscellaneousPanel,
+              label=_('Language (optional):'))
+        miscellaneouspanel_sizer.AddWindow(language_label, border=10, 
+              flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT)
+        
+        self.Language = wx.ComboBox(self.MiscellaneousPanel, 
+              style=wx.CB_READONLY)
+        self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, self.Language)
+        miscellaneouspanel_sizer.AddWindow(self.Language, border=10, 
+              flag=wx.GROW|wx.TOP|wx.RIGHT)
+        
+        description_label = wx.StaticText(self.MiscellaneousPanel,
+              label=_('Content Description (optional):'))
+        miscellaneouspanel_sizer.AddWindow(description_label, border=10, 
+              flag=wx.BOTTOM|wx.LEFT)
+        
+        self.ContentDescription = wx.TextCtrl(self.MiscellaneousPanel, 
+              style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
+        self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged, 
+              self.ContentDescription)
+        self.ContentDescription.Bind(wx.EVT_KILL_FOCUS, 
+              self.OnContentDescriptionChanged)
+        miscellaneouspanel_sizer.AddWindow(self.ContentDescription, border=10, 
+              flag=wx.GROW|wx.BOTTOM|wx.RIGHT)
         
         self.AddPage(self.MiscellaneousPanel, _("Miscellaneous"))
         
@@ -290,11 +282,8 @@
                     new_value = None
                 if old_value != new_value:
                     self.Controller.SetProjectProperties(properties={name: new_value})
-                    self.ParentWindow.RefreshTitle()
-                    self.ParentWindow.RefreshFileMenu()
-                    self.ParentWindow.RefreshEditMenu()
-                    self.ParentWindow.RefreshProjectTree()
-                    self.ParentWindow.RefreshPageTitles()
+                    self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
+                            PROJECTTREE, PAGETITLES)
                     wx.CallAfter(self.RefreshView)
             event.Skip()
         return TextCtrlChangedFunction
@@ -312,11 +301,8 @@
                     new_value = (old_value[0], spinctrl.GetValue())
                 if old_value != new_value:
                     self.Controller.SetProjectProperties(properties={"pageSize": new_value})
-                    self.ParentWindow.RefreshTitle()
-                    self.ParentWindow.RefreshFileMenu()
-                    self.ParentWindow.RefreshEditMenu()
-                    self.ParentWindow.RefreshPageTitles()
-                    self.ParentWindow.RefreshScaling()
+                    self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
+                          PAGETITLES, SCALING)
                     wx.CallAfter(self.RefreshView)
             event.Skip()
         return PageSizeChangedFunction
@@ -335,11 +321,8 @@
                     new_value = (old_value[0], spinctrl.GetValue())
                 if old_value != new_value:
                     self.Controller.SetProjectProperties(properties={"scaling": {language: new_value}})
-                    self.ParentWindow.RefreshTitle()
-                    self.ParentWindow.RefreshFileMenu()
-                    self.ParentWindow.RefreshEditMenu()
-                    self.ParentWindow.RefreshPageTitles()
-                    self.ParentWindow.RefreshScaling()
+                    self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
+                          PAGETITLES, SCALING)
                     wx.CallAfter(self.RefreshView)
             event.Skip()
         return ScalingChangedFunction
@@ -355,10 +338,7 @@
                 new_value = None
             if old_value != new_value:
                 self.Controller.SetProjectProperties(properties={"language": new_value})
-                self.ParentWindow.RefreshTitle()
-                self.ParentWindow.RefreshFileMenu()
-                self.ParentWindow.RefreshEditMenu()
-                self.ParentWindow.RefreshPageTitles()
+                self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES)
                 wx.CallAfter(self.RefreshView)
         event.Skip()
         
@@ -373,9 +353,6 @@
                 new_value = None
             if old_value != new_value:
                 self.Controller.SetProjectProperties(properties={"contentDescription": new_value})
-                self.ParentWindow.RefreshTitle()
-                self.ParentWindow.RefreshFileMenu()
-                self.ParentWindow.RefreshEditMenu()
-                self.ParentWindow.RefreshPageTitles()
+                self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES)
                 wx.CallAfter(self.RefreshView)
         event.Skip()