Browse Source

refactor(plugin): reorked the plugin standard implementation

pull/458/head
Parodi, Eugenio 🌶 6 months ago
parent
commit
70cfcc28b3
  1. 2
      apps/ttkode/ttkode/__init__.py
  2. 13
      apps/ttkode/ttkode/helper.py
  3. 45
      apps/ttkode/ttkode/plugin.py
  4. 13
      apps/ttkode/ttkode/plugins/_010_findplugin.py
  5. 14
      apps/ttkode/ttkode/plugins/_020_debugplugin.py

2
apps/ttkode/ttkode/__init__.py

@ -24,6 +24,6 @@
__version__:str = '0.5.0-a.2'
from .plugin import TTkodePlugin, TTkodePluginActivity
from .plugin import TTkodePlugin, TTkodePluginWidget, TTkodePluginWidgetActivity, TTkodePluginWidgetPanel
from .proxy import TTKodeViewerProxy, ttkodeProxy
from .helper import TTkodeHelper

13
apps/ttkode/ttkode/helper.py

@ -26,7 +26,7 @@ import os
import importlib, pkgutil
import TermTk as ttk
from .plugin import TTkodePlugin, TTkodePluginActivity
from .plugin import TTkodePlugin, TTkodePluginWidgetActivity, TTkodePluginWidgetPanel
from .proxy import ttkodeProxy
class TTkodeHelper():
@ -64,11 +64,12 @@ class TTkodeHelper():
@staticmethod
def _runPlugins():
for mod in TTkodePlugin.instances:
if isinstance(mod, TTkodePluginActivity):
ttkodeProxy.ttkode()._activityBar.addActivity(
name=mod.activityName,
icon=mod.icon,
widget=mod.widget)
for _pluginWidget in mod.widgets:
if isinstance(_pluginWidget, TTkodePluginWidgetActivity):
ttkodeProxy.ttkode()._activityBar.addActivity(
name=_pluginWidget.activityName,
icon=_pluginWidget.icon,
widget=_pluginWidget.widget)
if mod.apply is not None:
mod.apply()

45
apps/ttkode/ttkode/plugin.py

@ -20,36 +20,43 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
__all__ = ['TTkodePlugin', 'TTkodePluginActivity']
from __future__ import annotations
__all__ = [
'TTkodePlugin',
'TTkodePluginWidget', 'TTkodePluginWidgetActivity', 'TTkodePluginWidgetPanel']
from dataclasses import dataclass
from typing import Callable, List, Optional, Union
from enum import Enum
from enum import IntEnum
import TermTk as ttk
@dataclass
class TTkodePluginWidget():
widget:ttk.TTkWidget
@dataclass
class TTkodePluginWidgetActivity(TTkodePluginWidget):
activityName: str
icon:ttk.TTkString
@dataclass
class TTkodePluginWidgetPanel(TTkodePluginWidget):
panelName: str
class TTkodePlugin():
instances: List = []
instances: List[TTkodePlugin] = []
def __init__(
self,
name : str,
init : Optional[Callable[[],None]] = None,
apply : Optional[Callable[[],None]] = None,
run : Optional[Callable[[],None]] = None ):
name : str,
init : Optional[Callable[[],None]] = None,
apply : Optional[Callable[[],None]] = None,
run : Optional[Callable[[],None]] = None,
widgets : List[TTkodePluginWidget] = []):
self.widgets = widgets
self.name = name
self.init = init
self.apply = apply
self.run = run
self.instances.append(self)
class TTkodePluginActivity(TTkodePlugin):
def __init__(
self,
activityName: str,
widget: ttk.TTkWidget,
icon:ttk.TTkString,
**kwargs):
self.activityName = activityName
self.widget = widget
self.icon = icon
super().__init__(**kwargs)

13
apps/ttkode/ttkode/plugins/_010_findplugin.py

@ -37,9 +37,14 @@ _icon:str = (
"╔═╗\n"
"🔎╝")
ttkode.TTkodePluginActivity(
ttkode.TTkodePlugin(
name="Find Plugin",
activityName='Search',
widget=FindWidget(),
icon=ttk.TTkString(_icon)
widgets = [
ttkode.TTkodePluginWidgetActivity(
activityName='Search',
widget=FindWidget(),
icon=ttk.TTkString(_icon)
)
]
)

14
apps/ttkode/ttkode/plugins/_020_debugplugin.py

@ -31,9 +31,13 @@ _icon:str = (
" 🭑🬽\n"
"🪲🭘")
ttkode.TTkodePluginActivity(
ttkode.TTkodePlugin(
name="Debug Plugin",
activityName='Debug',
widget=ttk.TTkTestWidget(),
icon=ttk.TTkString(_icon)
)
widgets = [
ttkode.TTkodePluginWidgetActivity(
activityName='Debug',
widget=ttk.TTkTestWidget(),
icon=ttk.TTkString(_icon)
)
]
)
Loading…
Cancel
Save