def run(self): self.mainWindow = PipboyMainWindow() if (self.startedFromWin32Launcher): basepath = os.path.dirname(os.path.realpath(__file__)) launcherpath = os.path.abspath( os.path.join(basepath, os.pardir, 'PyPipBoyApp-Launcher.exe')) print('launcherpath: ' + str(launcherpath)) if 'nt' in os.name: from win32com.propsys import propsys, pscon import pythoncom hwnd = self.mainWindow.winId() propStore = propsys.SHGetPropertyStoreForWindow( hwnd, propsys.IID_IPropertyStore) propStore.SetValue( pscon.PKEY_AppUserModel_ID, propsys.PROPVARIANTType(u'matzman666.pypipboyapp.win32', pythoncom.VT_ILLEGAL)) propStore.SetValue( pscon.PKEY_AppUserModel_RelaunchDisplayNameResource, propsys.PROPVARIANTType('PyPipBoyApp', pythoncom.VT_ILLEGAL)) propStore.SetValue( pscon.PKEY_AppUserModel_RelaunchCommand, propsys.PROPVARIANTType(launcherpath, pythoncom.VT_ILLEGAL)) propStore.Commit() # Load Styles self._loadStyles() # Load widgets self.helpWidget = uic.loadUi(os.path.join('ui', 'helpwidget.ui')) self.helpWidget.textBrowser.setSource( QtCore.QUrl.fromLocalFile( os.path.join('ui', 'res', 'helpwidget.html'))) self.mainWindow.addDockWidget(QtCore.Qt.TopDockWidgetArea, self.helpWidget) self._loadWidgets() # Restore saved window state savedFullScreen = bool( int(self.settings.value('mainwindow/fullscreen', 0))) if savedFullScreen: self.mainWindow.showFullScreen() savedGeometry = self.settings.value('mainwindow/geometry') if savedGeometry: self.mainWindow.restoreGeometry(savedGeometry) savedState = self.settings.value('mainwindow/windowstate') if savedState: self.mainWindow.restoreState(savedState) # Create widgets menu entry self.widgetMenu.setTitle('Widgets') menuActions = self.mainWindow.menuBar().actions() self.mainWindow.menuBar().insertMenu(menuActions[len(menuActions) - 1], self.widgetMenu) # connect with main window self.mainWindow.actionConnect.triggered.connect( self.startAutoDiscovery) self.mainWindow.actionConnectTo.triggered.connect( self.showConnectToDialog) self.mainWindow.actionDisconnect.triggered.connect(self.disconnect) self.mainWindow.actionQuit.triggered.connect(self.requestQuit) self.mainWindow.signalWantsToQuit.connect(self.requestQuit) self.mainWindow.actionShowAbout.triggered.connect(self.showAboutDialog) self.mainWindow.actionShowAboutQt.triggered.connect(self.aboutQt) self.mainWindow.actionAuto_Connect_on_Start_up.triggered.connect( self.autoConnectToggled) self.mainWindow.actionExportData.triggered.connect(self.exportData) self.mainWindow.actionImportData.triggered.connect(self.importData) self.mainWindow.actionVersionCheck.triggered.connect( self.startVersionCheckVerbose) stayOnTop = bool(int(self.settings.value('mainwindow/stayOnTop', 0))) self.mainWindow.actionStayOnTop.toggled.connect( self.setWindowStayOnTop) self.mainWindow.actionStayOnTop.setChecked(stayOnTop) promptBeforeQuit = bool( int(self.settings.value('mainwindow/promptBeforeQuit', 1))) self.mainWindow.actionPromptBeforeQuit.toggled.connect( self.setPromptBeforeQuit) self.mainWindow.actionPromptBeforeQuit.setChecked(promptBeforeQuit) self.mainWindow.actionRelayModeSettings.triggered.connect( self._slotRelayModeSettings) # Init Relay Mode self.relayModeEnabled = bool( int(self.settings.value('mainwindow/relayModeEnabled', 0))) self.relayModeAutodiscovery = bool( int(self.settings.value('mainwindow/relayModeAutodiscovery', 0))) self.relayModePort = int( self.settings.value('mainwindow/relayModePort', 27000)) self.relayController = RelayController(self.dataManager) if self.relayModeEnabled: self.relayController.startRelayService(port=self.relayModePort) if self.relayModeAutodiscovery: self.relayController.startAutodiscoverService() # Main window is ready, so show it self.mainWindow.init(self, self.networkChannel, self.dataManager) self._initWidgets() self.mainWindow.show() # start main event loop if int(self.settings.value('mainwindow/autoconnect', 0)): self.mainWindow.actionAuto_Connect_on_Start_up.setChecked(True) host = 'localhost' port = 27000 if self.settings.value('mainwindow/lasthost'): host = self.settings.value('mainwindow/lasthost') if self.settings.value('mainwindow/lastport'): port = int(self.settings.value('mainwindow/lastport')) self.signalConnectToHost.emit(host, port, True) self.startVersionCheck() sys.exit(self.exec_())