mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-22 14:41:39 +00:00
Use tabs instead of floating windows
* Directories dialog, Results window and ignore list dialog are the three dialog windows which can now be tabbed instead of previously floating. * Menus are automatically updated depending on the type of dialog as the current tab. Menu items which do not apply to the currently displayed tab are disabled but not hidden. * The floating windows logic is preserved in case we want to use them again later (I don't see why though) * There are two different versions of the tab bar: the default one used in TabBarWindow class places the tabs next to the top menu to save screen real estate. The other option is to use TabWindow which uses a regular QTabWidget where the tab bar is placed right on top of the displayed window. * There is a toggle option in the View menu to hide the tabs, the windows can still be navigated to with the View menu items.
This commit is contained in:
@@ -40,6 +40,7 @@ class DirectoriesDialog(QMainWindow):
|
||||
def __init__(self, app, **kwargs):
|
||||
super().__init__(None, **kwargs)
|
||||
self.app = app
|
||||
self.specific_actions = set()
|
||||
self.lastAddedFolder = platform.INITIAL_FOLDER_IN_DIALOGS
|
||||
self.recentFolders = Recent(self.app, "recentFolders")
|
||||
self._setupUi()
|
||||
@@ -94,21 +95,36 @@ class DirectoriesDialog(QMainWindow):
|
||||
]
|
||||
createActions(ACTIONS, self)
|
||||
|
||||
if self.app.main_window: # We use tab widgets in this case
|
||||
# Keep track of actions which should only be accessible from this class
|
||||
for action, _, _, _, _ in ACTIONS:
|
||||
self.specific_actions.add(getattr(self, action))
|
||||
|
||||
def _setupMenu(self):
|
||||
self.menubar = QMenuBar(self)
|
||||
self.menubar.setGeometry(QRect(0, 0, 42, 22))
|
||||
self.menuFile = QMenu(self.menubar)
|
||||
self.menuFile.setTitle(tr("File"))
|
||||
self.menuView = QMenu(self.menubar)
|
||||
self.menuView.setTitle(tr("View"))
|
||||
self.menuHelp = QMenu(self.menubar)
|
||||
self.menuHelp.setTitle(tr("Help"))
|
||||
if not self.app.main_window:
|
||||
# we are our own QMainWindow, we need our own menu bar
|
||||
self.menubar = QMenuBar(self)
|
||||
self.menubar.setGeometry(QRect(0, 0, 42, 22))
|
||||
self.menuFile = QMenu(self.menubar)
|
||||
self.menuFile.setTitle(tr("File"))
|
||||
self.menuView = QMenu(self.menubar)
|
||||
self.menuView.setTitle(tr("View"))
|
||||
self.menuHelp = QMenu(self.menubar)
|
||||
self.menuHelp.setTitle(tr("Help"))
|
||||
self.setMenuBar(self.menubar)
|
||||
menubar = self.menubar
|
||||
else:
|
||||
# we are part of a tab widget, we populate its window's menubar instead
|
||||
self.menuFile = self.app.main_window.menuFile
|
||||
self.menuView = self.app.main_window.menuView
|
||||
self.menuHelp = self.app.main_window.menuHelp
|
||||
menubar = self.app.main_window.menubar
|
||||
|
||||
self.menuLoadRecent = QMenu(self.menuFile)
|
||||
self.menuLoadRecent.setTitle(tr("Load Recent Results"))
|
||||
self.setMenuBar(self.menubar)
|
||||
|
||||
self.menuFile.addAction(self.actionLoadResults)
|
||||
self.menuFile.addAction(self.menuLoadRecent.menuAction())
|
||||
self.specific_actions.add(self.menuLoadRecent.menuAction())
|
||||
self.menuFile.addSeparator()
|
||||
self.menuFile.addAction(self.app.actionClearPictureCache)
|
||||
self.menuFile.addSeparator()
|
||||
@@ -120,9 +136,9 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.menuHelp.addAction(self.app.actionOpenDebugLog)
|
||||
self.menuHelp.addAction(self.app.actionAbout)
|
||||
|
||||
self.menubar.addAction(self.menuFile.menuAction())
|
||||
self.menubar.addAction(self.menuView.menuAction())
|
||||
self.menubar.addAction(self.menuHelp.menuAction())
|
||||
menubar.addAction(self.menuFile.menuAction())
|
||||
menubar.addAction(self.menuView.menuAction())
|
||||
menubar.addAction(self.menuHelp.menuAction())
|
||||
|
||||
# Recent folders menu
|
||||
self.menuRecentFolders = QMenu()
|
||||
@@ -139,6 +155,8 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.resize(420, 338)
|
||||
self.centralwidget = QWidget(self)
|
||||
self.verticalLayout = QVBoxLayout(self.centralwidget)
|
||||
self.verticalLayout.setContentsMargins(4, 0, 4, 0)
|
||||
self.verticalLayout.setSpacing(0)
|
||||
hl = QHBoxLayout()
|
||||
label = QLabel(tr("Application Mode:"), self)
|
||||
label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
||||
|
||||
Reference in New Issue
Block a user