46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
"""Application entry point."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def main() -> int:
|
|
from PySide6.QtGui import QIcon
|
|
from PySide6.QtWidgets import QApplication
|
|
|
|
from . import APP_NAME
|
|
from .gui.main_window import MainWindow
|
|
from .tools import app_dir
|
|
|
|
app = QApplication(sys.argv)
|
|
app.setApplicationName(APP_NAME)
|
|
app.setOrganizationName("ffwrap")
|
|
app.setStyle("Fusion")
|
|
|
|
# Bundled by PyInstaller into sys._MEIPASS, or next to the sources.
|
|
base = Path(getattr(sys, "_MEIPASS", app_dir()))
|
|
icon = base / "assets" / "icon.png"
|
|
if icon.exists():
|
|
app.setWindowIcon(QIcon(str(icon)))
|
|
|
|
win = MainWindow()
|
|
win.show()
|
|
# Files passed on the command line (or dropped onto the executable).
|
|
args = [Path(a) for a in sys.argv[1:] if not a.startswith("-")]
|
|
if args:
|
|
win.add_paths(args)
|
|
|
|
# Build verification: FFWRAP_SMOKE_TEST=shot.png saves a screenshot after start-up and exits.
|
|
shot = os.environ.get("FFWRAP_SMOKE_TEST")
|
|
if shot:
|
|
from PySide6.QtCore import QTimer
|
|
|
|
def finish():
|
|
win.grab().save(shot)
|
|
app.exit(0 if win.tools else 3)
|
|
QTimer.singleShot(4000, finish)
|
|
return app.exec()
|