def close_window(self): """ Close QMainWindow instance that contains this widget. """ logger.debug("Docking plugin back to the main window") if self.windowwidget is not None: # Save window geometry to restore it when undocking the plugin # again. geometry = self.windowwidget.saveGeometry() self.set_conf('window_geometry', qbytearray_to_str(geometry)) # Fixes spyder-ide/spyder#10704 self.__unsafe_window = self.windowwidget self.__unsafe_window.deleteLater() self.windowwidget.close() self.windowwidget = None # These actions can appear disabled when 'Dock' action is pressed self.undock_action.setDisabled(False) self.close_action.setDisabled(False) if self.dockwidget is not None: self.sig_update_ancestor_requested.emit() self.dockwidget.setWidget(self) self.dockwidget.setVisible(True) self.dockwidget.raise_() self._update_actions()
def _close_window(self): """Close QMainWindow instance that contains this plugin.""" if self._undocked_window is not None: # Save window geometry to restore it when undocking the plugin # again. geometry = self._undocked_window.saveGeometry() self.set_option('window_geometry', qbytearray_to_str(geometry)) self._undocked_window.close() self._undocked_window = None # Oddly, these actions can appear disabled after the Dock # action is pressed self._undock_action.setDisabled(False) self._close_plugin_action.setDisabled(False)
def close_window(self, save_undocked=False): """ Close QMainWindow instance that contains this widget. Parameters ---------- save_undocked : bool, optional True if the undocked state needs to be saved. The default is False. Returns ------- None. """ logger.debug("Docking plugin back to the main window") if self.windowwidget is not None: # Save window geometry to restore it when undocking the plugin # again. geometry = self.windowwidget.saveGeometry() self.set_conf('window_geometry', qbytearray_to_str(geometry)) # Save undocking state if requested if save_undocked: self.set_conf('undocked_on_window_close', True) # Fixes spyder-ide/spyder#10704 self.__unsafe_window = self.windowwidget self.__unsafe_window.deleteLater() self.windowwidget.close() self.windowwidget = None # These actions can appear disabled when 'Dock' action is pressed self.undock_action.setDisabled(False) self.close_action.setDisabled(False) if self.dockwidget is not None: self.sig_update_ancestor_requested.emit() self.dockwidget.setWidget(self) self.dockwidget.setVisible(True) self.dockwidget.raise_() self._update_actions() else: # Reset undocked state self.set_conf('undocked_on_window_close', False)
def closeEvent(self, event): """Reimplement Qt method.""" self.plugin.set_ancestor(self.plugin.main) self.plugin.dockwidget.setWidget(self.plugin) self.plugin.dockwidget.setVisible(True) self.plugin.switch_to_plugin() # Save window geometry to restore it when undocking the plugin # again. geometry = self.saveGeometry() self.plugin.set_option('window_geometry', qbytearray_to_str(geometry)) # Close window QMainWindow.closeEvent(self, event) # Qt might want to do something with this soon, # So it should not be deleted by python yet. # Fixes spyder-ide/spyder#10704 self.plugin.__unsafe__window = self self.plugin._undocked_window = None
def get_window_settings(self): """ Return current window settings. Symetric to the 'set_window_settings' setter. """ # FIXME: Window size in main window is update on resize window_size = (self.window_size.width(), self.window_size.height()) is_fullscreen = self.main.isFullScreen() if is_fullscreen: is_maximized = self._maximized_flag else: is_maximized = self.main.isMaximized() pos = (self.window_position.x(), self.window_position.y()) prefs_dialog_size = (self.prefs_dialog_size.width(), self.prefs_dialog_size.height()) hexstate = qbytearray_to_str( self.main.saveState(version=WINDOW_STATE_VERSION)) return (hexstate, window_size, prefs_dialog_size, pos, is_maximized, is_fullscreen)
def save_current_window_settings(self, prefix, section='main', none_state=False): """ Save current window settings. It saves config with *prefix* in the userconfig-based, configuration under *section*. """ # Use current size and position when saving window settings. # Fixes spyder-ide/spyder#13882 win_size = self.main.size() pos = self.main.pos() prefs_size = self.prefs_dialog_size self.set_conf( prefix + 'size', (win_size.width(), win_size.height()), section=section, ) self.set_conf( prefix + 'prefs_dialog_size', (prefs_size.width(), prefs_size.height()), section=section, ) self.set_conf( prefix + 'is_maximized', self.main.isMaximized(), section=section, ) self.set_conf( prefix + 'is_fullscreen', self.main.isFullScreen(), section=section, ) self.set_conf( prefix + 'position', (pos.x(), pos.y()), section=section, ) self.maximize_dockwidget(restore=True) # Restore non-maximized layout if none_state: self.set_conf( prefix + 'state', None, section=section, ) else: qba = self.main.saveState(version=WINDOW_STATE_VERSION) self.set_conf( prefix + 'state', qbytearray_to_str(qba), section=section, ) self.set_conf( prefix + 'statusbar', not self.main.statusBar().isHidden(), section=section, )