From a149ab71bba26696524834bf96144f1afa92ac6b Mon Sep 17 00:00:00 2001 From: Clement Desmidt Date: Fri, 2 Jun 2023 12:21:12 +0200 Subject: [PATCH] :sparkles: Add sessions --- src/element/toolbar.py | 4 +++- src/entity/session/drawing.py | 10 +++++++--- src/window/app.py | 6 ++++++ src/window/image.py | 11 ++++++++++- src/window/session.py | 4 ++++ 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/element/toolbar.py b/src/element/toolbar.py index eadf2c8..fa270e4 100644 --- a/src/element/toolbar.py +++ b/src/element/toolbar.py @@ -8,6 +8,7 @@ from src.util import Util class Toolbar: def __init__(self, image_window, timer): + self.timers = [] self.current_image = None self.current_original_image = None self.image_window = image_window @@ -47,6 +48,7 @@ class Toolbar: self.timer_label.pack(side=RIGHT, ipadx=20) def display_new_timer(self): + self.timer = self.timers.pop(0) self.timer_label.configure(text=Util.format_seconds(self.timer)) self.timer_check = self.image_window.window.after(1000, self.update_timer, self.timer) @@ -59,7 +61,7 @@ class Toolbar: self.timer_check = self.image_window.window.after(1000, self.update_timer, current) else: self.image_window.window.after_cancel(self.timer_check) - if len(self.image_window.images) == 0: + if len(self.image_window.image.images) == 0 or len(self.timers) == 0: self.image_window.window.destroy() self.image_window.window.update() return diff --git a/src/entity/session/drawing.py b/src/entity/session/drawing.py index bbe4899..d98e5e7 100644 --- a/src/entity/session/drawing.py +++ b/src/entity/session/drawing.py @@ -1,6 +1,10 @@ class DrawingElement: - def __init__(self): - self.timer = 0 - self.number_of_drawings = 0 + def __init__(self, data=None): + if data is not None: + for key, value in data.items(): + setattr(self, key, value) + else: + self.timer = 0 + self.number_of_drawings = 0 diff --git a/src/window/app.py b/src/window/app.py index 65b70c7..1b435a0 100644 --- a/src/window/app.py +++ b/src/window/app.py @@ -12,6 +12,7 @@ from src.window.session import SessionWindow class App: def __init__(self, root): super().__init__() + self.list_in_session = None self.custom = False self.config = Config() self.session = None @@ -79,6 +80,7 @@ class App: self.launch_button.config(state="disabled") def set_timer_in_seconds(self, user_data): + self.custom = False self.timer = user_data for button in self.buttons: if button['text'] == Util.format_seconds(self.timer): @@ -90,3 +92,7 @@ class App: def set_custom(self, list_in_session): self.custom = True self.list_in_session = list_in_session + self.check_lets_draw() + for button in self.buttons: + button.config(bg="gray85") + self.buttons[-1].config(bg="blue") diff --git a/src/window/image.py b/src/window/image.py index 3394bb2..2c654d2 100644 --- a/src/window/image.py +++ b/src/window/image.py @@ -47,8 +47,17 @@ class ImageWindow: def lets_draw(self, images, timer): random.shuffle(images) + timers = [] + if self.app.custom: + for element in self.app.list_in_session: + for number in range(int(element.number_of_drawings)): + timers.append(int(element.timer)) + else: + for i in images: + timers.append(timer) + self.image.images = images - self.toolbar.timer = timer + self.toolbar.timers = timers self.next_image() def play_countdown(self): diff --git a/src/window/session.py b/src/window/session.py index 1c83a65..58298a9 100644 --- a/src/window/session.py +++ b/src/window/session.py @@ -32,6 +32,9 @@ class SessionWindow: self.list_in_session = [] def open(self): + list = Config._CONFIG['session'] + if list: + self.list_in_session = [DrawingElement(e) for e in list] self.update_session_list() def update_session_list(self): @@ -155,6 +158,7 @@ class SessionWindow: self.window.destroy() def save_session(self): + Config._CONFIG['session'] = [] for element in self.list_in_session: Config._CONFIG['session'].append(element.__dict__) Config.save()