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 |