Added propagation of the program stop event

This commit is contained in:
Jérémi N ‘EndMove’ 2022-09-01 22:07:14 +02:00
parent 69db2dbbee
commit 7002439532
Signed by: EndMove
GPG Key ID: 65C4A02E1F5371A4
4 changed files with 34 additions and 12 deletions

View File

@ -26,9 +26,13 @@ class HomeController:
:controller: -> The main application cpntroller.
:webpic: -> The webpicdownloader instance.
"""
# Setub variables
self.__main_controller = controller
self.__webpic = webpic
# Subscribe to events
controller.subscribe_to_quite_event(self.on_quit)
# START View methods
def set_view(self, view) -> None:
"""
@ -49,10 +53,7 @@ class HomeController:
:frame: -> The frame we want to launch.
"""
#self.__main_controller.change_frame(frame)
self.__view.add_log("Salut comment vas tu ? 1")
self.__view.add_log("Salut comment vas tu ? 2")
self.__view.show_success_message("Super tu as réussi la quête !")
self.__main_controller.change_frame(frame)
def on_download_requested(self, url: str, name: str) -> None:
"""
@ -72,11 +73,16 @@ class HomeController:
# Verify variable and start AsyncTask
if url.strip() and name.strip() :
AsyncTask(download_task).start()
AsyncTask(download_task)
else:
self.__view.show_error_message("Opss, the url or folder name are not valid!")
# END View events
# START Controller methods
def on_quit(self) -> None:
"""
[event function for controller]
=> Call this event when a request to exit is thrown.
"""
print("Quit... homecontroller")
# END Controller methods

View File

@ -12,6 +12,7 @@ class MainController:
# Variables
__config: dict = None
__view = None
__quite_event_subscribers: list = None
# Constructor
def __init__(self, config: dict) -> None:
@ -20,7 +21,9 @@ class MainController:
:config: -> The application configuration (a dictionary).
"""
# Setup variables
self.__config = config
self.__quite_event_subscribers = []
# START View methods
def set_view(self, view) -> None:
@ -38,14 +41,16 @@ class MainController:
=> Event launch when you ask to open the current folder.
"""
# TODO on_open_folder
pass
print("on_open_folder") # TODO remove
def on_quite(self) -> None:
"""
[event function for view]
=> Event launch when you ask to quit the program.
"""
print("You asked to quit...") # TODO remove
for callback in self.__quite_event_subscribers:
callback()
print("on_quite") # TODO remove
self.__view.close_window() # End the program
def on_check_for_update(self) -> None:
@ -62,7 +67,7 @@ class MainController:
=> Event launched when a request for more information arise.
"""
# TODO on_about
pass
print("on_about")
# END View methods
# START Controller methods
@ -87,3 +92,9 @@ class MainController:
else:
raise ValueError("Unable to find a configuration with this name")
# END Controller methods
# START Controller events
def subscribe_to_quite_event(self, callback) -> None:
# TODO
self.__quite_event_subscribers.append(callback)
# END Controller events

View File

@ -14,6 +14,7 @@ class AsyncTask(threading.Thread):
@since 2022-09-01
"""
# Variables
__stop = None
__callback = None
__args: list = None
@ -30,6 +31,7 @@ class AsyncTask(threading.Thread):
:args: -> Argument to pass to the function when executing it.
"""
super().__init__()
self.__stop = threading.Event()
self.__callback = callback
self.__args = args
@ -38,3 +40,7 @@ class AsyncTask(threading.Thread):
[!] : This function should not be used! Start the task with {AsyncTask.start()}!
"""
self.__callback(*self.__args)
def stop(self) -> None:
# TODO
self.__stop.set()

View File

@ -2,7 +2,6 @@ import tkinter as tk
import tkinter.font as tfont
from tkinter import ttk
from tkinter import scrolledtext as tst
from controller.Frames import Frames
from controller.HomeController import HomeController
class HomeView(ttk.Frame):