controls/LibraryPanel.py
changeset 1768 691083b5682a
parent 1767 c74815729afd
child 1782 5b6ad7a7fd9d
equal deleted inserted replaced
1767:c74815729afd 1768:691083b5682a
    81         main_sizer.AddWindow(splitter_window, flag=wx.GROW)
    81         main_sizer.AddWindow(splitter_window, flag=wx.GROW)
    82 
    82 
    83         # Add TreeCtrl for functions and function blocks library in splitter
    83         # Add TreeCtrl for functions and function blocks library in splitter
    84         # window
    84         # window
    85         self.Tree = wx.TreeCtrl(splitter_window,
    85         self.Tree = wx.TreeCtrl(splitter_window,
    86               size=wx.Size(0, 0),
    86                                 size=wx.Size(0, 0),
    87               style=wx.TR_HAS_BUTTONS |
    87                                 style=(wx.TR_HAS_BUTTONS |
    88                     wx.TR_SINGLE |
    88                                        wx.TR_SINGLE |
    89                     wx.SUNKEN_BORDER |
    89                                        wx.SUNKEN_BORDER |
    90                     wx.TR_HIDE_ROOT |
    90                                        wx.TR_HIDE_ROOT |
    91                     wx.TR_LINES_AT_ROOT)
    91                                        wx.TR_LINES_AT_ROOT))
    92         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnTreeItemSelected, self.Tree)
    92         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnTreeItemSelected, self.Tree)
    93         self.Tree.Bind(wx.EVT_CHAR, self.OnKeyDown)
    93         self.Tree.Bind(wx.EVT_CHAR, self.OnKeyDown)
    94         # If drag'n drop is enabled, bind event generated when a drag begins on
    94         # If drag'n drop is enabled, bind event generated when a drag begins on
    95         # tree to start a drag'n drop
    95         # tree to start a drag'n drop
    96         if enable_drag:
    96         if enable_drag:
    97             self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnTreeBeginDrag, self.Tree)
    97             self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnTreeBeginDrag, self.Tree)
    98 
    98 
    99         # Add TextCtrl for function and function block informations
    99         # Add TextCtrl for function and function block informations
   100         self.Comment = wx.TextCtrl(splitter_window, size=wx.Size(0, 80),
   100         self.Comment = wx.TextCtrl(splitter_window, size=wx.Size(0, 80),
   101               style=wx.TE_READONLY | wx.TE_MULTILINE)
   101                                    style=wx.TE_READONLY | wx.TE_MULTILINE)
   102 
   102 
   103         splitter_window.SplitHorizontally(self.Tree, self.Comment, -80)
   103         splitter_window.SplitHorizontally(self.Tree, self.Comment, -80)
   104 
   104 
   105         self.SetSizer(main_sizer)
   105         self.SetSizer(main_sizer)
   106 
   106 
   174                                    selected_item != self.Tree.GetRootItem())
   174                                    selected_item != self.Tree.GetRootItem())
   175                                else None)
   175                                else None)
   176             # Don't save selected item if it is a category
   176             # Don't save selected item if it is a category
   177             selected_infos = ((self.Tree.GetItemText(selected_item),
   177             selected_infos = ((self.Tree.GetItemText(selected_item),
   178                                selected_pydata["inputs"])
   178                                selected_pydata["inputs"])
   179                              if (selected_pydata is not None and
   179                               if (selected_pydata is not None and
   180                                  selected_pydata["type"] == BLOCK)
   180                                   selected_pydata["type"] == BLOCK)
   181                              else (None, None))
   181                               else (None, None))
   182 
   182 
   183             # Get TreeCtrl root item (hidden)
   183             # Get TreeCtrl root item (hidden)
   184             root = self.Tree.GetRootItem()
   184             root = self.Tree.GetRootItem()
   185             if not root.IsOk():
   185             if not root.IsOk():
   186                 # Create root if not present
   186                 # Create root if not present
   244                         "block_type": blocktype["type"],
   244                         "block_type": blocktype["type"],
   245                         "inputs":     tuple([type
   245                         "inputs":     tuple([type
   246                                              for name, type, modifier
   246                                              for name, type, modifier
   247                                              in blocktype["inputs"]]),
   247                                              in blocktype["inputs"]]),
   248                         "extension":  (len(blocktype["inputs"])
   248                         "extension":  (len(blocktype["inputs"])
   249                                       if blocktype["extensible"] else None),
   249                                        if blocktype["extensible"] else None),
   250                         "comment":    _(comment) + blocktype.get("usage", "")
   250                         "comment":    _(comment) + blocktype.get("usage", "")
   251                     }
   251                     }
   252                     self.Tree.SetPyData(blocktype_item, block_data)
   252                     self.Tree.SetPyData(blocktype_item, block_data)
   253 
   253 
   254                     # Select block tree item in tree if it corresponds to
   254                     # Select block tree item in tree if it corresponds to