diff --git a/EDMarketConnector.py b/EDMarketConnector.py index 765fa62f..f2f8fbb4 100755 --- a/EDMarketConnector.py +++ b/EDMarketConnector.py @@ -1062,13 +1062,20 @@ Locale LC_TIME: {locale.getlocale(locale.LC_TIME)}''' Translations.install(config.get('language') or None) # Can generate errors so wait til log set up root = tk.Tk(className=appname.lower()) + + # UI Scaling + """ + We scale the UI relative to what we find tk-scaling is on startup. + """ ui_scale = config.getint('ui_scale') + # NB: This *also* catches a literal 0 value to re-set to the default 100 if not ui_scale: - ui_scale = 0 + ui_scale = 100 config.set('ui_scale', ui_scale) theme.default_ui_scale = root.tk.call('tk', 'scaling') - if ui_scale != 0: - root.tk.call('tk', 'scaling', float(ui_scale) / 100.0) + logger.debug(f'Default tk scaling = {theme.default_ui_scale}') + theme.startup_ui_scale = ui_scale + root.tk.call('tk', 'scaling', theme.default_ui_scale * float(ui_scale) / 100.0) app = AppWindow(root) def messagebox_not_py3(): diff --git a/L10n/en.template b/L10n/en.template index 1e5b6cb0..a8ca6dc6 100644 --- a/L10n/en.template +++ b/L10n/en.template @@ -529,8 +529,8 @@ /* Label for 'UI Scaling' option [prefs.py] */ "UI Scale Percentage" = "UI Scale Percentage"; -/* Text describing that value '0' means 'default', and changes require a restart [prefs.py] */ -"0 means Default{CR}Restart Required for{CR}changes to take effect!" = "0 means Default{CR}Restart Required for{CR}changes to take effect!"; +/* Text describing that value '100' means 'default', and changes require a restart [prefs.py] */ +"100 means Default{CR}Restart Required for{CR}changes to take effect!" = "100 means Default{CR}Restart Required for{CR}changes to take effect!"; /* Label for user configured level of logging [prefs.py] */ "Log Level" = "Log Level"; diff --git a/prefs.py b/prefs.py index 7643a8f6..6b2e824c 100644 --- a/prefs.py +++ b/prefs.py @@ -339,6 +339,13 @@ class PreferencesDialog(tk.Toplevel): self.theme_button_1.grid(row=21, column=1, padx=PADX, pady=PADY, sticky=tk.NSEW) # UI Scaling + """ + The provided UI Scale setting is a percentage value relative to the + tk-scaling setting on startup. + + So, if at startup we find tk-scaling is 1.33 and have a user setting + of 200 we'll end up setting 2.66 as the tk-scaling value. + """ ttk.Separator(themeframe, orient=tk.HORIZONTAL).grid(columnspan=4, padx=PADX, pady=PADY*4, sticky=tk.EW) nb.Label(themeframe, text=_('UI Scale Percentage')).grid(row=23, padx=PADX, pady=2*PADY, sticky=tk.W) self.ui_scale = tk.IntVar() @@ -347,7 +354,7 @@ class PreferencesDialog(tk.Toplevel): themeframe, variable=self.ui_scale, orient=tk.HORIZONTAL, - length=300, + length=300 * (float(theme.startup_ui_scale) / 100.0 * theme.default_ui_scale), from_=0, to=400, tickinterval=50, @@ -356,7 +363,7 @@ class PreferencesDialog(tk.Toplevel): self.uiscale_bar.grid(row=23, column=1, sticky=tk.W) self.ui_scaling_defaultis = nb.Label( themeframe, - text=_('0 means Default{CR}Restart Required for{CR}changes to take effect!') + text=_('100 means Default{CR}Restart Required for{CR}changes to take effect!') ).grid(row=23, column=3, padx=PADX, pady=2*PADY, sticky=tk.E) # Always on top diff --git a/theme.py b/theme.py index f1a97721..d56b7798 100644 --- a/theme.py +++ b/theme.py @@ -116,6 +116,7 @@ class _Theme(object): self.defaults = {} self.current = {} self.default_ui_scale = None # None == not yet known + self.startup_ui_scale = None def register(self, widget): # Note widget and children for later application of a theme. Note if the widget has explicit fg or bg attributes.