IDEFrame.py
changeset 2301 5b8a7dd43f9f
parent 2256 5927710b5610
child 2302 69fefac5760e
--- a/IDEFrame.py	Tue Aug 28 18:06:30 2018 +0300
+++ b/IDEFrame.py	Wed Aug 29 18:53:02 2018 +0300
@@ -93,106 +93,6 @@
 ] = [wx.NewId() for _init_coll_DefaultEditorToolBar_Items in range(18)]
 
 
-# Define behaviour of each Toolbar item according to current POU body type
-# Informations meaning are in this order:
-#  - Item is toggled
-#  - PLCOpenEditor mode where item is displayed (could be more then one)
-#  - Item id
-#  - Item callback function name
-#  - Item icon filename
-#  - Item tooltip text
-EditorToolBarItems = {
-    "FBD":   [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
-               "move", _("Move the view")),
-              (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
-               "add_comment", _("Create a new comment")),
-              (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
-               "add_variable", _("Create a new variable")),
-              (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
-               "add_block", _("Create a new block")),
-              (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
-               "add_connection", _("Create a new connection"))],
-    "LD":    [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
-               "move", _("Move the view")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
-               "add_comment", _("Create a new comment")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
-               "add_powerrail", _("Create a new power rail")),
-              (False, DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARRUNG, "OnRungTool",
-               "add_rung", _("Create a new rung")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCOIL, "OnCoilTool",
-               "add_coil", _("Create a new coil")),
-              (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
-               "add_contact", _("Create a new contact")),
-              (False, DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARBRANCH, "OnBranchTool",
-               "add_branch", _("Create a new branch")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
-               "add_variable", _("Create a new variable")),
-              (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
-               "add_block", _("Create a new block")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
-               "add_connection", _("Create a new connection"))],
-    "SFC":   [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
-               "move", _("Move the view")),
-              (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
-               "add_comment", _("Create a new comment")),
-              (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARINITIALSTEP, "OnInitialStepTool",
-               "add_initial_step", _("Create a new initial step")),
-              (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARSTEP, "OnStepTool",
-               "add_step", _("Create a new step")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARTRANSITION, "OnTransitionTool",
-               "add_transition", _("Create a new transition")),
-              (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARACTIONBLOCK, "OnActionBlockTool",
-               "add_action", _("Create a new action block")),
-              (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARDIVERGENCE, "OnDivergenceTool",
-               "add_divergence", _("Create a new divergence")),
-              (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARJUMP, "OnJumpTool",
-               "add_jump", _("Create a new jump")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
-               "add_variable", _("Create a new variable")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
-               "add_block", _("Create a new block")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
-               "add_connection", _("Create a new connection")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
-               "add_powerrail", _("Create a new power rail")),
-              (True, FREEDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
-               "add_contact", _("Create a new contact"))],
-    "ST":    [],
-    "IL":    [],
-    "debug": [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
-               ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
-               "move", _("Move the view"))],
-}
-
 # -------------------------------------------------------------------------------
 #                               Helper Functions
 # -------------------------------------------------------------------------------
@@ -331,12 +231,114 @@
     return tabs
 
 
-UNEDITABLE_NAMES_DICT = dict([(_(n), n) for n in UNEDITABLE_NAMES])
-
-
 class IDEFrame(wx.Frame):
     """IDEFrame Base Class"""
 
