1
0
дзеркало https://github.com/arsenetar/dupeguru.git синхронізовано 2026-05-04 09:11:38 +00:00

Make details dialog dockable

Цей коміт міститься в:
glubsy
2020-07-13 05:06:04 +02:00
джерело 7ab299874d
коміт 56912a7108
3 змінених файлів з 16 додано та 10 видалено

Переглянути файл

@@ -7,7 +7,7 @@
import sys
import os.path as op
from PyQt5.QtCore import QTimer, QObject, QUrl, pyqtSignal
from PyQt5.QtCore import QTimer, QObject, QUrl, pyqtSignal, Qt
from PyQt5.QtGui import QDesktopServices
from PyQt5.QtWidgets import QApplication, QFileDialog, QDialog, QMessageBox
@@ -284,6 +284,8 @@ class DupeGuru(QObject):
self.resultWindow.setParent(None)
self.resultWindow = ResultWindow(self.directories_dialog, self)
self.details_dialog = self._get_details_dialog_class()(self.resultWindow, self)
self.resultWindow.addDockWidget(
Qt.BottomDockWidgetArea, self.details_dialog)
def show_results_window(self):
self.showResultsWindow()

Переглянути файл

@@ -7,12 +7,12 @@
# http://www.gnu.org/licenses/gpl-3.0.html
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QDockWidget
from .details_table import DetailsModel
class DetailsDialog(QMainWindow):
class DetailsDialog(QDockWidget):
def __init__(self, parent, app, **kwargs):
super().__init__(parent, Qt.Tool, **kwargs)
self.app = app

Переглянути файл

@@ -25,8 +25,8 @@ class DetailsDialog(DetailsDialogBase):
self.setWindowTitle(tr("Details"))
self.resize(502, 502)
self.setMinimumSize(QSize(250, 250))
self.setAllowedAreas(Qt.AllDockWidgetAreas)
self.splitter = QSplitter(Qt.Vertical, self)
self.setCentralWidget(self.splitter)
self.topFrame = QFrame()
self.topFrame.setFrameShape(QFrame.StyledPanel)
self.horizontalLayout = QGridLayout()
@@ -73,6 +73,8 @@ class DetailsDialog(DetailsDialogBase):
# Late population needed here for connections to the toolbar
self.vController.setupViewers(
self.selectedImageViewer, self.referenceImageViewer)
# self.setCentralWidget(self.splitter) # only as QMainWindow
self.setWidget(self.splitter) # only as QDockWidget
def _update(self):
if self.vController is None: # Not yet constructed!
@@ -89,15 +91,17 @@ class DetailsDialog(DetailsDialogBase):
# --- Override
def resizeEvent(self, event):
# HACK referenceViewer might be 1 pixel shorter in width
# HACK This ensures same size while shrinking.
# ReferenceViewer might be 1 pixel shorter in width
# due to the toolbar in the middle keeping the same width,
# so resizing in the GridLayout's engine leads to not enough space
# left for the panel on the right.
# This ensures same size while shrinking at least:
self.horizontalLayout.setColumnMinimumWidth(
0, self.selectedImageViewer.size().width())
self.horizontalLayout.setColumnMinimumWidth(
2, self.selectedImageViewer.size().width())
# This doesn't work as a QDockWidget however!
# self.horizontalLayout.setColumnMinimumWidth(
# 0, self.selectedImageViewer.size().width())
# self.horizontalLayout.setColumnMinimumWidth(
# 2, self.selectedImageViewer.size().width())
# This works when expanding but it's ugly:
if self.selectedImageViewer.size().width() > self.referenceImageViewer.size().width():
# print(f"""Before selected size: {self.selectedImageViewer.size()}\n""",