--- 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()