PLCOpenEditor.py
changeset 184 d3e6484ebe85
parent 183 99d77995b4ea
child 185 fdc8a59b02bd
--- a/PLCOpenEditor.py	Fri Feb 29 11:01:03 2008 +0100
+++ b/PLCOpenEditor.py	Fri Feb 29 19:16:10 2008 +0100
@@ -104,31 +104,81 @@
 ] = [wx.NewId() for _init_coll_DefaultToolBar_Items in range(17)]
 
 ToolBarItems = {
-    "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection")],
-    "LD"  : [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "powerrail.png", "Create a new power rail"),
-             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "rung.png", "Create a new rung"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "coil.png", "Create a new coil"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "contact.png", "Create a new contact"),
-             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "branch.png", "Create a new branch"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection")],
-    "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "initial_step.png", "Create a new initial step"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "step.png", "Create a new step"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "transition.png", "Create a new transition"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "action.png", "Create a new action block"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "divergence.png", "Create a new divergence"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "jump.png", "Create a new jump"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "powerrail.png", "Create a new power rail"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "contact.png", "Create a new contact")],
+    "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
+              ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool",
+              "add_comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
+              ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool",
+              "add_variable.png", "Create a new variable"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
+              ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool",
+              "add_block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", 
+              "add_connection.png", "Create a new connection")],
+    "LD"  : [(True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", 
+              "add_comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", 
+              "add_powerrail.png", "Create a new power rail"),
+             (False, DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", 
+              "add_rung.png", "Create a new rung"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", 
+              "add_coil.png", "Create a new coil"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", 
+              "add_contact.png", "Create a new contact"),
+             (False, DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", 
+              "add_branch.png", "Create a new branch"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", 
+              "add_variable.png", "Create a new variable"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", 
+              "add_block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", 
+              "add_connection.png", "Create a new connection")],
+    "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", 
+              "add_comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", 
+              "add_initial_step.png", "Create a new initial step"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", 
+              "add_step.png", "Create a new step"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", 
+              "add_transition.png", "Create a new transition"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", 
+              "add_action.png", "Create a new action block"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", 
+              "add_divergence.png", "Create a new divergence"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", 
+              "add_jump.png", "Create a new jump"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", 
+              "add_variable.png", "Create a new variable"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", 
+              "add_block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", 
+              "add_connection.png", "Create a new connection"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", 
+              "add_powerrail.png", "Create a new power rail"),
+             (True, FREEDRAWING_MODE, 
+              ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", 
+              "add_contact.png", "Create a new contact")],
     "ST"  : [],
     "IL"  : []
 }
@@ -416,11 +466,33 @@
         icon = wx.Icon(os.path.join(CWD,"Images","poe.ico"),wx.BITMAP_TYPE_ICO)
         self.SetIcon(icon)
         
-        if wx.Platform != '__WXMSW__':
-            self.TreeImageList = wx.ImageList(16, 16)
-            for language in LANGUAGES:
-                self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images', '%s.png'%language)))
-            self.ProjectTree.AssignImageList(self.TreeImageList)
+        self.TreeImageList = wx.ImageList(16, 16)
+        self.TreeImageDict = {}
+        for language in LANGUAGES:
+            self.TreeImageDict[language]=self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images', '%s.png'%language)))
+        
+        for imgname, itemtype in [
+            #editables
+            ("PROJECT",        ITEM_PROJECT),
+            #("POU",            ITEM_POU),
+            #("VARIABLE",       ITEM_VARIABLE),
+            ("TRANSITION",     ITEM_TRANSITION),
+            ("ACTION",         ITEM_ACTION),
+            ("CONFIGURATION",  ITEM_CONFIGURATION),
+            ("RESOURCE",       ITEM_RESOURCE),
+            ("DATATYPE",       ITEM_DATATYPE),
+            # uneditables
+            ("DATATYPES",      ITEM_DATATYPES),
+            ("FUNCTION",       ITEM_FUNCTION),
+            ("FUNCTIONBLOCK",  ITEM_FUNCTIONBLOCK),
+            ("PROGRAM",        ITEM_PROGRAM),
+            ("TRANSITIONS",    ITEM_TRANSITIONS),
+            ("ACTIONS",        ITEM_ACTIONS),
+            ("CONFIGURATIONS", ITEM_CONFIGURATIONS),
+            ("RESOURCES",      ITEM_RESOURCES),
+            ("PROPERTIES",     ITEM_PROPERTIES)]:
+            self.TreeImageDict[itemtype]=self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images', '%s.png'%imgname)))
+        self.ProjectTree.AssignImageList(self.TreeImageList)
         
         self.CurrentToolBar = []
         self.CurrentLanguage = ""
@@ -1016,8 +1088,11 @@
         to_delete = []
         self.ProjectTree.SetItemText(root, infos["name"])
         self.ProjectTree.SetPyData(root, infos["type"])
-        if infos["type"] == ITEM_POU and wx.Platform != '__WXMSW__':
-            self.ProjectTree.SetItemImage(root, LANGUAGES.index(self.Controler.GetPouBodyType(infos["name"])))
+        if infos["type"] == ITEM_POU :
+            self.ProjectTree.SetItemImage(root,self.TreeImageDict[self.Controler.GetPouBodyType(infos["name"])])
+        else:
+            self.ProjectTree.SetItemImage(root,self.TreeImageDict[infos["type"]])      
+            
         if wx.VERSION >= (2, 6, 0):
             item, root_cookie = self.ProjectTree.GetFirstChild(root)
         else:
@@ -1071,7 +1146,7 @@
 
     def OnProjectTreeItemBeginEdit(self, event):
         selected = event.GetItem()
-        if self.ProjectTree.GetPyData(selected) == ITEM_UNEDITABLE:
+        if self.ProjectTree.GetPyData(selected) in ITEMS_UNEDITABLE:
             event.Veto()
         else:
             event.Skip()
@@ -1285,7 +1360,7 @@
         event.Skip()
     
     def OnProjectTreeItemChanging(self, event):
-        if self.ProjectTree.GetPyData(event.GetItem()) != ITEM_UNEDITABLE and self.SelectedItem is None:
+        if self.ProjectTree.GetPyData(event.GetItem()) not in ITEMS_UNEDITABLE and self.SelectedItem is None:
             self.SelectedItem = event.GetItem()
             event.Veto()
         else:
@@ -1431,7 +1506,7 @@
             elif type == ITEM_RESOURCE:
                 self.Bind(wx.EVT_MENU, self.OnRemoveResourceMenu, id=new_id)
             self.PopupMenu(menu)
-        elif type == ITEM_UNEDITABLE:
+        elif type in ITEMS_UNEDITABLE:
             if name == "Data Types":
                 menu = wx.Menu(title='')
                 new_id = wx.NewId()