Skip to content

Commit e41ead4

Browse files
committed
Merge branch 'master' of github.com:Team-Arduino-Logique/Arduino-Logique into battery-implementation
2 parents 5e685d9 + 76c193b commit e41ead4

File tree

13 files changed

+472
-216
lines changed

13 files changed

+472
-216
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
name: Build and Release
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
branches:
9+
- master
10+
11+
jobs:
12+
build-macos:
13+
runs-on: macos-latest
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Set up Python
19+
uses: actions/setup-python@v5
20+
with:
21+
python-version: '3.x'
22+
23+
- name: Install PyInstaller
24+
run: pip install pyinstaller pyserial
25+
26+
- name: Build with PyInstaller
27+
run: pyinstaller arduino_logique.spec
28+
29+
- name: Compress the build
30+
run: tar -czvf arduino_logique_macos.tar.gz dist/arduino_logique
31+
32+
- name: Upload artifact
33+
uses: actions/upload-artifact@v3
34+
with:
35+
name: macos-build
36+
path: arduino_logique_macos.tar.gz
37+
38+
build-ubuntu:
39+
runs-on: ubuntu-latest
40+
steps:
41+
- name: Checkout code
42+
uses: actions/checkout@v4
43+
44+
- name: Set up Python
45+
uses: actions/setup-python@v5
46+
with:
47+
python-version: '3.x'
48+
49+
- name: Install PyInstaller
50+
run: pip install pyinstaller pyserial
51+
52+
- name: Build with PyInstaller
53+
run: pyinstaller arduino_logique.spec
54+
55+
- name: Compress the build
56+
run: tar -czvf arduino_logique_ubuntu.tar.gz dist/arduino_logique
57+
58+
- name: Upload artifact
59+
uses: actions/upload-artifact@v3
60+
with:
61+
name: ubuntu-build
62+
path: arduino_logique_ubuntu.tar.gz
63+
64+
build-windows:
65+
runs-on: windows-latest
66+
steps:
67+
- name: Checkout code
68+
uses: actions/checkout@v4
69+
70+
- name: Set up Python
71+
uses: actions/setup-python@v5
72+
with:
73+
python-version: '3.x'
74+
75+
- name: Install PyInstaller
76+
run: pip install pyinstaller pyserial
77+
78+
- name: Build with PyInstaller
79+
run: pyinstaller arduino_logique.spec
80+
81+
- name: Compress the build
82+
run: Compress-Archive -Path dist\arduino_logique -DestinationPath arduino_logique_windows.zip
83+
84+
- name: Upload artifact
85+
uses: actions/upload-artifact@v3
86+
with:
87+
name: windows-build
88+
path: arduino_logique_windows.zip
89+
90+
release:
91+
needs: [build-macos, build-ubuntu, build-windows]
92+
runs-on: ubuntu-latest
93+
permissions:
94+
contents: write
95+
steps:
96+
- name: Checkout code
97+
uses: actions/checkout@v4
98+
with:
99+
fetch-depth: 0
100+
101+
- name: Download macOS build
102+
uses: actions/download-artifact@v3
103+
with:
104+
name: macos-build
105+
path: ./dist/
106+
107+
- name: Download Ubuntu build
108+
uses: actions/download-artifact@v3
109+
with:
110+
name: ubuntu-build
111+
path: ./dist/
112+
113+
- name: Download Windows build
114+
uses: actions/download-artifact@v3
115+
with:
116+
name: windows-build
117+
path: ./dist/
118+
119+
- name: Bump version and push tag
120+
id: bump
121+
uses: anothrNick/github-tag-action@1.36.0
122+
env:
123+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
124+
WITH_V: true
125+
RELEASE_BRANCHES: master
126+
INITIAL_VERSION: v0.0.0
127+
128+
- name: Create release
129+
uses: ncipollo/release-action@v1
130+
with:
131+
artifacts: "./dist/arduino_logique_macos.tar.gz,./dist/arduino_logique_ubuntu.tar.gz,./dist/arduino_logique_windows.zip"
132+
token: ${{ secrets.GITHUB_TOKEN }}
133+
tag: ${{ steps.bump.outputs.new_tag }}

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
__pycache__/
2-
.mypy_cache/
2+
.mypy_cache/
3+
build/
4+
dist/

