mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-12 15:27:14 +03:00
[2186] Simplify myNB Files
This commit is contained in:
parent
f7b39f8daf
commit
c1b8533cb4
@ -7,6 +7,8 @@ from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import tkinter as tk
|
||||
from tkinter import ttk
|
||||
|
||||
import myNotebook as nb # noqa: N813
|
||||
from config import appname, config
|
||||
|
||||
@ -63,7 +65,7 @@ class ClickCounter:
|
||||
|
||||
# setup our config in a "Click Count: number"
|
||||
nb.Label(frame, text='Click Count').grid(row=current_row)
|
||||
nb.Entry(frame, textvariable=self.click_count).grid(row=current_row, column=1)
|
||||
ttk.Entry(frame, textvariable=self.click_count).grid(row=current_row, column=1)
|
||||
current_row += 1 # Always increment our row counter, makes for far easier tkinter design.
|
||||
return frame
|
||||
|
||||
|
@ -1,12 +1,9 @@
|
||||
"""
|
||||
Custom `ttk.Notebook` to fix various display issues.
|
||||
|
||||
Hacks to fix various display issues with notebooks and their child widgets on
|
||||
OSX and Windows.
|
||||
Hacks to fix various display issues with notebooks and their child widgets on Windows.
|
||||
|
||||
- Windows: page background should be White, not SystemButtonFace
|
||||
- OSX: page background should be a darker gray than systemWindowBody
|
||||
selected tab foreground should be White when the window is active
|
||||
|
||||
Entire file may be imported by plugins.
|
||||
"""
|
||||
@ -26,24 +23,17 @@ class Notebook(ttk.Notebook):
|
||||
|
||||
def __init__(self, master: ttk.Frame | None = None, **kw):
|
||||
|
||||
ttk.Notebook.__init__(self, master, **kw)
|
||||
super().__init__(master, **kw)
|
||||
style = ttk.Style()
|
||||
|
||||
if sys.platform == 'win32':
|
||||
style.configure('nb.TFrame', background=PAGEBG)
|
||||
style.configure('nb.TButton', background=PAGEBG)
|
||||
style.configure('nb.TCheckbutton', foreground=PAGEFG, background=PAGEBG)
|
||||
style.configure('nb.TMenubutton', foreground=PAGEFG, background=PAGEBG)
|
||||
style.configure('nb.TRadiobutton', foreground=PAGEFG, background=PAGEBG)
|
||||
self.grid(padx=10, pady=10, sticky=tk.NSEW)
|
||||
else:
|
||||
self.grid(padx=10, pady=10, sticky=tk.NSEW)
|
||||
style.configure('nb.TFrame', background=PAGEBG)
|
||||
style.configure('nb.TButton', background=PAGEBG)
|
||||
style.configure('nb.TCheckbutton', foreground=PAGEFG, background=PAGEBG)
|
||||
style.configure('nb.TMenubutton', foreground=PAGEFG, background=PAGEBG)
|
||||
style.configure('nb.TRadiobutton', foreground=PAGEFG, background=PAGEBG)
|
||||
self.grid(padx=10, pady=10, sticky=tk.NSEW)
|
||||
|
||||
|
||||
# FIXME: The real fix for this 'dynamic type' would be to split this whole
|
||||
# thing into being a module with per-platform files, as we've done with config
|
||||
# That would also make the code cleaner.
|
||||
class Frame(sys.platform == 'darwin' and tk.Frame or ttk.Frame): # type: ignore
|
||||
class Frame(tk.Frame or ttk.Frame): # type: ignore
|
||||
"""Custom t(t)k.Frame class to fix some display issues."""
|
||||
|
||||
def __init__(self, master: ttk.Notebook | None = None, **kw):
|
||||
@ -60,26 +50,25 @@ class Label(tk.Label):
|
||||
"""Custom tk.Label class to fix some display issues."""
|
||||
|
||||
def __init__(self, master: ttk.Frame | None = None, **kw):
|
||||
# This format chosen over `sys.platform in (...)` as mypy and friends dont understand that
|
||||
if sys.platform == 'win32':
|
||||
kw['foreground'] = kw.pop('foreground', PAGEFG)
|
||||
kw['background'] = kw.pop('background', PAGEBG)
|
||||
else:
|
||||
kw['foreground'] = kw.pop('foreground', ttk.Style().lookup('TLabel', 'foreground'))
|
||||
kw['background'] = kw.pop('background', ttk.Style().lookup('TLabel', 'background'))
|
||||
tk.Label.__init__(self, master, **kw) # Just use tk.Label on all platforms
|
||||
kw['foreground'] = kw.pop('foreground', PAGEFG if sys.platform == 'win32'
|
||||
else ttk.Style().lookup('TLabel', 'foreground'))
|
||||
kw['background'] = kw.pop('background', PAGEBG if sys.platform == 'win32'
|
||||
else ttk.Style().lookup('TLabel', 'background'))
|
||||
super().__init__(master, **kw)
|
||||
|
||||
|
||||
class Entry(sys.platform == 'darwin' and tk.Entry or ttk.Entry): # type: ignore
|
||||
class Entry(ttk.Entry): # type: ignore
|
||||
"""Custom t(t)k.Entry class to fix some display issues."""
|
||||
|
||||
# DEPRECATED: Migrate to ttk.Entry. Will remove in 5.12 or later.
|
||||
def __init__(self, master: ttk.Frame | None = None, **kw):
|
||||
ttk.Entry.__init__(self, master, **kw)
|
||||
super().__init__(master, **kw)
|
||||
|
||||
|
||||
class Button(sys.platform == 'darwin' and tk.Button or ttk.Button): # type: ignore
|
||||
class Button(tk.Button or ttk.Button): # type: ignore
|
||||
"""Custom t(t)k.Button class to fix some display issues."""
|
||||
|
||||
# DEPRECATED: Migrate to ttk.Button. Will remove in 5.12 or later.
|
||||
def __init__(self, master: ttk.Frame | None = None, **kw):
|
||||
if sys.platform == 'win32':
|
||||
ttk.Button.__init__(self, master, style='nb.TButton', **kw)
|
||||
@ -87,47 +76,39 @@ class Button(sys.platform == 'darwin' and tk.Button or ttk.Button): # type: ign
|
||||
ttk.Button.__init__(self, master, **kw)
|
||||
|
||||
|
||||
class ColoredButton(sys.platform == 'darwin' and tk.Label or tk.Button): # type: ignore
|
||||
class ColoredButton(tk.Label or tk.Button): # type: ignore
|
||||
"""Custom t(t)k.ColoredButton class to fix some display issues."""
|
||||
|
||||
# DEPRECATED: Migrate to tk.Button. Will remove in 5.12 or later.
|
||||
def __init__(self, master: ttk.Frame | None = None, **kw):
|
||||
tk.Button.__init__(self, master, **kw)
|
||||
|
||||
|
||||
class Checkbutton(sys.platform == 'darwin' and tk.Checkbutton or ttk.Checkbutton): # type: ignore
|
||||
class Checkbutton(ttk.Checkbutton):
|
||||
"""Custom t(t)k.Checkbutton class to fix some display issues."""
|
||||
|
||||
def __init__(self, master: ttk.Frame | None = None, **kw):
|
||||
if sys.platform == 'win32':
|
||||
ttk.Checkbutton.__init__(self, master, style='nb.TCheckbutton', **kw)
|
||||
else:
|
||||
ttk.Checkbutton.__init__(self, master, **kw)
|
||||
def __init__(self, master=None, **kw):
|
||||
style = 'nb.TCheckbutton' if sys.platform == 'win32' else None
|
||||
super().__init__(master, style=style, **kw) # type: ignore
|
||||
|
||||
|
||||
class Radiobutton(sys.platform == 'darwin' and tk.Radiobutton or ttk.Radiobutton): # type: ignore
|
||||
class Radiobutton(ttk.Radiobutton):
|
||||
"""Custom t(t)k.Radiobutton class to fix some display issues."""
|
||||
|
||||
def __init__(self, master: ttk.Frame | None = None, **kw):
|
||||
if sys.platform == 'win32':
|
||||
ttk.Radiobutton.__init__(self, master, style='nb.TRadiobutton', **kw)
|
||||
else:
|
||||
ttk.Radiobutton.__init__(self, master, **kw)
|
||||
style = 'nb.TRadiobutton' if sys.platform == 'win32' else None
|
||||
super().__init__(master, style=style, **kw) # type: ignore
|
||||
|
||||
|
||||
class OptionMenu(sys.platform == 'darwin' and tk.OptionMenu or ttk.OptionMenu): # type: ignore
|
||||
"""Custom t(t)k.OptionMenu class to fix some display issues."""
|
||||
class OptionMenu(ttk.OptionMenu):
|
||||
"""Custom ttk.OptionMenu class to fix some display issues."""
|
||||
|
||||
def __init__(self, master, variable, default=None, *values, **kw):
|
||||
if sys.platform == 'win32':
|
||||
# OptionMenu derives from Menubutton at the Python level, so uses Menubutton's style
|
||||
ttk.OptionMenu.__init__(self, master, variable, default, *values, style='nb.TMenubutton', **kw)
|
||||
self['menu'].configure(background=PAGEBG)
|
||||
# Workaround for https://bugs.python.org/issue25684
|
||||
for i in range(0, self['menu'].index('end')+1):
|
||||
self['menu'].entryconfig(i, variable=variable)
|
||||
else:
|
||||
ttk.OptionMenu.__init__(self, master, variable, default, *values, **kw)
|
||||
self['menu'].configure(background=ttk.Style().lookup('TMenu', 'background'))
|
||||
# Workaround for https://bugs.python.org/issue25684
|
||||
for i in range(0, self['menu'].index('end')+1):
|
||||
self['menu'].entryconfig(i, variable=variable)
|
||||
style = 'nb.TMenubutton' if sys.platform == 'win32' else ttk.Style().lookup('TMenu', 'background')
|
||||
menu_background = PAGEBG if sys.platform == 'win32' else ttk.Style().lookup('TMenu', 'background')
|
||||
|
||||
super().__init__(master, variable, default, *values, style=style, **kw)
|
||||
self['menu'].configure(background=menu_background)
|
||||
|
||||
for i in range(self['menu'].index('end') + 1):
|
||||
self['menu'].entryconfig(i, variable=variable)
|
||||
|
@ -106,12 +106,12 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str | None, is_beta: bool) -> tk.Fr
|
||||
|
||||
# LANG: Settings>Coriolis: Label for 'NOT alpha/beta game version' URL
|
||||
nb.Label(conf_frame, text=_('Normal URL')).grid(sticky=tk.W, row=cur_row, column=0, padx=PADX, pady=PADY)
|
||||
nb.Entry(conf_frame,
|
||||
ttk.Entry(conf_frame,
|
||||
textvariable=coriolis_config.normal_textvar).grid(
|
||||
sticky=tk.EW, row=cur_row, column=1, padx=PADX, pady=BOXY
|
||||
)
|
||||
# LANG: Generic 'Reset' button label
|
||||
nb.Button(conf_frame, text=_("Reset"),
|
||||
ttk.Button(conf_frame, text=_("Reset"),
|
||||
command=lambda: coriolis_config.normal_textvar.set(value=DEFAULT_NORMAL_URL)).grid(
|
||||
sticky=tk.W, row=cur_row, column=2, padx=PADX, pady=0
|
||||
)
|
||||
@ -119,11 +119,11 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str | None, is_beta: bool) -> tk.Fr
|
||||
|
||||
# LANG: Settings>Coriolis: Label for 'alpha/beta game version' URL
|
||||
nb.Label(conf_frame, text=_('Beta URL')).grid(sticky=tk.W, row=cur_row, column=0, padx=PADX, pady=PADY)
|
||||
nb.Entry(conf_frame, textvariable=coriolis_config.beta_textvar).grid(
|
||||
ttk.Entry(conf_frame, textvariable=coriolis_config.beta_textvar).grid(
|
||||
sticky=tk.EW, row=cur_row, column=1, padx=PADX, pady=BOXY
|
||||
)
|
||||
# LANG: Generic 'Reset' button label
|
||||
nb.Button(conf_frame, text=_('Reset'),
|
||||
ttk.Button(conf_frame, text=_('Reset'),
|
||||
command=lambda: coriolis_config.beta_textvar.set(value=DEFAULT_BETA_URL)).grid(
|
||||
sticky=tk.W, row=cur_row, column=2, padx=PADX, pady=0
|
||||
)
|
||||
|
@ -113,10 +113,10 @@ class This:
|
||||
self.cmdr_text: nb.Label | None = None
|
||||
|
||||
self.user_label: nb.Label | None = None
|
||||
self.user: nb.Entry | None = None
|
||||
self.user: ttk.Entry | None = None
|
||||
|
||||
self.apikey_label: nb.Label | None = None
|
||||
self.apikey: nb.Entry | None = None
|
||||
self.apikey: ttk.Entry | None = None
|
||||
|
||||
|
||||
this = This()
|
||||
@ -345,14 +345,14 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str | None, is_beta: bool) -> tk.Fr
|
||||
# LANG: EDSM Commander name label in EDSM settings
|
||||
this.user_label = nb.Label(frame, text=_('Commander Name'))
|
||||
this.user_label.grid(row=cur_row, padx=PADX, pady=PADY, sticky=tk.W)
|
||||
this.user = nb.Entry(frame)
|
||||
this.user = ttk.Entry(frame)
|
||||
this.user.grid(row=cur_row, column=1, padx=PADX, pady=BOXY, sticky=tk.EW)
|
||||
|
||||
cur_row += 1
|
||||
# LANG: EDSM API key label
|
||||
this.apikey_label = nb.Label(frame, text=_('API Key'))
|
||||
this.apikey_label.grid(row=cur_row, padx=PADX, pady=PADY, sticky=tk.W)
|
||||
this.apikey = nb.Entry(frame, show="*", width=50)
|
||||
this.apikey = ttk.Entry(frame, show="*", width=50)
|
||||
this.apikey.grid(row=cur_row, column=1, padx=PADX, pady=BOXY, sticky=tk.EW)
|
||||
cur_row += 1
|
||||
|
||||
|
@ -125,7 +125,7 @@ class This:
|
||||
self.log: 'tk.IntVar'
|
||||
self.log_button: nb.Checkbutton
|
||||
self.label: HyperlinkLabel
|
||||
self.apikey: nb.Entry
|
||||
self.apikey: ttk.Entry
|
||||
self.apikey_label: tk.Label
|
||||
|
||||
self.events: dict[Credentials, Deque[Event]] = defaultdict(deque)
|
||||
@ -292,7 +292,7 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str, is_beta: bool) -> tk.Frame:
|
||||
# LANG: Inara API key label
|
||||
this.apikey_label = nb.Label(frame, text=_('API Key')) # Inara setting
|
||||
this.apikey_label.grid(row=cur_row, padx=PADX, pady=PADY, sticky=tk.W)
|
||||
this.apikey = nb.Entry(frame, show="*", width=50)
|
||||
this.apikey = ttk.Entry(frame, show="*", width=50)
|
||||
this.apikey.grid(row=cur_row, column=1, padx=PADX, pady=BOXY, sticky=tk.EW)
|
||||
cur_row += 1
|
||||
|
||||
|
22
prefs.py
22
prefs.py
@ -361,12 +361,12 @@ class PreferencesDialog(tk.Toplevel):
|
||||
# Type ignored due to incorrect type annotation. a 2 tuple does padding for each side
|
||||
self.outdir_label.grid(padx=self.PADX, pady=self.PADY, sticky=tk.W, row=row.get()) # type: ignore
|
||||
|
||||
self.outdir_entry = nb.Entry(output_frame, takefocus=False)
|
||||
self.outdir_entry = ttk.Entry(output_frame, takefocus=False)
|
||||
self.outdir_entry.grid(columnspan=2, padx=self.PADX, pady=self.BOXY, sticky=tk.EW, row=row.get())
|
||||
|
||||
text = (_('Browse...')) # LANG: NOT-macOS Settings - files location selection button
|
||||
|
||||
self.outbutton = nb.Button(
|
||||
self.outbutton = ttk.Button(
|
||||
output_frame,
|
||||
text=text,
|
||||
# Technically this is different from the label in Settings > Output, as *this* is used
|
||||
@ -399,7 +399,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
logdir = default
|
||||
|
||||
self.logdir.set(logdir)
|
||||
self.logdir_entry = nb.Entry(config_frame, takefocus=False)
|
||||
self.logdir_entry = ttk.Entry(config_frame, takefocus=False)
|
||||
|
||||
# Location of the Journal files
|
||||
nb.Label(
|
||||
@ -413,7 +413,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
text = (_('Browse...')) # LANG: NOT-macOS Setting - files location selection button
|
||||
|
||||
with row as cur_row:
|
||||
self.logbutton = nb.Button(
|
||||
self.logbutton = ttk.Button(
|
||||
config_frame,
|
||||
text=text,
|
||||
# LANG: Settings > Configuration - Label for Journal files location
|
||||
@ -423,7 +423,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
|
||||
if config.default_journal_dir_path:
|
||||
# Appearance theme and language setting
|
||||
nb.Button(
|
||||
ttk.Button(
|
||||
config_frame,
|
||||
# LANG: Settings > Configuration - Label on 'reset journal files location to default' button
|
||||
text=_('Default'),
|
||||
@ -465,7 +465,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
text=_('Hotkey') # LANG: Hotkey/Shortcut settings prompt on Windows
|
||||
).grid(padx=self.PADX, pady=self.PADY, sticky=tk.W, row=cur_row)
|
||||
|
||||
self.hotkey_text = nb.Entry(config_frame, width=30, justify=tk.CENTER)
|
||||
self.hotkey_text = ttk.Entry(config_frame, width=30, justify=tk.CENTER)
|
||||
self.hotkey_text.insert(
|
||||
0,
|
||||
# No hotkey/shortcut currently defined
|
||||
@ -623,7 +623,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
self.loglevel_dropdown.configure(width=15)
|
||||
self.loglevel_dropdown.grid(column=1, pady=self.BOXY, sticky=tk.W, row=cur_row)
|
||||
|
||||
nb.Button(
|
||||
ttk.Button(
|
||||
config_frame,
|
||||
# LANG: Label on button used to open a filesystem folder
|
||||
text=_('Open Log Folder'), # Button that opens a folder in Explorer/Finder
|
||||
@ -726,7 +726,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
self.theme_label_0.grid(padx=self.PADX, pady=self.PADY, sticky=tk.W, row=cur_row)
|
||||
|
||||
# Main window
|
||||
self.theme_button_0 = nb.ColoredButton(
|
||||
self.theme_button_0 = tk.Button(
|
||||
appearance_frame,
|
||||
# LANG: Appearance - Example 'Normal' text
|
||||
text=_('Station'),
|
||||
@ -739,7 +739,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
with row as cur_row:
|
||||
self.theme_label_1 = nb.Label(appearance_frame, text=self.theme_prompts[1])
|
||||
self.theme_label_1.grid(padx=self.PADX, pady=self.PADY, sticky=tk.W, row=cur_row)
|
||||
self.theme_button_1 = nb.ColoredButton(
|
||||
self.theme_button_1 = tk.Button(
|
||||
appearance_frame,
|
||||
text=' Hutton Orbital ', # Do not translate
|
||||
background='grey4',
|
||||
@ -870,7 +870,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
padx=self.PADX, pady=self.PADY, sticky=tk.W, row=row.get()
|
||||
)
|
||||
|
||||
plugdirentry = nb.Entry(plugins_frame, justify=tk.LEFT)
|
||||
plugdirentry = ttk.Entry(plugins_frame, justify=tk.LEFT)
|
||||
self.displaypath(plugdir, plugdirentry)
|
||||
plugdirentry.grid(columnspan=2, padx=self.PADX, pady=self.BOXY, sticky=tk.EW, row=row.get())
|
||||
|
||||
@ -882,7 +882,7 @@ class PreferencesDialog(tk.Toplevel):
|
||||
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=self.PADY, sticky=tk.EW, row=cur_row)
|
||||
|
||||
nb.Button(
|
||||
ttk.Button(
|
||||
plugins_frame,
|
||||
# LANG: Label on button used to open a filesystem folder
|
||||
text=_('Open'), # Button that opens a folder in Explorer/Finder
|
||||
|
Loading…
x
Reference in New Issue
Block a user