created FontManager and restructured __init__.py

This commit is contained in:
Tom Schimansky
2022-05-17 21:44:59 +02:00
parent eec16e4509
commit afe44f4ff7
23 changed files with 436 additions and 430 deletions

View File

@ -7,7 +7,7 @@ from ..widgets.ctk_frame import CTkFrame
from ..windows.ctk_toplevel import CTkToplevel
from ..widgets.ctk_button import CTkButton
from ..appearance_mode_tracker import AppearanceModeTracker
from ..ctk_theme_manager import CTkThemeManager
from ..theme_manager import ThemeManager
class CTkInputDialog:
@ -27,10 +27,10 @@ class CTkInputDialog:
self.height = len(text.split("\n"))*20 + 150
self.window_bg_color = CTkThemeManager.theme["color"]["window_bg_color"]
self.fg_color = CTkThemeManager.theme["color"]["button"] if fg_color == "default_theme" else fg_color
self.hover_color = CTkThemeManager.theme["color"]["button_hover"] if hover_color == "default_theme" else hover_color
self.border_color = CTkThemeManager.theme["color"]["button_hover"] if border_color == "default_theme" else border_color
self.window_bg_color = ThemeManager.theme["color"]["window_bg_color"]
self.fg_color = ThemeManager.theme["color"]["button"] if fg_color == "default_theme" else fg_color
self.hover_color = ThemeManager.theme["color"]["button_hover"] if hover_color == "default_theme" else hover_color
self.border_color = ThemeManager.theme["color"]["button_hover"] if border_color == "default_theme" else border_color
self.top = CTkToplevel()
self.top.geometry(f"{280}x{self.height}")

View File