Assets/Icons/input.png

-43 KB
Loading

Assets/Icons/output.png

-42.7 KB
Loading

arduino_logique.py

Lines changed: 11 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
ArduinoLogique.py
33
Main module for the ArduinoLogique program. This module provides a graphical interface for
44
simulating logic circuits using Tkinter. It includes functionality to initialize a canvas,
5-
draw a breadboard, and zoom in and out on the circuit diagram.
5+
draw a breadboard, etc.
66
"""
77

88
import tkinter as tk
@@ -14,32 +14,6 @@
1414
from toolbar import Toolbar
1515

1616

17-
def zoom(canvas: tk.Canvas, scale: float, sketcher: ComponentSketcher) -> None:
18-
"""
19-
Adjusts the zoom level of the given canvas by scaling the board and updating the scale factor.
20-
21-
Parameters:
22-
- canvas (tk.Canvas): The canvas on which the board is drawn.
23-
- scale (float): The scale factor to apply to the board.
24-
- sketcher (ComponentSketcher): The ComponentSketcher instance used to draw the circuit.
25-
26-
Returns:
27-
- None
28-
"""
29-
# Calculate the scaling factor
30-
new_scale_factor = scale / 10.0
31-
scale_ratio = new_scale_factor / sketcher.scale_factor
32-
33-
# Update the scale factor in the existing ComponentSketcher instance
34-
sketcher.scale_factor = new_scale_factor
35-
36-
# Scale all items on the canvas
37-
canvas.scale("all", 0, 0, scale_ratio, scale_ratio)
38-
39-
# Optionally, you may need to adjust the canvas scroll region or other properties
40-
canvas.configure(scrollregion=canvas.bbox("all"))
41-
42-
4317
def main():
4418
"""
4519
Main function for the ArduinoLogique program. This function initializes the main window,
@@ -48,7 +22,8 @@ def main():
4822
# Creating main window
4923
win = tk.Tk()
5024
win.title("Laboratoire virtuel de circuit logique - GIF-1002")
51-
win.geometry("1600x900") # Initial window size
25+
win.geometry("1400x800") # Initial window size
26+
win.resizable(False, False) # Disabling window resizing
5227
win.configure(bg="#333333") # Setting consistent background color
5328

5429
# Configuring grid layout for the main window
@@ -70,8 +45,6 @@ def main():
7045
board = Breadboard(canvas, sketcher)
7146
board.fill_matrix_1260_pts()
7247

73-
74-
7548
# Creating the toolbar instance
7649
toolbar = Toolbar(parent=win, canvas=canvas, sketcher=sketcher, current_dict_circuit=sketcher.current_dict_circuit)
7750
# Placing the secondary top bar in row=1, column=1 (spanning only the canvas area)
@@ -83,10 +56,9 @@ def main():
8356

8457
# Draw the circuit
8558
board.draw_blank_board_model(50, 10)
86-
8759