+    def InitEditorToolbarItems(self):
+        """
+        Initialize dictionary with lists of elements that need to be shown
+        if POU in particular programming language is edited.
+        """
+        # Define behaviour of each Toolbar item according to current POU body type
+        # Informations meaning are in this order:
+        #  - Item is toggled
+        #  - PLCOpenEditor mode where item is displayed (could be more then one)
+        #  - Item id
+        #  - Item callback function name
+        #  - Item icon filename
+        #  - Item tooltip text
+        self.EditorToolBarItems = {
+            "FBD":   [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
+                       "move", _("Move the view")),
+                      (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
+                       "add_comment", _("Create a new comment")),
+                      (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
+                       "add_variable", _("Create a new variable")),
+                      (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
+                       "add_block", _("Create a new block")),
+                      (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
+                       "add_connection", _("Create a new connection"))],
+            "LD":    [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
+                       "move", _("Move the view")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
+                       "add_comment", _("Create a new comment")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
+                       "add_powerrail", _("Create a new power rail")),
+                      (False, DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARRUNG, "OnRungTool",
+                       "add_rung", _("Create a new rung")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCOIL, "OnCoilTool",
+                       "add_coil", _("Create a new coil")),
+                      (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
+                       "add_contact", _("Create a new contact")),
+                      (False, DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARBRANCH, "OnBranchTool",
+                       "add_branch", _("Create a new branch")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
+                       "add_variable", _("Create a new variable")),
+                      (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
+                       "add_block", _("Create a new block")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
+                       "add_connection", _("Create a new connection"))],
+            "SFC":   [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
+                       "move", _("Move the view")),
+                      (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
+                       "add_comment", _("Create a new comment")),
+                      (True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARINITIALSTEP, "OnInitialStepTool",
+                       "add_initial_step", _("Create a new initial step")),
+                      (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARSTEP, "OnStepTool",
+                       "add_step", _("Create a new step")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARTRANSITION, "OnTransitionTool",
+                       "add_transition", _("Create a new transition")),
+                      (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARACTIONBLOCK, "OnActionBlockTool",
+                       "add_action", _("Create a new action block")),
+                      (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARDIVERGENCE, "OnDivergenceTool",
+                       "add_divergence", _("Create a new divergence")),
+                      (False, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARJUMP, "OnJumpTool",
+                       "add_jump", _("Create a new jump")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
+                       "add_variable", _("Create a new variable")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
+                       "add_block", _("Create a new block")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
+                       "add_connection", _("Create a new connection")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
+                       "add_powerrail", _("Create a new power rail")),
+                      (True, FREEDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
+                       "add_contact", _("Create a new contact"))],
+            "ST":    [],
+            "IL":    [],
+            "debug": [(True, FREEDRAWING_MODE | DRIVENDRAWING_MODE,
+                       ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
+                       "move", _("Move the view"))],
+        }
+
     def _init_coll_MenuBar_Menus(self, parent):
         parent.Append(menu=self.FileMenu, title=_(u'&File'))
         parent.Append(menu=self.EditMenu, title=_(u'&Edit'))
@@ -672,10 +674,13 @@
                           size=wx.Size(1000, 600),
                           style=wx.DEFAULT_FRAME_STYLE)
 
+        self.UNEDITABLE_NAMES_DICT = dict([(_(n), n) for n in UNEDITABLE_NAMES])
+
         self.Controler = None
         self.Config = wx.ConfigBase.Get()
         self.EnableDebug = enable_debug
 
+        self.InitEditorToolbarItems()
         self._init_ctrls(parent)
 
         # Define Tree item icon list
@@ -1891,7 +1896,7 @@
             if item_infos["type"] == ITEM_PROJECT:
                 name = "Project"
             else:
-                name = UNEDITABLE_NAMES_DICT[name]
+                name = self.UNEDITABLE_NAMES_DICT[name]
 
             if name == "Data Types":
                 menu = wx.Menu(title='')
@@ -2155,7 +2160,7 @@
             self.CurrentEditorToolBar = []
             EditorToolBar = self.Panes["EditorToolBar"]
             if EditorToolBar:
-                for radio, modes, id, method, picture, help in EditorToolBarItems[menu]:
+                for radio, modes, id, method, picture, help in self.EditorToolBarItems[menu]:
                     if modes & self.DrawingMode:
                         if radio or self.DrawingMode == FREEDRAWING_MODE:
                             EditorToolBar.AddRadioTool(id, GetBitmap(picture), wx.NullBitmap, help)
@@ -2420,7 +2425,7 @@
 
         if self.ProjectTree.GetPyData(selected)["type"] != ITEM_PROJECT:
             pou_type = self.ProjectTree.GetItemText(selected)
-            pou_type = UNEDITABLE_NAMES_DICT[pou_type]  # one of 'Functions', 'Function Blocks' or 'Programs'
+            pou_type = self.UNEDITABLE_NAMES_DICT[pou_type]  # one of 'Functions', 'Function Blocks' or 'Programs'
             pou_type = {'Functions': 'function', 'Function Blocks': 'functionBlock', 'Programs': 'program'}[pou_type]
         else:
             pou_type = None