356 def RefreshPluginTree(self): |
356 def RefreshPluginTree(self): |
357 infos = self.PluginRoot.GetPlugInfos() |
357 infos = self.PluginRoot.GetPlugInfos() |
358 root = self.PluginTree.GetRootItem() |
358 root = self.PluginTree.GetRootItem() |
359 if not root.IsOk(): |
359 if not root.IsOk(): |
360 root = self.PluginTree.AddRoot(infos["name"]) |
360 root = self.PluginTree.AddRoot(infos["name"]) |
|
361 last_selected = self.GetSelectedPluginName() |
361 self.GenerateTreeBranch(root, infos, True) |
362 self.GenerateTreeBranch(root, infos, True) |
362 self.PluginTree.Expand(self.PluginTree.GetRootItem()) |
363 self.PluginTree.Expand(self.PluginTree.GetRootItem()) |
|
364 self.SelectedPluginByName(root,last_selected) |
363 self.RefreshPluginParams() |
365 self.RefreshPluginParams() |
|
366 |
|
367 def SelectedPluginByName(self, root, name): |
|
368 toks = name.split('.',1) |
|
369 item, root_cookie = self.PluginTree.GetFirstChild(root) |
|
370 while item.IsOk(): |
|
371 if self.PluginTree.GetPyData(item) == toks[0]: |
|
372 if len(toks)>1: |
|
373 return self.SelectedPluginByName(item, toks[1]) |
|
374 else: |
|
375 self.PluginTree.SelectItem(item, True) |
|
376 return True |
|
377 item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie) |
|
378 return False |
364 |
379 |
365 def GenerateTreeBranch(self, root, infos, first = False): |
380 def GenerateTreeBranch(self, root, infos, first = False): |
366 to_delete = [] |
381 to_delete = [] |
367 self.PluginTree.SetItemText(root, infos["name"]) |
382 self.PluginTree.SetItemText(root, infos["name"]) |
368 self.PluginTree.SetPyData(root, infos["type"]) |
383 self.PluginTree.SetPyData(root, infos["type"]) |
378 to_delete.append(item) |
393 to_delete.append(item) |
379 item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie) |
394 item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie) |
380 for item in to_delete: |
395 for item in to_delete: |
381 self.PluginTree.Delete(item) |
396 self.PluginTree.Delete(item) |
382 |
397 |
383 def GetSelectedPlugin(self): |
398 def GetSelectedPluginName(self): |
384 selected = self.PluginTree.GetSelection() |
399 selected = self.PluginTree.GetSelection() |
385 if not selected.IsOk(): |
400 if not selected.IsOk(): |
386 return None |
401 return None |
387 if selected == self.PluginTree.GetRootItem(): |
402 if selected == self.PluginTree.GetRootItem(): |
|
403 return "" |
|
404 else: |
|
405 name = self.PluginTree.GetPyData(selected) |
|
406 item = self.PluginTree.GetItemParent(selected) |
|
407 while item.IsOk() and item != self.PluginTree.GetRootItem(): |
|
408 name = "%s.%s"%(self.PluginTree.GetPyData(item), name) |
|
409 item = self.PluginTree.GetItemParent(item) |
|
410 return name |
|
411 |
|
412 def GetSelectedPlugin(self): |
|
413 name = self.GetSelectedPluginName() |
|
414 if not name: |
|
415 return None |
|
416 elif name == "": |
388 return self.PluginRoot |
417 return self.PluginRoot |
389 else: |
418 else: |
390 name = self.PluginTree.GetItemText(selected) |
|
391 item = self.PluginTree.GetItemParent(selected) |
|
392 while item.IsOk() and item != self.PluginTree.GetRootItem(): |
|
393 name = "%s.%s"%(self.PluginTree.GetItemText(item), name) |
|
394 item = self.PluginTree.GetItemParent(item) |
|
395 return self.PluginRoot.GetChildByName(name) |
419 return self.PluginRoot.GetChildByName(name) |
396 |
420 |
397 def OnPluginTreeItemSelected(self, event): |
421 def OnPluginTreeItemSelected(self, event): |
398 wx.CallAfter(self.RefreshPluginParams) |
422 wx.CallAfter(self.RefreshPluginParams) |
399 event.Skip() |
423 event.Skip() |