Source code for retype.ui.main_win

import logging
from base64 import b64decode
from qt import (QMainWindow, QStackedWidget, QSplitter, Qt, pyqtSignal, QDir,
                QFile)

from retype.resource_handler import getStylePath, getIcon


[docs]class MainWin(QMainWindow): opened = pyqtSignal() closing = pyqtSignal()
[docs] def __init__(self, console, geometry, parent=None): # qss_file super().__init__(parent) self.console = console self.geometry = geometry self._initUI() self._initQss()
def _initUI(self): self.stacker = QStackedWidget() self.consistent_layout = QSplitter() self.consistent_layout.setHandleWidth(2) self.consistent_layout.setOrientation(Qt.Orientation.Vertical) self.consistent_layout.setContentsMargins(0, 0, 0, 0) self.consistent_layout.addWidget(self.stacker) self.consistent_layout.addWidget(self.console) self.setCentralWidget(self.consistent_layout) self.resize(self.geometry['w'], self.geometry['h']) if self.geometry['x'] is not None and self.geometry['y'] is not None: self.move(self.geometry['x'], self.geometry['y']) self.setWindowTitle('retype') self.setWindowIcon(getIcon('retype', 'ico')) self.splitters = {'main': self.consistent_layout} self.maybeRestoreSplitterState('main') def _initQss(self): QDir.addSearchPath('style', getStylePath()) qss_file = QFile('style:default.qss') qss_file.open(QFile.ReadOnly | QFile.Text) self.setStyleSheet(str(qss_file.readAll(), 'utf-8'))
[docs] def currentView(self): return self.stacker.currentWidget()
[docs] def showEvent(self, event): QMainWindow.showEvent(self, event) self.opened.emit()
[docs] def closeEvent(self, event): self.closing.emit() event.accept() logging.info('retype quit')
[docs] def denoteSplitter(self, name, splitter): self.splitters[name] = splitter
[docs] def maybeRestoreSplitterState(self, name): splitter = self.splitters.get(name) if splitter and self.geometry['save_splitters_on_quit']: encoded_state = self.geometry[f'{name}_splitter_state'] if encoded_state is not None: splitter.restoreState(b64decode(encoded_state))