8860
# Creating the Sidebar instance after canvas, board, sketcher, component_data are defined
89-
_ = Sidebar(
61+
sidebar = Sidebar(
9062
parent=win,
9163
chip_images_path="Assets/chips",
9264
canvas=canvas,
@@ -95,40 +67,23 @@ def main():
9567
toolbar=toolbar,
9668
)
9769

70+
def refresh_sidebar():
71+
sidebar.refresh()
72+
win.after(5000, refresh_sidebar)
73+
74+
# Start the periodic refresh
75+
refresh_sidebar()
76+
9877
# Creating the Menus instance with proper references
9978
menus = Menus(
10079
parent=win,
10180
canvas=canvas,
10281
board=board,
10382
current_dict_circuit=sketcher.current_dict_circuit,
104-
zoom_function=zoom,
10583
)
10684
# Placing the menu_bar in row=0, spanning both columns
10785
menus.menu_bar.grid(row=0, column=0, columnspan=2, sticky="nsew")
10886

109-
# Assigning the references to menus
110-
menus.zoom_function = zoom
111-
112-
# Creating a slider and placing it in row=3, spanning both columns
113-
h_slider = tk.Scale(
114-
win,
115-
from_=10,
116-
to=30,
117-
orient="horizontal",
118-
command=lambda scale: zoom(canvas, float(scale), sketcher),
119-
bg="#333333",
120-
fg="white",
121-
activebackground="#444444",
122-
troughcolor="#555555",
123-
highlightbackground="#333333",
124-
sliderrelief="flat",
125-
bd=0,
126-
highlightthickness=0,
127-
)
128-
h_slider.set(10) # Setting initial slider value
129-
130-
h_slider.grid(row=3, column=0, columnspan=2, sticky="ew", padx=0, pady=0)
131-
13287
# Setting default font for all widgets
13388
default_font = font.Font(family="Arial", size=10)
13489
win.option_add("*Font", default_font)

arduino_logique.spec

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# -*- mode: python ; coding: utf-8 -*-
2+
3+
4+
a = Analysis(
5+
['arduino_logique.py'],
6+
pathex=[],
7+
binaries=[],
8+
datas=[('Assets', 'Assets'), ('Components', 'Components')],
9+
hiddenimports=[],
10+
hookspath=[],
11+
hooksconfig={},
12+
runtime_hooks=[],
13+
excludes=[],
14+
noarchive=False,
15+
optimize=0,
16+
)
17+
pyz = PYZ(a.pure)
18+
19+
exe = EXE(
20+
pyz,
21+
a.scripts,
22+
[],
23+
exclude_binaries=True,
24+
name='arduino_logique',
25+
debug=False,
26+
bootloader_ignore_signals=False,
27+
strip=False,
28+
upx=True,
29+
console=False,
30+
disable_windowed_traceback=False,
31+
argv_emulation=False,
32+
target_arch=None,
33+
codesign_identity=None,
34+
entitlements_file=None,
35+
contents_directory='.',
36+
)
37+
coll = COLLECT(
38+
exe,
39+
a.binaries,
40+
a.datas,
41+
strip=False,
42+
upx=True,
43+
upx_exclude=[],
44+
name='arduino_logique',
45+
)

breadboard.py

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,34 +32,7 @@ class Breadboard:
3232
def __init__(self, canvas: Canvas, sketcher: ComponentSketcher):
3333
self.canvas = canvas
3434
self.sketcher = sketcher
35-
self.selector()
3635
self.canvas.config(cursor="")
37-
canvas.bind("<Motion>", self.follow_mouse)
38-
39-
def follow_mouse(self, event):
40-
"""
41-
Updates the mouse coordinates based on the given event.
42-
Args:
43-
event: An event object that contains the current mouse position.
44-
"""
45-
# FIXME fixing the coords crashes the app
46-
self.canvas.coords("selector_cable", [event.x - 10, event.y - 10, event.x + 0, event.y + 0])
47-
48-
def selector(self):
49-
"""
50-
Create the round selector cable movement
51-
"""
52-
self.canvas.create_oval(
53-
100,
54-
100,
55-
110,
56-
110,
57-
fill="#dfdfdf",
58-
outline="#404040",
59-
width=1,
60-
tags=("selector_cable"),
61-
)
62-
self.canvas.itemconfig("selector_cable", state="hidden")
6336

6437
def fill_matrix_830_pts(self, col_distance=1, line_distance=1):
6538
"""

0 commit comments

Comments
 (0)