editors/Viewer.py
changeset 1244 336d515096b1
parent 1236 a5d1d2a2f366
child 1245 d34ba528346b
equal deleted inserted replaced
1243:e77c95c4c7fc 1244:336d515096b1
  2197         return width, height
  2197         return width, height
  2198     
  2198     
  2199     def AddNewBlock(self, bbox):
  2199     def AddNewBlock(self, bbox):
  2200         dialog = FBDBlockDialog(self.ParentWindow, self.Controler, self.TagName)
  2200         dialog = FBDBlockDialog(self.ParentWindow, self.Controler, self.TagName)
  2201         dialog.SetPreviewFont(self.GetFont())
  2201         dialog.SetPreviewFont(self.GetFont())
  2202         dialog.SetMinBlockSize((bbox.width, bbox.height))
  2202         dialog.SetMinElementSize((bbox.width, bbox.height))
  2203         if dialog.ShowModal() == wx.ID_OK:
  2203         if dialog.ShowModal() == wx.ID_OK:
  2204             id = self.GetNewId()
  2204             id = self.GetNewId()
  2205             values = dialog.GetValues()
  2205             values = dialog.GetValues()
  2206             values.setdefault("name", "")
  2206             values.setdefault("name", "")
  2207             block = FBD_Block(self, values["type"], values["name"], id, 
  2207             block = FBD_Block(self, values["type"], values["name"], id, 
  2220             self.ParentWindow.RefreshPouInstanceVariablesPanel()
  2220             self.ParentWindow.RefreshPouInstanceVariablesPanel()
  2221             block.Refresh()
  2221             block.Refresh()
  2222         dialog.Destroy()
  2222         dialog.Destroy()
  2223     
  2223     
  2224     def AddNewVariable(self, bbox):
  2224     def AddNewVariable(self, bbox):
  2225         words = self.TagName.split("::")
  2225         dialog = FBDVariableDialog(self.ParentWindow, self.Controler, self.TagName)
  2226         if words[0] == "T":
       
  2227             dialog = FBDVariableDialog(self.ParentWindow, self.Controler, words[2])
       
  2228         else:
       
  2229             dialog = FBDVariableDialog(self.ParentWindow, self.Controler)
       
  2230         dialog.SetPreviewFont(self.GetFont())
  2226         dialog.SetPreviewFont(self.GetFont())
  2231         dialog.SetMinVariableSize((bbox.width, bbox.height))
  2227         dialog.SetMinElementSize((bbox.width, bbox.height))
  2232         varlist = []
       
  2233         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)
       
  2234         if vars:
       
  2235             for var in vars:
       
  2236                 if var["Edit"]:
       
  2237                     varlist.append((var["Name"], var["Class"], var["Type"]))
       
  2238         returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName, self.Debug)
       
  2239         if returntype:
       
  2240             varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype))
       
  2241         dialog.SetVariables(varlist)
       
  2242         if dialog.ShowModal() == wx.ID_OK:
  2228         if dialog.ShowModal() == wx.ID_OK:
  2243             id = self.GetNewId()
  2229             id = self.GetNewId()
  2244             values = dialog.GetValues()
  2230             values = dialog.GetValues()
  2245             variable = FBD_Variable(self, values["type"], values["name"], values["value_type"], id)
  2231             variable = FBD_Variable(self, values["class"], values["expression"], values["vr_type"], id)
  2246             variable.SetPosition(bbox.x, bbox.y)
  2232             variable.SetPosition(bbox.x, bbox.y)
  2247             variable.SetSize(*self.GetScaledSize(values["width"], values["height"]))
  2233             variable.SetSize(*self.GetScaledSize(values["width"], values["height"]))
  2248             self.AddBlock(variable)
  2234             self.AddBlock(variable)
  2249             self.Controler.AddEditedElementVariable(self.TagName, id, values["type"])
  2235             self.Controler.AddEditedElementVariable(self.TagName, id, values["class"])
  2250             self.RefreshVariableModel(variable)
  2236             self.RefreshVariableModel(variable)
  2251             self.RefreshBuffer()
  2237             self.RefreshBuffer()
  2252             self.RefreshScrollBars()
  2238             self.RefreshScrollBars()
  2253             self.RefreshVisibleElements()
  2239             self.RefreshVisibleElements()
  2254             variable.Refresh()
  2240             variable.Refresh()
  2498 #-------------------------------------------------------------------------------
  2484 #-------------------------------------------------------------------------------
  2499 
  2485 
  2500     def EditBlockContent(self, block):
  2486     def EditBlockContent(self, block):
  2501         dialog = FBDBlockDialog(self.ParentWindow, self.Controler, self.TagName)
  2487         dialog = FBDBlockDialog(self.ParentWindow, self.Controler, self.TagName)
  2502         dialog.SetPreviewFont(self.GetFont())
  2488         dialog.SetPreviewFont(self.GetFont())
  2503         dialog.SetMinBlockSize(block.GetSize())
  2489         dialog.SetMinElementSize(block.GetSize())
  2504         old_values = {"name" : block.GetName(), 
  2490         old_values = {"name" : block.GetName(), 
  2505                       "type" : block.GetType(), 
  2491                       "type" : block.GetType(), 
  2506                       "extension" : block.GetExtension(), 
  2492                       "extension" : block.GetExtension(), 
  2507                       "inputs" : block.GetInputTypes(), 
  2493                       "inputs" : block.GetInputTypes(), 
  2508                       "executionControl" : block.GetExecutionControl(), 
  2494                       "executionControl" : block.GetExecutionControl(), 
  2530             self.RefreshVariablePanel()
  2516             self.RefreshVariablePanel()
  2531             self.ParentWindow.RefreshPouInstanceVariablesPanel()
  2517             self.ParentWindow.RefreshPouInstanceVariablesPanel()
  2532         dialog.Destroy()
  2518         dialog.Destroy()
  2533 
  2519 
  2534     def EditVariableContent(self, variable):
  2520     def EditVariableContent(self, variable):
  2535         words = self.TagName.split("::")
  2521         dialog = FBDVariableDialog(self.ParentWindow, self.Controler, self.TagName)
  2536         if words[0] == "T":
       
  2537             dialog = FBDVariableDialog(self.ParentWindow, self.Controler, words[2])
       
  2538         else:
       
  2539             dialog = FBDVariableDialog(self.ParentWindow, self.Controler)
       
  2540         dialog.SetPreviewFont(self.GetFont())
  2522         dialog.SetPreviewFont(self.GetFont())
  2541         dialog.SetMinVariableSize(variable.GetSize())
  2523         dialog.SetMinElementSize(variable.GetSize())
  2542         varlist = []
  2524         old_values = {"expression" : variable.GetName(), "class" : variable.GetType(), 
  2543         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)
  2525                       "executionOrder" : variable.GetExecutionOrder()}
  2544         if vars:
       
  2545             for var in vars:
       
  2546                 if var["Edit"]:
       
  2547                     varlist.append((var["Name"], var["Class"], var["Type"]))
       
  2548         returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName, self.Debug)
       
  2549         if returntype:
       
  2550             varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype))
       
  2551         dialog.SetVariables(varlist)
       
  2552         old_values = {"name" : variable.GetName(), "type" : variable.GetType(), 
       
  2553             "executionOrder" : variable.GetExecutionOrder()}
       
  2554         dialog.SetValues(old_values)
  2526         dialog.SetValues(old_values)
  2555         if dialog.ShowModal() == wx.ID_OK:
  2527         if dialog.ShowModal() == wx.ID_OK:
  2556             new_values = dialog.GetValues()
  2528             new_values = dialog.GetValues()
  2557             rect = variable.GetRedrawRect(1, 1)
  2529             rect = variable.GetRedrawRect(1, 1)
  2558             variable.SetName(new_values["name"])
  2530             variable.SetName(new_values["expression"])
  2559             variable.SetType(new_values["type"], new_values["value_type"])
  2531             variable.SetType(new_values["class"], new_values["var_type"])
  2560             variable.SetSize(*self.GetScaledSize(new_values["width"], new_values["height"]))
  2532             variable.SetSize(*self.GetScaledSize(new_values["width"], new_values["height"]))
  2561             variable.SetExecutionOrder(new_values["executionOrder"])
  2533             variable.SetExecutionOrder(new_values["executionOrder"])
  2562             rect = rect.Union(variable.GetRedrawRect())
  2534             rect = rect.Union(variable.GetRedrawRect())
  2563             if old_values["type"] != new_values["type"]:
  2535             if old_values["class"] != new_values["class"]:
  2564                 id = variable.GetId()
  2536                 id = variable.GetId()
  2565                 self.Controler.RemoveEditedElementInstance(self.TagName, id)
  2537                 self.Controler.RemoveEditedElementInstance(self.TagName, id)
  2566                 self.Controler.AddEditedElementVariable(self.TagName, id, new_values["type"])
  2538                 self.Controler.AddEditedElementVariable(self.TagName, id, new_values["class"])
  2567             self.RefreshVariableModel(variable)
  2539             self.RefreshVariableModel(variable)
  2568             self.RefreshBuffer()
  2540             self.RefreshBuffer()
  2569             if old_values["executionOrder"] != new_values["executionOrder"]:
  2541             if old_values["executionOrder"] != new_values["executionOrder"]:
  2570                 self.RefreshView(selection=({variable.GetId(): True}, {}))
  2542                 self.RefreshView(selection=({variable.GetId(): True}, {}))
  2571             else:
  2543             else: