def restoreWidgetPosition(self): restored = False if self.save_position: geometry = self.savedWidgetGeometry if geometry is not None: restored = self.restoreGeometry(QByteArray(geometry)) if restored: space = qApp.desktop().availableGeometry(self) frame, geometry = self.frameGeometry(), self.geometry() #Fix the widget size to fit inside the available space width = space.width() - (frame.width() - geometry.width()) width = min(width, geometry.width()) height = space.height() - (frame.height() - geometry.height()) height = min(height, geometry.height()) self.resize(width, height) # Move the widget to the center of available space if it is # currently outside it if not space.contains(self.frameGeometry()): x = max(0, space.width() / 2 - width / 2) y = max(0, space.height() / 2 - height / 2) self.move(x, y) return restored
def restoreWidgetPosition(self): if self.save_position: geometry = getattr(self, "savedWidgetGeometry", None) restored = False if geometry is not None: restored = self.restoreGeometry(QByteArray(geometry)) if restored: space = qApp.desktop().availableGeometry(self) frame, geometry = self.frameGeometry(), self.geometry() # Fix the widget size to fit inside the available space width = space.width() - (frame.width() - geometry.width()) width = min(width, geometry.width()) height = space.height() - (frame.height() - geometry.height()) height = min(height, geometry.height()) self.resize(width, height) # Move the widget to the center of available space if it is # currently outside it if not space.contains(self.frameGeometry()): x = max(0, space.width() / 2 - width / 2) y = max(0, space.height() / 2 - height / 2) self.move(x, y)
def show(self, timeout=0, above=False): self.cursor_start_col = self.textedit.textCursor().columnNumber() desktop = qApp.desktop() screen = desktop.screen(desktop.screenNumber(self)) screen_width = screen.width() screen_height = screen.height() win_width = self.width() win_height = self.height() cursorRect = self.textedit.cursorRect() if above: pos = self.textedit.mapToGlobal(cursorRect.topLeft()) pos.setY(pos.y() - win_height) else: pos = self.textedit.mapToGlobal(cursorRect.bottomLeft()) if pos.y() < 0: pos = self.textedit.mapToGlobal(cursorRect.bottomLeft()) if pos.y() + win_height > screen_height: pos = self.textedit.mapToGlobal(cursorRect.topLeft()) pos.setY(pos.y() - win_height) if pos.x() + win_width > screen_width: pos.setX(screen_width - win_width) self.move(pos) QWidget.show(self) self.active = True if timeout: QTimer.singleShot(timeout * 1000, self.hide)
def __restoreWidgetGeometry(self): restored = False if self.save_position: geometry = self.savedWidgetGeometry if geometry is not None: restored = self.restoreGeometry(QByteArray(geometry)) if restored and not self.windowState() & \ (Qt.WindowMaximized | Qt.WindowFullScreen): space = qApp.desktop().availableGeometry(self) frame, geometry = self.frameGeometry(), self.geometry() #Fix the widget size to fit inside the available space width = space.width() - (frame.width() - geometry.width()) width = min(width, geometry.width()) height = space.height() - (frame.height() - geometry.height()) height = min(height, geometry.height()) self.resize(width, height) # Move the widget to the center of available space if it is # currently outside it if not space.contains(self.frameGeometry()): x = max(0, space.width() / 2 - width / 2) y = max(0, space.height() / 2 - height / 2) self.move(x, y) return restored
def showContextMenu(self, position): menu = QMediaLayout.__mediaContextMenu menu.move(position) menu.show() # Adjust the menu position desktop = qApp.desktop().availableGeometry() menu_rect = menu.geometry() if(menu_rect.bottom() > desktop.bottom()): menu.move(menu.x(), menu.y() - menu.height()) if(menu_rect.right() > desktop.right()): menu.move(menu.x() - menu.width(), menu.y())
def __restoreWidgetGeometry(self): def _fullscreen_to_maximized(geometry): """Don't restore windows into full screen mode because it loses decorations and can't be de-fullscreened at least on some platforms. Use Maximized state insted.""" w = QWidget(visible=False) w.restoreGeometry(QByteArray(geometry)) if w.isFullScreen(): w.setWindowState( w.windowState() & ~Qt.WindowFullScreen | Qt.WindowMaximized) return w.saveGeometry() restored = False if self.save_position: geometry = self.savedWidgetGeometry if geometry is not None: geometry = _fullscreen_to_maximized(geometry) restored = self.restoreGeometry(geometry) if restored and not self.windowState() & \ (Qt.WindowMaximized | Qt.WindowFullScreen): space = qApp.desktop().availableGeometry(self) frame, geometry = self.frameGeometry(), self.geometry() #Fix the widget size to fit inside the available space width = space.width() - (frame.width() - geometry.width()) width = min(width, geometry.width()) height = space.height() - (frame.height() - geometry.height()) height = min(height, geometry.height()) self.resize(width, height) # Move the widget to the center of available space if it is # currently outside it if not space.contains(self.frameGeometry()): x = max(0, space.width() / 2 - width / 2) y = max(0, space.height() / 2 - height / 2) self.move(x, y) return restored
def center_widget_on_desktop(widget): widget.setGeometry(QStyle.alignedRect(Qt.LeftToRight, Qt.AlignCenter, widget.size(), qApp.desktop().availableGeometry()))
def moveToCenter(window): r = window.geometry() r.moveCenter(qApp.desktop().screenGeometry().center()) window.setGeometry(r)