mirror of
https://github.com/bombsquad-community/plugin-manager.git
synced 2025-11-07 17:36:00 +00:00
Loop and backward compability fix
This commit is contained in:
parent
69f464548c
commit
c92737eb8c
1 changed files with 36 additions and 18 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
# ba_meta require api 8
|
# ba_meta require api 8
|
||||||
from babase._meta import EXPORT_CLASS_NAME_SHORTCUTS
|
from babase._meta import EXPORT_CLASS_NAME_SHORTCUTS
|
||||||
|
from baenv import TARGET_BALLISTICA_BUILD as build_number
|
||||||
import babase
|
import babase
|
||||||
import _babase
|
import _babase
|
||||||
import bauiv1 as bui
|
import bauiv1 as bui
|
||||||
|
|
@ -32,7 +33,7 @@ _env = _babase.env()
|
||||||
_uiscale = bui.app.ui_v1.uiscale
|
_uiscale = bui.app.ui_v1.uiscale
|
||||||
|
|
||||||
|
|
||||||
PLUGIN_MANAGER_VERSION = "1.0.2"
|
PLUGIN_MANAGER_VERSION = "1.0.3"
|
||||||
REPOSITORY_URL = "https://github.com/bombsquad-community/plugin-manager"
|
REPOSITORY_URL = "https://github.com/bombsquad-community/plugin-manager"
|
||||||
# Current tag can be changed to "staging" or any other branch in
|
# Current tag can be changed to "staging" or any other branch in
|
||||||
# plugin manager repo for testing purpose.
|
# plugin manager repo for testing purpose.
|
||||||
|
|
@ -43,7 +44,24 @@ HEADERS = {
|
||||||
}
|
}
|
||||||
PLUGIN_DIRECTORY = _env["python_directory_user"]
|
PLUGIN_DIRECTORY = _env["python_directory_user"]
|
||||||
|
|
||||||
|
def get_event_loop():
|
||||||
|
# loop = asyncio.ProactorEventLoop() if sys.platform == 'win32' else asyncio.new_event_loop()
|
||||||
|
return ba._asyncio._asyncio_event_loop
|
||||||
|
# try:
|
||||||
|
# running = asyncio.get_running_loop()
|
||||||
|
# except RuntimeError:
|
||||||
|
# return loop
|
||||||
|
# if running.is_closed():
|
||||||
|
# return loop
|
||||||
|
# else:
|
||||||
|
# if sys.platform in ('linux', 'darwin'):
|
||||||
|
# return running
|
||||||
|
# if sys.platform == 'win32':
|
||||||
|
# if isinstance(running, asyncio.ProactorEventLoop):
|
||||||
|
# return running
|
||||||
|
# else:
|
||||||
|
# return loop
|
||||||
|
|
||||||
def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.")
|
def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.")
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -100,7 +118,7 @@ def send_network_request(request):
|
||||||
|
|
||||||
|
|
||||||
async def async_send_network_request(request):
|
async def async_send_network_request(request):
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
response = await loop.run_in_executor(None, send_network_request, request)
|
response = await loop.run_in_executor(None, send_network_request, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
@ -129,7 +147,7 @@ def stream_network_response_to_file(request, file, md5sum=None, retries=3):
|
||||||
|
|
||||||
|
|
||||||
async def async_stream_network_response_to_file(request, file, md5sum=None, retries=3):
|
async def async_stream_network_response_to_file(request, file, md5sum=None, retries=3):
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
content = await loop.run_in_executor(
|
content = await loop.run_in_executor(
|
||||||
None,
|
None,
|
||||||
stream_network_response_to_file,
|
stream_network_response_to_file,
|
||||||
|
|
@ -537,7 +555,7 @@ class PluginLocal:
|
||||||
if self._content is None:
|
if self._content is None:
|
||||||
if not self.is_installed:
|
if not self.is_installed:
|
||||||
raise PluginNotInstalled("Plugin is not available locally.")
|
raise PluginNotInstalled("Plugin is not available locally.")
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
self._content = await loop.run_in_executor(None, self._get_content)
|
self._content = await loop.run_in_executor(None, self._get_content)
|
||||||
return self._content
|
return self._content
|
||||||
|
|
||||||
|
|
@ -669,7 +687,7 @@ class PluginLocal:
|
||||||
|
|
||||||
async def set_content(self, content):
|
async def set_content(self, content):
|
||||||
if not self._content:
|
if not self._content:
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
await loop.run_in_executor(None, self._set_content, content)
|
await loop.run_in_executor(None, self._set_content, content)
|
||||||
self._content = content
|
self._content = content
|
||||||
return self
|
return self
|
||||||
|
|
@ -799,7 +817,7 @@ class Plugin:
|
||||||
def latest_compatible_version(self):
|
def latest_compatible_version(self):
|
||||||
if self._latest_compatible_version is None:
|
if self._latest_compatible_version is None:
|
||||||
for number, info in self.info["versions"].items():
|
for number, info in self.info["versions"].items():
|
||||||
if info["api_version"] == babase.app.env.api_version:
|
if info["api_version"] == babase.app.api_version if build_number < 21282 else babase.app.env.api_version:
|
||||||
self._latest_compatible_version = PluginVersion(
|
self._latest_compatible_version = PluginVersion(
|
||||||
self,
|
self,
|
||||||
(number, info),
|
(number, info),
|
||||||
|
|
@ -855,7 +873,7 @@ class PluginWindow(popup.PopupWindow):
|
||||||
self.plugin = plugin
|
self.plugin = plugin
|
||||||
self.button_callback = button_callback
|
self.button_callback = button_callback
|
||||||
self.scale_origin = origin_widget.get_screen_space_center()
|
self.scale_origin = origin_widget.get_screen_space_center()
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
loop.create_task(self.draw_ui())
|
loop.create_task(self.draw_ui())
|
||||||
|
|
||||||
def get_description(self, minimum_character_offset=40):
|
def get_description(self, minimum_character_offset=40):
|
||||||
|
|
@ -1107,7 +1125,7 @@ class PluginWindow(popup.PopupWindow):
|
||||||
|
|
||||||
def wrapper(self, *args, **kwargs):
|
def wrapper(self, *args, **kwargs):
|
||||||
self._ok()
|
self._ok()
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
if asyncio.iscoroutinefunction(fn):
|
if asyncio.iscoroutinefunction(fn):
|
||||||
loop.create_task(asyncio_handler(fn, self, *args, **kwargs))
|
loop.create_task(asyncio_handler(fn, self, *args, **kwargs))
|
||||||
else:
|
else:
|
||||||
|
|
@ -1233,7 +1251,7 @@ class PluginManager:
|
||||||
async def get_update_details(self):
|
async def get_update_details(self):
|
||||||
index = await self.get_index()
|
index = await self.get_index()
|
||||||
for version, info in index["versions"].items():
|
for version, info in index["versions"].items():
|
||||||
if info["api_version"] != babase.app.env.api_version:
|
if info["api_version"] != babase.app.api_version if build_number < 21282 else babase.app.env.api_version:
|
||||||
# No point checking a version of the API game doesn't support.
|
# No point checking a version of the API game doesn't support.
|
||||||
continue
|
continue
|
||||||
if version == PLUGIN_MANAGER_VERSION:
|
if version == PLUGIN_MANAGER_VERSION:
|
||||||
|
|
@ -1369,7 +1387,7 @@ class PluginSourcesWindow(popup.PopupWindow):
|
||||||
# autoselect=True,
|
# autoselect=True,
|
||||||
description="Add Source")
|
description="Add Source")
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
|
|
||||||
bui.buttonwidget(parent=self._root_widget,
|
bui.buttonwidget(parent=self._root_widget,
|
||||||
position=(330, 28),
|
position=(330, 28),
|
||||||
|
|
@ -1475,7 +1493,7 @@ class PluginCategoryWindow(popup.PopupMenuWindow):
|
||||||
on_activate_call=self.show_sources_window)
|
on_activate_call=self.show_sources_window)
|
||||||
|
|
||||||
def popup_menu_selected_choice(self, window, choice):
|
def popup_menu_selected_choice(self, window, choice):
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
loop.create_task(self._asyncio_callback(choice))
|
loop.create_task(self._asyncio_callback(choice))
|
||||||
|
|
||||||
def popup_menu_closing(self, window):
|
def popup_menu_closing(self, window):
|
||||||
|
|
@ -1497,7 +1515,7 @@ class PluginManagerWindow(bui.Window):
|
||||||
self.selected_category = None
|
self.selected_category = None
|
||||||
self.plugins_in_current_view = {}
|
self.plugins_in_current_view = {}
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
loop.create_task(self.draw_index())
|
loop.create_task(self.draw_index())
|
||||||
|
|
||||||
self._width = (700 if _uiscale is babase.UIScale.SMALL
|
self._width = (700 if _uiscale is babase.UIScale.SMALL
|
||||||
|
|
@ -1692,7 +1710,7 @@ class PluginManagerWindow(bui.Window):
|
||||||
description=filter_txt)
|
description=filter_txt)
|
||||||
self._last_filter_text = None
|
self._last_filter_text = None
|
||||||
self._last_filter_plugins = []
|
self._last_filter_plugins = []
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
loop.create_task(self.process_search_term())
|
loop.create_task(self.process_search_term())
|
||||||
|
|
||||||
async def process_search_term(self):
|
async def process_search_term(self):
|
||||||
|
|
@ -1751,7 +1769,7 @@ class PluginManagerWindow(bui.Window):
|
||||||
500 if _uiscale is babase.UIScale.MEDIUM else 510)
|
500 if _uiscale is babase.UIScale.MEDIUM else 510)
|
||||||
refresh_pos_y = (180 if _uiscale is babase.UIScale.SMALL else
|
refresh_pos_y = (180 if _uiscale is babase.UIScale.SMALL else
|
||||||
108 if _uiscale is babase.UIScale.MEDIUM else 120)
|
108 if _uiscale is babase.UIScale.MEDIUM else 120)
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
controller_button = bui.buttonwidget(parent=self._root_widget,
|
controller_button = bui.buttonwidget(parent=self._root_widget,
|
||||||
# autoselect=True,
|
# autoselect=True,
|
||||||
position=(refresh_pos_x, refresh_pos_y),
|
position=(refresh_pos_x, refresh_pos_y),
|
||||||
|
|
@ -1908,7 +1926,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow):
|
||||||
self._plugin_manager = plugin_manager
|
self._plugin_manager = plugin_manager
|
||||||
self.scale_origin = origin_widget.get_screen_space_center()
|
self.scale_origin = origin_widget.get_screen_space_center()
|
||||||
self.settings = babase.app.config["Community Plugin Manager"]["Settings"].copy()
|
self.settings = babase.app.config["Community Plugin Manager"]["Settings"].copy()
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
loop.create_task(self.draw_ui())
|
loop.create_task(self.draw_ui())
|
||||||
|
|
||||||
async def draw_ui(self):
|
async def draw_ui(self):
|
||||||
|
|
@ -2028,7 +2046,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow):
|
||||||
plugin_manager_update_available = False
|
plugin_manager_update_available = False
|
||||||
if plugin_manager_update_available:
|
if plugin_manager_update_available:
|
||||||
text_color = (0.75, 0.2, 0.2)
|
text_color = (0.75, 0.2, 0.2)
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
button_size = (95 * s, 32 * s)
|
button_size = (95 * s, 32 * s)
|
||||||
update_button_label = f'Update to v{plugin_manager_update_available[0]}'
|
update_button_label = f'Update to v{plugin_manager_update_available[0]}'
|
||||||
self._update_button = bui.buttonwidget(parent=self._root_widget,
|
self._update_button = bui.buttonwidget(parent=self._root_widget,
|
||||||
|
|
@ -2483,5 +2501,5 @@ class EntryPoint(babase.Plugin):
|
||||||
DNSBlockWorkaround.apply()
|
DNSBlockWorkaround.apply()
|
||||||
asyncio.set_event_loop(babase._asyncio._asyncio_event_loop)
|
asyncio.set_event_loop(babase._asyncio._asyncio_event_loop)
|
||||||
startup_tasks = StartupTasks()
|
startup_tasks = StartupTasks()
|
||||||
loop = asyncio.get_event_loop()
|
loop = get_event_loop()
|
||||||
loop.create_task(startup_tasks.execute())
|
loop.create_task(startup_tasks.execute())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue