controls/ProjectPropertiesPanel.py
changeset 714 131ea7f237b9
parent 711 5f6a743dcde5
equal deleted inserted replaced
713:95a0a427f3ef 714:131ea7f237b9
    22 #License along with this library; if not, write to the Free Software
    22 #License along with this library; if not, write to the Free Software
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    24 
    24 
    25 import wx
    25 import wx
    26 
    26 
       
    27 #-------------------------------------------------------------------------------
       
    28 #                                 Helpers
       
    29 #-------------------------------------------------------------------------------
       
    30 
    27 REQUIRED_PARAMS = ["projectName", "productName", "productVersion", "companyName"]
    31 REQUIRED_PARAMS = ["projectName", "productName", "productVersion", "companyName"]
       
    32 
       
    33 [TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, PROJECTTREE, 
       
    34  POUINSTANCEVARIABLESPANEL, LIBRARYTREE, SCALING, PAGETITLES
       
    35 ] = range(10)
       
    36 
       
    37 #-------------------------------------------------------------------------------
       
    38 #                       Project Properties Panel
       
    39 #-------------------------------------------------------------------------------
    28 
    40 
    29 class ProjectPropertiesPanel(wx.Notebook):
    41 class ProjectPropertiesPanel(wx.Notebook):
    30     
    42     
    31     def AddSizerParams(self, parent, sizer, params):
    43     def AddSizerParams(self, parent, sizer, params):
    32         for idx, (name, label) in enumerate(params):
    44         for idx, (name, label) in enumerate(params):
    34             if idx == 0:
    46             if idx == 0:
    35                 border |= wx.TOP
    47                 border |= wx.TOP
    36             elif idx == len(params) - 1:
    48             elif idx == len(params) - 1:
    37                 border |= wx.BOTTOM
    49                 border |= wx.BOTTOM
    38             
    50             
    39             st = wx.StaticText(id=-1, parent=parent, 
    51             st = wx.StaticText(parent, label=label)
    40                   label=label, name=name + '_label',
    52             sizer.AddWindow(st, border=10, 
    41                   pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
    53                   flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
    42             sizer.AddWindow(st, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
       
    43             
    54             
    44             tc_id = wx.NewId()
    55             tc = wx.TextCtrl(parent, style=wx.TE_PROCESS_ENTER)
    45             tc = wx.TextCtrl(id=tc_id, parent=parent, 
       
    46                   name=name, pos=wx.Point(0, 0), 
       
    47                   size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER)
       
    48             setattr(self, name, tc)
    56             setattr(self, name, tc)
    49             callback = self.GetTextCtrlChangedFunction(tc, name)
    57             callback = self.GetTextCtrlChangedFunction(tc, name)
    50             self.Bind(wx.EVT_TEXT_ENTER, callback, id=tc_id)
    58             self.Bind(wx.EVT_TEXT_ENTER, callback, tc)
    51             tc.Bind(wx.EVT_KILL_FOCUS, callback)
    59             tc.Bind(wx.EVT_KILL_FOCUS, callback)
    52             sizer.AddWindow(tc, 0, border=10, flag=wx.GROW|border|wx.RIGHT)
    60             sizer.AddWindow(tc, border=10, 
       
    61                   flag=wx.GROW|border|wx.RIGHT)
    53 
    62 
    54     def __init__(self, parent, controller=None, window=None, enable_required=True):
    63     def __init__(self, parent, controller=None, window=None, enable_required=True):
    55         wx.Notebook.__init__(self, id=-1, parent=parent, 
    64         wx.Notebook.__init__(self, parent, size=wx.Size(500, 300))
    56               name='ProjectPropertiesPanel', style=0, 
       
    57               pos=wx.Point(0, 0), size=wx.Size(500, 300))
       
    58 
    65 
    59         self.Controller = controller
    66         self.Controller = controller
    60         self.ParentWindow = window
    67         self.ParentWindow = window
    61         self.Values = None
    68         self.Values = None
    62         
    69         
    63         # Project Panel elements
    70         # Project Panel elements
    64 
    71 
    65         self.ProjectPanel = wx.Panel(id=-1, parent=self, 
    72         self.ProjectPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
    66               name='ProjectPanel', pos=wx.Point(0, 0),
       
    67               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
       
    68         projectpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=5, vgap=15)
    73         projectpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=5, vgap=15)
    69         projectpanel_sizer.AddGrowableCol(1)
    74         projectpanel_sizer.AddGrowableCol(1)
    70         self.ProjectPanel.SetSizer(projectpanel_sizer)
    75         self.ProjectPanel.SetSizer(projectpanel_sizer)
    71         
    76         
    72         self.AddSizerParams(self.ProjectPanel, projectpanel_sizer,
    77         self.AddSizerParams(self.ProjectPanel, projectpanel_sizer,
    78         
    83         
    79         self.AddPage(self.ProjectPanel, _("Project"))
    84         self.AddPage(self.ProjectPanel, _("Project"))
    80         
    85         
    81         # Author Panel elements
    86         # Author Panel elements
    82 
    87 
    83         self.AuthorPanel = wx.Panel(id=-1, parent=self,
    88         self.AuthorPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
    84               name='AuthorPanel', pos=wx.Point(0, 0),
       
    85               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
       
    86         authorpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=4, vgap=15)
    89         authorpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=4, vgap=15)
    87         authorpanel_sizer.AddGrowableCol(1)
    90         authorpanel_sizer.AddGrowableCol(1)
    88         self.AuthorPanel.SetSizer(authorpanel_sizer)
    91         self.AuthorPanel.SetSizer(authorpanel_sizer)
    89         
    92         
    90         self.AddSizerParams(self.AuthorPanel, authorpanel_sizer,
    93         self.AddSizerParams(self.AuthorPanel, authorpanel_sizer,
    95         
    98         
    96         self.AddPage(self.AuthorPanel, _("Author"))
    99         self.AddPage(self.AuthorPanel, _("Author"))
    97 
   100 
    98         # Graphics Panel elements
   101         # Graphics Panel elements
    99 
   102 
   100         self.GraphicsPanel = wx.Panel(id=-1, parent=self, 
   103         self.GraphicsPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
   101               name='GraphicsPanel', pos=wx.Point(0, 0),
       
   102               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
       
   103         graphicpanel_sizer = wx.FlexGridSizer(cols=1, hgap=5, rows=4, vgap=5)
   104         graphicpanel_sizer = wx.FlexGridSizer(cols=1, hgap=5, rows=4, vgap=5)
   104         graphicpanel_sizer.AddGrowableCol(0)
   105         graphicpanel_sizer.AddGrowableCol(0)
   105         graphicpanel_sizer.AddGrowableRow(3)
   106         graphicpanel_sizer.AddGrowableRow(3)
   106         self.GraphicsPanel.SetSizer(graphicpanel_sizer)
   107         self.GraphicsPanel.SetSizer(graphicpanel_sizer)
   107         
   108         
   108         pageSize_st = wx.StaticText(id=-1, parent=self.GraphicsPanel,
   109         pageSize_st = wx.StaticText(self.GraphicsPanel,
   109               label=_('Page Size (optional):'), name='pageSize_label', 
   110               label=_('Page Size (optional):'))
   110               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   111         graphicpanel_sizer.AddWindow(pageSize_st, border=10, 
   111         graphicpanel_sizer.AddWindow(pageSize_st, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT|wx.RIGHT)
   112               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT|wx.RIGHT)
   112         
   113         
   113         pageSize_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   114         pageSize_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   114         pageSize_sizer.AddGrowableCol(1)
   115         pageSize_sizer.AddGrowableCol(1)
   115         graphicpanel_sizer.AddSizer(pageSize_sizer, 0, border=10, flag=wx.GROW|wx.LEFT|wx.RIGHT)
   116         graphicpanel_sizer.AddSizer(pageSize_sizer, border=10, 
       
   117               flag=wx.GROW|wx.LEFT|wx.RIGHT)
   116         
   118         
   117         for name, label in [('PageWidth', _('Width:')),
   119         for name, label in [('PageWidth', _('Width:')),
   118                             ('PageHeight', _('Height:'))]:
   120                             ('PageHeight', _('Height:'))]:
   119             st = wx.StaticText(id=-1, parent=self.GraphicsPanel,
   121             st = wx.StaticText(self.GraphicsPanel, label=label)
   120                   label=label, name=name + "_label",
   122             pageSize_sizer.AddWindow(st, border=12, 
   121                   pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   123                   flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT)
   122             pageSize_sizer.AddWindow(st, 0, border=12, flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT)
       
   123             
   124             
   124             sp_id = wx.NewId()
   125             sp = wx.SpinCtrl(self.GraphicsPanel, 
   125             sp = wx.SpinCtrl(id=sp_id, parent=self.GraphicsPanel, 
   126                   min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
   126                   name=name, pos=wx.Point(0, 0),
       
   127                   size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER, 
       
   128                   min=0, max=2**16)
       
   129             setattr(self, name, sp)
   127             setattr(self, name, sp)
   130             callback = self.GetPageSizeChangedFunction(sp, name)
   128             callback = self.GetPageSizeChangedFunction(sp, name)
   131             self.Bind(wx.EVT_TEXT_ENTER, callback, id=sp_id)
   129             self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
   132             sp.Bind(wx.EVT_KILL_FOCUS, callback)
   130             sp.Bind(wx.EVT_KILL_FOCUS, callback)
   133             pageSize_sizer.AddWindow(sp, 0, border=0, flag=wx.GROW)
   131             pageSize_sizer.AddWindow(sp, flag=wx.GROW)
   134         
   132         
   135         scaling_st = wx.StaticText(id=-1, parent=self.GraphicsPanel,
   133         scaling_st = wx.StaticText(self.GraphicsPanel,
   136               label=_('Grid Resolution:'), name='scaling_label', 
   134               label=_('Grid Resolution:'))
   137               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   135         graphicpanel_sizer.AddWindow(scaling_st, border=10, 
   138         graphicpanel_sizer.AddWindow(scaling_st, 0, border=10, flag=wx.GROW|wx.LEFT|wx.RIGHT)
   136               flag=wx.GROW|wx.LEFT|wx.RIGHT)
   139         
   137         
   140         scaling_nb = wx.Notebook(id=-1, parent=self.GraphicsPanel, 
   138         scaling_nb = wx.Notebook(self.GraphicsPanel)
   141               name='ScalingNotebook', pos=wx.Point(0, 0), 
   139         graphicpanel_sizer.AddWindow(scaling_nb, border=10, 
   142               size=wx.Size(0, 0), style=0)
   140               flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
   143         graphicpanel_sizer.AddWindow(scaling_nb, 0, border=10, flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
       
   144         
   141         
   145         self.Scalings = {}
   142         self.Scalings = {}
   146         for language, translation in [("FBD",_("FBD")), ("LD",_("LD")), ("SFC",_("SFC"))]:
   143         for language, translation in [("FBD",_("FBD")), ("LD",_("LD")), ("SFC",_("SFC"))]:
   147             scaling_panel = wx.Panel(id=-1, parent=scaling_nb, 
   144             scaling_panel = wx.Panel(scaling_nb, style=wx.TAB_TRAVERSAL)
   148                   name=language + '_panel', pos=wx.Point(0, 0),
       
   149                   size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
       
   150             scalingpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   145             scalingpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   151             scalingpanel_sizer.AddGrowableCol(1)
   146             scalingpanel_sizer.AddGrowableCol(1)
   152             scaling_panel.SetSizer(scalingpanel_sizer)
   147             scaling_panel.SetSizer(scalingpanel_sizer)
   153             
   148             
   154             scaling_controls = []
   149             scaling_controls = []
   157                 if idx == 0:
   152                 if idx == 0:
   158                     border = wx.TOP
   153                     border = wx.TOP
   159                 else:
   154                 else:
   160                     border = wx.BOTTOM
   155                     border = wx.BOTTOM
   161                 
   156                 
   162                 st = wx.StaticText(id=-1, parent=scaling_panel,
   157                 st = wx.StaticText(scaling_panel, label=label)
   163                       label=label, name=name + '_label', 
   158                 scalingpanel_sizer.AddWindow(st, border=10, 
   164                       pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   159                       flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
   165                 scalingpanel_sizer.AddWindow(st, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
       
   166                 
   160                 
   167                 sp_id = wx.NewId()
   161                 sp = wx.SpinCtrl(scaling_panel, 
   168                 sp = wx.SpinCtrl(id=sp_id, parent=scaling_panel, 
   162                       min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
   169                       name=name, pos=wx.Point(0, 0),
       
   170                       size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER, 
       
   171                       min=0, max=2**16)
       
   172                 scaling_controls.append(sp)
   163                 scaling_controls.append(sp)
   173                 callback = self.GetScalingChangedFunction(sp, language, name)
   164                 callback = self.GetScalingChangedFunction(sp, language, name)
   174                 self.Bind(wx.EVT_TEXT_ENTER, callback, id=sp_id)
   165                 self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
   175                 sp.Bind(wx.EVT_KILL_FOCUS, callback)
   166                 sp.Bind(wx.EVT_KILL_FOCUS, callback)
   176                 scalingpanel_sizer.AddWindow(sp, 0, border=10, flag=wx.GROW|border|wx.RIGHT)
   167                 scalingpanel_sizer.AddWindow(sp, border=10, 
       
   168                       flag=wx.GROW|border|wx.RIGHT)
   177         
   169         
   178             self.Scalings[language] = scaling_controls
   170             self.Scalings[language] = scaling_controls
   179             scaling_nb.AddPage(scaling_panel, translation)
   171             scaling_nb.AddPage(scaling_panel, translation)
   180         
   172         
   181         self.AddPage(self.GraphicsPanel, _("Graphics"))
   173         self.AddPage(self.GraphicsPanel, _("Graphics"))
   188         miscellaneouspanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=15)
   180         miscellaneouspanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=15)
   189         miscellaneouspanel_sizer.AddGrowableCol(1)
   181         miscellaneouspanel_sizer.AddGrowableCol(1)
   190         miscellaneouspanel_sizer.AddGrowableRow(1)
   182         miscellaneouspanel_sizer.AddGrowableRow(1)
   191         self.MiscellaneousPanel.SetSizer(miscellaneouspanel_sizer)
   183         self.MiscellaneousPanel.SetSizer(miscellaneouspanel_sizer)
   192         
   184         
   193         language_label = wx.StaticText(id=-1, parent=self.MiscellaneousPanel,
   185         language_label = wx.StaticText(self.MiscellaneousPanel,
   194               label=_('Language (optional):'), name='language_label', 
   186               label=_('Language (optional):'))
   195               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   187         miscellaneouspanel_sizer.AddWindow(language_label, border=10, 
   196         miscellaneouspanel_sizer.AddWindow(language_label, 0, border=10, flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT)
   188               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT)
   197         
   189         
   198         language_id = wx.NewId()
   190         self.Language = wx.ComboBox(self.MiscellaneousPanel, 
   199         self.Language = wx.ComboBox(id=language_id, parent=self.MiscellaneousPanel, 
   191               style=wx.CB_READONLY)
   200               name='Language', pos=wx.Point(0, 0),
   192         self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, self.Language)
   201               size=wx.Size(0, 28), style=wx.CB_READONLY)
   193         miscellaneouspanel_sizer.AddWindow(self.Language, border=10, 
   202         self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, id=language_id)
   194               flag=wx.GROW|wx.TOP|wx.RIGHT)
   203         miscellaneouspanel_sizer.AddWindow(self.Language, 0, border=10, flag=wx.GROW|wx.TOP|wx.RIGHT)
   195         
   204         
   196         description_label = wx.StaticText(self.MiscellaneousPanel,
   205         description_label = wx.StaticText(id=-1, parent=self.MiscellaneousPanel,
   197               label=_('Content Description (optional):'))
   206               label=_('Content Description (optional):'), name='description_label', 
   198         miscellaneouspanel_sizer.AddWindow(description_label, border=10, 
   207               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   199               flag=wx.BOTTOM|wx.LEFT)
   208         miscellaneouspanel_sizer.AddWindow(description_label, 0, border=10, flag=wx.BOTTOM|wx.LEFT)
   200         
   209         
   201         self.ContentDescription = wx.TextCtrl(self.MiscellaneousPanel, 
   210         description_id = wx.NewId()
   202               style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
   211         self.ContentDescription = wx.TextCtrl(id=description_id, parent=self.MiscellaneousPanel, 
   203         self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged, 
   212               name='ContentDescription', pos=wx.Point(0, 0),
   204               self.ContentDescription)
   213               size=wx.Size(0, 24), style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
   205         self.ContentDescription.Bind(wx.EVT_KILL_FOCUS, 
   214         self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged, id=description_id)
   206               self.OnContentDescriptionChanged)
   215         self.ContentDescription.Bind(wx.EVT_KILL_FOCUS, self.OnContentDescriptionChanged)
   207         miscellaneouspanel_sizer.AddWindow(self.ContentDescription, border=10, 
   216         miscellaneouspanel_sizer.AddWindow(self.ContentDescription, 0, border=10, flag=wx.GROW|wx.BOTTOM|wx.RIGHT)
   208               flag=wx.GROW|wx.BOTTOM|wx.RIGHT)
   217         
   209         
   218         self.AddPage(self.MiscellaneousPanel, _("Miscellaneous"))
   210         self.AddPage(self.MiscellaneousPanel, _("Miscellaneous"))
   219         
   211         
   220         for param in REQUIRED_PARAMS:
   212         for param in REQUIRED_PARAMS:
   221             getattr(self, param).Enable(enable_required)
   213             getattr(self, param).Enable(enable_required)
   288                 new_value = textctrl.GetValue()
   280                 new_value = textctrl.GetValue()
   289                 if name not in REQUIRED_PARAMS and new_value == "":
   281                 if name not in REQUIRED_PARAMS and new_value == "":
   290                     new_value = None
   282                     new_value = None
   291                 if old_value != new_value:
   283                 if old_value != new_value:
   292                     self.Controller.SetProjectProperties(properties={name: new_value})
   284                     self.Controller.SetProjectProperties(properties={name: new_value})
   293                     self.ParentWindow.RefreshTitle()
   285                     self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
   294                     self.ParentWindow.RefreshFileMenu()
   286                             PROJECTTREE, PAGETITLES)
   295                     self.ParentWindow.RefreshEditMenu()
       
   296                     self.ParentWindow.RefreshProjectTree()
       
   297                     self.ParentWindow.RefreshPageTitles()
       
   298                     wx.CallAfter(self.RefreshView)
   287                     wx.CallAfter(self.RefreshView)
   299             event.Skip()
   288             event.Skip()
   300         return TextCtrlChangedFunction
   289         return TextCtrlChangedFunction
   301 
   290 
   302     def GetPageSizeChangedFunction(self, spinctrl, name):
   291     def GetPageSizeChangedFunction(self, spinctrl, name):
   310                     new_value = (spinctrl.GetValue(), old_value[1])
   299                     new_value = (spinctrl.GetValue(), old_value[1])
   311                 else:
   300                 else:
   312                     new_value = (old_value[0], spinctrl.GetValue())
   301                     new_value = (old_value[0], spinctrl.GetValue())
   313                 if old_value != new_value:
   302                 if old_value != new_value:
   314                     self.Controller.SetProjectProperties(properties={"pageSize": new_value})
   303                     self.Controller.SetProjectProperties(properties={"pageSize": new_value})
   315                     self.ParentWindow.RefreshTitle()
   304                     self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
   316                     self.ParentWindow.RefreshFileMenu()
   305                           PAGETITLES, SCALING)
   317                     self.ParentWindow.RefreshEditMenu()
       
   318                     self.ParentWindow.RefreshPageTitles()
       
   319                     self.ParentWindow.RefreshScaling()
       
   320                     wx.CallAfter(self.RefreshView)
   306                     wx.CallAfter(self.RefreshView)
   321             event.Skip()
   307             event.Skip()
   322         return PageSizeChangedFunction
   308         return PageSizeChangedFunction
   323     
   309     
   324     def GetScalingChangedFunction(self, spinctrl, language, name):
   310     def GetScalingChangedFunction(self, spinctrl, language, name):
   333                     new_value = (spinctrl.GetValue(), old_value[1])
   319                     new_value = (spinctrl.GetValue(), old_value[1])
   334                 else:
   320                 else:
   335                     new_value = (old_value[0], spinctrl.GetValue())
   321                     new_value = (old_value[0], spinctrl.GetValue())
   336                 if old_value != new_value:
   322                 if old_value != new_value:
   337                     self.Controller.SetProjectProperties(properties={"scaling": {language: new_value}})
   323                     self.Controller.SetProjectProperties(properties={"scaling": {language: new_value}})
   338                     self.ParentWindow.RefreshTitle()
   324                     self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
   339                     self.ParentWindow.RefreshFileMenu()
   325                           PAGETITLES, SCALING)
   340                     self.ParentWindow.RefreshEditMenu()
       
   341                     self.ParentWindow.RefreshPageTitles()
       
   342                     self.ParentWindow.RefreshScaling()
       
   343                     wx.CallAfter(self.RefreshView)
   326                     wx.CallAfter(self.RefreshView)
   344             event.Skip()
   327             event.Skip()
   345         return ScalingChangedFunction
   328         return ScalingChangedFunction
   346     
   329     
   347     def OnLanguageChanged(self, event):
   330     def OnLanguageChanged(self, event):
   353             new_value = self.Language.GetStringSelection()
   336             new_value = self.Language.GetStringSelection()
   354             if new_value == "":
   337             if new_value == "":
   355                 new_value = None
   338                 new_value = None
   356             if old_value != new_value:
   339             if old_value != new_value:
   357                 self.Controller.SetProjectProperties(properties={"language": new_value})
   340                 self.Controller.SetProjectProperties(properties={"language": new_value})
   358                 self.ParentWindow.RefreshTitle()
   341                 self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES)
   359                 self.ParentWindow.RefreshFileMenu()
       
   360                 self.ParentWindow.RefreshEditMenu()
       
   361                 self.ParentWindow.RefreshPageTitles()
       
   362                 wx.CallAfter(self.RefreshView)
   342                 wx.CallAfter(self.RefreshView)
   363         event.Skip()
   343         event.Skip()
   364         
   344         
   365     def OnContentDescriptionChanged(self, event):
   345     def OnContentDescriptionChanged(self, event):
   366         if self.Controller is not None:
   346         if self.Controller is not None:
   371             new_value = self.ContentDescription.GetValue()
   351             new_value = self.ContentDescription.GetValue()
   372             if new_value == "":
   352             if new_value == "":
   373                 new_value = None
   353                 new_value = None
   374             if old_value != new_value:
   354             if old_value != new_value:
   375                 self.Controller.SetProjectProperties(properties={"contentDescription": new_value})
   355                 self.Controller.SetProjectProperties(properties={"contentDescription": new_value})
   376                 self.ParentWindow.RefreshTitle()
   356                 self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES)
   377                 self.ParentWindow.RefreshFileMenu()
       
   378                 self.ParentWindow.RefreshEditMenu()
       
   379                 self.ParentWindow.RefreshPageTitles()
       
   380                 wx.CallAfter(self.RefreshView)
   357                 wx.CallAfter(self.RefreshView)
   381         event.Skip()
   358         event.Skip()