def __init__(self, parent = None): super(MainWindow, self).__init__(parent) self._background_color = QColor(204, 204, 204, 255) self.setClearBeforeRendering(False) self.beforeRendering.connect(self._render, type = Qt.DirectConnection) self._mouse_device = QtMouseDevice(self) self._mouse_device.setPluginId("qt_mouse") self._key_device = QtKeyDevice() self._key_device.setPluginId("qt_key") self._previous_focus = None # type: Optional["QQuickItem"] self._app = QCoreApplication.instance() # Remove previously added input devices (if any). This can happen if the window was re-loaded. self._app.getController().removeInputDevice("qt_mouse") self._app.getController().removeInputDevice("qt_key") self._app.getController().addInputDevice(self._mouse_device) self._app.getController().addInputDevice(self._key_device) self._app.getController().getScene().sceneChanged.connect(self._onSceneChanged) self._preferences = Application.getInstance().getPreferences() self._preferences.addPreference("general/window_width", 1280) self._preferences.addPreference("general/window_height", 720) self._preferences.addPreference("general/window_left", 50) self._preferences.addPreference("general/window_top", 50) self._preferences.addPreference("general/window_state", Qt.WindowNoState) # Restore window geometry self.setWidth(int(self._preferences.getValue("general/window_width"))) self.setHeight(int(self._preferences.getValue("general/window_height"))) self.setPosition(int(self._preferences.getValue("general/window_left")), int(self._preferences.getValue("general/window_top"))) # Make sure restored geometry is not outside the currently available screens screen_found = False for s in range(0, self._app.desktop().screenCount()): if self.geometry().intersects(self._app.desktop().availableGeometry(s)): screen_found = True break if not screen_found: self.setPosition(50, 50) self.setWindowState(int(self._preferences.getValue("general/window_state"))) self._mouse_x = 0 self._mouse_y = 0 self._mouse_pressed = False self._viewport_rect = QRectF(0, 0, 1.0, 1.0) self.closing.connect(self.preClosing) Application.getInstance().setMainWindow(self) self._fullscreen = False self._allow_resize = True
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self._background_color = QColor(204, 204, 204, 255) self.setClearBeforeRendering(False) self.beforeRendering.connect(self._render, type=Qt.DirectConnection) self._mouse_device = QtMouseDevice(self) self._mouse_device.setPluginId("qt_mouse") self._key_device = QtKeyDevice() self._key_device.setPluginId("qt_key") self._previous_focus = None self._app = QCoreApplication.instance() self._app.getController().addInputDevice(self._mouse_device) self._app.getController().addInputDevice(self._key_device) self._app.getController().getScene().sceneChanged.connect( self._onSceneChanged) self._preferences = Preferences.getInstance() self._preferences.addPreference("general/window_width", 1280) self._preferences.addPreference("general/window_height", 720) self._preferences.addPreference("general/window_left", 50) self._preferences.addPreference("general/window_top", 50) self._preferences.addPreference("general/window_state", Qt.WindowNoState) # Restore window geometry self.setWidth(int(self._preferences.getValue("general/window_width"))) self.setHeight(int( self._preferences.getValue("general/window_height"))) self.setPosition( int(self._preferences.getValue("general/window_left")), int(self._preferences.getValue("general/window_top"))) # Make sure restored geometry is not outside the currently available screens if not self.geometry().intersects(self.screen().availableGeometry()): self.setPosition(50, 50) self.setWindowState( int(self._preferences.getValue("general/window_state"))) self._mouse_x = 0 self._mouse_y = 0 self._viewport_rect = QRectF(0, 0, 1.0, 1.0) Application.getInstance().setMainWindow(self) self._fullscreen = False
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self._background_color = QColor(204, 204, 204, 255) self.beforeRenderPassRecording.connect( self._render, type=Qt.ConnectionType.DirectConnection) self._mouse_device = QtMouseDevice(self) self._mouse_device.setPluginId("qt_mouse") self._key_device = QtKeyDevice() self._key_device.setPluginId("qt_key") self._previous_focus = None # type: Optional["QQuickItem"] self._app = QCoreApplication.instance() # Remove previously added input devices (if any). This can happen if the window was re-loaded. self._app.getController().removeInputDevice("qt_mouse") self._app.getController().removeInputDevice("qt_key") self._app.getController().addInputDevice(self._mouse_device) self._app.getController().addInputDevice(self._key_device) self._app.getController().getScene().sceneChanged.connect( self._onSceneChanged) self._app.getController().activeViewChanged.connect( self._onActiveViewChanged) Selection.selectionChanged.connect(self._onSceneChanged) self._preferences = Application.getInstance().getPreferences() self._preferences.addPreference("general/window_width", self.DEFAULT_WINDOW_WIDTH) self._preferences.addPreference("general/window_height", self.DEFAULT_WINDOW_HEIGHT) self._preferences.addPreference("general/window_left", self.DEFAULT_WINDOW_LEFT) self._preferences.addPreference("general/window_top", self.DEFAULT_WINDOW_TOP) self._preferences.addPreference("general/window_state", Qt.WindowState.WindowNoState.value) self._preferences.addPreference("general/restore_window_geometry", True) restored_geometry = QRect( int(self._preferences.getValue("general/window_left")), int(self._preferences.getValue("general/window_top")), int(self._preferences.getValue("general/window_width")), int(self._preferences.getValue("general/window_height"))) if not self._preferences.getValue("general/restore_window_geometry"): # Ignore whatever the preferences said. Logger.log( "i", "Not restoring window geometry from preferences because 'restore_window_geometry' is false" ) restored_geometry = QRect(self.DEFAULT_WINDOW_LEFT, self.DEFAULT_WINDOW_TOP, self.DEFAULT_WINDOW_WIDTH, self.DEFAULT_WINDOW_HEIGHT) # Make sure restored geometry is not outside the currently available screens screen_found = False for screen in self._app.screens(): if restored_geometry.intersects(screen.availableGeometry()): screen_found = True break if not screen_found: Logger.log( "w", "Could not restore to previous location on screen, since the sizes or number of monitors " "have changed since then") # Unable to find the screen that this window used to be on, so just use the defaults restored_geometry = QRect(self.DEFAULT_WINDOW_LEFT, self.DEFAULT_WINDOW_TOP, self.DEFAULT_WINDOW_WIDTH, self.DEFAULT_WINDOW_HEIGHT) self.setGeometry(restored_geometry) # Translate window state back to enum. try: window_state = int( self._preferences.getValue("general/window_state")) except ValueError: self._preferences.resetPreference("general/window_state") window_state = int( self._preferences.getValue("general/window_state")) if window_state == Qt.WindowState.WindowNoState.value: self.setWindowState(Qt.WindowState.WindowNoState) elif window_state == Qt.WindowState.WindowMaximized.value: self.setWindowState(Qt.WindowState.WindowMaximized) self._mouse_x = 0 self._mouse_y = 0 self._mouse_pressed = False self._viewport_rect = QRectF(0, 0, 1.0, 1.0) self.closing.connect(self.preClosing) Application.getInstance().setMainWindow(self) self._fullscreen = False self._full_render_required = True self._allow_resize = True