Skip to content

Commit e062c43

Browse files
committed
fix: New Extension structure and template (nightly)
1 parent 2a86577 commit e062c43

File tree

8 files changed

+36
-19
lines changed

8 files changed

+36
-19
lines changed

extensions/dev.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,27 @@
1212

1313
import typing
1414

15+
from biscuit.extensions import Extension
16+
1517
if typing.TYPE_CHECKING:
16-
from biscuit import ExtensionsAPI
18+
from biscuit.api import ExtensionsAPI
1719

1820
# 4. Create a class named `Extension` as follows:
1921

2022

21-
class DevMode:
23+
class DevMode(Extension):
2224
"""Dev Mode extension for Biscuit (author: @billyeatcookies)
2325
2426
Contributes:
2527
- notifies user that dev mode is enabled
2628
"""
2729

2830
def __init__(self, api: ExtensionsAPI) -> None:
29-
self.api = api
31+
super().__init__(api)
32+
33+
self.api.logger.info(f"This is a sample log!")
34+
35+
def install(self) -> None:
3036
self.api.notifications.info(f"Dev mode is enabled!")
3137

3238

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "biscuit-editor"
3-
version = "2.99.9"
3+
version = "2.99.10"
44
description = "A lightweight, fast, and extensible code editor with a growing community"
55
authors = ["Billy <billydevbusiness@gmail.com>"]
66
license = "MIT"

src/biscuit/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "2.99.9"
1+
__version__ = "2.99.10"
22
__version_info__ = tuple([int(num) for num in __version__.split(".")])
33

44
from .main import *

src/biscuit/api/base.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,8 @@ def register(self, name: str, extension: object) -> None:
6565
"""Register an extension"""
6666

6767
self.base.extensions_manager.register_installed(name, extension)
68-
# extension.install()
68+
69+
def register_extension(self, name: str, extension: object) -> None:
70+
"""Register an extension"""
71+
72+
self.register(name, extension)

src/biscuit/extensions/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
from .extensions import *
1+
from .extension import Extension
2+
from .extensions import ExtensionManager

src/biscuit/extensions/extensions.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import requests
1313

14-
from biscuit.views.extensions.extension import Extension
14+
from biscuit.views.extensions.extension import ExtensionGUI
1515

1616
if typing.TYPE_CHECKING:
1717
from biscuit import App
@@ -54,7 +54,7 @@ def install_extension_from_name(self, name: str) -> bool:
5454
data = self.fetched[name]
5555

5656
t = self.run_fetch_extension(
57-
Extension(self.base.extensions_view.results, name, data)
57+
ExtensionGUI(self.base.extensions_view.results, name, data)
5858
)
5959
t.join()
6060

@@ -136,7 +136,7 @@ def fetch_extensions(self) -> None:
136136
# TODO add further loops for folders
137137
self.fetch_queue.put((name, data))
138138

139-
def run_fetch_extension(self, ext: Extension) -> None:
139+
def run_fetch_extension(self, ext: ExtensionGUI) -> None:
140140
"""Called from the Extension View to fetch an extension."""
141141

142142
if ext.installed:
@@ -148,7 +148,7 @@ def run_fetch_extension(self, ext: Extension) -> None:
148148
t.start()
149149
return t
150150

151-
def fetch_extension(self, ext: Extension) -> None:
151+
def fetch_extension(self, ext: ExtensionGUI) -> None:
152152
"""Fetch an extension from the repository."""
153153

154154
try:
@@ -158,7 +158,7 @@ def fetch_extension(self, ext: Extension) -> None:
158158
except:
159159
ext.set_unavailable()
160160

161-
def save_extension(self, ext: Extension, response: requests.Response) -> None:
161+
def save_extension(self, ext: ExtensionGUI, response: requests.Response) -> None:
162162
"""Save a fetched extension. Saves the extension and loads it."""
163163

164164
with open(ext.file, "w") as fp:
@@ -170,7 +170,7 @@ def save_extension(self, ext: Extension, response: requests.Response) -> None:
170170
self.base.logger.info(f"Fetching extension '{ext.name}' successful.")
171171
self.base.notifications.info(f"Extension '{ext.name}' has been installed!")
172172

173-
def remove_extension(self, ext: Extension) -> None:
173+
def remove_extension(self, ext: ExtensionGUI) -> None:
174174
"""Remove an extension from the system."""
175175

176176
try:
@@ -236,7 +236,7 @@ def load_extensions(self):
236236
extension_module.setup(self.base.api)
237237

238238
self.base.logger.info(f"Extension '{ext}' loaded.")
239-
except ImportError as e:
239+
except Exception as e:
240240
self.base.logger.error(f"Failed to load extension '{ext}': {e}")
241241
self.base.notifications.error(f"Extension '{ext}' failed: see logs.")
242242
if ext in self.installed:
@@ -246,6 +246,12 @@ def register_installed(self, name: str, extension: object) -> None:
246246
"""Register an installed extension."""
247247

248248
self.installed[name] = extension
249+
try:
250+
extension.install()
251+
except Exception as e:
252+
print("no install method !!!!!!!!!!!!")
253+
# most likely the extension does not implement the install method
254+
...
249255

250256
def queue_installed_extensions(self) -> None:
251257
for extension_file in os.listdir(self.base.extensionsdir):

src/biscuit/views/extensions/extension.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from .results import Results
1111

1212

13-
class Extension(Frame):
13+
class ExtensionGUI(Frame):
1414
"""Extension item in the Extensions view.
1515
1616
The Extension class represents an extension item in the Extensions view.

src/biscuit/views/extensions/results.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
from biscuit.common.ui import ScrollableFrame
1212

1313
from ..drawer_item import NavigationDrawerViewItem
14-
from .extension import Extension
14+
from .extension import ExtensionGUI
1515
from .placeholder import ExtensionsPlaceholder
1616

1717
if typing.TYPE_CHECKING:
1818
from biscuit.extensions import ExtensionManager
1919

2020

2121
class ExtensionsList(ScrollableFrame):
22-
items: list[Extension]
22+
items: list[ExtensionGUI]
2323

2424
def __init__(self, master, *args, **kwargs) -> None:
2525
super().__init__(master, *args, **kwargs)
@@ -78,7 +78,7 @@ def refresh(self, *_) -> None:
7878
def gui_refresh_loop(self) -> None:
7979
if not self.fetch_queue.empty():
8080
name, data = self.fetch_queue.get()
81-
ext = Extension(self, name, data)
81+
ext = ExtensionGUI(self, name, data)
8282
self.extension_list.add(ext, fill=tk.X)
8383

8484
self.after(5, self.gui_refresh_loop)
@@ -91,7 +91,7 @@ def clear(self, *_) -> None:
9191

9292
self.fetching.set()
9393

94-
def set_selected(self, extension: Extension) -> None:
94+
def set_selected(self, extension: ExtensionGUI) -> None:
9595
for widget in self.extension_list.items:
9696
if widget == extension:
9797
widget.select()

0 commit comments

Comments
 (0)