controls/ProjectPropertiesPanel.py
changeset 1730 64d8f52bc8c8
parent 1696 8043f32de7b8
child 1736 7e61baa047f0
equal deleted inserted replaced
1726:d51af006fa6b 1730:64d8f52bc8c8
    29 #                                 Helpers
    29 #                                 Helpers
    30 #-------------------------------------------------------------------------------
    30 #-------------------------------------------------------------------------------
    31 
    31 
    32 REQUIRED_PARAMS = ["projectName", "productName", "productVersion", "companyName"]
    32 REQUIRED_PARAMS = ["projectName", "productName", "productVersion", "companyName"]
    33 
    33 
    34 [TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, PROJECTTREE, 
    34 [TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, PROJECTTREE,
    35  POUINSTANCEVARIABLESPANEL, LIBRARYTREE, SCALING, PAGETITLES
    35  POUINSTANCEVARIABLESPANEL, LIBRARYTREE, SCALING, PAGETITLES
    36 ] = range(10)
    36 ] = range(10)
    37 
    37 
    38 #-------------------------------------------------------------------------------
    38 #-------------------------------------------------------------------------------
    39 #                       Project Properties Panel
    39 #                       Project Properties Panel
    40 #-------------------------------------------------------------------------------
    40 #-------------------------------------------------------------------------------
    41 
    41 
    42 class ProjectPropertiesPanel(wx.Notebook):
    42 class ProjectPropertiesPanel(wx.Notebook):
    43     
    43 
    44     def AddSizerParams(self, parent, sizer, params):
    44     def AddSizerParams(self, parent, sizer, params):
    45         for idx, (name, label) in enumerate(params):
    45         for idx, (name, label) in enumerate(params):
    46             border = 0
    46             border = 0
    47             if idx == 0:
    47             if idx == 0:
    48                 border |= wx.TOP
    48                 border |= wx.TOP
    49             elif idx == len(params) - 1:
    49             elif idx == len(params) - 1:
    50                 border |= wx.BOTTOM
    50                 border |= wx.BOTTOM
    51             
    51 
    52             st = wx.StaticText(parent, label=label)
    52             st = wx.StaticText(parent, label=label)
    53             sizer.AddWindow(st, border=10, 
    53             sizer.AddWindow(st, border=10,
    54                   flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
    54                   flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
    55             
    55 
    56             tc = wx.TextCtrl(parent, style=wx.TE_PROCESS_ENTER)
    56             tc = wx.TextCtrl(parent, style=wx.TE_PROCESS_ENTER)
    57             setattr(self, name, tc)
    57             setattr(self, name, tc)
    58             callback = self.GetTextCtrlChangedFunction(tc, name)
    58             callback = self.GetTextCtrlChangedFunction(tc, name)
    59             self.Bind(wx.EVT_TEXT_ENTER, callback, tc)
    59             self.Bind(wx.EVT_TEXT_ENTER, callback, tc)
    60             tc.Bind(wx.EVT_KILL_FOCUS, callback)
    60             tc.Bind(wx.EVT_KILL_FOCUS, callback)
    61             sizer.AddWindow(tc, border=10, 
    61             sizer.AddWindow(tc, border=10,
    62                   flag=wx.GROW|border|wx.RIGHT)
    62                   flag=wx.GROW|border|wx.RIGHT)
    63 
    63 
    64     def __init__(self, parent, controller=None, window=None, enable_required=True):
    64     def __init__(self, parent, controller=None, window=None, enable_required=True):
    65         wx.Notebook.__init__(self, parent)
    65         wx.Notebook.__init__(self, parent)
    66 
    66 
    67         self.Controller = controller
    67         self.Controller = controller
    68         self.ParentWindow = window
    68         self.ParentWindow = window
    69         self.Values = None
    69         self.Values = None
    70         
    70 
    71         # Project Panel elements
    71         # Project Panel elements
    72 
    72 
    73         self.ProjectPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
    73         self.ProjectPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
    74         projectpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=5, vgap=15)
    74         projectpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=5, vgap=15)
    75         projectpanel_sizer.AddGrowableCol(1)
    75         projectpanel_sizer.AddGrowableCol(1)
    76         self.ProjectPanel.SetSizer(projectpanel_sizer)
    76         self.ProjectPanel.SetSizer(projectpanel_sizer)
    77         
    77 
    78         self.AddSizerParams(self.ProjectPanel, projectpanel_sizer,
    78         self.AddSizerParams(self.ProjectPanel, projectpanel_sizer,
    79               [("projectName", _('Project Name (required):')),
    79               [("projectName", _('Project Name (required):')),
    80                ("projectVersion", _('Project Version (optional):')),
    80                ("projectVersion", _('Project Version (optional):')),
    81                ("productName", _('Product Name (required):')),
    81                ("productName", _('Product Name (required):')),
    82                ("productVersion", _('Product Version (required):')),
    82                ("productVersion", _('Product Version (required):')),
    83                ("productRelease", _('Product Release (optional):'))])
    83                ("productRelease", _('Product Release (optional):'))])
    84         
    84 
    85         self.AddPage(self.ProjectPanel, _("Project"))
    85         self.AddPage(self.ProjectPanel, _("Project"))
    86         
    86 
    87         # Author Panel elements
    87         # Author Panel elements
    88 
    88 
    89         self.AuthorPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
    89         self.AuthorPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
    90         authorpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=4, vgap=15)
    90         authorpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=4, vgap=15)
    91         authorpanel_sizer.AddGrowableCol(1)
    91         authorpanel_sizer.AddGrowableCol(1)
    92         self.AuthorPanel.SetSizer(authorpanel_sizer)
    92         self.AuthorPanel.SetSizer(authorpanel_sizer)
    93         
    93 
    94         self.AddSizerParams(self.AuthorPanel, authorpanel_sizer,
    94         self.AddSizerParams(self.AuthorPanel, authorpanel_sizer,
    95               [("companyName", _('Company Name (required):')),
    95               [("companyName", _('Company Name (required):')),
    96                ("companyURL", _('Company URL (optional):')),
    96                ("companyURL", _('Company URL (optional):')),
    97                ("authorName", _('Author Name (optional):')),
    97                ("authorName", _('Author Name (optional):')),
    98                ("organization", _('Organization (optional):'))])
    98                ("organization", _('Organization (optional):'))])
    99         
    99 
   100         self.AddPage(self.AuthorPanel, _("Author"))
   100         self.AddPage(self.AuthorPanel, _("Author"))
   101 
   101 
   102         # Graphics Panel elements
   102         # Graphics Panel elements
   103 
   103 
   104         self.GraphicsPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
   104         self.GraphicsPanel = wx.Panel(self, style=wx.TAB_TRAVERSAL)
   105         graphicpanel_sizer = wx.FlexGridSizer(cols=1, hgap=5, rows=4, vgap=5)
   105         graphicpanel_sizer = wx.FlexGridSizer(cols=1, hgap=5, rows=4, vgap=5)
   106         graphicpanel_sizer.AddGrowableCol(0)
   106         graphicpanel_sizer.AddGrowableCol(0)
   107         graphicpanel_sizer.AddGrowableRow(3)
   107         graphicpanel_sizer.AddGrowableRow(3)
   108         self.GraphicsPanel.SetSizer(graphicpanel_sizer)
   108         self.GraphicsPanel.SetSizer(graphicpanel_sizer)
   109         
   109 
   110         pageSize_st = wx.StaticText(self.GraphicsPanel,
   110         pageSize_st = wx.StaticText(self.GraphicsPanel,
   111               label=_('Page Size (optional):'))
   111               label=_('Page Size (optional):'))
   112         graphicpanel_sizer.AddWindow(pageSize_st, border=10, 
   112         graphicpanel_sizer.AddWindow(pageSize_st, border=10,
   113               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT|wx.RIGHT)
   113               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT|wx.RIGHT)
   114         
   114 
   115         pageSize_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   115         pageSize_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   116         pageSize_sizer.AddGrowableCol(1)
   116         pageSize_sizer.AddGrowableCol(1)
   117         graphicpanel_sizer.AddSizer(pageSize_sizer, border=10, 
   117         graphicpanel_sizer.AddSizer(pageSize_sizer, border=10,
   118               flag=wx.GROW|wx.LEFT|wx.RIGHT)
   118               flag=wx.GROW|wx.LEFT|wx.RIGHT)
   119         
   119 
   120         for name, label in [('PageWidth', _('Width:')),
   120         for name, label in [('PageWidth', _('Width:')),
   121                             ('PageHeight', _('Height:'))]:
   121                             ('PageHeight', _('Height:'))]:
   122             st = wx.StaticText(self.GraphicsPanel, label=label)
   122             st = wx.StaticText(self.GraphicsPanel, label=label)
   123             pageSize_sizer.AddWindow(st, border=12, 
   123             pageSize_sizer.AddWindow(st, border=12,
   124                   flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT)
   124                   flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT)
   125             
   125 
   126             sp = wx.SpinCtrl(self.GraphicsPanel, 
   126             sp = wx.SpinCtrl(self.GraphicsPanel,
   127                   min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
   127                   min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
   128             setattr(self, name, sp)
   128             setattr(self, name, sp)
   129             callback = self.GetPageSizeChangedFunction(sp, name)
   129             callback = self.GetPageSizeChangedFunction(sp, name)
   130             self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
   130             self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
   131             sp.Bind(wx.EVT_KILL_FOCUS, callback)
   131             sp.Bind(wx.EVT_KILL_FOCUS, callback)
   132             pageSize_sizer.AddWindow(sp, flag=wx.GROW)
   132             pageSize_sizer.AddWindow(sp, flag=wx.GROW)
   133         
   133 
   134         scaling_st = wx.StaticText(self.GraphicsPanel,
   134         scaling_st = wx.StaticText(self.GraphicsPanel,
   135               label=_('Grid Resolution:'))
   135               label=_('Grid Resolution:'))
   136         graphicpanel_sizer.AddWindow(scaling_st, border=10, 
   136         graphicpanel_sizer.AddWindow(scaling_st, border=10,
   137               flag=wx.GROW|wx.LEFT|wx.RIGHT)
   137               flag=wx.GROW|wx.LEFT|wx.RIGHT)
   138         
   138 
   139         scaling_nb = wx.Notebook(self.GraphicsPanel)
   139         scaling_nb = wx.Notebook(self.GraphicsPanel)
   140         graphicpanel_sizer.AddWindow(scaling_nb, border=10, 
   140         graphicpanel_sizer.AddWindow(scaling_nb, border=10,
   141               flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
   141               flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
   142         
   142 
   143         self.Scalings = {}
   143         self.Scalings = {}
   144         for language, translation in [("FBD",_("FBD")), ("LD",_("LD")), ("SFC",_("SFC"))]:
   144         for language, translation in [("FBD",_("FBD")), ("LD",_("LD")), ("SFC",_("SFC"))]:
   145             scaling_panel = wx.Panel(scaling_nb, style=wx.TAB_TRAVERSAL)
   145             scaling_panel = wx.Panel(scaling_nb, style=wx.TAB_TRAVERSAL)
   146             scalingpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   146             scalingpanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5)
   147             scalingpanel_sizer.AddGrowableCol(1)
   147             scalingpanel_sizer.AddGrowableCol(1)
   148             scaling_panel.SetSizer(scalingpanel_sizer)
   148             scaling_panel.SetSizer(scalingpanel_sizer)
   149             
   149 
   150             scaling_controls = []
   150             scaling_controls = []
   151             for idx, (name, label) in enumerate([('XScale', _('Horizontal:')),
   151             for idx, (name, label) in enumerate([('XScale', _('Horizontal:')),
   152                                                  ('YScale', _('Vertical:'))]):
   152                                                  ('YScale', _('Vertical:'))]):
   153                 if idx == 0:
   153                 if idx == 0:
   154                     border = wx.TOP
   154                     border = wx.TOP
   155                 else:
   155                 else:
   156                     border = wx.BOTTOM
   156                     border = wx.BOTTOM
   157                 
   157 
   158                 st = wx.StaticText(scaling_panel, label=label)
   158                 st = wx.StaticText(scaling_panel, label=label)
   159                 scalingpanel_sizer.AddWindow(st, border=10, 
   159                 scalingpanel_sizer.AddWindow(st, border=10,
   160                       flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
   160                       flag=wx.ALIGN_CENTER_VERTICAL|border|wx.LEFT)
   161                 
   161 
   162                 sp = wx.SpinCtrl(scaling_panel, 
   162                 sp = wx.SpinCtrl(scaling_panel,
   163                       min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
   163                       min=0, max=2**16, style=wx.TE_PROCESS_ENTER)
   164                 scaling_controls.append(sp)
   164                 scaling_controls.append(sp)
   165                 callback = self.GetScalingChangedFunction(sp, language, name)
   165                 callback = self.GetScalingChangedFunction(sp, language, name)
   166                 self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
   166                 self.Bind(wx.EVT_TEXT_ENTER, callback, sp)
   167                 sp.Bind(wx.EVT_KILL_FOCUS, callback)
   167                 sp.Bind(wx.EVT_KILL_FOCUS, callback)
   168                 scalingpanel_sizer.AddWindow(sp, border=10, 
   168                 scalingpanel_sizer.AddWindow(sp, border=10,
   169                       flag=wx.GROW|border|wx.RIGHT)
   169                       flag=wx.GROW|border|wx.RIGHT)
   170         
   170 
   171             self.Scalings[language] = scaling_controls
   171             self.Scalings[language] = scaling_controls
   172             scaling_nb.AddPage(scaling_panel, translation)
   172             scaling_nb.AddPage(scaling_panel, translation)
   173         
   173 
   174         self.AddPage(self.GraphicsPanel, _("Graphics"))
   174         self.AddPage(self.GraphicsPanel, _("Graphics"))
   175 
   175 
   176         # Miscellaneous Panel elements
   176         # Miscellaneous Panel elements
   177 
   177 
   178         self.MiscellaneousPanel = wx.Panel(id=-1, parent=self, 
   178         self.MiscellaneousPanel = wx.Panel(id=-1, parent=self,
   179               name='MiscellaneousPanel', pos=wx.Point(0, 0),
   179               name='MiscellaneousPanel', pos=wx.Point(0, 0),
   180               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   180               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   181         miscellaneouspanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=15)
   181         miscellaneouspanel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=15)
   182         miscellaneouspanel_sizer.AddGrowableCol(1)
   182         miscellaneouspanel_sizer.AddGrowableCol(1)
   183         miscellaneouspanel_sizer.AddGrowableRow(1)
   183         miscellaneouspanel_sizer.AddGrowableRow(1)
   184         self.MiscellaneousPanel.SetSizer(miscellaneouspanel_sizer)
   184         self.MiscellaneousPanel.SetSizer(miscellaneouspanel_sizer)
   185         
   185 
   186         language_label = wx.StaticText(self.MiscellaneousPanel,
   186         language_label = wx.StaticText(self.MiscellaneousPanel,
   187               label=_('Language (optional):'))
   187               label=_('Language (optional):'))
   188         miscellaneouspanel_sizer.AddWindow(language_label, border=10, 
   188         miscellaneouspanel_sizer.AddWindow(language_label, border=10,
   189               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT)
   189               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.LEFT)
   190         
   190 
   191         self.Language = wx.ComboBox(self.MiscellaneousPanel, 
   191         self.Language = wx.ComboBox(self.MiscellaneousPanel,
   192               style=wx.CB_READONLY)
   192               style=wx.CB_READONLY)
   193         self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, self.Language)
   193         self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, self.Language)
   194         miscellaneouspanel_sizer.AddWindow(self.Language, border=10, 
   194         miscellaneouspanel_sizer.AddWindow(self.Language, border=10,
   195               flag=wx.GROW|wx.TOP|wx.RIGHT)
   195               flag=wx.GROW|wx.TOP|wx.RIGHT)
   196         
   196 
   197         description_label = wx.StaticText(self.MiscellaneousPanel,
   197         description_label = wx.StaticText(self.MiscellaneousPanel,
   198               label=_('Content Description (optional):'))
   198               label=_('Content Description (optional):'))
   199         miscellaneouspanel_sizer.AddWindow(description_label, border=10, 
   199         miscellaneouspanel_sizer.AddWindow(description_label, border=10,
   200               flag=wx.BOTTOM|wx.LEFT)
   200               flag=wx.BOTTOM|wx.LEFT)
   201         
   201 
   202         self.ContentDescription = wx.TextCtrl(self.MiscellaneousPanel, 
   202         self.ContentDescription = wx.TextCtrl(self.MiscellaneousPanel,
   203               size=wx.Size(240,150), style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
   203               size=wx.Size(240,150), style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
   204         self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged, 
   204         self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged,
   205               self.ContentDescription)
   205               self.ContentDescription)
   206         self.ContentDescription.Bind(wx.EVT_KILL_FOCUS, 
   206         self.ContentDescription.Bind(wx.EVT_KILL_FOCUS,
   207               self.OnContentDescriptionChanged)
   207               self.OnContentDescriptionChanged)
   208         miscellaneouspanel_sizer.AddWindow(self.ContentDescription, border=10, 
   208         miscellaneouspanel_sizer.AddWindow(self.ContentDescription, border=10,
   209               flag=wx.GROW|wx.BOTTOM|wx.RIGHT)
   209               flag=wx.GROW|wx.BOTTOM|wx.RIGHT)
   210         
   210 
   211         self.AddPage(self.MiscellaneousPanel, _("Miscellaneous"))
   211         self.AddPage(self.MiscellaneousPanel, _("Miscellaneous"))
   212         
   212 
   213         for param in REQUIRED_PARAMS:
   213         for param in REQUIRED_PARAMS:
   214             getattr(self, param).Enable(enable_required)
   214             getattr(self, param).Enable(enable_required)
   215            
   215 
   216         languages = ["", "en-US", "fr-FR", "zh-CN", "ru-RU"]
   216         languages = ["", "en-US", "fr-FR", "zh-CN", "ru-RU"]
   217         
   217 
   218         for language in languages:
   218         for language in languages:
   219             self.Language.Append(language)
   219             self.Language.Append(language)
   220 
   220 
   221     def RefreshView(self):
   221     def RefreshView(self):
   222         if self.Controller is not None:
   222         if self.Controller is not None:
   239                         self.Scalings[language][1].SetValue(y)
   239                         self.Scalings[language][1].SetValue(y)
   240             else:
   240             else:
   241                 tc = getattr(self, item, None)
   241                 tc = getattr(self, item, None)
   242                 if tc is not None:
   242                 if tc is not None:
   243                     tc.SetValue(value)
   243                     tc.SetValue(value)
   244         
   244 
   245     def GetValues(self):
   245     def GetValues(self):
   246         values = {}
   246         values = {}
   247         for param in ["projectName", "projectVersion",
   247         for param in ["projectName", "projectVersion",
   248                       "productName", "productVersion",
   248                       "productName", "productVersion",
   249                       "productRelease", "companyName",
   249                       "productRelease", "companyName",
   250                       "companyURL", "authorName", 
   250                       "companyURL", "authorName",
   251                       "organization"]:
   251                       "organization"]:
   252             value = getattr(self, param).GetValue()
   252             value = getattr(self, param).GetValue()
   253             if param in REQUIRED_PARAMS or value != "":
   253             if param in REQUIRED_PARAMS or value != "":
   254                 values[param] = value
   254                 values[param] = value
   255             else:
   255             else:
   268         values["scaling"] = {}
   268         values["scaling"] = {}
   269         for language in ["FBD", "LD", "SFC"]:
   269         for language in ["FBD", "LD", "SFC"]:
   270             values["scaling"][language] = (self.Scalings[language][0].GetValue(),
   270             values["scaling"][language] = (self.Scalings[language][0].GetValue(),
   271                                            self.Scalings[language][1].GetValue())
   271                                            self.Scalings[language][1].GetValue())
   272         return values
   272         return values
   273     
   273 
   274     def GetTextCtrlChangedFunction(self, textctrl, name):
   274     def GetTextCtrlChangedFunction(self, textctrl, name):
   275         def TextCtrlChangedFunction(event):
   275         def TextCtrlChangedFunction(event):
   276             if self.Controller is not None and self.Values is not None:
   276             if self.Controller is not None and self.Values is not None:
   277                 old_value = self.Values.get(name)
   277                 old_value = self.Values.get(name)
   278                 new_value = textctrl.GetValue()
   278                 new_value = textctrl.GetValue()
   302                     self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
   302                     self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
   303                           PAGETITLES, SCALING)
   303                           PAGETITLES, SCALING)
   304                     wx.CallAfter(self.RefreshView)
   304                     wx.CallAfter(self.RefreshView)
   305             event.Skip()
   305             event.Skip()
   306         return PageSizeChangedFunction
   306         return PageSizeChangedFunction
   307     
   307 
   308     def GetScalingChangedFunction(self, spinctrl, language, name):
   308     def GetScalingChangedFunction(self, spinctrl, language, name):
   309         def ScalingChangedFunction(event):
   309         def ScalingChangedFunction(event):
   310             if self.Controller is not None:
   310             if self.Controller is not None:
   311                 old_value = (0, 0)
   311                 old_value = (0, 0)
   312                 if self.Values is not None:
   312                 if self.Values is not None:
   322                     self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
   322                     self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU,
   323                           PAGETITLES, SCALING)
   323                           PAGETITLES, SCALING)
   324                     wx.CallAfter(self.RefreshView)
   324                     wx.CallAfter(self.RefreshView)
   325             event.Skip()
   325             event.Skip()
   326         return ScalingChangedFunction
   326         return ScalingChangedFunction
   327     
   327 
   328     def OnLanguageChanged(self, event):
   328     def OnLanguageChanged(self, event):
   329         if self.Controller is not None:
   329         if self.Controller is not None:
   330             if self.Values is not None:
   330             if self.Values is not None:
   331                 old_value = self.Values.get("language")
   331                 old_value = self.Values.get("language")
   332             else:
   332             else:
   337             if old_value != new_value:
   337             if old_value != new_value:
   338                 self.Controller.SetProjectProperties(properties={"language": new_value})
   338                 self.Controller.SetProjectProperties(properties={"language": new_value})
   339                 self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES)
   339                 self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES)
   340                 wx.CallAfter(self.RefreshView)
   340                 wx.CallAfter(self.RefreshView)
   341         event.Skip()
   341         event.Skip()
   342         
   342 
   343     def OnContentDescriptionChanged(self, event):
   343     def OnContentDescriptionChanged(self, event):
   344         if self.Controller is not None:
   344         if self.Controller is not None:
   345             if self.Values is not None:
   345             if self.Values is not None:
   346                 old_value = self.Values.get("contentDescription")
   346                 old_value = self.Values.get("contentDescription")
   347             else:
   347             else: