svghmi/ui.py
branchsvghmi
changeset 3243 92cc21f88bf8
parent 3241 fe945f1f48b7
child 3244 1f365fa5d878
equal deleted inserted replaced
3242:f037e901a17c 3243:92cc21f88bf8
   124             self._recurseTree(lib_dir, self.root, [])
   124             self._recurseTree(lib_dir, self.root, [])
   125             self.Expand(self.root)
   125             self.Expand(self.root)
   126 
   126 
   127         self.Thaw()
   127         self.Thaw()
   128 
   128 
       
   129 class PathEditor(wx.Panel):
       
   130     def __init__(self, parent, path):
       
   131 
       
   132         wx.Panel.__init__(self, parent)
       
   133         label = path.get("name") + ": " + path.text + "(" + path.get("accepts") + ")"
       
   134         self.desc = wx.StaticText(self, label=label)
       
   135         self.focus_sbmp = wx.StaticBitmap(self, -1, wx.ArtProvider.GetBitmap(wx.ART_GO_FORWARD, wx.ART_TOOLBAR, (32,32)))
       
   136         self.valid_bmp = wx.ArtProvider.GetBitmap(wx.ART_TICK_MARK, wx.ART_TOOLBAR, (32,32))
       
   137         self.invalid_bmp = wx.ArtProvider.GetBitmap(wx.ART_CROSS_MARK, wx.ART_TOOLBAR, (32,32))
       
   138         self.validity_sbmp = wx.StaticBitmap(self, -1, self.invalid_bmp)
       
   139         self.edit = wx.TextCtrl(self)
       
   140         self.edit_sizer = wx.FlexGridSizer(cols=3, hgap=0, rows=1, vgap=0)
       
   141         self.edit_sizer.AddGrowableCol(1)
       
   142         self.edit_sizer.AddGrowableRow(0)
       
   143         self.edit_sizer.Add(self.focus_sbmp, flag=wx.GROW)
       
   144         self.edit_sizer.Add(self.edit, flag=wx.GROW)
       
   145         self.edit_sizer.Add(self.validity_sbmp, flag=wx.GROW)
       
   146         self.main_sizer = wx.BoxSizer(wx.VERTICAL)
       
   147         self.main_sizer.Add(self.desc, flag=wx.GROW)
       
   148         self.main_sizer.Add(self.edit_sizer, flag=wx.GROW)
       
   149         self.SetSizer(self.main_sizer)
       
   150         self.main_sizer.Fit(self)
       
   151 
   129 _conf_key = "SVGHMIWidgetLib"
   152 _conf_key = "SVGHMIWidgetLib"
   130 _preview_height = 200
   153 _preview_height = 200
   131 _preview_margin = 5
   154 _preview_margin = 5
   132 class WidgetLibBrowser(wx.Panel):
   155 class WidgetLibBrowser(wx.SplitterWindow):
   133     def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
   156     def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
   134                  size=wx.DefaultSize):
   157                  size=wx.DefaultSize):
   135 
   158 
   136         wx.Panel.__init__(self, parent, id, pos, size)     
   159         wx.SplitterWindow.__init__(self, parent,
       
   160                                    style=wx.SUNKEN_BORDER | wx.SP_3D)
   137 
   161 
   138         self.bmp = None
   162         self.bmp = None
   139         self.msg = None
   163         self.msg = None
   140         self.hmitree_node = None
   164         self.hmitree_node = None
   141         self.selected_SVG = None
   165         self.selected_SVG = None
   142 
   166 
   143         self.Config = wx.ConfigBase.Get()
   167         self.Config = wx.ConfigBase.Get()
   144         self.libdir = self.RecallLibDir()
   168         self.libdir = self.RecallLibDir()
   145 
   169 
   146         self.main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=5, vgap=0)
   170         self.picker_panel = wx.Panel(self)
       
   171         self.picker_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
       
   172         self.picker_sizer.AddGrowableCol(0)
       
   173         self.picker_sizer.AddGrowableRow(1)
       
   174 
       
   175         self.widgetpicker = WidgetPicker(self.picker_panel, self.libdir)
       
   176         self.libbutton = wx.Button(self.picker_panel, -1, _("Select SVG widget library"))
       
   177 
       
   178         self.picker_sizer.Add(self.libbutton, flag=wx.GROW)
       
   179         self.picker_sizer.Add(self.widgetpicker, flag=wx.GROW)
       
   180         self.picker_sizer.Layout()
       
   181         self.picker_panel.SetAutoLayout(True)
       
   182         self.picker_panel.SetSizer(self.picker_sizer)
       
   183 
       
   184         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnWidgetSelection, self.widgetpicker)
       
   185         self.Bind(wx.EVT_BUTTON, self.OnSelectLibDir, self.libbutton)
       
   186 
       
   187 
       
   188 
       
   189         self.main_panel = wx.Panel(self)
       
   190 
       
   191         self.main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=0)
   147         self.main_sizer.AddGrowableCol(0)
   192         self.main_sizer.AddGrowableCol(0)
   148         self.main_sizer.AddGrowableRow(1)
   193         self.main_sizer.AddGrowableRow(2)
   149         self.libbutton = wx.Button(self, -1, _("Select SVG widget library"))
   194 
   150         self.widgetpicker = WidgetPicker(self, self.libdir)
   195         self.preview = wx.Panel(self.main_panel, size=(-1, _preview_height + _preview_margin*2))
   151         self.preview = wx.Panel(self, size=(-1, _preview_height + _preview_margin*2))
   196         self.desc = wx.TextCtrl(self.main_panel, size=wx.Size(-1, 160),
   152         self.desc = wx.TextCtrl(self, size=wx.Size(-1, 160),
       
   153                                    style=wx.TE_READONLY | wx.TE_MULTILINE)
   197                                    style=wx.TE_READONLY | wx.TE_MULTILINE)
   154         self.signature_sizer = wx.BoxSizer(wx.VERTICAL)
   198         self.signature_sizer = wx.BoxSizer(wx.VERTICAL)
   155         self.main_sizer.Add(self.libbutton, flag=wx.GROW)
       
   156         self.main_sizer.Add(self.widgetpicker, flag=wx.GROW)
       
   157         self.main_sizer.Add(self.preview, flag=wx.GROW)
   199         self.main_sizer.Add(self.preview, flag=wx.GROW)
       
   200         self.main_sizer.Add(self.signature_sizer, flag=wx.GROW)
   158         self.main_sizer.Add(self.desc, flag=wx.GROW)
   201         self.main_sizer.Add(self.desc, flag=wx.GROW)
   159         self.main_sizer.Add(self.signature_sizer, flag=wx.GROW)
       
   160         self.main_sizer.Layout()
   202         self.main_sizer.Layout()
   161         self.SetAutoLayout(True)
   203         self.main_panel.SetAutoLayout(True)
   162         self.SetSizer(self.main_sizer)
   204         self.main_panel.SetSizer(self.main_sizer)
   163         self.main_sizer.Fit(self)
   205         self.main_sizer.Fit(self.main_panel)
   164         self.Bind(wx.EVT_BUTTON, self.OnSelectLibDir, self.libbutton)
       
   165         self.preview.Bind(wx.EVT_PAINT, self.OnPaint)
   206         self.preview.Bind(wx.EVT_PAINT, self.OnPaint)
   166         self.preview.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
   207         self.preview.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
   167 
   208 
   168         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnWidgetSelection, self.widgetpicker)
   209         self.SplitVertically(self.picker_panel, self.main_panel, 300)
   169 
   210 
   170         self.msg = _("Drag selected Widget from here to Inkscape")
   211         self.msg = _("Drag selected Widget from here to Inkscape")
   171         self.tempf = None 
   212         self.tempf = None 
   172 
   213 
   173         self.paths_editors = []
   214         self.paths_editors = []
   178             editor.Destroy()
   219             editor.Destroy()
   179         self.paths_editors = []
   220         self.paths_editors = []
   180         self.main_sizer.Layout()
   221         self.main_sizer.Layout()
   181 
   222 
   182     def AddPathToSignature(self, path):
   223     def AddPathToSignature(self, path):
   183         new_editor = wx.TextCtrl(self, size=wx.Size(-1, -1))
   224         new_editor = PathEditor(self.main_panel, path)
   184         self.paths_editors.append(new_editor)
   225         self.paths_editors.append(new_editor)
   185         self.signature_sizer.Add(new_editor, flag=wx.GROW)
   226         self.signature_sizer.Add(new_editor, flag=wx.GROW)
   186         self.main_sizer.Layout()
   227         self.main_sizer.Layout()
   187 
   228 
   188     def RecallLibDir(self):
   229     def RecallLibDir(self):