mirror of
https://github.com/arsenetar/dupeguru.git
synced 2024-11-16 20:29:02 +00:00
3eddeb6aeb
* Fix ME and SE versions of details dialog not displaying their content properly after change to QDockWidget * Add option to toggle titlebar and orientation of titlebar in preferences dialog * Fix setting layout on PE details dialog window while layout already set, by removing the self (parent) reference in constructing the QSplitter
66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
# Created By: Virgil Dupras
|
|
# Created On: 2010-02-05
|
|
# Copyright 2015 Hardcoded Software (http://www.hardcoded.net)
|
|
#
|
|
# This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
|
|
# which should be included with this package. The terms are also available at
|
|
# http://www.gnu.org/licenses/gpl-3.0.html
|
|
|
|
from PyQt5.QtCore import Qt
|
|
from PyQt5.QtWidgets import QDockWidget, QWidget
|
|
|
|
from .details_table import DetailsModel
|
|
|
|
|
|
class DetailsDialog(QDockWidget):
|
|
def __init__(self, parent, app, **kwargs):
|
|
super().__init__(parent, Qt.Tool, **kwargs)
|
|
self.app = app
|
|
self.model = app.model.details_panel
|
|
self.setAllowedAreas(Qt.AllDockWidgetAreas)
|
|
self._setupUi()
|
|
self.update_options()
|
|
# To avoid saving uninitialized geometry on appWillSavePrefs, we track whether our dialog
|
|
# has been shown. If it has, we know that our geometry should be saved.
|
|
self._shown_once = False
|
|
self.app.prefs.restoreGeometry("DetailsWindowRect", self)
|
|
self.tableModel = DetailsModel(self.model)
|
|
# tableView is defined in subclasses
|
|
self.tableView.setModel(self.tableModel)
|
|
self.model.view = self
|
|
|
|
self.app.willSavePrefs.connect(self.appWillSavePrefs)
|
|
|
|
def _setupUi(self): # Virtual
|
|
pass
|
|
|
|
def show(self):
|
|
self._shown_once = True
|
|
super().show()
|
|
|
|
def update_options(self):
|
|
# This disables the title bar (if we had not set one before already)
|
|
# essentially making it a simple floating window, not dockable anymore
|
|
if not self.app.prefs.details_dialog_titlebar_enabled \
|
|
and not self.titleBarWidget():
|
|
self.setTitleBarWidget(QWidget())
|
|
elif self.titleBarWidget() is not None:
|
|
# resets to the default title bar
|
|
self.setTitleBarWidget(None)
|
|
|
|
features = self.features()
|
|
if self.app.prefs.details_dialog_vertical_titlebar:
|
|
self.setFeatures(features | QDockWidget.DockWidgetVerticalTitleBar)
|
|
elif features & QDockWidget.DockWidgetVerticalTitleBar:
|
|
self.setFeatures(features ^ QDockWidget.DockWidgetVerticalTitleBar)
|
|
|
|
# --- Events
|
|
def appWillSavePrefs(self):
|
|
if self._shown_once:
|
|
self.app.prefs.saveGeometry("DetailsWindowRect", self)
|
|
|
|
# --- model --> view
|
|
def refresh(self):
|
|
self.tableModel.beginResetModel()
|
|
self.tableModel.endResetModel()
|