165 self.selected_SVG = None |
166 self.selected_SVG = None |
166 |
167 |
167 self.Config = wx.ConfigBase.Get() |
168 self.Config = wx.ConfigBase.Get() |
168 self.libdir = self.RecallLibDir() |
169 self.libdir = self.RecallLibDir() |
169 |
170 |
170 self.picker_panel = wx.Panel(self) |
171 self.picker_desc_splitter = wx.SplitterWindow(self, style=wx.SUNKEN_BORDER | wx.SP_3D) |
|
172 |
|
173 self.picker_panel = wx.Panel(self.picker_desc_splitter) |
171 self.picker_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) |
174 self.picker_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) |
172 self.picker_sizer.AddGrowableCol(0) |
175 self.picker_sizer.AddGrowableCol(0) |
173 self.picker_sizer.AddGrowableRow(1) |
176 self.picker_sizer.AddGrowableRow(1) |
174 |
177 |
175 self.widgetpicker = WidgetPicker(self.picker_panel, self.libdir) |
178 self.widgetpicker = WidgetPicker(self.picker_panel, self.libdir) |
184 self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnWidgetSelection, self.widgetpicker) |
187 self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnWidgetSelection, self.widgetpicker) |
185 self.Bind(wx.EVT_BUTTON, self.OnSelectLibDir, self.libbutton) |
188 self.Bind(wx.EVT_BUTTON, self.OnSelectLibDir, self.libbutton) |
186 |
189 |
187 |
190 |
188 |
191 |
189 self.main_panel = wx.Panel(self) |
192 self.main_panel = ScrolledPanel(parent=self, |
|
193 name='MiscellaneousPanel', |
|
194 style=wx.TAB_TRAVERSAL) |
190 |
195 |
191 self.main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=0) |
196 self.main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=0) |
192 self.main_sizer.AddGrowableCol(0) |
197 self.main_sizer.AddGrowableCol(0) |
193 self.main_sizer.AddGrowableRow(2) |
198 self.main_sizer.AddGrowableRow(2) |
194 |
199 |
195 self.preview = wx.Panel(self.main_panel, size=(-1, _preview_height + _preview_margin*2)) |
200 self.preview = wx.Panel(self.main_panel, size=(-1, _preview_height + _preview_margin*2)) |
196 self.desc = wx.TextCtrl(self.main_panel, size=wx.Size(-1, 160), |
201 self.staticmsg = wx.StaticText(self) |
197 style=wx.TE_READONLY | wx.TE_MULTILINE) |
|
198 self.signature_sizer = wx.BoxSizer(wx.VERTICAL) |
202 self.signature_sizer = wx.BoxSizer(wx.VERTICAL) |
199 self.main_sizer.Add(self.preview, flag=wx.GROW) |
203 self.main_sizer.Add(self.preview, flag=wx.GROW) |
|
204 self.main_sizer.Add(self.staticmsg, flag=wx.GROW) |
200 self.main_sizer.Add(self.signature_sizer, flag=wx.GROW) |
205 self.main_sizer.Add(self.signature_sizer, flag=wx.GROW) |
201 self.main_sizer.Add(self.desc, flag=wx.GROW) |
|
202 self.main_sizer.Layout() |
206 self.main_sizer.Layout() |
203 self.main_panel.SetAutoLayout(True) |
207 self.main_panel.SetAutoLayout(True) |
204 self.main_panel.SetSizer(self.main_sizer) |
208 self.main_panel.SetSizer(self.main_sizer) |
205 self.main_sizer.Fit(self.main_panel) |
209 self.main_sizer.Fit(self.main_panel) |
206 self.preview.Bind(wx.EVT_PAINT, self.OnPaint) |
210 self.preview.Bind(wx.EVT_PAINT, self.OnPaint) |
207 self.preview.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) |
211 self.preview.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) |
208 |
212 |
209 self.SplitVertically(self.main_panel, self.picker_panel, 300) |
213 self.desc = wx.TextCtrl(self.picker_desc_splitter, size=wx.Size(-1, 160), |
|
214 style=wx.TE_READONLY | wx.TE_MULTILINE) |
|
215 |
|
216 self.picker_desc_splitter.SplitHorizontally(self.picker_panel, self.desc, 400) |
|
217 self.SplitVertically(self.main_panel, self.picker_desc_splitter, 300) |
210 |
218 |
211 self.msg = _("Drag selected Widget from here to Inkscape") |
219 self.msg = _("Drag selected Widget from here to Inkscape") |
212 self.tempf = None |
220 self.tempf = None |
213 |
221 |
214 self.paths_editors = [] |
222 self.paths_editors = [] |
216 def ResetSignature(self): |
224 def ResetSignature(self): |
217 self.signature_sizer.Clear() |
225 self.signature_sizer.Clear() |
218 for editor in self.paths_editors: |
226 for editor in self.paths_editors: |
219 editor.Destroy() |
227 editor.Destroy() |
220 self.paths_editors = [] |
228 self.paths_editors = [] |
221 self.main_sizer.Layout() |
|
222 |
229 |
223 def AddPathToSignature(self, path): |
230 def AddPathToSignature(self, path): |
224 new_editor = PathEditor(self.main_panel, path) |
231 new_editor = PathEditor(self.main_panel, path) |
225 self.paths_editors.append(new_editor) |
232 self.paths_editors.append(new_editor) |
226 self.signature_sizer.Add(new_editor, flag=wx.GROW) |
233 self.signature_sizer.Add(new_editor, flag=wx.GROW) |
227 self.main_sizer.Layout() |
|
228 |
234 |
229 def RecallLibDir(self): |
235 def RecallLibDir(self): |
230 conf = self.Config.Read(_conf_key) |
236 conf = self.Config.Read(_conf_key) |
231 if len(conf) == 0: |
237 if len(conf) == 0: |
232 return None |
238 return None |
250 # Get Preview panel size |
256 # Get Preview panel size |
251 sz = self.preview.GetClientSize() |
257 sz = self.preview.GetClientSize() |
252 w = self.bmp.GetWidth() |
258 w = self.bmp.GetWidth() |
253 dc.DrawBitmap(self.bmp, (sz.width - w)/2, _preview_margin) |
259 dc.DrawBitmap(self.bmp, (sz.width - w)/2, _preview_margin) |
254 |
260 |
255 self.desc.SetValue(self.msg) |
|
256 |
261 |
257 |
262 |
258 def OnSelectLibDir(self, event): |
263 def OnSelectLibDir(self, event): |
259 defaultpath = self.RecallLibDir() |
264 defaultpath = self.RecallLibDir() |
260 if defaultpath == None: |
265 if defaultpath == None: |
382 self.msg += str(e) |
390 self.msg += str(e) |
383 except XSLTApplyError as e: |
391 except XSLTApplyError as e: |
384 self.msg += "Widget analysis error: " + e.message |
392 self.msg += "Widget analysis error: " + e.message |
385 else: |
393 else: |
386 |
394 |
387 self.ResetSignature() |
|
388 |
395 |
389 print(etree.tostring(signature, pretty_print=True)) |
396 print(etree.tostring(signature, pretty_print=True)) |
390 widgets = signature.getroot() |
397 widgets = signature.getroot() |
391 for defs in widgets.iter("defs"): |
398 for defs in widgets.iter("defs"): |
392 |
399 |
393 # Keep double newlines (to mark paragraphs) |
400 # Keep double newlines (to mark paragraphs) |
394 self.msg += defs.find("type").text + ":\n" + "\n\n".join(map( |
401 self.desc.SetValue(defs.find("type").text + ":\n" + "\n\n".join(map( |
395 lambda s:s.replace("\n"," ").replace(" ", " "), |
402 lambda s:s.replace("\n"," ").replace(" ", " "), |
396 defs.find("longdesc").text.split("\n\n"))) |
403 defs.find("longdesc").text.split("\n\n")))) |
397 for arg in defs.iter("arg"): |
404 for arg in defs.iter("arg"): |
398 print(arg.get("name")) |
405 print(arg.get("name")) |
399 print(arg.get("accepts")) |
406 print(arg.get("accepts")) |
400 for path in defs.iter("path"): |
407 for path in defs.iter("path"): |
401 self.AddPathToSignature(path) |
408 self.AddPathToSignature(path) |