import sys
from PySide6.QtWidgets import QApplication, QMessageBox
from .ytsage_gui_main import YTSageApp  # Import the main application class from ytsage_gui_main
from .ytsage_utils import update_yt_dlp  # Import the update function

def show_error_dialog(message):
    error_dialog = QMessageBox()
    error_dialog.setIcon(QMessageBox.Icon.Critical)
    error_dialog.setText("Application Error")
    error_dialog.setInformativeText(message)
    error_dialog.setWindowTitle("Error")
    error_dialog.exec()

def main():
    try:
        # Try to update yt-dlp before starting the app
        try:
            update_yt_dlp()
        except Exception as e:
            print(f"Warning: Could not update yt-dlp: {e}")
            # Continue with application startup even if the update fails
        
        app = QApplication(sys.argv)
        window = YTSageApp() # Instantiate the main application class
        window.show()
        sys.exit(app.exec())
    except Exception as e:
        show_error_dialog(f"Critical error: {str(e)}")
        sys.exit(1)

if __name__ == '__main__':
    main()