Untitled
unknown
plain_text
a year ago
6.8 kB
5
Indexable
def create_waste_circles(parent, dark_mode, language='EN'):
bins = load_bin_config()
circles = []
for bin_id, bin_data in bins.items():
container = ctk.CTkFrame(parent, fg_color='transparent')
container.pack(side='left', padx=15)
# Get translated name if available
display_name = bin_data['name']
if 'default_translation' in bin_data:
display_name = bin_data['default_translation'].get(language, bin_data['name'])
progress = CircularProgress(
container,
size=220,
label=display_name,
circle_color=bin_data['circle_color'],
circle_color_dark=bin_data['circle_color_dark']
)
progress.pack()
progress.set_dark_mode(dark_mode)
progress.waste_id = bin_id
circles.append(progress)
return circles
# Update ResetFillLevelsScreen
def modify_reset_screen():
def create_reset_circles(self):
bins = load_bin_config()
self.circle_widgets = []
for bin_id, bin_data in bins.items():
container = ctk.CTkFrame(self.padding_frame, fg_color=self.bg_color)
container.pack(side='left', padx=15)
# Get translated name if available
display_name = bin_data['name']
if 'default_translation' in bin_data:
display_name = bin_data['default_translation'].get(self.language, bin_data['name'])
progress = ResetCircleButton(
container,
size=220,
label=display_name,
circle_color=bin_data['circle_color'],
circle_color_dark=bin_data['circle_color_dark'],
command=lambda bid=bin_id: self._reset_fill_level(bid)
)
progress.pack()
progress.set_dark_mode(self.dark_mode)
progress.waste_id = bin_id
self.circle_widgets.append(progress)
# Set current fill level
levels = load_fill_levels()
if bin_id in levels:
progress.set_fill_level(levels[bin_id])
ResetFillLevelsScreen.create_reset_circles = create_reset_circles
# Update SettingsMenu to include bin configuration
def add_bin_configuration_to_settings():
def create_bin_config_section(self):
# Add bin configuration section to settings menu
self.create_separator(self.scrollable_frame)
self.create_section_title(
self.scrollable_frame,
"Bin Configuration"
)
# Add button to open bin configuration
config_button = ctk.CTkButton(
self.scrollable_frame,
text="Configure Bins",
command=self.open_bin_config,
font=("Dongle", 16),
fg_color='#2c2c2e' if self.dark_mode else '#e5e5e7',
hover_color='#3a3a3c' if self.dark_mode else '#d1d1d6',
text_color='white' if self.dark_mode else 'black'
)
config_button.pack(pady=(10, 0), padx=20, anchor='w')
def open_bin_config(self):
BinConfigurationScreen(
self.winfo_toplevel(),
self.dark_mode,
self.winfo_toplevel().LANGUAGE
)
SettingsMenu.create_bin_config_section = create_bin_config_section
SettingsMenu.open_bin_config = open_bin_config
# Add new BinConfigurationScreen class
class BinConfigurationScreen(ctk.CTkToplevel):
def __init__(self, parent, dark_mode: bool, language='EN'):
super().__init__(parent)
self.dark_mode = dark_mode
self.language = language
# Make it fullscreen
self.overrideredirect(True)
self.geometry(f"{self.winfo_screenwidth()}x{self.winfo_screenheight()}+0+0")
self.protocol("WM_DELETE_WINDOW", lambda: None)
self.attributes('-topmost', True)
# Set colors
self.bg_color = '#1c1c1e' if dark_mode else '#f5f5f7'
self.configure(fg_color=self.bg_color)
self.create_widgets()
def create_widgets(self):
# Create scrollable frame for bin configurations
self.scroll_frame = ctk.CTkScrollableFrame(
self,
fg_color=self.bg_color
)
self.scroll_frame.pack(fill='both', expand=True, padx=40, pady=40)
# Load current configuration
self.bins = load_bin_config()
# Create entry fields for each bin
for bin_id, bin_data in self.bins.items():
frame = ctk.CTkFrame(self.scroll_frame, fg_color=self.bg_color)
frame.pack(fill='x', pady=10)
# Bin name entry
ctk.CTkLabel(
frame,
text=f"Bin {bin_id[-1]} Name:",
font=("Dongle", 16)
).pack(side='left', padx=5)
name_var = ctk.StringVar(value=bin_data['name'])
ctk.CTkEntry(
frame,
textvariable=name_var,
width=200
).pack(side='left', padx=5)
# Color picker buttons
ctk.CTkButton(
frame,
text="Light Color",
command=lambda bid=bin_id: self.pick_color(bid, 'circle_color')
).pack(side='left', padx=5)
ctk.CTkButton(
frame,
text="Dark Color",
command=lambda bid=bin_id: self.pick_color(bid, 'circle_color_dark')
).pack(side='left', padx=5)
# Save and cancel buttons
button_frame = ctk.CTkFrame(self.scroll_frame, fg_color=self.bg_color)
button_frame.pack(fill='x', pady=20)
ctk.CTkButton(
button_frame,
text="Save",
command=self.save_configuration
).pack(side='left', padx=5)
ctk.CTkButton(
button_frame,
text="Cancel",
command=self.destroy
).pack(side='left', padx=5)
def pick_color(self, bin_id, color_key):
# Implement color picker dialog
# For now, just use a predefined color
self.bins[bin_id][color_key] = "#ff0000"
def save_configuration(self):
# Update bin configuration
save_bin_config(self.bins)
# Migrate fill levels if needed
migrate_fill_levels()
# Refresh main UI
self.master.reload_ui()
self.destroy()Editor is loading...
Leave a Comment