From 5a97889e7ffa448c5b2a5c4025653f920c1f174d Mon Sep 17 00:00:00 2001 From: Capocchi L Date: Wed, 25 Nov 2020 15:22:56 +0100 Subject: [PATCH] bug fix for local plugin --- Mixins/Plugable.py | 5 +++-- PluginsGUI.py | 49 ++++++++++++++++++++++++++++++---------------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Mixins/Plugable.py b/Mixins/Plugable.py index 4fd216e2..0f5702de 100644 --- a/Mixins/Plugable.py +++ b/Mixins/Plugable.py @@ -80,7 +80,8 @@ def LoadPlugins(self, fileName:str): for name,m in inspect.getmembers(module, inspect.isfunction): ### import only plug-ins in plug-ins list (dynamic attribute) and only method if name in self.plugins and 'self' in inspect.getargspec(m).args: - setattr(self, name, types.MethodType(m, self, self.__class__)) + #setattr(self, name, types.MethodType(m, self, self.__class__)) + setattr(self, name, m.__get__(self, self.__class__)) else: return module ### restore method which was assigned to None before being pickled @@ -92,7 +93,7 @@ def LoadPlugins(self, fileName:str): if getattr(self, name) is None: ### assign to default class method setattr(self, name, types.MethodType(method, self)) - + return True def main(): diff --git a/PluginsGUI.py b/PluginsGUI.py index fcbd2a99..0929cedc 100644 --- a/PluginsGUI.py +++ b/PluginsGUI.py @@ -62,8 +62,8 @@ def __init__(self, *args, **kw): self.EnableCheckBoxes(True) self.IsChecked = self.IsItemChecked - - CheckListCtrlMixin.__init__(self) + else: + CheckListCtrlMixin.__init__(self) if wx.VERSION_STRING < '4.0': self.SetStringItem = self.SetStringItem @@ -75,7 +75,7 @@ def __init__(self, *args, **kw): self.id = -100000000 self.map = {} - images = [os.path.join(ICON_PATH_16_16,s) for s in ('disable_plugin.png','enable_plugin.png','no_ok.png')] + images = [os.path.join(ICON_PATH_16_16, s) for s in ('disable_plugin.png','enable_plugin.png','no_ok.png')] self.il = wx.ImageList(16, 16) for i in images: @@ -201,25 +201,22 @@ def GetPath(self,item): else: return None + def GetIndex(self, event): + """ Return index from event or currentItem + """ + return event.Index if hasattr(event,'Index') else self.currentItem + def OnEnable(self, event): """ Ebnable the current item. """ - try: - index = event.Index - except: - index = self.currentItem - + index = self.GetIndex(event) self.CheckItem(index, True) self.SetItemImage(index,1) def OnDisable(self, event): """ Disable the current item. """ - try: - index = event.Index - except: - index = self.currentItem - + index = self.GetIndex(event) self.CheckItem(index, False) self.SetItemImage(index,0) @@ -336,7 +333,7 @@ def Populate(self, pluginsList): self.is_populate = True def MyInsertItem(self, root, basename): - """ Insert plug-in in list + """ Insert plug-in in list. """ ### absolute name @@ -489,9 +486,21 @@ def __init__(self, *args, **kwargs): self.Populate(PluginManager.pluginsList) self.is_populate = True - - def OnCheckItem(self, index, flag): - """ Item has been checked + + def OnEnable(self, event): + """ Ebnable the current item. + """ + CheckListCtrl.OnEnable(self, event) + self.DoChekItem(self.GetIndex(event)) + + def OnDisable(self, event): + """ Disable the current item. + """ + CheckListCtrl.OnDisable(self, event) + self.DoChekItem(self.GetIndex(event)) + + def DoChekItem(self, index): + """ """ pluginName = self.GetItemText(index) @@ -523,6 +532,11 @@ def OnCheckItem(self, index, flag): sys.stdout.write(_('WARNING: class can\'t be overwritted')) else: pass + + def OnCheckItem(self, index, flag): + """ Item has been checked. + """ + self.DoChekItem(self, index) #@BuzyCursorNotification def Populate(self, model): @@ -769,6 +783,7 @@ def SetPluginsList(self, Checklist = None): def OnApply(self, event): """ Call OnApply method ig CheckList class """ + self.check_list.OnApply(event) def OnSelectedItem(self, event):