commit 37
This commit is contained in:
Binary file not shown.
@@ -1,4 +1,3 @@
|
||||
|
||||
""" Classes Method and Functions for lx Apps """
|
||||
|
||||
import logging
|
||||
@@ -327,7 +326,8 @@ class ConfigManager:
|
||||
"""Load the config file and return the config as dict"""
|
||||
if not cls._config:
|
||||
try:
|
||||
lines = Path(cls._config_file).read_text(encoding="utf-8").splitlines()
|
||||
lines = Path(cls._config_file).read_text(
|
||||
encoding="utf-8").splitlines()
|
||||
cls._config = {
|
||||
"updates": lines[1].strip(),
|
||||
"theme": lines[3].strip(),
|
||||
@@ -406,21 +406,38 @@ class ThemeManager:
|
||||
|
||||
|
||||
class Tooltip:
|
||||
def __init__(self, widget, text, wraplength=250):
|
||||
def __init__(self, widget, text, wraplength=250, state_var=None):
|
||||
self.widget = widget
|
||||
self.text = text
|
||||
self.wraplength = wraplength
|
||||
self.state_var = state_var
|
||||
self.tooltip_window = None
|
||||
self.id = None
|
||||
self.update_bindings()
|
||||
if self.state_var:
|
||||
self.state_var.trace_add("write", self.update_bindings)
|
||||
|
||||
def update_bindings(self, *args):
|
||||
self.widget.unbind("<Enter>")
|
||||
self.widget.unbind("<Leave>")
|
||||
self.widget.unbind("<ButtonPress>")
|
||||
|
||||
if self.state_var is None or self.state_var.get():
|
||||
self.widget.bind("<Enter>", self.enter)
|
||||
self.widget.bind("<Leave>", self.leave)
|
||||
self.widget.bind("<ButtonPress>", self.leave)
|
||||
|
||||
def enter(self, event=None): self.schedule()
|
||||
def leave(self, event=None): self.unschedule(); self.hide_tooltip()
|
||||
def enter(self, event=None):
|
||||
if self.state_var is None or self.state_var.get():
|
||||
self.schedule()
|
||||
|
||||
def schedule(self): self.unschedule(
|
||||
); self.id = self.widget.after(250, self.show_tooltip)
|
||||
def leave(self, event=None):
|
||||
self.unschedule()
|
||||
self.hide_tooltip()
|
||||
|
||||
def schedule(self):
|
||||
self.unschedule()
|
||||
self.id = self.widget.after(250, self.show_tooltip)
|
||||
|
||||
def unschedule(self):
|
||||
id = self.id
|
||||
@@ -429,12 +446,14 @@ class Tooltip:
|
||||
self.widget.after_cancel(id)
|
||||
|
||||
def show_tooltip(self, event=None):
|
||||
if self.tooltip_window or not self.text:
|
||||
return
|
||||
x, y, _, _ = self.widget.bbox("insert")
|
||||
x += self.widget.winfo_rootx() + 25
|
||||
y += self.widget.winfo_rooty() + 20
|
||||
self.tooltip_window = tw = tk.Toplevel(self.widget)
|
||||
tw.wm_overrideredirect(True)
|
||||
tw.wm_geometry(f"+{x}+{y}")
|
||||
tw.wm_geometry(f"+" + str(x) + "+" + str(y))
|
||||
label = ttk.Label(tw, text=self.text, justify=tk.LEFT, background="#FFFFE0", foreground="black",
|
||||
relief=tk.SOLID, borderwidth=1, wraplength=self.wraplength, padding=(4, 2, 4, 2))
|
||||
label.pack(ipadx=1)
|
||||
@@ -455,17 +474,17 @@ class LogConfig:
|
||||
mode="a",
|
||||
encoding="utf-8",
|
||||
)
|
||||
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
|
||||
formatter = logging.Formatter(
|
||||
"%(asctime)s - %(levelname)s - %(message)s")
|
||||
file_handler.setFormatter(formatter)
|
||||
file_handler.setLevel(logging.DEBUG)
|
||||
|
||||
logger = logging.getLogger()
|
||||
logger.addHandler(file_handler)
|
||||
|
||||
import os
|
||||
|
||||
class IconManager:
|
||||
def __init__(self, base_path='/usr/share/icons/lx-icons'):
|
||||
def __init__(self, base_path='/usr/share/icons/lx-icons/'):
|
||||
self.base_path = base_path
|
||||
self.icons = {}
|
||||
self._define_icon_paths()
|
||||
@@ -615,7 +634,13 @@ class IconManager:
|
||||
except tk.TclError as e:
|
||||
print(f"Error loading icon '{key}' from '{full_path}': {e}")
|
||||
size = 32 # Default size
|
||||
if '16' in rel_path: size = 16
|
||||
elif '48' in rel_path: size = 48
|
||||
elif '64' in rel_path: size = 64
|
||||
if '16' in rel_path:
|
||||
size = 16
|
||||
elif '48' in rel_path:
|
||||
size = 48
|
||||
elif '64' in rel_path:
|
||||
size = 64
|
||||
self.icons[key] = tk.PhotoImage(width=size, height=size)
|
||||
|
||||
def get_icon(self, name):
|
||||
return self.icons.get(name)
|
Reference in New Issue
Block a user