67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
import tkinter as tk
|
|
import logging
|
|
import sys
|
|
|
|
# Import the necessary components from our application
|
|
from downloaderyoutube.gui.gui import App
|
|
from downloaderyoutube.utils.logger import setup_basic_logging, shutdown_logging_system
|
|
|
|
# --- Logging Configuration --
|
|
# This dictionary configures the logging system. It can be expanded later.
|
|
LOGGING_CONFIG = {
|
|
"default_root_level": logging.DEBUG,
|
|
"specific_levels": {
|
|
# You can set different levels for different modules if needed
|
|
# "pytube": logging.WARNING,
|
|
},
|
|
"format": "%(asctime)s [%(levelname)-8s] %(name)-25s : %(message)s",
|
|
"date_format": "%Y-%m-%d %H:%M:%S",
|
|
"enable_console": True,
|
|
"enable_file": False, # Set to True to enable file logging
|
|
# "file_path": "downloader_app.log", # Uncomment if file logging is enabled
|
|
}
|
|
|
|
def main():
|
|
"""
|
|
Application entry point.
|
|
Initializes logging, creates the GUI, and starts the main loop.
|
|
"""
|
|
# --- Diagnostic Prints ---
|
|
print("-" * 50)
|
|
print(f"--- PYTHON EXECUTABLE: {sys.executable}")
|
|
|
|
|
|
root = tk.Tk()
|
|
|
|
# --- Setup Logging ---
|
|
# This is a crucial step to initialize the queue-based logging system.
|
|
setup_basic_logging(
|
|
root_tk_instance_for_processor=root, logging_config_dict=LOGGING_CONFIG
|
|
)
|
|
|
|
# Get a logger for the main entry point
|
|
logger = logging.getLogger(__name__)
|
|
logger.info("Application starting...")
|
|
|
|
# --- Create and run the App ---
|
|
app = App(master=root)
|
|
|
|
def on_closing():
|
|
"""
|
|
Handles the window closing event to ensure a clean shutdown.
|
|
"""
|
|
logger.info("Shutdown sequence initiated.")
|
|
# Properly shut down the logging system before closing the app
|
|
shutdown_logging_system()
|
|
root.destroy()
|
|
|
|
# Assign the custom closing function to the window's close button
|
|
root.protocol("WM_DELETE_WINDOW", on_closing)
|
|
|
|
# Start the Tkinter event loop
|
|
root.mainloop()
|
|
print("Application has been closed.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |