83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
from controller.MainController import MainController
|
|
from util.AsyncTask import AsyncTask
|
|
|
|
|
|
class HomeController:
|
|
"""
|
|
Controller - HomeController
|
|
|
|
desc...
|
|
|
|
@author Jérémi Nihart / EndMove
|
|
@link https://git.endmove.eu/EndMove/WebPicDownloader
|
|
@version 1.0.0
|
|
@since 2022-08-30
|
|
"""
|
|
# Variables
|
|
__main_controller = None
|
|
__view = None
|
|
__webpic = None
|
|
|
|
# Constructor
|
|
def __init__(self, controller: MainController, webpic) -> None:
|
|
"""
|
|
Constructor
|
|
|
|
:controller: -> The main application cpntroller.
|
|
:webpic: -> The webpicdownloader instance.
|
|
"""
|
|
self.__main_controller = controller
|
|
self.__webpic = webpic
|
|
|
|
# START View methods
|
|
def set_view(self, view) -> None:
|
|
"""
|
|
[function for view]
|
|
=> Define the view of this controller.
|
|
|
|
:view: -> The view that this controller manage.
|
|
"""
|
|
self.__view = view
|
|
self.__webpic.set_messenger_callback(view.add_log)
|
|
# END View method
|
|
|
|
# START View events
|
|
def on_change_view(self, frame) -> None:
|
|
"""
|
|
[event function for view]
|
|
=> Call this event method when the user requests to change the window.
|
|
|
|
: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 !")
|
|
|
|
def on_download_requested(self, url: str, name: str) -> None:
|
|
"""
|
|
[event function for view]
|
|
=> Call this event method when the user requests to download
|
|
|
|
:url: -> The url of the website to use for pic-download.\n
|
|
:name: -> The name of the folder in which put pictures.
|
|
"""
|
|
# Define the download task function (to call in a AsyncTask)
|
|
def download_task():
|
|
self.__view.clear_logs()
|
|
if self.__webpic.download(url, name):
|
|
self.__view.show_success_message("The download has been successfully completed.")
|
|
else:
|
|
self.__view.show_error_message("A critical error preventing the download occurred, check the logs.")
|
|
|
|
# Verify variable and start AsyncTask
|
|
if url.strip() and name.strip() :
|
|
AsyncTask(download_task).start()
|
|
else:
|
|
self.__view.show_error_message("Opss, the url or folder name are not valid!")
|
|
# END View events
|
|
|
|
# START Controller methods
|
|
|
|
# END Controller methods
|