diff --git a/apps/ttkode/ttkode/__init__.py b/apps/ttkode/ttkode/__init__.py index a55086e0..2ae1d398 100755 --- a/apps/ttkode/ttkode/__init__.py +++ b/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 \ No newline at end of file diff --git a/apps/ttkode/ttkode/helper.py b/apps/ttkode/ttkode/helper.py index b3ea4306..6c2a044e 100644 --- a/apps/ttkode/ttkode/helper.py +++ b/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() diff --git a/apps/ttkode/ttkode/plugin.py b/apps/ttkode/ttkode/plugin.py index 1687b8a1..2efb99d7 100644 --- a/apps/ttkode/ttkode/plugin.py +++ b/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) diff --git a/apps/ttkode/ttkode/plugins/_010_findplugin.py b/apps/ttkode/ttkode/plugins/_010_findplugin.py index ef99326b..10e4364e 100644 --- a/apps/ttkode/ttkode/plugins/_010_findplugin.py +++ b/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) + ) + ] + ) diff --git a/apps/ttkode/ttkode/plugins/_020_debugplugin.py b/apps/ttkode/ttkode/plugins/_020_debugplugin.py index 49a1c510..63073cf8 100644 --- a/apps/ttkode/ttkode/plugins/_020_debugplugin.py +++ b/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) + ) + ] +) \ No newline at end of file