Пример #1
0
from src.controllers.main_controller import MainController
from src.model.main_model import MainModel

if __name__ == "__main__":

    # Registro il processo per Windows, così da avere l'icona nella taskbar
    if sys.platform == "win32":
        try:
            myappid = 'mercuryseven.ssd.zextrasdrivedesktop.1.0'
            ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(
                myappid)
        except Exception as e:
            print(e)

    # Bisogna fare questo per poter usare QSettings
    QCoreApplication.setOrganizationName("MercurySeven")
    QCoreApplication.setApplicationName("SSD")

    # start main application
    app = QApplication(sys.argv)
    # utile per avere l'icona di notifica
    app.setQuitOnLastWindowClosed(False)

    # initialize logging format
    _format = "%(asctime)s:%(levelname)s:%(filename)s:%(name)s:%(message)s"
    logging.basicConfig(level=logging.INFO, format=_format)
    # rimuove i log spammosi di rete
    logging.getLogger("gql.transport.aiohttp").setLevel(logging.WARNING)
    logging.getLogger("gql.transport.requests").setLevel(logging.WARNING)

    env_settings = QSettings()
Пример #2
0
from PySide6.QtCore import Qt, QSize, QSettings, QCoreApplication, QRect, QTimer
from PySide6.QtGui import QImageReader, QPixmap, QResizeEvent, QPdfWriter, \
    QPainter, QImage, QPaintDevice, QPageSize
from PySide6.QtWidgets import QApplication, QMainWindow, QGraphicsScene, \
    QFileDialog, QGraphicsPixmapItem, QLabel, QGridLayout, QLineEdit, QGraphicsSceneMouseEvent

from sliced_art.art_shuffler import ArtShuffler
from sliced_art.clickable_pixmap_item import ClickablePixmapItem
from sliced_art.main_window import Ui_MainWindow
from sliced_art.selection_grid import SelectionGrid
from sliced_art.word_shuffler import WordShuffler
from sliced_art.word_stripper import WordStripper

QCoreApplication.setOrganizationDomain("donkirkby.github.io")
QCoreApplication.setOrganizationName("Don Kirkby")
QCoreApplication.setApplicationName("Sliced Art")

ClueType = Enum('ClueType', 'words symbols')


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.art_scene = QGraphicsScene(self)
        self.art_scene.addText('Open an image file.')
        self.ui.art_view.setScene(self.art_scene)
        self.symbols_scene = QGraphicsScene(self)
        self.ui.symbols_view.setScene(self.symbols_scene)
Пример #3
0
def main():
    # if lock_file is existed , it means persepolis is still running!
    if lock_file_validation and (not (
        (args.parent_window or unknownargs) and browser_url == False) or
                                 ((args.parent_window or unknownargs)
                                  and start_persepolis_if_browser_executed)):

        # set QT_AUTO_SCREEN_SCALE_FACTOR to 1 for "high DPI displays"
        os.environ['QT_AUTO_SCREEN_SCALE_FACTOR'] = '1'

        # run mainwindow

        # set color_scheme and style
        # see palettes.py and setting.py

        # this line is added fot fixing persepolis view in HighDpi displays
        # more information at: https://doc.qt.io/qt-5/highdpi.html
        try:
            QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
        except:
            from persepolis.scripts import logger

            # write error_message in log file.
            logger.sendToLog('Qt.AA_EnableHighDpiScaling is not available!',
                             "ERROR")

        # create QApplication
        persepolis_download_manager = PersepolisApplication(sys.argv)

        # setQuitOnLastWindowClosed(False) is needed to prevent persepolis exiting,
        # when it's minimized in system tray.
        persepolis_download_manager.setQuitOnLastWindowClosed(False)

        # Enable High DPI display
        try:
            if hasattr(QStyleFactory, 'AA_UseHighDpiPixmaps'):
                persepolis_download_manager.setAttribute(
                    Qt.AA_UseHighDpiPixmaps)
        except:
            from persepolis.scripts import logger

            # write error_message in log file.
            logger.sendToLog('Qt.AA_UseHighDpiPixmaps is not available!',
                             "ERROR")

        # set organization name and domain and application name
        QCoreApplication.setOrganizationName('persepolis_download_manager')
        QCoreApplication.setApplicationName('persepolis')

        # Persepolis setting
        persepolis_download_manager.setting = QSettings()

        # get user's desired font and style , ... from setting
        custom_font = persepolis_download_manager.setting.value(
            'settings/custom-font')
        font = persepolis_download_manager.setting.value('settings/font')
        font_size = int(
            persepolis_download_manager.setting.value('settings/font-size'))
        style = persepolis_download_manager.setting.value('settings/style')
        color_scheme = persepolis_download_manager.setting.value(
            'settings/color-scheme')
        ui_direction = persepolis_download_manager.setting.value(
            'ui_direction')

        # set style
        persepolis_download_manager.setPersepolisStyle(style)

        # set font
        persepolis_download_manager.setPersepolisFont(font, font_size,
                                                      custom_font)

        # set color_scheme
        persepolis_download_manager.setPersepolisColorScheme(color_scheme)

        # set ui direction
        if ui_direction == 'rtl':
            persepolis_download_manager.setLayoutDirection(Qt.RightToLeft)

        elif ui_direction in 'ltr':
            persepolis_download_manager.setLayoutDirection(Qt.LeftToRight)

        # run mainwindow
        try:
            mainwindow = MainWindow(start_in_tray, persepolis_download_manager,
                                    persepolis_download_manager.setting)
            if start_in_tray:
                mainwindow.hide()
            else:
                mainwindow.show()

        except Exception:
            from persepolis.scripts import logger
            error_message = str(traceback.format_exc())

            # write error_message in log file.
            logger.sendToLog(error_message, "ERROR")

            # Reset persepolis
            error_window = ErrorWindow(error_message)
            error_window.show()

        sys.exit(persepolis_download_manager.exec_())

    elif not ((args.parent_window or unknownargs)):

        # this section warns user that program is still running and no need to run it again
        # and creating a file to notify mainwindow for showing itself!
        # (see CheckingThread in mainwindow.py for more information)
        if len(plugin_list) == 0:

            show_window_file = os.path.join(persepolis_tmp, 'show-window')
            f = open(show_window_file, 'w')
            f.close()

        sys.exit(0)