mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-12 15:27:14 +03:00
[Enhancement] Broken Plugins Popup
- Adds a Popup at startup about Plugins that failed to load. - Adds entry about broken Plugins in the Settings - Plugins tab. - Adds corresponding translation entries.
This commit is contained in:
parent
bd6f5466af
commit
34d91dfb2d
@ -2259,6 +2259,34 @@ sys.path: {sys.path}'''
|
||||
|
||||
app = AppWindow(root)
|
||||
|
||||
def messagebox_broken_plugins():
|
||||
"""Display message about plugins not updated for Python 3.x."""
|
||||
if plug.PLUGINS_broken:
|
||||
# LANG: Popup-text about 'broken' plugins that failoed to load
|
||||
popup_text = _(
|
||||
"One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' "
|
||||
"tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py "
|
||||
"file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by "
|
||||
"renaming its folder to have '{DISABLED}' on the end of the name."
|
||||
)
|
||||
|
||||
# Substitute in the other words.
|
||||
popup_text = popup_text.format(
|
||||
PLUGINS=_('Plugins'), # LANG: Settings > Plugins tab
|
||||
FILE=_('File'), # LANG: 'File' menu
|
||||
SETTINGS=_('Settings'), # LANG: File > Settings
|
||||
DISABLED='.disabled'
|
||||
)
|
||||
# And now we do need these to be actual \r\n
|
||||
popup_text = popup_text.replace('\\n', '\n')
|
||||
popup_text = popup_text.replace('\\r', '\r')
|
||||
|
||||
tk.messagebox.showinfo(
|
||||
# LANG: Popup window title for list of 'broken' plugins that failoed to load
|
||||
_('EDMC: Broken Plugins'),
|
||||
popup_text
|
||||
)
|
||||
|
||||
def messagebox_not_py3():
|
||||
"""Display message about plugins not updated for Python 3.x."""
|
||||
plugins_not_py3_last = config.get_int('plugins_not_py3_last', default=0)
|
||||
@ -2297,9 +2325,11 @@ sys.path: {sys.path}'''
|
||||
|
||||
root.wm_attributes('-alpha', ui_transparency / 100)
|
||||
# Display message box about plugins without Python 3.x support
|
||||
root.after(0, messagebox_not_py3)
|
||||
root.after(0, messagebox_broken_plugins)
|
||||
# Display message box about plugins without Python 3.x support
|
||||
root.after(1, messagebox_not_py3)
|
||||
# Show warning popup for killswitches matching current version
|
||||
root.after(1, show_killswitch_poppup, root)
|
||||
root.after(2, show_killswitch_poppup, root)
|
||||
# Start the main event loop
|
||||
root.mainloop()
|
||||
|
||||
|
@ -213,12 +213,18 @@
|
||||
/* EDMarketConnector.py: Popup-text about 'active' plugins without Python 3.x support; In files: EDMarketConnector.py:2253:2259; */
|
||||
"One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name.";
|
||||
|
||||
/* EDMarketConnector.py: Popup-text about 'broken' plugins without Python 3.x support; In files: EDMarketConnector.py:2266:2271; */
|
||||
"One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name.";
|
||||
|
||||
/* EDMarketConnector.py: Settings > Plugins tab; prefs.py: Label on Settings > Plugins tab; In files: EDMarketConnector.py:2263; prefs.py:986; */
|
||||
"Plugins" = "Plugins";
|
||||
|
||||
/* EDMarketConnector.py: Popup window title for list of 'enabled' plugins that don't work with Python 3.x; In files: EDMarketConnector.py:2274; */
|
||||
"EDMC: Plugins Without Python 3.x Support" = "EDMC: Plugins Without Python 3.x Support";
|
||||
|
||||
/* EDMarketConnector.py: Popup window title for list of 'broken' plugins that failoed to load; In files: EDMarketConnector.py:2285; */
|
||||
"EDMC: Broken Plugins" = "EDMC: Broken Plugins";
|
||||
|
||||
/* journal_lock.py: Title text on popup when Journal directory already locked; In files: journal_lock.py:208; */
|
||||
"Journal directory already locked" = "Journal directory already locked";
|
||||
|
||||
@ -471,12 +477,15 @@
|
||||
/* prefs.py: Label on list of enabled plugins; In files: prefs.py:934; */
|
||||
"Enabled Plugins" = "Enabled Plugins";
|
||||
|
||||
|
||||
/* prefs.py: Plugins - Label for list of 'enabled' plugins that don't work with Python 3.x; In files: prefs.py:954; */
|
||||
"Plugins Without Python 3.x Support:" = "Plugins Without Python 3.x Support:";
|
||||
|
||||
/* prefs.py: Plugins - Label on URL to documentation about migrating plugins from Python 2.7; In files: prefs.py:962; */
|
||||
"Information on migrating plugins" = "Information on migrating plugins";
|
||||
|
||||
/* prefs.py: Plugins - Label for list of 'broken' plugins that failed to load; In files: prefs.py:1039; */
|
||||
"Broken Plugins" = "Broken Plugins";
|
||||
|
||||
/* prefs.py: Lable on list of user-disabled plugins; In files: prefs.py:977; */
|
||||
"Disabled Plugins" = "Disabled Plugins";
|
||||
|
||||
|
2
plug.py
2
plug.py
@ -27,6 +27,7 @@ logger = get_main_logger()
|
||||
# List of loaded Plugins
|
||||
PLUGINS = []
|
||||
PLUGINS_not_py3 = []
|
||||
PLUGINS_broken = []
|
||||
|
||||
|
||||
# For asynchronous error display
|
||||
@ -198,6 +199,7 @@ def _load_found_plugins():
|
||||
plugin_logger = EDMCLogging.get_plugin_logger(name)
|
||||
found.append(Plugin(name, os.path.join(config.plugin_dir_path, name, 'load.py'), plugin_logger))
|
||||
except Exception:
|
||||
PLUGINS_broken.append(Plugin(name, None, logger))
|
||||
logger.exception(f'Failure loading found Plugin "{name}"')
|
||||
pass
|
||||
return found
|
||||
|
17
prefs.py
17
prefs.py
@ -1029,6 +1029,23 @@ class PreferencesDialog(tk.Toplevel):
|
||||
nb.Label(plugins_frame, text=plugin.name).grid(
|
||||
columnspan=2, padx=self.LISTX, pady=self.PADY, sticky=tk.W, row=row.get()
|
||||
)
|
||||
############################################################
|
||||
# Show plugins that failed to load
|
||||
############################################################
|
||||
if len(plug.PLUGINS_broken):
|
||||
ttk.Separator(plugins_frame, orient=tk.HORIZONTAL).grid(
|
||||
columnspan=3, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get()
|
||||
)
|
||||
# LANG: Plugins - Label for list of 'broken' plugins that failed to load
|
||||
nb.Label(plugins_frame, text=_('Broken Plugins')+':').grid(
|
||||
padx=self.PADX, pady=self.PADY, sticky=tk.W, row=row.get()
|
||||
)
|
||||
|
||||
for plugin in plug.PLUGINS_broken:
|
||||
if plugin.folder: # 'system' ones have this set to None to suppress listing in Plugins prefs tab
|
||||
nb.Label(plugins_frame, text=plugin.name).grid(
|
||||
columnspan=2, padx=self.LISTX, pady=self.PADY, sticky=tk.W, row=row.get()
|
||||
)
|
||||
|
||||
# LANG: Label on Settings > Plugins tab
|
||||
notebook.add(plugins_frame, text=_('Plugins')) # Tab heading in settings
|
||||
|
Loading…
x
Reference in New Issue
Block a user