From 8063cf099b11e10fdd526ef8f7ee88d3e7d91a95 Mon Sep 17 00:00:00 2001 From: Phoebe Date: Fri, 17 Nov 2023 01:39:52 +0100 Subject: [PATCH] [2095] Standardize vertical Padding - Standardizes vertical Padding. - Fixes issues with the disabled and outdated Plugin list. - Part of #2095 --- plugins/coriolis.py | 2 +- plugins/eddn.py | 7 +- plugins/edsm.py | 5 +- plugins/inara.py | 23 +++--- prefs.py | 195 +++++++++++++++++++++++--------------------- 5 files changed, 124 insertions(+), 108 deletions(-) diff --git a/plugins/coriolis.py b/plugins/coriolis.py index 283b49d8b..599e4d57f 100644 --- a/plugins/coriolis.py +++ b/plugins/coriolis.py @@ -91,7 +91,7 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str | None, is_beta: bool) -> tk.Fr # LANG: Settings>Coriolis: Help/hint for changing coriolis URLs nb.Label(conf_frame, text=_( "Set the URL to use with coriolis.io ship loadouts. Note that this MUST end with '/import?data='" - )).grid(sticky=tk.EW, row=cur_row, column=0, columnspan=3) + )).grid(sticky=tk.EW, row=cur_row, column=0, padx=PADX, columnspan=3) cur_row += 1 # LANG: Settings>Coriolis: Label for 'NOT alpha/beta game version' URL diff --git a/plugins/eddn.py b/plugins/eddn.py index c3d620149..c8bca92a5 100644 --- a/plugins/eddn.py +++ b/plugins/eddn.py @@ -2089,6 +2089,7 @@ def plugin_prefs(parent, cmdr: str, is_beta: bool) -> Frame: """ PADX = 10 # noqa: N806 BUTTONX = 12 # noqa: N806 # indent Checkbuttons and Radiobuttons + PADY = 2 if prefsVersion.shouldSetDefaults('0.0.0.0', not bool(config.get_int('output'))): output: int = config.OUT_EDDN_SEND_STATION_DATA | config.OUT_EDDN_SEND_NON_STATION # default settings @@ -2116,7 +2117,7 @@ def plugin_prefs(parent, cmdr: str, is_beta: bool) -> Frame: variable=this.eddn_station, command=prefsvarchanged ) # Output setting - this.eddn_station_button.grid(row=cur_row, padx=BUTTONX, pady=(5, 0), sticky=tk.W) + this.eddn_station_button.grid(row=cur_row, padx=BUTTONX, pady=PADY, sticky=tk.W) cur_row += 1 this.eddn_system = tk.IntVar(value=(output & config.OUT_EDDN_SEND_NON_STATION) and 1) @@ -2128,7 +2129,7 @@ def plugin_prefs(parent, cmdr: str, is_beta: bool) -> Frame: variable=this.eddn_system, command=prefsvarchanged ) - this.eddn_system_button.grid(row=cur_row, padx=BUTTONX, pady=(5, 0), sticky=tk.W) + this.eddn_system_button.grid(row=cur_row, padx=BUTTONX, pady=PADY, sticky=tk.W) cur_row += 1 this.eddn_delay = tk.IntVar(value=(output & config.OUT_EDDN_DELAY) and 1) @@ -2139,7 +2140,7 @@ def plugin_prefs(parent, cmdr: str, is_beta: bool) -> Frame: text=_('Delay sending until docked'), variable=this.eddn_delay ) - this.eddn_delay_button.grid(row=cur_row, padx=BUTTONX, sticky=tk.W) + this.eddn_delay_button.grid(row=cur_row, padx=BUTTONX, pady=PADY, sticky=tk.W) return eddnframe diff --git a/plugins/edsm.py b/plugins/edsm.py index 647cd2fd9..1e400c80b 100644 --- a/plugins/edsm.py +++ b/plugins/edsm.py @@ -294,6 +294,7 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str | None, is_beta: bool) -> tk.Fr PADX = 10 # noqa: N806 BUTTONX = 12 # noqa: N806 PADY = 2 # noqa: N806 + SEPY = 10 # noqa: N806 frame = nb.Frame(parent) frame.columnconfigure(1, weight=1) @@ -319,7 +320,9 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str | None, is_beta: bool) -> tk.Fr this.log_button.grid(row=cur_row, columnspan=2, padx=BUTTONX, pady=(5, 0), sticky=tk.W) cur_row += 1 - nb.Label(frame).grid(row=cur_row, sticky=tk.W) # big spacer + ttk.Separator(frame, orient=tk.HORIZONTAL).grid( + columnspan=2, padx=PADX, pady=SEPY, sticky=tk.EW, row=cur_row + ) cur_row += 1 this.label = HyperlinkLabel( diff --git a/plugins/inara.py b/plugins/inara.py index 9653bde5e..b3446b622 100644 --- a/plugins/inara.py +++ b/plugins/inara.py @@ -247,9 +247,10 @@ def toggle_password_visibility(): def plugin_prefs(parent: ttk.Notebook, cmdr: str, is_beta: bool) -> tk.Frame: """Plugin Preferences UI hook.""" - x_padding = 10 - x_button_padding = 12 # indent Checkbuttons and Radiobuttons - y_padding = 2 # close spacing + PADX = 10 + BUTTONX = 12 # indent Checkbuttons and Radiobuttons + PADY = 2 # close spacing + SEPY = 10 # seperator line spacing cur_row = 0 frame = nb.Frame(parent) @@ -257,7 +258,7 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str, is_beta: bool) -> tk.Frame: HyperlinkLabel( frame, text='Inara', background=nb.Label().cget('background'), url='https://inara.cz/', underline=True - ).grid(row=cur_row, columnspan=2, padx=x_padding, sticky=tk.W) # Don't translate + ).grid(row=cur_row, columnspan=2, padx=PADX, sticky=tk.W) # Don't translate cur_row += 1 this.log = tk.IntVar(value=config.get_int('inara_out') and 1) @@ -268,10 +269,12 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str, is_beta: bool) -> tk.Frame: command=prefsvarchanged ) - this.log_button.grid(row=cur_row, columnspan=2, padx=x_button_padding, pady=(5, 0), sticky=tk.W) + this.log_button.grid(row=cur_row, columnspan=2, padx=BUTTONX, pady=(5, 0), sticky=tk.W) cur_row += 1 - nb.Label(frame).grid(row=cur_row, sticky=tk.W) # big spacer + ttk.Separator(frame, orient=tk.HORIZONTAL).grid( + columnspan=2, padx=PADX, pady=SEPY, sticky=tk.EW, row=cur_row + ) cur_row += 1 # Section heading in settings @@ -283,14 +286,14 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str, is_beta: bool) -> tk.Frame: underline=True ) - this.label.grid(row=cur_row, columnspan=2, padx=x_padding, sticky=tk.W) + this.label.grid(row=cur_row, columnspan=2, padx=PADX, sticky=tk.W) cur_row += 1 # LANG: Inara API key label this.apikey_label = nb.Label(frame, text=_('API Key')) # Inara setting - this.apikey_label.grid(row=cur_row, padx=x_padding, sticky=tk.W) + this.apikey_label.grid(row=cur_row, padx=PADX, sticky=tk.W) this.apikey = nb.Entry(frame, show="*", width=50) - this.apikey.grid(row=cur_row, column=1, padx=x_padding, pady=y_padding, sticky=tk.EW) + this.apikey.grid(row=cur_row, column=1, padx=PADX, pady=PADY, sticky=tk.EW) cur_row += 1 prefs_cmdr_changed(cmdr, is_beta) @@ -302,7 +305,7 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str, is_beta: bool) -> tk.Frame: variable=show_password_var, command=toggle_password_visibility, ) - show_password_checkbox.grid(row=cur_row, columnspan=2, padx=x_padding, pady=(5, 0), sticky=tk.W) + show_password_checkbox.grid(row=cur_row, columnspan=2, padx=BUTTONX, pady=(5, 0), sticky=tk.W) return frame diff --git a/prefs.py b/prefs.py index cc979d88d..20cc3cef5 100644 --- a/prefs.py +++ b/prefs.py @@ -288,7 +288,9 @@ def __init__(self, parent: tk.Tk, callback: Optional[Callable]): self.PADX = 10 self.BUTTONX = 12 # indent Checkbuttons and Radiobuttons + self.LISTX = 25 # indent listed items self.PADY = 2 # close spacing + self.SEPY = 10 # seperator line spacing # Set up different tabs self.__setup_output_tab(notebook) @@ -457,29 +459,30 @@ def __setup_config_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 else: text = (_('Browse...')) # LANG: NOT-macOS Setting - files location selection button - self.logbutton = nb.Button( - config_frame, - text=text, - # LANG: Settings > Configuration - Label for Journal files location - command=lambda: self.filebrowse(_('E:D journal file location'), self.logdir) - ) - self.logbutton.grid(column=3, padx=self.PADX, pady=self.PADY, sticky=tk.EW, row=row.get()) - - if config.default_journal_dir_path: - # Appearance theme and language setting - nb.Button( + with row as cur_row: + self.logbutton = nb.Button( config_frame, - # LANG: Settings > Configuration - Label on 'reset journal files location to default' button - text=_('Default'), - command=self.logdir_reset, - state=tk.NORMAL if config.get_str('journaldir') else tk.DISABLED - ).grid(column=2, pady=self.PADY, sticky=tk.EW, row=row.get()) + text=text, + # LANG: Settings > Configuration - Label for Journal files location + command=lambda: self.filebrowse(_('E:D journal file location'), self.logdir) + ) + self.logbutton.grid(column=3, padx=self.PADX, pady=self.PADY, sticky=tk.EW, row=cur_row) + + if config.default_journal_dir_path: + # Appearance theme and language setting + nb.Button( + config_frame, + # LANG: Settings > Configuration - Label on 'reset journal files location to default' button + text=_('Default'), + command=self.logdir_reset, + state=tk.NORMAL if config.get_str('journaldir') else tk.DISABLED + ).grid(column=2, padx=self.PADX, pady=self.PADY, sticky=tk.EW, row=cur_row) # CAPI settings self.capi_fleetcarrier = tk.BooleanVar(value=config.get_bool('capi_fleetcarrier')) ttk.Separator(config_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) nb.Label( @@ -492,62 +495,63 @@ def __setup_config_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 # LANG: Configuration - Enable or disable the Fleet Carrier CAPI calls text=_('Enable Fleetcarrier CAPI Queries'), variable=self.capi_fleetcarrier - ).grid(columnspan=4, padx=self.PADX, pady=(5, 0), sticky=tk.W, row=row.get()) + ).grid(columnspan=4, padx=self.BUTTONX, pady=(5, 0), sticky=tk.W, row=row.get()) if sys.platform in ('darwin', 'win32'): ttk.Separator(config_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) self.hotkey_code = config.get_int('hotkey_code') self.hotkey_mods = config.get_int('hotkey_mods') self.hotkey_only = tk.IntVar(value=not config.get_int('hotkey_always')) self.hotkey_play = tk.IntVar(value=not config.get_int('hotkey_mute')) - nb.Label( - config_frame, - text=_('Keyboard shortcut') if # LANG: Hotkey/Shortcut settings prompt on OSX - sys.platform == 'darwin' else - _('Hotkey') # LANG: Hotkey/Shortcut settings prompt on Windows - ).grid(padx=self.PADX, sticky=tk.W, row=row.get()) + with row as cur_row: + nb.Label( + config_frame, + text=_('Keyboard shortcut') if # LANG: Hotkey/Shortcut settings prompt on OSX + sys.platform == 'darwin' else + _('Hotkey') # LANG: Hotkey/Shortcut settings prompt on Windows + ).grid(padx=self.PADX, sticky=tk.W, row=cur_row) + + if sys.platform == 'darwin' and not was_accessible_at_launch: + if AXIsProcessTrusted(): + # Shortcut settings prompt on OSX + nb.Label( + config_frame, + # LANG: macOS Preferences > Configuration - restart the app message + text=_('Re-start {APP} to use shortcuts').format(APP=applongname), + foreground='firebrick' + ).grid(padx=self.PADX, sticky=tk.W, row=cur_row) - if sys.platform == 'darwin' and not was_accessible_at_launch: - if AXIsProcessTrusted(): - # Shortcut settings prompt on OSX - nb.Label( - config_frame, - # LANG: macOS Preferences > Configuration - restart the app message - text=_('Re-start {APP} to use shortcuts').format(APP=applongname), - foreground='firebrick' - ).grid(padx=self.PADX, sticky=tk.W, row=row.get()) + else: + # Shortcut settings prompt on OSX + nb.Label( + config_frame, + # LANG: macOS - Configuration - need to grant the app permission for keyboard shortcuts + text=_('{APP} needs permission to use shortcuts').format(APP=applongname), + foreground='firebrick' + ).grid(columnspan=4, padx=self.PADX, sticky=tk.W, row=cur_row) + + # LANG: Shortcut settings button on OSX + nb.Button(config_frame, text=_('Open System Preferences'), command=self.enableshortcuts).grid( + padx=self.PADX, sticky=tk.E, row=cur_row + ) else: - # Shortcut settings prompt on OSX - nb.Label( - config_frame, - # LANG: macOS - Configuration - need to grant the app permission for keyboard shortcuts - text=_('{APP} needs permission to use shortcuts').format(APP=applongname), - foreground='firebrick' - ).grid(columnspan=4, padx=self.PADX, sticky=tk.W, row=row.get()) - - # LANG: Shortcut settings button on OSX - nb.Button(config_frame, text=_('Open System Preferences'), command=self.enableshortcuts).grid( - padx=self.PADX, sticky=tk.E, row=row.get() + self.hotkey_text = nb.Entry(config_frame, width=( + 20 if sys.platform == 'darwin' else 30), justify=tk.CENTER) + self.hotkey_text.insert( + 0, + # No hotkey/shortcut currently defined + # TODO: display Only shows up on darwin or windows + # LANG: No hotkey/shortcut set + hotkeymgr.display(self.hotkey_code, self.hotkey_mods) if self.hotkey_code else _('None') ) - else: - self.hotkey_text = nb.Entry(config_frame, width=( - 20 if sys.platform == 'darwin' else 30), justify=tk.CENTER) - self.hotkey_text.insert( - 0, - # No hotkey/shortcut currently defined - # TODO: display Only shows up on darwin or windows - # LANG: No hotkey/shortcut set - hotkeymgr.display(self.hotkey_code, self.hotkey_mods) if self.hotkey_code else _('None') - ) - - self.hotkey_text.bind('', self.hotkeystart) - self.hotkey_text.bind('', self.hotkeyend) - self.hotkey_text.grid(column=1, columnspan=2, pady=(5, 0), sticky=tk.W, row=row.get()) + self.hotkey_text.bind('', self.hotkeystart) + self.hotkey_text.bind('', self.hotkeyend) + self.hotkey_text.grid(column=1, columnspan=2, pady=(5, 0), sticky=tk.W, row=cur_row) # Hotkey/Shortcut setting self.hotkey_only_btn = nb.Checkbutton( @@ -558,7 +562,7 @@ def __setup_config_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 state=tk.NORMAL if self.hotkey_code else tk.DISABLED ) - self.hotkey_only_btn.grid(columnspan=4, padx=self.PADX, pady=(5, 0), sticky=tk.W, row=row.get()) + self.hotkey_only_btn.grid(columnspan=4, padx=self.BUTTONX, pady=(5, 0), sticky=tk.W, row=row.get()) # Hotkey/Shortcut setting self.hotkey_play_btn = nb.Checkbutton( @@ -569,11 +573,11 @@ def __setup_config_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 state=tk.NORMAL if self.hotkey_code else tk.DISABLED ) - self.hotkey_play_btn.grid(columnspan=4, padx=self.PADX, sticky=tk.W, row=row.get()) + self.hotkey_play_btn.grid(columnspan=4, padx=self.BUTTONX, sticky=tk.W, row=row.get()) # Option to disabled Automatic Check For Updates whilst in-game ttk.Separator(config_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) self.disable_autoappupdatecheckingame = tk.IntVar(value=config.get_int('disable_autoappupdatecheckingame')) self.disable_autoappupdatecheckingame_btn = nb.Checkbutton( @@ -584,10 +588,10 @@ def __setup_config_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 command=self.disable_autoappupdatecheckingame_changed ) - self.disable_autoappupdatecheckingame_btn.grid(columnspan=4, padx=self.PADX, sticky=tk.W, row=row.get()) + self.disable_autoappupdatecheckingame_btn.grid(columnspan=4, padx=self.BUTTONX, sticky=tk.W, row=row.get()) ttk.Separator(config_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) # Settings prompt for preferred ship loadout, system and station info websites @@ -660,7 +664,7 @@ def __setup_config_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 # Set loglevel ttk.Separator(config_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) with row as cur_row: @@ -706,26 +710,26 @@ def __setup_config_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 notebook.add(config_frame, text=_('Configuration')) def __setup_privacy_tab(self, notebook: ttk.Notebook) -> None: - frame = nb.Frame(notebook) + privacy_frame = nb.Frame(notebook) self.hide_multicrew_captain = tk.BooleanVar(value=config.get_bool('hide_multicrew_captain', default=False)) self.hide_private_group = tk.BooleanVar(value=config.get_bool('hide_private_group', default=False)) row = AutoInc(start=0) # LANG: UI elements privacy section header in privacy tab of preferences - nb.Label(frame, text=_('Main UI privacy options')).grid( + nb.Label(privacy_frame, text=_('Main UI privacy options')).grid( row=row.get(), column=0, sticky=tk.W, padx=self.PADX ) nb.Checkbutton( - frame, text=_('Hide private group name in UI'), # LANG: Hide private group owner name from UI checkbox + privacy_frame, text=_('Hide private group name in UI'), # LANG: Hide private group owner name from UI checkbox variable=self.hide_private_group ).grid(row=row.get(), column=0, padx=self.BUTTONX, pady=self.PADY, sticky=tk.W) nb.Checkbutton( - frame, text=_('Hide multi-crew captain name'), # LANG: Hide multicrew captain name from main UI checkbox + privacy_frame, text=_('Hide multi-crew captain name'), # LANG: Hide multicrew captain name from main UI checkbox variable=self.hide_multicrew_captain ).grid(row=row.get(), column=0, padx=self.BUTTONX, pady=self.PADY, sticky=tk.W) - notebook.add(frame, text=_('Privacy')) # LANG: Preferences privacy tab title + notebook.add(privacy_frame, text=_('Privacy')) # LANG: Preferences privacy tab title def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: self.languages = Translations.available_names() @@ -751,10 +755,10 @@ def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: # LANG: Appearance - Label for selection of application display language nb.Label(appearance_frame, text=_('Language')).grid(padx=self.PADX, sticky=tk.W, row=cur_row) self.lang_button = nb.OptionMenu(appearance_frame, self.lang, self.lang.get(), *self.languages.values()) - self.lang_button.grid(column=1, columnspan=2, padx=self.PADX, sticky=tk.W, row=cur_row) + self.lang_button.grid(column=1, columnspan=2, padx=(0, self.PADX), sticky=tk.W, row=cur_row) ttk.Separator(appearance_frame, orient=tk.HORIZONTAL).grid( - columnspan=3, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=3, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) # Appearance setting @@ -797,7 +801,7 @@ def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: command=lambda: self.themecolorbrowse(0) ) - self.theme_button_0.grid(column=1, padx=self.PADX, pady=self.PADY, sticky=tk.NSEW, row=cur_row) + self.theme_button_0.grid(column=1, padx=0, pady=self.PADY, sticky=tk.NSEW, row=cur_row) with row as cur_row: self.theme_label_1 = nb.Label(appearance_frame, text=self.theme_prompts[1]) @@ -809,7 +813,7 @@ def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: command=lambda: self.themecolorbrowse(1) ) - self.theme_button_1.grid(column=1, padx=self.PADX, pady=self.PADY, sticky=tk.NSEW, row=cur_row) + self.theme_button_1.grid(column=1, padx=0, pady=self.PADY, sticky=tk.NSEW, row=cur_row) # UI Scaling """ @@ -820,7 +824,7 @@ def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: of 200 we'll end up setting 2.66 as the tk-scaling value. """ ttk.Separator(appearance_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) with row as cur_row: # LANG: Appearance - Label for selection of UI scaling @@ -841,7 +845,7 @@ def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: resolution=10, ) - self.uiscale_bar.grid(column=1, sticky=tk.W, row=cur_row) + self.uiscale_bar.grid(column=1, padx=0, sticky=tk.W, row=cur_row) self.ui_scaling_defaultis = nb.Label( appearance_frame, # LANG: Appearance - Help/hint text for UI scaling selection @@ -850,7 +854,7 @@ def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: # Transparency slider ttk.Separator(appearance_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) with row as cur_row: @@ -887,11 +891,11 @@ def __setup_appearance_tab(self, notebook: ttk.Notebook) -> None: row=cur_row ) - self.transparency_bar.grid(column=1, sticky=tk.W, row=cur_row) + self.transparency_bar.grid(column=1, padx=0, sticky=tk.W, row=cur_row) # Always on top ttk.Separator(appearance_frame, orient=tk.HORIZONTAL).grid( - columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get() + columnspan=4, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) self.ontop_button = nb.Checkbutton( @@ -947,12 +951,12 @@ def __setup_plugin_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 # Help text in settings # LANG: Tip/label about how to disable plugins text=_("Tip: You can disable a plugin by{CR}adding '{EXT}' to its folder name").format(EXT='.disabled') - ).grid(columnspan=2, padx=self.PADX, pady=10, sticky=tk.EW, row=row.get()) + ).grid(columnspan=2, padx=self.PADX, pady=self.PADY, sticky=tk.EW, row=row.get()) enabled_plugins = list(filter(lambda x: x.folder and x.module, plug.PLUGINS)) if len(enabled_plugins): ttk.Separator(plugins_frame, orient=tk.HORIZONTAL).grid( - columnspan=3, padx=self.PADX, pady=self.PADY * 8, sticky=tk.EW + columnspan=3, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) nb.Label( plugins_frame, @@ -967,21 +971,19 @@ def __setup_plugin_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 else: label = nb.Label(plugins_frame, text=f'{plugin.folder} ({plugin.name})') - label.grid(columnspan=2, padx=self.PADX*2, sticky=tk.W, row=row.get()) + label.grid(columnspan=2, padx=self.LISTX, sticky=tk.W, row=row.get()) ############################################################ # Show which plugins don't have Python 3.x support ############################################################ if len(plug.PLUGINS_not_py3): ttk.Separator(plugins_frame, orient=tk.HORIZONTAL).grid( - columnspan=3, padx=self.PADX, pady=self.PADY * 8, sticky=tk.EW, row=row.get() + columnspan=3, padx=self.PADX, pady=self.SEPY, sticky=tk.EW, row=row.get() ) # LANG: Plugins - Label for list of 'enabled' plugins that don't work with Python 3.x - nb.Label(plugins_frame, text=_('Plugins Without Python 3.x Support:')+':').grid(padx=self.PADX, sticky=tk.W) - - for plugin in plug.PLUGINS_not_py3: - 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.PADX*2, sticky=tk.W) + nb.Label(plugins_frame, text=_('Plugins Without Python 3.x Support')+':').grid( + padx=self.PADX, sticky=tk.W, row=row.get() + ) HyperlinkLabel( # LANG: Plugins - Label on URL to documentation about migrating plugins from Python 2.7 @@ -989,23 +991,30 @@ def __setup_plugin_tab(self, notebook: ttk.Notebook) -> None: # noqa: CCR001 background=nb.Label().cget('background'), url='https://github.com/EDCD/EDMarketConnector/blob/main/PLUGINS.md#migration-from-python-27', underline=True - ).grid(columnspan=2, padx=self.PADX, sticky=tk.W) - ############################################################ + ).grid(columnspan=2, padx=self.PADX, sticky=tk.W, row=row.get()) + for plugin in plug.PLUGINS_not_py3: + 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, sticky=tk.W, row=row.get() + ) + ############################################################ + # Show disabled plugins + ############################################################ disabled_plugins = list(filter(lambda x: x.folder and not x.module, plug.PLUGINS)) if len(disabled_plugins): ttk.Separator(plugins_frame, orient=tk.HORIZONTAL).grid( - columnspan=3, padx=self.PADX, pady=self.PADY * 8, sticky=tk.EW, row=row.get() + columnspan=3, padx=self.PADX*2, pady=self.SEPY, sticky=tk.EW, row=row.get() ) nb.Label( plugins_frame, - # LANG: Lable on list of user-disabled plugins + # LANG: Label on list of user-disabled plugins text=_('Disabled Plugins')+':' # List of plugins in settings ).grid(padx=self.PADX, sticky=tk.W, row=row.get()) for plugin in disabled_plugins: nb.Label(plugins_frame, text=plugin.name).grid( - columnspan=2, padx=self.PADX*2, sticky=tk.W, row=row.get() + columnspan=2, padx=self.LISTX, sticky=tk.W, row=row.get() ) # LANG: Label on Settings > Plugins tab