svghmi/ui.py
branchsvghmi
changeset 3231 5243c2a2f7f8
parent 3228 80f96db773bd
child 3234 f2bfb047d0e6
equal deleted inserted replaced
3230:95f07764991f 3231:5243c2a2f7f8
   273                 self.msg = _("Widget library must be writable")
   273                 self.msg = _("Widget library must be writable")
   274 
   274 
   275             self.Refresh()
   275             self.Refresh()
   276         event.Skip()
   276         event.Skip()
   277 
   277 
   278     def OnHMITreeNodeSelection(self, hmitree_node):
   278     def OnHMITreeNodeSelection(self, hmitree_nodes):
   279         self.hmitree_node = hmitree_node
   279         self.hmitree_node = hmitree_nodes[0] if len(hmitree_nodes) else None
   280         self.ValidateWidget()
   280         self.ValidateWidget()
   281         self.Refresh()
   281         self.Refresh()
   282 
   282 
   283     def OnLeftDown(self, evt):
   283     def OnLeftDown(self, evt):
   284         if self.tempf is not None:
   284         if self.tempf is not None:
   339 
   339 
   340     def __init__(self, parent, register_for_HMI_tree_updates):
   340     def __init__(self, parent, register_for_HMI_tree_updates):
   341         wx.SplitterWindow.__init__(self, parent,
   341         wx.SplitterWindow.__init__(self, parent,
   342                                    style=wx.SUNKEN_BORDER | wx.SP_3D)
   342                                    style=wx.SUNKEN_BORDER | wx.SP_3D)
   343 
   343 
       
   344         self.ordered_items = []
       
   345 
   344         self.SelectionTree = HMITreeSelector(self)
   346         self.SelectionTree = HMITreeSelector(self)
   345         self.Staging = WidgetLibBrowser(self)
   347         self.Staging = WidgetLibBrowser(self)
   346         self.SplitVertically(self.SelectionTree, self.Staging, 300)
   348         self.SplitVertically(self.SelectionTree, self.Staging, 300)
   347         register_for_HMI_tree_updates(weakref.ref(self))
   349         register_for_HMI_tree_updates(weakref.ref(self))
   348         self.Bind(wx.EVT_TREE_SEL_CHANGED,
   350         self.Bind(wx.EVT_TREE_SEL_CHANGED,
   349             self.OnHMITreeNodeSelection, self.SelectionTree)
   351             self.OnHMITreeNodeSelection, self.SelectionTree)
   350 
   352 
   351     def OnHMITreeNodeSelection(self, event):
   353     def OnHMITreeNodeSelection(self, event):
   352         item_pydata = self.SelectionTree.GetPyData(event.GetItem())
   354         items = self.SelectionTree.GetSelections()
   353         self.Staging.OnHMITreeNodeSelection(item_pydata)
   355         items_pydata = [self.SelectionTree.GetPyData(item) for item in items]
       
   356 
       
   357         # append new items to ordered item list
       
   358         for item_pydata in items_pydata:
       
   359             if item_pydata not in self.ordered_items:
       
   360                 self.ordered_items.append(item_pydata)
       
   361 
       
   362         # filter out vanished items
       
   363         self.ordered_items = [
       
   364             item_pydata 
       
   365             for item_pydata in self.ordered_items 
       
   366             if item_pydata in items_pydata]
       
   367 
       
   368         self.Staging.OnHMITreeNodeSelection(items_pydata)
   354 
   369 
   355     def HMITreeUpdate(self, hmi_tree_root):
   370     def HMITreeUpdate(self, hmi_tree_root):
   356             self.SelectionTree.MakeTree(hmi_tree_root)
   371             self.SelectionTree.MakeTree(hmi_tree_root)
   357 
   372