Skip to content

Commit ee72916

Browse files
committed
toggle sidebar
1 parent d0a20c8 commit ee72916

File tree

2 files changed

+42
-13
lines changed

2 files changed

+42
-13
lines changed

arduino_logique.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44
simulating logic circuits using Tkinter. It includes functionality to initialize a canvas,
55
draw a breadboard, etc.
66
"""
7-
7+
import os
88
from pathlib import Path
99
import tkinter as tk
10-
from tkinter import font
1110
from breadboard import Breadboard
1211
from component_sketch import ComponentSketcher
1312
from menus import Menus
1413
from sidebar import Sidebar
1514
from toolbar import Toolbar
1615
from utils import resource_path
1716

17+
if os.name == "darwin" or os.name == "posix":
18+
from tkinter import font
19+
from tkmacosx import Button # type: ignore
20+
else:
21+
from tkinter import Button, font
1822

1923
def main():
2024
"""
@@ -69,6 +73,22 @@ def main():
6973
toolbar=toolbar,
7074
)
7175

76+
def toggle_sidebar():
77+
sidebar.toggle_sidebar()
78+
if sidebar.is_sidebar_visible:
79+
toggle_sidebar_btn.config(text="<<")
80+
else:
81+
toggle_sidebar_btn.config(text=">>")
82+
83+
toggle_sidebar_btn = Button(
84+
win,
85+
text="<<",
86+
command=toggle_sidebar,
87+
bg="#333333",
88+
fg="#FFFFFF",
89+
)
90+
toggle_sidebar_btn.grid(row=1, column=0, sticky="w")
91+
7292
def refresh_sidebar():
7393
sidebar.refresh()
7494
win.after(5000, refresh_sidebar)

sidebar.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,26 +78,35 @@ def __init__(
7878
self.saved_bindings: dict[str, Callable] = {}
7979

8080
# Creating the sidebar frame
81-
sidebar_frame = tk.Frame(parent, bg="#333333", width=275, bd=0, highlightthickness=0)
82-
sidebar_frame.grid(row=2, column=0, sticky="nsew", padx=0, pady=0)
83-
sidebar_frame.grid_propagate(False) # Preventing frame from resizing
81+
self.sidebar_frame = tk.Frame(parent, bg="#333333", width=275, bd=0, highlightthickness=0)
82+
self.sidebar_frame.grid(row=2, column=0, sticky="nsew", padx=0, pady=0)
83+
self.sidebar_frame.grid_propagate(False) # Preventing frame from resizing
84+
85+
self.is_sidebar_visible = True
8486

8587
# Configuring grid weights for the sidebar
86-
sidebar_frame.grid_rowconfigure(0, weight=0) # Search bar
87-
sidebar_frame.grid_rowconfigure(1, weight=0) # Chips label
88-
sidebar_frame.grid_rowconfigure(2, weight=8) # Chips area (80%)
89-
sidebar_frame.grid_rowconfigure(3, weight=0) # Manage button
90-
sidebar_frame.grid_columnconfigure(0, weight=1)
88+
self.sidebar_frame.grid_rowconfigure(0, weight=0) # Search bar
89+
self.sidebar_frame.grid_rowconfigure(1, weight=0) # Chips label
90+
self.sidebar_frame.grid_rowconfigure(2, weight=8) # Chips area (80%)
91+
self.sidebar_frame.grid_rowconfigure(3, weight=0) # Manage button
92+
self.sidebar_frame.grid_columnconfigure(0, weight=1)
9193

9294
self.sidebar_grid = SidebarGrid(columns=2, visible_rows=12, grid_capacity=24)
9395

9496
# Creating sidebar components
95-
self.create_search_bar(sidebar_frame)
96-
self.create_chips_area(sidebar_frame)
97-
self.create_manage_button(sidebar_frame)
97+
self.create_search_bar(self.sidebar_frame)
98+
self.create_chips_area(self.sidebar_frame)
99+
self.create_manage_button(self.sidebar_frame)
98100

99101
self.chip_files_mtimes = get_chip_modification_times()
100102

103+
def toggle_sidebar(self):
104+
if self.is_sidebar_visible:
105+
self.sidebar_frame.grid_remove()
106+
else:
107+
self.sidebar_frame.grid()
108+
self.is_sidebar_visible = not self.is_sidebar_visible
109+
101110
def initialize_chip_data(self, current_dict_circuit, chip_images_path) -> None:
102111
"""
103112
Initializes the chip data for the sidebar.

0 commit comments

Comments
 (0)