PLCOpenEditor.py
changeset 439 c7e0254be378
parent 430 8efd4c6874cd
child 440 e183bffc05f0
equal deleted inserted replaced
432:f4c0e9c9b3b9 439:c7e0254be378
  1059                 self.TabsOpened.SetSelection(new_index)
  1059                 self.TabsOpened.SetSelection(new_index)
  1060                 if not self.Debug:
  1060                 if not self.Debug:
  1061                     tagname = self.TabsOpened.GetPage(new_index).GetTagName()
  1061                     tagname = self.TabsOpened.GetPage(new_index).GetTagName()
  1062                     self.VariablePanelIndexer.ChangeVariablePanel(tagname)
  1062                     self.VariablePanelIndexer.ChangeVariablePanel(tagname)
  1063             self._Refresh(TOOLBAR, FILEMENU, EDITMENU)
  1063             self._Refresh(TOOLBAR, FILEMENU, EDITMENU)
  1064         event.Skip()
       
  1065     
  1064     
  1066     def OnCloseProjectMenu(self, event):
  1065     def OnCloseProjectMenu(self, event):
  1067         if not self.CheckSaveBeforeClosing():
  1066         if not self.CheckSaveBeforeClosing():
  1068             return
  1067             return
  1069         self.DeleteAllPages()
  1068         self.DeleteAllPages()
  1077     def OnSaveProjectMenu(self, event):
  1076     def OnSaveProjectMenu(self, event):
  1078         if not self.ModeSolo and getattr(self, "_onsave", None) != None:
  1077         if not self.ModeSolo and getattr(self, "_onsave", None) != None:
  1079             self._onsave()
  1078             self._onsave()
  1080         else:
  1079         else:
  1081             self.SaveProject()
  1080             self.SaveProject()
  1082         event.Skip()
       
  1083 
  1081 
  1084     def OnSaveProjectAsMenu(self, event):
  1082     def OnSaveProjectAsMenu(self, event):
  1085         self.SaveProjectAs()
  1083         self.SaveProjectAs()
  1086         event.Skip()
       
  1087 
  1084 
  1088     def OnGenerateProgramMenu(self, event):
  1085     def OnGenerateProgramMenu(self, event):
  1089         dialog = wx.FileDialog(self, _("Choose a file"), os.getcwd(), self.Controler.GetProgramFilePath(),  _("ST files (*.st)|*.st|All files|*.*"), wx.SAVE|wx.CHANGE_DIR)
  1086         dialog = wx.FileDialog(self, _("Choose a file"), os.getcwd(), self.Controler.GetProgramFilePath(),  _("ST files (*.st)|*.st|All files|*.*"), wx.SAVE|wx.CHANGE_DIR)
  1090         if dialog.ShowModal() == wx.ID_OK:
  1087         if dialog.ShowModal() == wx.ID_OK:
  1091             filepath = dialog.GetPath()
  1088             filepath = dialog.GetPath()
  1138         dialog = wx.PageSetupDialog(self, self.PageSetupData)
  1135         dialog = wx.PageSetupDialog(self, self.PageSetupData)
  1139         if dialog.ShowModal() == wx.ID_OK:
  1136         if dialog.ShowModal() == wx.ID_OK:
  1140             self.PageSetupData = wx.PageSetupDialogData(dialog.GetPageSetupData())
  1137             self.PageSetupData = wx.PageSetupDialogData(dialog.GetPageSetupData())
  1141             self.PrintData = wx.PrintData(self.PageSetupData.GetPrintData())
  1138             self.PrintData = wx.PrintData(self.PageSetupData.GetPrintData())
  1142         dialog.Destroy()
  1139         dialog.Destroy()
  1143         event.Skip()
       
  1144 
  1140 
  1145     def OnPreviewMenu(self, event):
  1141     def OnPreviewMenu(self, event):
  1146         selected = self.TabsOpened.GetSelection()        
  1142         selected = self.TabsOpened.GetSelection()        
  1147         if selected != -1:
  1143         if selected != -1:
  1148             data = wx.PrintDialogData(self.PrintData)
  1144             data = wx.PrintDialogData(self.PrintData)
  1157                 preview_frame = wx.PreviewFrame(preview, self, _("Print preview"))
  1153                 preview_frame = wx.PreviewFrame(preview, self, _("Print preview"))
  1158 
  1154 
  1159                 preview_frame.Initialize()
  1155                 preview_frame.Initialize()
  1160                 
  1156                 
  1161                 preview_frame.Show(True)
  1157                 preview_frame.Show(True)
  1162         event.Skip()
       
  1163 
  1158 
  1164     def OnPrintMenu(self, event):
  1159     def OnPrintMenu(self, event):
  1165         selected = self.TabsOpened.GetSelection()        
  1160         selected = self.TabsOpened.GetSelection()        
  1166         if selected != -1:
  1161         if selected != -1:
  1167             dialog_data = wx.PrintDialogData(self.PrintData)
  1162             dialog_data = wx.PrintDialogData(self.PrintData)
  1173             printout = GraphicPrintout(self.TabsOpened.GetPage(selected), page_size, margins)
  1168             printout = GraphicPrintout(self.TabsOpened.GetPage(selected), page_size, margins)
  1174             
  1169             
  1175             if not printer.Print(self, printout, True):
  1170             if not printer.Print(self, printout, True):
  1176                 self.ShowErrorMessage(_("There was a problem printing.\nPerhaps your current printer is not set correctly?"))
  1171                 self.ShowErrorMessage(_("There was a problem printing.\nPerhaps your current printer is not set correctly?"))
  1177             printout.Destroy()
  1172             printout.Destroy()
  1178         event.Skip()
       
  1179 
  1173 
  1180     def OnPropertiesMenu(self, event):
  1174     def OnPropertiesMenu(self, event):
  1181         self.ShowProperties()
  1175         self.ShowProperties()
  1182         event.Skip()
       
  1183 
  1176 
  1184     def OnQuitMenu(self, event):
  1177     def OnQuitMenu(self, event):
  1185         self.Close()
  1178         self.Close()
  1186         # don't call event.Skip() here or it will attempt to close the
       
  1187         # frame twice for some reason
       
  1188 
  1179 
  1189 
  1180 
  1190 #-------------------------------------------------------------------------------
  1181 #-------------------------------------------------------------------------------
  1191 #                            Edit Menu Functions
  1182 #                            Edit Menu Functions
  1192 #-------------------------------------------------------------------------------
  1183 #-------------------------------------------------------------------------------
  1237         self.Controler.LoadPrevious()
  1228         self.Controler.LoadPrevious()
  1238         self.CloseTabsWithoutModel()
  1229         self.CloseTabsWithoutModel()
  1239         self.RefreshEditor()
  1230         self.RefreshEditor()
  1240         self._Refresh(TITLE, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
  1231         self._Refresh(TITLE, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
  1241                       SCALING)
  1232                       SCALING)
  1242         event.Skip()
       
  1243     
  1233     
  1244     def OnRedoMenu(self, event):
  1234     def OnRedoMenu(self, event):
  1245         self.Controler.LoadNext()
  1235         self.Controler.LoadNext()
  1246         self.CloseTabsWithoutModel()
  1236         self.CloseTabsWithoutModel()
  1247         self.RefreshEditor()
  1237         self.RefreshEditor()
  1248         self._Refresh(TITLE, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
  1238         self._Refresh(TITLE, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
  1249                       SCALING)
  1239                       SCALING)
  1250         event.Skip()
       
  1251     
  1240     
  1252     def OnEnableUndoRedoMenu(self, event):
  1241     def OnEnableUndoRedoMenu(self, event):
  1253         self.Controler.EnableProjectBuffer(event.IsChecked())
  1242         self.Controler.EnableProjectBuffer(event.IsChecked())
  1254         self.RefreshEditMenu()
  1243         self.RefreshEditMenu()
  1255         event.Skip()
       
  1256 
  1244 
  1257     OnCutMenu = GetShortcutKeyCallbackFunction("Cut")
  1245     OnCutMenu = GetShortcutKeyCallbackFunction("Cut")
  1258     OnCopyMenu = GetShortcutKeyCallbackFunction("Copy")
  1246     OnCopyMenu = GetShortcutKeyCallbackFunction("Copy")
  1259     OnPasteMenu = GetShortcutKeyCallbackFunction("Paste")
  1247     OnPasteMenu = GetShortcutKeyCallbackFunction("Paste")
  1260 
  1248 
  1264             control.SelectAll()
  1252             control.SelectAll()
  1265         elif isinstance(control, wx.TextCtrl):
  1253         elif isinstance(control, wx.TextCtrl):
  1266             control.SetSelection(0, control.GetLastPosition())
  1254             control.SetSelection(0, control.GetLastPosition())
  1267         elif isinstance(control, wx.ComboBox):
  1255         elif isinstance(control, wx.ComboBox):
  1268             control.SetMark(0, control.GetLastPosition() + 1)
  1256             control.SetMark(0, control.GetLastPosition() + 1)
  1269         event.Skip()
       
  1270     
  1257     
  1271     DeleteFunctions = {
  1258     DeleteFunctions = {
  1272         ITEM_DATATYPE: GetDeleteElementFunction(PLCControler.ProjectRemoveDataType, check_function=PLCControler.DataTypeIsUsed),
  1259         ITEM_DATATYPE: GetDeleteElementFunction(PLCControler.ProjectRemoveDataType, check_function=PLCControler.DataTypeIsUsed),
  1273         ITEM_POU: GetDeleteElementFunction(PLCControler.ProjectRemovePou, check_function=PLCControler.PouIsUsed),
  1260         ITEM_POU: GetDeleteElementFunction(PLCControler.ProjectRemovePou, check_function=PLCControler.PouIsUsed),
  1274         ITEM_TRANSITION: GetDeleteElementFunction(PLCControler.ProjectRemovePouTransition, ITEM_POU),
  1261         ITEM_TRANSITION: GetDeleteElementFunction(PLCControler.ProjectRemovePouTransition, ITEM_POU),
  1291                                   INSTANCESTREE, LIBRARYTREE)
  1278                                   INSTANCESTREE, LIBRARYTREE)
  1292         elif isinstance(window, (Viewer, TextViewer)):
  1279         elif isinstance(window, (Viewer, TextViewer)):
  1293             event = wx.KeyEvent(wx.EVT_CHAR._getEvtType())
  1280             event = wx.KeyEvent(wx.EVT_CHAR._getEvtType())
  1294             event.m_keyCode = wx.WXK_DELETE
  1281             event.m_keyCode = wx.WXK_DELETE
  1295             window.ProcessEvent(event)
  1282             window.ProcessEvent(event)
  1296         event.Skip()
       
  1297 
  1283 
  1298 
  1284 
  1299 #-------------------------------------------------------------------------------
  1285 #-------------------------------------------------------------------------------
  1300 #                             Display Menu Functions
  1286 #                             Display Menu Functions
  1301 #-------------------------------------------------------------------------------
  1287 #-------------------------------------------------------------------------------
  1327                 self.DisplayMenu.Enable(wx.ID_CLEAR, False)
  1313                 self.DisplayMenu.Enable(wx.ID_CLEAR, False)
  1328             self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
  1314             self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
  1329         
  1315         
  1330     def OnRefreshMenu(self, event):
  1316     def OnRefreshMenu(self, event):
  1331         self.RefreshEditor(not self.Debug)
  1317         self.RefreshEditor(not self.Debug)
  1332         event.Skip()
       
  1333 
  1318 
  1334     def OnClearErrorsMenu(self, event):
  1319     def OnClearErrorsMenu(self, event):
  1335         self.ClearErrors()
  1320         self.ClearErrors()
  1336         event.Skip()
       
  1337 
  1321 
  1338     def GenerateZoomFunction(self, idx):
  1322     def GenerateZoomFunction(self, idx):
  1339         def ZoomFunction(event):
  1323         def ZoomFunction(event):
  1340             selected = self.TabsOpened.GetSelection()
  1324             selected = self.TabsOpened.GetSelection()
  1341             if selected != -1:
  1325             if selected != -1:
  2384             self.Controler.ProjectAddDataType(dialog.GetValue())
  2368             self.Controler.ProjectAddDataType(dialog.GetValue())
  2385             self.RefreshTitle()
  2369             self.RefreshTitle()
  2386             self.RefreshEditMenu()
  2370             self.RefreshEditMenu()
  2387             self.RefreshTypesTree()
  2371             self.RefreshTypesTree()
  2388         dialog.Destroy()
  2372         dialog.Destroy()
  2389         event.Skip()
       
  2390 
  2373 
  2391     def GenerateAddPouFunction(self, pou_type):
  2374     def GenerateAddPouFunction(self, pou_type):
  2392         def OnAddPouMenu(event):
  2375         def OnAddPouMenu(event):
  2393             dialog = PouDialog(self, pou_type)
  2376             dialog = PouDialog(self, pou_type)
  2394             dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug))
  2377             dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug))
  2399                 self.RefreshTitle()
  2382                 self.RefreshTitle()
  2400                 self.RefreshEditMenu()
  2383                 self.RefreshEditMenu()
  2401                 self.RefreshTypesTree()
  2384                 self.RefreshTypesTree()
  2402                 self.RefreshLibraryTree()
  2385                 self.RefreshLibraryTree()
  2403             dialog.Destroy()
  2386             dialog.Destroy()
  2404             event.Skip()
       
  2405         return OnAddPouMenu
  2387         return OnAddPouMenu
  2406 
  2388 
  2407     def GenerateAddTransitionFunction(self, pou_name):
  2389     def GenerateAddTransitionFunction(self, pou_name):
  2408         def OnAddTransitionMenu(event):
  2390         def OnAddTransitionMenu(event):
  2409             dialog = PouTransitionDialog(self)
  2391             dialog = PouTransitionDialog(self)
  2414                 self.Controler.ProjectAddPouTransition(pou_name, values["transitionName"], values["language"])
  2396                 self.Controler.ProjectAddPouTransition(pou_name, values["transitionName"], values["language"])
  2415                 self.RefreshTitle()
  2397                 self.RefreshTitle()
  2416                 self.RefreshEditMenu()
  2398                 self.RefreshEditMenu()
  2417                 self.RefreshTypesTree()
  2399                 self.RefreshTypesTree()
  2418                 dialog.Destroy()
  2400                 dialog.Destroy()
  2419             event.Skip()
       
  2420         return OnAddTransitionMenu
  2401         return OnAddTransitionMenu
  2421 
  2402 
  2422     def GenerateAddActionFunction(self, pou_name):
  2403     def GenerateAddActionFunction(self, pou_name):
  2423         def OnAddActionMenu(event):
  2404         def OnAddActionMenu(event):
  2424             dialog = PouActionDialog(self)
  2405             dialog = PouActionDialog(self)
  2429                 self.Controler.ProjectAddPouAction(pou_name, values["actionName"], values["language"])
  2410                 self.Controler.ProjectAddPouAction(pou_name, values["actionName"], values["language"])
  2430                 self.RefreshTitle()
  2411                 self.RefreshTitle()
  2431                 self.RefreshEditMenu()
  2412                 self.RefreshEditMenu()
  2432                 self.RefreshTypesTree()
  2413                 self.RefreshTypesTree()
  2433             dialog.Destroy()
  2414             dialog.Destroy()
  2434             event.Skip()
       
  2435         return OnAddActionMenu
  2415         return OnAddActionMenu
  2436 
  2416 
  2437     def OnAddConfigurationMenu(self, event):
  2417     def OnAddConfigurationMenu(self, event):
  2438         dialog = ConfigurationNameDialog(self, _("Please enter configuration name"), _("Add new configuration"))
  2418         dialog = ConfigurationNameDialog(self, _("Please enter configuration name"), _("Add new configuration"))
  2439         dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug))
  2419         dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug))
  2444             self.RefreshTitle()
  2424             self.RefreshTitle()
  2445             self.RefreshEditMenu()
  2425             self.RefreshEditMenu()
  2446             self.RefreshTypesTree()
  2426             self.RefreshTypesTree()
  2447             self.RefreshInstancesTree()
  2427             self.RefreshInstancesTree()
  2448         dialog.Destroy()
  2428         dialog.Destroy()
  2449         event.Skip()
       
  2450 
  2429 
  2451     def GenerateAddResourceFunction(self, config_name):
  2430     def GenerateAddResourceFunction(self, config_name):
  2452         def OnAddResourceMenu(event):
  2431         def OnAddResourceMenu(event):
  2453             dialog = ResourceNameDialog(self, _("Please enter resource name"), _("Add new resource"))
  2432             dialog = ResourceNameDialog(self, _("Please enter resource name"), _("Add new resource"))
  2454             dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug))
  2433             dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug))
  2459                 self.RefreshTitle()
  2438                 self.RefreshTitle()
  2460                 self.RefreshEditMenu()
  2439                 self.RefreshEditMenu()
  2461                 self.RefreshTypesTree()
  2440                 self.RefreshTypesTree()
  2462                 self.RefreshInstancesTree()
  2441                 self.RefreshInstancesTree()
  2463             dialog.Destroy()
  2442             dialog.Destroy()
  2464             event.Skip()
       
  2465         return OnAddResourceMenu
  2443         return OnAddResourceMenu
  2466 
  2444 
  2467     def GenerateChangePouTypeFunction(self, name, new_type):
  2445     def GenerateChangePouTypeFunction(self, name, new_type):
  2468         def OnChangePouTypeMenu(event):
  2446         def OnChangePouTypeMenu(event):
  2469             selected = self.TypesTree.GetSelection()
  2447             selected = self.TypesTree.GetSelection()