--- a/svghmi/svghmi.py Tue Dec 03 09:44:48 2019 +0100
+++ b/svghmi/svghmi.py Tue Dec 03 09:46:12 2019 +0100
@@ -272,9 +272,57 @@
("runtime_svghmi0.py", open(runtimefile_path, "rb")))
-class SVGHMIEditor(ConfTreeNodeEditor):
- CONFNODEEDITOR_TABS = [
- (_("HMI Tree"), "CreateHMITreeView")]
+class HMITreeSelector(wx.TreeCtrl): + def __init__(self, parent): + global on_hmitree_update + wx.TreeCtrl.__init__(self,parent,style=wx.TR_MULTIPLE)# | wx.TR_HIDE_ROOT) + self.il = il = wx.ImageList(*isz) + self.fldridx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_FOLDER, wx.ART_OTHER, isz)) + self.fldropenidx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_FOLDER_OPEN, wx.ART_OTHER, isz)) + self.fileidx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz)) + on_hmitree_update = self.SVGHMIEditorUpdater() + def _recurseTree(self, current_hmitree_root, current_tc_root): + for c in current_hmitree_root.children: + if hasattr(c, "children"): + display_name = ('{} (class={})'.format(c.name, c.hmiclass)) \ + if c.hmiclass is not None else c.name + tc_child = self.AppendItem(current_tc_root, display_name) + self.SetPyData(tc_child, None) + self.SetItemImage(tc_child, self.fldridx, wx.TreeItemIcon_Normal) + self.SetItemImage(tc_child, self.fldropenidx, wx.TreeItemIcon_Expanded) + self._recurseTree(c,tc_child) + display_name = '{} {}'.format(c.nodetype[4:], c.name) + tc_child = self.AppendItem(current_tc_root, display_name) + self.SetPyData(tc_child, None) + self.SetItemImage(tc_child, self.fileidx, wx.TreeItemIcon_Normal) + self.SetItemImage(tc_child, self.fileidx, wx.TreeItemIcon_Expanded) + root_display_name = _("Please build to see HMI Tree") if hmi_tree_root is None else "HMI" + self.root = self.AddRoot(root_display_name) + self.SetPyData(self.root, None) + self.SetItemImage(self.root, self.fldridx, wx.TreeItemIcon_Normal) + self.SetItemImage(self.root, self.fldropenidx, wx.TreeItemIcon_Expanded) + if hmi_tree_root is not None: + self._recurseTree(hmi_tree_root, self.root) def SVGHMIEditorUpdater(self):
selfref = weakref.ref(self)
@@ -284,55 +332,26 @@
return SVGHMIEditorUpdate
- def CreateHMITreeView(self, parent):
- global hmi_tree_updated
+class HMITreeView(wx.SplitterWindow): - dvtc = dv.DataViewTreeCtrl(parent)
- self.ImageList = il = wx.ImageList(*isz)
- self.fldridx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_FOLDER, wx.ART_OTHER, isz))
- self.fldropenidx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_FOLDER_OPEN, wx.ART_OTHER, isz))
- self.fileidx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
+ def __init__(self, parent): + wx.SplitterWindow.__init__(self, parent, + style=wx.SUNKEN_BORDER | wx.SP_3D) + self.SelectionTree = HMITreeSelector(self) + #self.Staging = wx.Panel(self) + #self.SplitHorizontally(self.SelectionTree, self.Staging, 200) + self.Initialize(self.SelectionTree) - self.HMITreeView = dvtc
- hmi_tree_updated = self.SVGHMIEditorUpdater()
- return self.HMITreeView
- def _recurseTree(self, current_hmitree_root, current_dvtc_root):
- dvtc = self.HMITreeView
- for c in current_hmitree_root.children:
- if hasattr(c, "children"):
- display_name = ('{} (class={})'.format(c.name, c.hmiclass)) \
- if c.hmiclass is not None else c.name
- dvtc_child = dvtc.AppendContainer(
- current_dvtc_root, display_name,
- self.fldridx, self.fldropenidx)
+class SVGHMIEditor(ConfTreeNodeEditor): + CONFNODEEDITOR_TABS = [ + (_("HMI Tree"), "CreateHMITreeView")] - self._recurseTree(c,dvtc_child)
- display_name = '{} {}'.format(c.nodetype[4:], c.name)
- current_dvtc_root, display_name,
- self.fileidx, self.fileidx)
+ def CreateHMITreeView(self, parent): + #self.HMITreeView = HMITreeView(self) + return HMITreeSelector(parent)
- dvtc = self.HMITreeView
- root_display_name = _("Please build to see HMI Tree") if hmi_tree_root is None else "HMI"
- root = dvtc.AppendContainer(dv.NullDataViewItem,
- self.fldridx, self.fldropenidx)
- if hmi_tree_root is not None:
- self._recurseTree(hmi_tree_root, root)
XSD = """<?xml version="1.0" encoding="utf-8" ?>