diff --git a/plugin_manager.py b/plugin_manager.py index ea65c03..923bf88 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -1,5 +1,6 @@ # ba_meta require api 8 from babase._meta import EXPORT_CLASS_NAME_SHORTCUTS +from baenv import TARGET_BALLISTICA_BUILD as build_number import babase import _babase import bauiv1 as bui @@ -32,7 +33,7 @@ _env = _babase.env() _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" # Current tag can be changed to "staging" or any other branch in # plugin manager repo for testing purpose. @@ -43,7 +44,24 @@ HEADERS = { } 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(".", "\\.") @@ -100,7 +118,7 @@ def 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) 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): - loop = asyncio.get_event_loop() + loop = get_event_loop() content = await loop.run_in_executor( None, stream_network_response_to_file, @@ -537,7 +555,7 @@ class PluginLocal: if self._content is None: if not self.is_installed: 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) return self._content @@ -669,7 +687,7 @@ class PluginLocal: async def set_content(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) self._content = content return self @@ -799,7 +817,7 @@ class Plugin: def latest_compatible_version(self): if self._latest_compatible_version is None: 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, (number, info), @@ -855,7 +873,7 @@ class PluginWindow(popup.PopupWindow): self.plugin = plugin self.button_callback = button_callback self.scale_origin = origin_widget.get_screen_space_center() - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self.draw_ui()) def get_description(self, minimum_character_offset=40): @@ -1107,7 +1125,7 @@ class PluginWindow(popup.PopupWindow): def wrapper(self, *args, **kwargs): self._ok() - loop = asyncio.get_event_loop() + loop = get_event_loop() if asyncio.iscoroutinefunction(fn): loop.create_task(asyncio_handler(fn, self, *args, **kwargs)) else: @@ -1233,7 +1251,7 @@ class PluginManager: async def get_update_details(self): index = await self.get_index() 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. continue if version == PLUGIN_MANAGER_VERSION: @@ -1369,7 +1387,7 @@ class PluginSourcesWindow(popup.PopupWindow): # autoselect=True, description="Add Source") - loop = asyncio.get_event_loop() + loop = get_event_loop() bui.buttonwidget(parent=self._root_widget, position=(330, 28), @@ -1475,7 +1493,7 @@ class PluginCategoryWindow(popup.PopupMenuWindow): on_activate_call=self.show_sources_window) def popup_menu_selected_choice(self, window, choice): - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self._asyncio_callback(choice)) def popup_menu_closing(self, window): @@ -1497,7 +1515,7 @@ class PluginManagerWindow(bui.Window): self.selected_category = None self.plugins_in_current_view = {} - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self.draw_index()) self._width = (700 if _uiscale is babase.UIScale.SMALL @@ -1692,7 +1710,7 @@ class PluginManagerWindow(bui.Window): description=filter_txt) self._last_filter_text = None self._last_filter_plugins = [] - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self.process_search_term()) async def process_search_term(self): @@ -1751,7 +1769,7 @@ class PluginManagerWindow(bui.Window): 500 if _uiscale is babase.UIScale.MEDIUM else 510) refresh_pos_y = (180 if _uiscale is babase.UIScale.SMALL else 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, # autoselect=True, position=(refresh_pos_x, refresh_pos_y), @@ -1908,7 +1926,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): self._plugin_manager = plugin_manager self.scale_origin = origin_widget.get_screen_space_center() 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()) async def draw_ui(self): @@ -2028,7 +2046,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): plugin_manager_update_available = False if plugin_manager_update_available: text_color = (0.75, 0.2, 0.2) - loop = asyncio.get_event_loop() + loop = get_event_loop() button_size = (95 * s, 32 * s) update_button_label = f'Update to v{plugin_manager_update_available[0]}' self._update_button = bui.buttonwidget(parent=self._root_widget, @@ -2483,5 +2501,5 @@ class EntryPoint(babase.Plugin): DNSBlockWorkaround.apply() asyncio.set_event_loop(babase._asyncio._asyncio_event_loop) startup_tasks = StartupTasks() - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(startup_tasks.execute())