188 kind=wx.ITEM_NORMAL, text=u'Add Configuration') |
188 kind=wx.ITEM_NORMAL, text=u'Add Configuration') |
189 parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS12, |
189 parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS12, |
190 kind=wx.ITEM_NORMAL, text=u'Remove Configuration') |
190 kind=wx.ITEM_NORMAL, text=u'Remove Configuration') |
191 self.Bind(wx.EVT_MENU, self.OnRefreshMenu, |
191 self.Bind(wx.EVT_MENU, self.OnRefreshMenu, |
192 id=wxID_PLCOPENEDITOREDITMENUITEMS0) |
192 id=wxID_PLCOPENEDITOREDITMENUITEMS0) |
|
193 self.Bind(wx.EVT_MENU, self.OnUndoMenu, |
|
194 id=wxID_PLCOPENEDITOREDITMENUITEMS1) |
|
195 self.Bind(wx.EVT_MENU, self.OnRedoMenu, |
|
196 id=wxID_PLCOPENEDITOREDITMENUITEMS2) |
193 self.Bind(wx.EVT_MENU, self.OnCutMenu, |
197 self.Bind(wx.EVT_MENU, self.OnCutMenu, |
194 id=wxID_PLCOPENEDITOREDITMENUITEMS4) |
198 id=wxID_PLCOPENEDITOREDITMENUITEMS4) |
195 self.Bind(wx.EVT_MENU, self.OnCopyMenu, |
199 self.Bind(wx.EVT_MENU, self.OnCopyMenu, |
196 id=wxID_PLCOPENEDITOREDITMENUITEMS5) |
200 id=wxID_PLCOPENEDITOREDITMENUITEMS5) |
197 self.Bind(wx.EVT_MENU, self.OnPasteMenu, |
201 self.Bind(wx.EVT_MENU, self.OnPasteMenu, |
371 parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600), |
375 parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600), |
372 style=wx.DEFAULT_FRAME_STYLE, title=u'PLCOpenEditor') |
376 style=wx.DEFAULT_FRAME_STYLE, title=u'PLCOpenEditor') |
373 self._init_utils() |
377 self._init_utils() |
374 self.SetClientSize(wx.Size(1000, 600)) |
378 self.SetClientSize(wx.Size(1000, 600)) |
375 self.SetMenuBar(self.menuBar1) |
379 self.SetMenuBar(self.menuBar1) |
|
380 self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=wxID_PLCOPENEDITOR) |
376 |
381 |
377 self.splitterWindow1 = wx.SplitterWindow(id=wxID_PLCOPENEDITORSPLITTERWINDOW1, |
382 self.splitterWindow1 = wx.SplitterWindow(id=wxID_PLCOPENEDITORSPLITTERWINDOW1, |
378 name='splitterWindow1', parent=self, point=wx.Point(0, 0), |
383 name='splitterWindow1', parent=self, point=wx.Point(0, 0), |
379 size=wx.Size(-1, -1), style=wx.SP_3D) |
384 size=wx.Size(-1, -1), style=wx.SP_3D) |
380 self.splitterWindow1.SetNeedUpdating(True) |
385 self.splitterWindow1.SetNeedUpdating(True) |
441 #self.DrawingMode = FREEDRAWING_MODE |
446 #self.DrawingMode = FREEDRAWING_MODE |
442 self.DrawingMode = DRIVENDRAWING_MODE |
447 self.DrawingMode = DRIVENDRAWING_MODE |
443 |
448 |
444 self.RefreshFileMenu() |
449 self.RefreshFileMenu() |
445 self.RefreshEditMenu() |
450 self.RefreshEditMenu() |
|
451 self.RefreshTitle() |
446 self.RefreshToolBar() |
452 self.RefreshToolBar() |
447 |
453 |
448 def GetDrawingMode(self): |
454 def GetDrawingMode(self): |
449 return self.DrawingMode |
455 return self.DrawingMode |
|
456 |
|
457 def RefreshTitle(self): |
|
458 if self.Controler.HasOpenedProject() > 0: |
|
459 self.SetTitle("PLCOpenEditor - %s"%self.Controler.GetFilename()) |
|
460 else: |
|
461 self.SetTitle("PLCOpenEditor") |
450 |
462 |
451 def RefreshFileMenu(self): |
463 def RefreshFileMenu(self): |
452 if self.FileMenu: |
464 if self.FileMenu: |
453 if self.Controler.HasOpenedProject(): |
465 if self.Controler.HasOpenedProject(): |
454 if self.TabsOpened.GetPageCount() > 0: |
466 if self.TabsOpened.GetPageCount() > 0: |
468 self.FileMenu.FindItemByPosition(7).Enable(False) |
480 self.FileMenu.FindItemByPosition(7).Enable(False) |
469 self.FileMenu.FindItemByPosition(9).Enable(False) |
481 self.FileMenu.FindItemByPosition(9).Enable(False) |
470 |
482 |
471 def RefreshEditMenu(self): |
483 def RefreshEditMenu(self): |
472 if self.EditMenu: |
484 if self.EditMenu: |
473 self.EditMenu.FindItemByPosition(1).Enable(False) |
485 if self.Controler.HasOpenedProject(): |
474 self.EditMenu.FindItemByPosition(2).Enable(False) |
486 undo, redo = self.Controler.GetBufferState() |
|
487 self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS1, undo) |
|
488 self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS2, redo) |
|
489 else: |
|
490 self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS1, False) |
|
491 self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS2, False) |
475 if self.Controler.HasOpenedProject(): |
492 if self.Controler.HasOpenedProject(): |
476 if self.TabsOpened.GetPageCount() > 0: |
493 if self.TabsOpened.GetPageCount() > 0: |
477 self.EditMenu.FindItemByPosition(0).Enable(True) |
494 self.EditMenu.FindItemByPosition(0).Enable(True) |
478 else: |
495 else: |
479 self.EditMenu.FindItemByPosition(0).Enable(False) |
496 self.EditMenu.FindItemByPosition(0).Enable(False) |
493 self.EditMenu.FindItemByPosition(5).Enable(False) |
510 self.EditMenu.FindItemByPosition(5).Enable(False) |
494 self.EditMenu.FindItemByPosition(6).Enable(False) |
511 self.EditMenu.FindItemByPosition(6).Enable(False) |
495 |
512 |
496 def ShowProperties(self): |
513 def ShowProperties(self): |
497 old_values = self.Controler.GetProjectProperties() |
514 old_values = self.Controler.GetProjectProperties() |
498 old_values["projectName"] = self.Controler.GetProjectName() |
|
499 dialog = ProjectDialog(self) |
515 dialog = ProjectDialog(self) |
500 dialog.SetValues(old_values) |
516 dialog.SetValues(old_values) |
501 if dialog.ShowModal() == wxID_OK: |
517 if dialog.ShowModal() == wxID_OK: |
502 new_values = dialog.GetValues() |
518 new_values = dialog.GetValues() |
503 projectname = new_values.pop("projectName") |
519 projectname = new_values.pop("projectName") |
504 new_values["creationDateTime"] = old_values["creationDateTime"] |
520 new_values["creationDateTime"] = old_values["creationDateTime"] |
505 self.Controler.SetProjectName(projectname) |
521 self.Controler.SetProjectProperties(projectname, new_values) |
506 self.Controler.SetProjectProperties(new_values) |
|
507 self.RefreshProjectTree() |
522 self.RefreshProjectTree() |
508 dialog.Destroy() |
523 dialog.Destroy() |
|
524 |
|
525 def OnCloseFrame(self, event): |
|
526 if not self.Controler.ProjectIsSaved(): |
|
527 dialog = wxMessageDialog(self, "There are changes, do you want to save?", "Close Application", wxYES_NO|wxCANCEL|wxICON_QUESTION) |
|
528 answer = dialog.ShowModal() |
|
529 dialog.Destroy() |
|
530 if answer == wxID_YES: |
|
531 self.SaveProject() |
|
532 event.Skip() |
|
533 elif answer == wxID_NO: |
|
534 event.Skip() |
|
535 else: |
|
536 event.Skip() |
509 |
537 |
510 def OnNewProjectMenu(self, event): |
538 def OnNewProjectMenu(self, event): |
511 dialog = ProjectDialog(self) |
539 dialog = ProjectDialog(self) |
512 if dialog.ShowModal() == wxID_OK: |
540 if dialog.ShowModal() == wxID_OK: |
513 values = dialog.GetValues() |
541 values = dialog.GetValues() |
514 projectname = values.pop("projectName") |
542 projectname = values.pop("projectName") |
515 values["creationDateTime"] = datetime(*localtime()[:6]) |
543 values["creationDateTime"] = datetime(*localtime()[:6]) |
516 self.Controler.CreateNewProject(projectname) |
544 self.Controler.CreateNewProject(projectname) |
517 self.Controler.SetProjectProperties(values) |
545 self.Controler.SetProjectProperties(projectname, values) |
|
546 self.RefreshTitle() |
518 self.RefreshFileMenu() |
547 self.RefreshFileMenu() |
519 self.RefreshEditMenu() |
548 self.RefreshEditMenu() |
520 self.RefreshProjectTree() |
549 self.RefreshProjectTree() |
521 event.Skip() |
550 event.Skip() |
522 |
551 |
531 filepath = dialog.GetPath() |
560 filepath = dialog.GetPath() |
532 if os.path.isfile(filepath): |
561 if os.path.isfile(filepath): |
533 self.Controler.OpenXMLFile(filepath) |
562 self.Controler.OpenXMLFile(filepath) |
534 self.TabsOpened.DeleteAllPages() |
563 self.TabsOpened.DeleteAllPages() |
535 self.RefreshProjectTree() |
564 self.RefreshProjectTree() |
|
565 self.RefreshTitle() |
536 self.RefreshFileMenu() |
566 self.RefreshFileMenu() |
537 self.RefreshEditMenu() |
567 self.RefreshEditMenu() |
538 self.RefreshToolBar() |
568 self.RefreshToolBar() |
539 dialog.Destroy() |
569 dialog.Destroy() |
540 event.Skip() |
570 event.Skip() |
544 if selected >= 0: |
574 if selected >= 0: |
545 self.Controler.CloseElementEditing() |
575 self.Controler.CloseElementEditing() |
546 self.TabsOpened.DeletePage(selected) |
576 self.TabsOpened.DeletePage(selected) |
547 if self.TabsOpened.GetPageCount() > 0: |
577 if self.TabsOpened.GetPageCount() > 0: |
548 self.TabsOpened.SetSelection(min(selected, self.TabsOpened.GetPageCount() - 1)) |
578 self.TabsOpened.SetSelection(min(selected, self.TabsOpened.GetPageCount() - 1)) |
|
579 self.RefreshTitle() |
549 self.RefreshFileMenu() |
580 self.RefreshFileMenu() |
550 self.RefreshEditMenu() |
581 self.RefreshEditMenu() |
551 self.RefreshToolBar() |
582 self.RefreshToolBar() |
552 event.Skip() |
583 event.Skip() |
553 |
584 |
554 def OnCloseProjectMenu(self, event): |
585 def OnCloseProjectMenu(self, event): |
555 self.Controler.Reset() |
586 self.Controler.Reset() |
556 self.TabsOpened.DeleteAllPages() |
587 self.TabsOpened.DeleteAllPages() |
557 self.ProjectTree.DeleteAllItems() |
588 self.ProjectTree.DeleteAllItems() |
|
589 self.RefreshTitle() |
558 self.RefreshFileMenu() |
590 self.RefreshFileMenu() |
559 self.RefreshEditMenu() |
591 self.RefreshEditMenu() |
560 self.RefreshToolBar() |
592 self.RefreshToolBar() |
561 event.Skip() |
593 event.Skip() |
562 |
594 |
587 |
619 |
588 def SaveProject(self): |
620 def SaveProject(self): |
589 result = self.Controler.SaveXMLFile() |
621 result = self.Controler.SaveXMLFile() |
590 if not result: |
622 if not result: |
591 self.SaveProjectAs() |
623 self.SaveProjectAs() |
|
624 else: |
|
625 self.RefreshTitle() |
592 |
626 |
593 def SaveProjectAs(self): |
627 def SaveProjectAs(self): |
594 filepath = self.Controler.GetFilePath() |
628 filepath = self.Controler.GetFilePath() |
595 if filepath != "": |
629 if filepath != "": |
596 directory, filename = os.path.split(filepath) |
630 directory, filename = os.path.split(filepath) |
597 else: |
631 else: |
598 directory, filename = os.getcwd(), "%s.xml"%self.Controler.GetProjectName() |
632 directory, filename = os.getcwd(), "%(projectName)s.xml"%self.Controler.GetProjectProperties() |
599 dialog = wxFileDialog(self, "Choose a file", directory, filename, "PLCOpen files (*.xml)|*.xml|All files|*.*", wxSAVE|wxOVERWRITE_PROMPT) |
633 dialog = wxFileDialog(self, "Choose a file", directory, filename, "PLCOpen files (*.xml)|*.xml|All files|*.*", wxSAVE|wxOVERWRITE_PROMPT) |
600 if dialog.ShowModal() == wxID_OK: |
634 if dialog.ShowModal() == wxID_OK: |
601 filepath = dialog.GetPath() |
635 filepath = dialog.GetPath() |
602 if os.path.isdir(os.path.dirname(filepath)): |
636 if os.path.isdir(os.path.dirname(filepath)): |
603 result = self.Controler.SaveXMLFile(filepath) |
637 result = self.Controler.SaveXMLFile(filepath) |
766 else: |
801 else: |
767 self.TabsOpened.GetPage(selected).Viewer.AddJump() |
802 self.TabsOpened.GetPage(selected).Viewer.AddJump() |
768 event.Skip() |
803 event.Skip() |
769 |
804 |
770 def OnPouSelectedChanged(self, event): |
805 def OnPouSelectedChanged(self, event): |
|
806 old_selected = self.TabsOpened.GetSelection() |
|
807 if old_selected >= 0: |
|
808 self.TabsOpened.GetPage(old_selected).ResetBuffer() |
771 selected = event.GetSelection() |
809 selected = event.GetSelection() |
772 if selected >= 0: |
810 if selected >= 0: |
773 self.Controler.RefreshCurrentElementEditing(selected) |
811 self.Controler.RefreshCurrentElementEditing(selected) |
774 found = False |
812 found = False |
775 name = self.TabsOpened.GetPageText(selected) |
813 name = self.TabsOpened.GetPageText(selected) |
807 message = "\"%s\" is a keyword. It can't be used!"%new_name |
845 message = "\"%s\" is a keyword. It can't be used!"%new_name |
808 else: |
846 else: |
809 item = event.GetItem() |
847 item = event.GetItem() |
810 itemtype = self.ProjectTree.GetPyData(item) |
848 itemtype = self.ProjectTree.GetPyData(item) |
811 if itemtype == ITEM_PROJECT: |
849 if itemtype == ITEM_PROJECT: |
812 self.Controler.SetProjectName(new_name) |
850 self.Controler.SetProjectProperties(name = new_name) |
813 elif itemtype == ITEM_POU: |
851 elif itemtype == ITEM_POU: |
814 if new_name.upper() in self.Controler.GetProjectPouNames(): |
852 if new_name.upper() in self.Controler.GetProjectPouNames(): |
815 message = "\"%s\" pou already exists!"%new_name |
853 message = "\"%s\" pou already exists!"%new_name |
816 abort = True |
854 abort = True |
817 elif new_name.upper() in self.Controler.GetProjectPouVariables(): |
855 elif new_name.upper() in self.Controler.GetProjectPouVariables(): |
1086 new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = grandparent_name, action_name = name) |
1124 new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = grandparent_name, action_name = name) |
1087 self.TabsOpened.AddPage(new_window, "") |
1125 self.TabsOpened.AddPage(new_window, "") |
1088 else: |
1126 else: |
1089 idx = self.Controler.ChangePouActionEditing(grandparent_name, name) |
1127 idx = self.Controler.ChangePouActionEditing(grandparent_name, name) |
1090 if idx != None: |
1128 if idx != None: |
|
1129 old_selected = self.TabsOpened.GetSelection() |
|
1130 if old_selected >= 0: |
|
1131 self.TabsOpened.GetPage(old_selected).ResetBuffer() |
1091 self.TabsOpened.SetSelection(idx) |
1132 self.TabsOpened.SetSelection(idx) |
1092 window = self.TabsOpened.GetPage(idx) |
1133 window = self.TabsOpened.GetPage(idx) |
1093 window.RefreshView() |
1134 window.RefreshView() |
1094 self.RefreshTabsOpenedTitles() |
1135 self.RefreshTabsOpenedTitles() |
1095 self.RefreshFileMenu() |
1136 self.RefreshFileMenu() |
1195 self.TabsOpened.SetPageText(i, pou) |
1236 self.TabsOpened.SetPageText(i, pou) |
1196 |
1237 |
1197 def OnRefreshMenu(self, event): |
1238 def OnRefreshMenu(self, event): |
1198 selected = self.TabsOpened.GetSelection() |
1239 selected = self.TabsOpened.GetSelection() |
1199 if selected != -1: |
1240 if selected != -1: |
|
1241 self.TabsOpened.GetPage(selected).RefreshView() |
1200 self.TabsOpened.GetPage(selected).Refresh() |
1242 self.TabsOpened.GetPage(selected).Refresh() |
1201 event.Skip() |
1243 event.Skip() |
1202 |
1244 |
|
1245 def OnUndoMenu(self, event): |
|
1246 self.Controler.LoadPrevious() |
|
1247 selected = self.TabsOpened.GetSelection() |
|
1248 if selected != -1: |
|
1249 self.TabsOpened.GetPage(selected).RefreshView() |
|
1250 self.TabsOpened.GetPage(selected).Refresh() |
|
1251 self.RefreshTitle() |
|
1252 self.RefreshEditMenu() |
|
1253 event.Skip() |
|
1254 |
|
1255 def OnRedoMenu(self, event): |
|
1256 self.Controler.LoadNext() |
|
1257 selected = self.TabsOpened.GetSelection() |
|
1258 if selected != -1: |
|
1259 self.TabsOpened.GetPage(selected).RefreshView() |
|
1260 self.TabsOpened.GetPage(selected).Refresh() |
|
1261 self.RefreshTitle() |
|
1262 self.RefreshEditMenu() |
|
1263 event.Skip() |
|
1264 |
1203 def OnCutMenu(self, event): |
1265 def OnCutMenu(self, event): |
1204 selected = self.TabsOpened.GetSelection() |
1266 selected = self.TabsOpened.GetSelection() |
1205 if selected != -1: |
1267 if selected != -1: |
1206 try: |
1268 try: |
1207 self.TabsOpened.GetPage(selected).Viewer.Cut() |
1269 self.TabsOpened.GetPage(selected).Viewer.Cut() |
1242 dialog = wxSingleChoiceDialog(self, "Select POU to remove:", "POU Remove", pous, wxOK|wxCANCEL) |
1304 dialog = wxSingleChoiceDialog(self, "Select POU to remove:", "POU Remove", pous, wxOK|wxCANCEL) |
1243 if dialog.ShowModal() == wxID_OK: |
1305 if dialog.ShowModal() == wxID_OK: |
1244 selected = dialog.GetStringSelection() |
1306 selected = dialog.GetStringSelection() |
1245 if not self.Controler.PouIsUsed(selected): |
1307 if not self.Controler.PouIsUsed(selected): |
1246 self.Controler.ProjectRemovePou(selected) |
1308 self.Controler.ProjectRemovePou(selected) |
|
1309 deleted = None |
1247 for i in xrange(self.TabsOpened.GetPageCount()): |
1310 for i in xrange(self.TabsOpened.GetPageCount()): |
1248 if self.TabsOpened.GetPageText(i) == selected: |
1311 if self.TabsOpened.GetPageText(i) == selected: |
1249 self.TabsOpened.DeletePage(i) |
1312 deleted = i |
|
1313 if deleted != None: |
|
1314 self.TabsOpened.DeletePage(i) |
1250 self.RefreshProjectTree() |
1315 self.RefreshProjectTree() |
1251 self.RefreshToolBar() |
1316 self.RefreshToolBar() |
1252 else: |
1317 else: |
1253 message = wxMessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wxOK|wxICON_ERROR) |
1318 message = wxMessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wxOK|wxICON_ERROR) |
1254 message.ShowModal() |
1319 message.ShowModal() |
2171 |
2236 |
2172 if element_type == "config": |
2237 if element_type == "config": |
2173 self.Viewer = wx.Panel(id=wxID_POUEDITORPANELVIEWER, |
2238 self.Viewer = wx.Panel(id=wxID_POUEDITORPANELVIEWER, |
2174 name='ConfigPanel', parent=self, pos=wx.Point(0, 0), |
2239 name='ConfigPanel', parent=self, pos=wx.Point(0, 0), |
2175 size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL) |
2240 size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL) |
|
2241 self.Viewer.ResetBuffer = lambda: None |
|
2242 self.Viewer.RefreshView = lambda: None |
2176 elif element_type == "resource": |
2243 elif element_type == "resource": |
2177 self.Viewer = ResourceEditor(self, self.Parent, self.Controler) |
2244 self.Viewer = ResourceEditor(self, self.Parent, self.Controler) |
2178 elif element_type == "FBD": |
2245 elif element_type == "FBD": |
2179 self.Viewer = Viewer(self, self.Parent, self.Controler) |
2246 self.Viewer = Viewer(self, self.Parent, self.Controler) |
2180 elif element_type == "LD": |
2247 elif element_type == "LD": |
2325 else: |
2392 else: |
2326 language = self.Controler.GetPouBodyType(self.PouName) |
2393 language = self.Controler.GetPouBodyType(self.PouName) |
2327 if language not in ["IL", "ST"]: |
2394 if language not in ["IL", "ST"]: |
2328 self.Viewer.SetMode(mode) |
2395 self.Viewer.SetMode(mode) |
2329 |
2396 |
|
2397 def ResetBuffer(self): |
|
2398 self.Viewer.ResetBuffer() |
|
2399 |
2330 def RefreshView(self): |
2400 def RefreshView(self): |
2331 self.PouNames = self.Controler.GetProjectPouNames() |
2401 self.PouNames = self.Controler.GetProjectPouNames() |
2332 |
2402 |
2333 if self.ElementType == "config": |
2403 if self.ElementType == "config": |
2334 self.PouIsUsed = False |
2404 self.PouIsUsed = False |
2358 |
2428 |
2359 if returnType and self.ReturnType.IsEnabled(): |
2429 if returnType and self.ReturnType.IsEnabled(): |
2360 self.ReturnType.SetStringSelection(returnType) |
2430 self.ReturnType.SetStringSelection(returnType) |
2361 self.RefreshValues() |
2431 self.RefreshValues() |
2362 self.RefreshButtons() |
2432 self.RefreshButtons() |
2363 if self.ElementType != "config": |
2433 self.Viewer.RefreshView() |
2364 self.Viewer.RefreshView() |
2434 |
2365 |
|
2366 def OnClassFilter(self, event): |
2435 def OnClassFilter(self, event): |
2367 self.Filter = self.FilterChoiceTransfer[self.ClassFilter.GetStringSelection()] |
2436 self.Filter = self.FilterChoiceTransfer[self.ClassFilter.GetStringSelection()] |
2368 self.RefreshTypeList() |
2437 self.RefreshTypeList() |
2369 self.RefreshValues() |
2438 self.RefreshValues() |
2370 self.RefreshButtons() |
2439 self.RefreshButtons() |
2379 self.ClassList = ["Local","Temp"] |
2448 self.ClassList = ["Local","Temp"] |
2380 else: |
2449 else: |
2381 self.ClassList = [self.Filter] |
2450 self.ClassList = [self.Filter] |
2382 |
2451 |
2383 def RefreshButtons(self): |
2452 def RefreshButtons(self): |
2384 table_length = len(self.Table.data) |
2453 if self.Table: |
2385 row_class = None |
2454 table_length = len(self.Table.data) |
2386 if table_length and self.PouIsUsed: |
2455 row_class = None |
2387 row = self.VariablesGrid.GetGridCursorRow() |
2456 if table_length and self.PouIsUsed: |
2388 row_class = self.Table.GetValueByName(row, "Class") |
2457 row = self.VariablesGrid.GetGridCursorRow() |
2389 self.AddButton.Enable(not self.PouIsUsed or self.Filter not in ["Interface", "Input", "Output", "InOut"]) |
2458 row_class = self.Table.GetValueByName(row, "Class") |
2390 self.DeleteButton.Enable(table_length > 0 and row_class not in ["Input", "Output", "InOut"]) |
2459 self.AddButton.Enable(not self.PouIsUsed or self.Filter not in ["Interface", "Input", "Output", "InOut"]) |
2391 self.UpButton.Enable(table_length > 0 and self.Filter == "All" and row_class not in ["Input", "Output", "InOut"]) |
2460 self.DeleteButton.Enable(table_length > 0 and row_class not in ["Input", "Output", "InOut"]) |
2392 self.DownButton.Enable(table_length > 0 and self.Filter == "All" and row_class not in ["Input", "Output", "InOut"]) |
2461 self.UpButton.Enable(table_length > 0 and self.Filter == "All" and row_class not in ["Input", "Output", "InOut"]) |
|
2462 self.DownButton.Enable(table_length > 0 and self.Filter == "All" and row_class not in ["Input", "Output", "InOut"]) |
2393 |
2463 |
2394 def OnAddButton(self, event): |
2464 def OnAddButton(self, event): |
2395 new_row = self.DefaultValue.copy() |
2465 new_row = self.DefaultValue.copy() |
2396 if self.Filter in self.DefaultTypes: |
2466 if self.Filter in self.DefaultTypes: |
2397 new_row["Class"] = self.DefaultTypes[self.Filter] |
2467 new_row["Class"] = self.DefaultTypes[self.Filter] |