1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-05-08 09:49:51 +00:00

Add QSplitter to hide TableView in DetailsDialog

This commit is contained in:
glubsy 2020-06-22 03:36:36 +02:00
parent aa79b31aae
commit 977c20f7c4
2 changed files with 38 additions and 16 deletions

View File

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

View File

@ -8,7 +8,7 @@ from PyQt5.QtCore import Qt, QSize, pyqtSlot, pyqtSignal
from PyQt5.QtGui import QPixmap, QIcon, QKeySequence from PyQt5.QtGui import QPixmap, QIcon, QKeySequence
from PyQt5.QtWidgets import (QLayout, QVBoxLayout, QAbstractItemView, QHBoxLayout, from PyQt5.QtWidgets import (QLayout, QVBoxLayout, QAbstractItemView, QHBoxLayout,
QLabel, QSizePolicy, QToolBar, QToolButton, QGridLayout, QStyle, QAction, QLabel, QSizePolicy, QToolBar, QToolButton, QGridLayout, QStyle, QAction,
QWidget, QApplication, QSpacerItem ) QWidget, QApplication, QSpacerItem, QSplitter, QFrame )
from hscommon.trans import trget from hscommon.trans import trget
from hscommon import desktop from hscommon import desktop
@ -25,7 +25,6 @@ class DetailsDialog(DetailsDialogBase):
self.vController = None self.vController = None
super().__init__(parent, app) super().__init__(parent, app)
def setupActions(self): def setupActions(self):
# (name, shortcut, icon, desc, func) # (name, shortcut, icon, desc, func)
ACTIONS = [ ACTIONS = [
@ -63,11 +62,17 @@ class DetailsDialog(DetailsDialogBase):
def _setupUi(self): def _setupUi(self):
self.setupActions() self.setupActions()
self.setWindowTitle(tr("Details")) self.setWindowTitle(tr("Details"))
self.resize(502, 295) self.resize(502, 502)
self.setMinimumSize(QSize(250, 250)) self.setMinimumSize(QSize(500, 500))
self.verticalLayout = QVBoxLayout(self)
self.verticalLayout.setSpacing(0) # self.verticalLayout = QVBoxLayout(self)
self.verticalLayout.setContentsMargins(0, 0, 0, 0) # self.verticalLayout.setSpacing(0)
# self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.splitter = QSplitter(Qt.Vertical, self)
self.setCentralWidget(self.splitter)
self.topFrame = QFrame()
self.topFrame.setFrameShape(QFrame.StyledPanel)
self.horizontalLayout = QGridLayout() self.horizontalLayout = QGridLayout()
# Minimum width for the toolbar in the middle: # Minimum width for the toolbar in the middle:
self.horizontalLayout.setColumnMinimumWidth(1, 10) self.horizontalLayout.setColumnMinimumWidth(1, 10)
@ -157,20 +162,33 @@ class DetailsDialog(DetailsDialogBase):
# self.referenceImageViewer.setSizePolicy(sizePolicy) # self.referenceImageViewer.setSizePolicy(sizePolicy)
# self.referenceImageViewer.setAlignment(Qt.AlignCenter) # self.referenceImageViewer.setAlignment(Qt.AlignCenter)
self.horizontalLayout.addWidget(self.referenceImageViewer, 0, 2, 3, 1) self.horizontalLayout.addWidget(self.referenceImageViewer, 0, 2, 3, 1)
self.verticalLayout.addLayout(self.horizontalLayout) # self.verticalLayout.addLayout(self.horizontalLayout)
self.topFrame.setLayout(self.horizontalLayout)
self.splitter.addWidget(self.topFrame)
# container = QWidget(self)
# container.setLayout(self.horizontalLayout)
# self.setLayout(self.horizontalLayout)
# self.splitter.addWidget(self)
self.splitter.setStretchFactor(0, 8)
self.tableView = DetailsTable(self) self.tableView = DetailsTable(self)
sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tableView.sizePolicy().hasHeightForWidth()) # sizePolicy.setHeightForWidth(self.tableView.sizePolicy().hasHeightForWidth())
self.tableView.setSizePolicy(sizePolicy) self.tableView.setSizePolicy(sizePolicy)
self.tableView.setMinimumSize(QSize(0, 188)) # self.tableView.setMinimumSize(QSize(0, 190))
self.tableView.setMaximumSize(QSize(16777215, 190)) # self.tableView.setMaximumSize(QSize(16777215, 190))
self.tableView.setAlternatingRowColors(True) self.tableView.setAlternatingRowColors(True)
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
self.tableView.setShowGrid(False) self.tableView.setShowGrid(False)
self.verticalLayout.addWidget(self.tableView) # self.verticalLayout.addLayout(self.tableView)
self.splitter.addWidget(self.tableView)
self.splitter.setStretchFactor(1, 1)
# self.tableView.hide() # self.tableView.hide()
self.buttonImgSwap.setEnabled(False) self.buttonImgSwap.setEnabled(False)
@ -207,7 +225,7 @@ class DetailsDialog(DetailsDialogBase):
group = self.app.model.results.get_group_of_duplicate(dupe) group = self.app.model.results.get_group_of_duplicate(dupe)
ref = group.ref ref = group.ref
if self.vController is None: if self.vController is None: # Not yet constructed!
return return
self.vController.update(ref, dupe) self.vController.update(ref, dupe)
@ -237,6 +255,10 @@ class DetailsDialog(DetailsDialogBase):
self.vController._updateImages() self.vController._updateImages()
def show(self): def show(self):
# Compute the maximum size the table view can reach
self.tableView.setMaximumHeight(
self.tableView.rowHeight(1) * self.tableModel.model.row_count()\
+ self.tableView.verticalHeader().sectionSize(0))
DetailsDialogBase.show(self) DetailsDialogBase.show(self)
self._update() self._update()