@ -8,9 +8,9 @@ import re
from typing import Union, Tuple
from ..appearance_mode_tracker import AppearanceModeTracker
from ..ctk_theme_manager import CTkThemeManager
from ..theme_manager import ThemeManager
from ..scaling_tracker import ScalingTracker
from ..ctk_settings import CTkSettings
from ..settings import Settings
class CTk(tkinter.Tk):
@ -39,7 +39,7 @@ class CTk(tkinter.Tk):
self.max_height: int = 1_000_000
self.last_resizable_args: Union[Tuple[list, dict], None] = None # (args, kwargs)
self.fg_color = CTkThemeManager.theme["color"]["window_bg_color"] if fg_color == "default_theme" else fg_color
self.fg_color = ThemeManager.theme["color"]["window_bg_color"] if fg_color == "default_theme" else fg_color
if "bg" in kwargs:
self.fg_color = kwargs["bg"]
@ -48,7 +48,7 @@ class CTk(tkinter.Tk):
self.fg_color = kwargs["background"]
del kwargs["background"]
super().configure(bg=CTkThemeManager.single_color(self.fg_color, self.appearance_mode))
super().configure(bg=ThemeManager.single_color(self.fg_color, self.appearance_mode))
super().title("CTk")
self.geometry(f"{self.current_width}x{self.current_height}")
@ -171,14 +171,14 @@ class CTk(tkinter.Tk):
if "bg" in kwargs:
self.fg_color = kwargs["bg"]
bg_changed = True
kwargs["bg"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
kwargs["bg"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
elif "background" in kwargs:
self.fg_color = kwargs["background"]
bg_changed = True
kwargs["background"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
kwargs["background"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
elif "fg_color" in kwargs:
self.fg_color = kwargs["fg_color"]
kwargs["bg"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
kwargs["bg"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
del kwargs["fg_color"]
bg_changed = True
@ -186,11 +186,11 @@ class CTk(tkinter.Tk):
if "bg" in args[0]:
self.fg_color=args[0]["bg"]
bg_changed = True
args[0]["bg"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
args[0]["bg"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
elif "background" in args[0]:
self.fg_color=args[0]["background"]
bg_changed = True
args[0]["background"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
args[0]["background"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
if bg_changed:
from ..widgets.widget_base_class import CTkBaseClass
@ -203,7 +203,7 @@ class CTk(tkinter.Tk):
@staticmethod
def enable_macos_dark_title_bar():
if sys.platform == "darwin" and not CTkSettings.deactivate_macos_window_header_manipulation: # macOS
if sys.platform == "darwin" and not Settings.deactivate_macos_window_header_manipulation: # macOS
if Version(platform.python_version()) < Version("3.10"):
if Version(tkinter.Tcl().call("info", "patchlevel")) >= Version("8.6.9"): # Tcl/Tk >= 8.6.9
os.system("defaults write -g NSRequiresAquaSystemAppearance -bool No")
@ -211,7 +211,7 @@ class CTk(tkinter.Tk):
@staticmethod
def disable_macos_dark_title_bar():
if sys.platform == "darwin" and not CTkSettings.deactivate_macos_window_header_manipulation: # macOS
if sys.platform == "darwin" and not Settings.deactivate_macos_window_header_manipulation: # macOS
if Version(platform.python_version()) < Version("3.10"):
if Version(tkinter.Tcl().call("info", "patchlevel")) >= Version("8.6.9"): # Tcl/Tk >= 8.6.9
os.system("defaults delete -g NSRequiresAquaSystemAppearance")
@ -228,7 +228,7 @@ class CTk(tkinter.Tk):
https://docs.microsoft.com/en-us/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute
"""
if sys.platform.startswith("win") and not CTkSettings.deactivate_windows_window_header_manipulation:
if sys.platform.startswith("win") and not Settings.deactivate_windows_window_header_manipulation:
super().withdraw() # hide window so that it can be redrawn after the titlebar change so that the color change is visible
if not self.window_exists:
@ -274,4 +274,4 @@ class CTk(tkinter.Tk):
else:
self.windows_set_titlebar_color("light")
super().configure(bg=CTkThemeManager.single_color(self.fg_color, self.appearance_mode))
super().configure(bg=ThemeManager.single_color(self.fg_color, self.appearance_mode))

View File

@ -8,8 +8,8 @@ import re
from typing import Union, Tuple
from ..appearance_mode_tracker import AppearanceModeTracker
from ..ctk_theme_manager import CTkThemeManager
from ..ctk_settings import CTkSettings
from ..theme_manager import ThemeManager
from ..settings import Settings
from ..scaling_tracker import ScalingTracker
@ -34,7 +34,7 @@ class CTkToplevel(tkinter.Toplevel):
self.max_height: int = 1_000_000
self.last_resizable_args: Union[Tuple[list, dict], None] = None # (args, kwargs)
self.fg_color = CTkThemeManager.theme["color"]["window_bg_color"] if fg_color == "default_theme" else fg_color
self.fg_color = ThemeManager.theme["color"]["window_bg_color"] if fg_color == "default_theme" else fg_color
if "bg" in kwargs:
self.fg_color = kwargs["bg"]
@ -45,7 +45,7 @@ class CTkToplevel(tkinter.Toplevel):
# add set_appearance_mode method to callback list of AppearanceModeTracker for appearance mode changes
AppearanceModeTracker.add(self.set_appearance_mode, self)
super().configure(bg=CTkThemeManager.single_color(self.fg_color, self.appearance_mode))
super().configure(bg=ThemeManager.single_color(self.fg_color, self.appearance_mode))
super().title("CTkToplevel")
if sys.platform.startswith("win"):
@ -151,14 +151,14 @@ class CTkToplevel(tkinter.Toplevel):
if "bg" in kwargs:
self.fg_color = kwargs["bg"]
bg_changed = True
kwargs["bg"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
kwargs["bg"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
elif "background" in kwargs:
self.fg_color = kwargs["background"]
bg_changed = True
kwargs["background"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
kwargs["background"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
elif "fg_color" in kwargs:
self.fg_color = kwargs["fg_color"]
kwargs["bg"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
kwargs["bg"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
del kwargs["fg_color"]
bg_changed = True
@ -166,11 +166,11 @@ class CTkToplevel(tkinter.Toplevel):
if "bg" in args[0]:
self.fg_color=args[0]["bg"]
bg_changed = True
args[0]["bg"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
args[0]["bg"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
elif "background" in args[0]:
self.fg_color=args[0]["background"]
bg_changed = True
args[0]["background"] = CTkThemeManager.single_color(self.fg_color, self.appearance_mode)
args[0]["background"] = ThemeManager.single_color(self.fg_color, self.appearance_mode)
if bg_changed:
from ..widgets.widget_base_class import CTkBaseClass
@ -183,14 +183,14 @@ class CTkToplevel(tkinter.Toplevel):
@staticmethod
def enable_macos_dark_title_bar():
if sys.platform == "darwin" and not CTkSettings.deactivate_macos_window_header_manipulation: # macOS
if sys.platform == "darwin" and not Settings.deactivate_macos_window_header_manipulation: # macOS
if Version(platform.python_version()) < Version("3.10"):
if Version(tkinter.Tcl().call("info", "patchlevel")) >= Version("8.6.9"): # Tcl/Tk >= 8.6.9
os.system("defaults write -g NSRequiresAquaSystemAppearance -bool No")
@staticmethod
def disable_macos_dark_title_bar():
if sys.platform == "darwin" and not CTkSettings.deactivate_macos_window_header_manipulation: # macOS
if sys.platform == "darwin" and not Settings.deactivate_macos_window_header_manipulation: # macOS
if Version(platform.python_version()) < Version("3.10"):
if Version(tkinter.Tcl().call("info", "patchlevel")) >= Version("8.6.9"): # Tcl/Tk >= 8.6.9
os.system("defaults delete -g NSRequiresAquaSystemAppearance")
@ -207,7 +207,7 @@ class CTkToplevel(tkinter.Toplevel):
https://docs.microsoft.com/en-us/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute
"""
if sys.platform.startswith("win") and not CTkSettings.deactivate_windows_window_header_manipulation:
if sys.platform.startswith("win") and not Settings.deactivate_windows_window_header_manipulation:
super().withdraw() # hide window so that it can be redrawn after the titlebar change so that the color change is visible
super().update()
@ -250,4 +250,4 @@ class CTkToplevel(tkinter.Toplevel):
else:
self.windows_set_titlebar_color("light")
super().configure(bg=CTkThemeManager.single_color(self.fg_color, self.appearance_mode))
super().configure(bg=ThemeManager.single_color(self.fg_color, self.appearance_mode))