From a71033d9d6b005cfcdea18378be103a01ac256ee Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sun, 4 Aug 2013 09:20:08 -0400 Subject: [PATCH] Added a splitter control to the Re-Prioritize dialog Fixes #224 --- cocoa/base/ui/prioritize_dialog.py | 43 ++++++++++++++++++++---------- qt/base/prioritize_dialog.py | 25 +++++++++++------ 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/cocoa/base/ui/prioritize_dialog.py b/cocoa/base/ui/prioritize_dialog.py index cadfedd7..69271139 100644 --- a/cocoa/base/ui/prioritize_dialog.py +++ b/cocoa/base/ui/prioritize_dialog.py @@ -5,11 +5,12 @@ result = Window(610, 400, "Re-Prioritize duplicates") promptLabel = Label(result, "Add criteria to the right box and click OK to send the dupes that " "correspond the best to these criteria to their respective group's reference position. Read " "the help file for more information.") -categoryPopup = Popup(result) -criteriaTable = ListView(result) -prioritizationTable = ListView(result) -addButton = Button(result, NLSTR("-->")) -removeButton = Button(result, NLSTR("<--")) +split = SplitView(result, 2, vertical=True) +categoryPopup = Popup(split.subviews[0]) +criteriaTable = ListView(split.subviews[0]) +prioritizationTable = ListView(split.subviews[1]) +addButton = Button(split.subviews[1], NLSTR("-->")) +removeButton = Button(split.subviews[1], NLSTR("<--")) okButton = Button(result, "Ok") cancelButton = Button(result, "Cancel") @@ -27,24 +28,38 @@ cancelButton.action = Action(owner, 'cancel') okButton.keyEquivalent = '\\r' cancelButton.keyEquivalent = '\\e' +# For layouts to correctly work, subviews need to have the dimensions they'll approximately have +# at runtime. +split.subviews[0].width = 260 +split.subviews[0].height = 260 +split.subviews[1].width = 340 +split.subviews[1].height = 260 promptLabel.height *= 3 # 3 lines -leftLayout = VLayout([categoryPopup, criteriaTable], width=262, filler=criteriaTable) +leftLayout = VLayout([categoryPopup, criteriaTable], filler=criteriaTable) middleLayout = VLayout([addButton, removeButton], width=41) buttonLayout = HLayout([None, cancelButton, okButton]) +#pack split subview 0 +leftLayout.fillAll() + +#pack split subview 1 +prioritizationTable.fillAll() +prioritizationTable.width -= 48 +prioritizationTable.moveTo(Pack.Right) +middleLayout.moveNextTo(prioritizationTable, Pack.Left, align=Pack.Middle) + +# Main layout promptLabel.packToCorner(Pack.UpperLeft) promptLabel.fill(Pack.Right) -leftLayout.packRelativeTo(promptLabel, Pack.Below) -middleLayout.packRelativeTo(leftLayout, Pack.Right, align=Pack.Above) -prioritizationTable.packRelativeTo(middleLayout, Pack.Right, align=Pack.Above) -buttonLayout.packRelativeTo(leftLayout, Pack.Below) +split.moveNextTo(promptLabel, Pack.Below) +buttonLayout.moveNextTo(split, Pack.Below) buttonLayout.fill(Pack.Right) -leftLayout.fill(Pack.Below) -middleLayout.packRelativeTo(leftLayout, Pack.Right, align=Pack.Middle) -prioritizationTable.fill(Pack.Below, goal=leftLayout.y) -prioritizationTable.fill(Pack.Right) +split.fill(Pack.LowerRight) promptLabel.setAnchor(Pack.UpperLeft, growX=True) prioritizationTable.setAnchor(Pack.UpperLeft, growX=True, growY=True) +categoryPopup.setAnchor(Pack.UpperLeft, growX=True) +criteriaTable.setAnchor(Pack.UpperLeft, growX=True, growY=True) +split.setAnchor(Pack.UpperLeft, growX=True, growY=True) buttonLayout.setAnchor(Pack.Below) diff --git a/qt/base/prioritize_dialog.py b/qt/base/prioritize_dialog.py index 768798e9..88920762 100644 --- a/qt/base/prioritize_dialog.py +++ b/qt/base/prioritize_dialog.py @@ -8,7 +8,7 @@ from PyQt4.QtCore import Qt, QMimeData, QByteArray from PyQt4.QtGui import (QDialog, QVBoxLayout, QHBoxLayout, QPushButton, QComboBox, QListView, - QDialogButtonBox, QAbstractItemView, QLabel) + QDialogButtonBox, QAbstractItemView, QLabel, QStyle, QSplitter, QWidget, QSizePolicy) from hscommon.trans import trget from qtlib.selectable_list import ComboboxModel, ListviewModel @@ -79,8 +79,8 @@ class PrioritizeDialog(QDialog): self.promptLabel.setWordWrap(True) self.categoryCombobox = QComboBox() self.criteriaListView = QListView() - self.addCriteriaButton = QPushButton("-->") - self.removeCriteriaButton = QPushButton("<--") + self.addCriteriaButton = QPushButton(self.style().standardIcon(QStyle.SP_ArrowRight), "") + self.removeCriteriaButton = QPushButton(self.style().standardIcon(QStyle.SP_ArrowLeft), "") self.prioritizationListView = QListView() self.prioritizationListView.setAcceptDrops(True) self.prioritizationListView.setDragEnabled(True) @@ -92,17 +92,26 @@ class PrioritizeDialog(QDialog): # layout self.mainLayout = QVBoxLayout(self) self.mainLayout.addWidget(self.promptLabel) - self.widgetsLayout = QHBoxLayout() + self.splitter = QSplitter() + sp = self.splitter.sizePolicy() + sp.setVerticalPolicy(QSizePolicy.Expanding) + self.splitter.setSizePolicy(sp) + self.leftSide = QWidget() self.leftWidgetsLayout = QVBoxLayout() self.leftWidgetsLayout.addWidget(self.categoryCombobox) self.leftWidgetsLayout.addWidget(self.criteriaListView) - self.widgetsLayout.addLayout(self.leftWidgetsLayout) + self.leftSide.setLayout(self.leftWidgetsLayout) + self.splitter.addWidget(self.leftSide) + self.rightSide = QWidget() + self.rightWidgetsLayout = QHBoxLayout() self.addRemoveButtonsLayout = QVBoxLayout() self.addRemoveButtonsLayout.addItem(verticalSpacer()) self.addRemoveButtonsLayout.addWidget(self.addCriteriaButton) self.addRemoveButtonsLayout.addWidget(self.removeCriteriaButton) self.addRemoveButtonsLayout.addItem(verticalSpacer()) - self.widgetsLayout.addLayout(self.addRemoveButtonsLayout) - self.widgetsLayout.addWidget(self.prioritizationListView) - self.mainLayout.addLayout(self.widgetsLayout) + self.rightWidgetsLayout.addLayout(self.addRemoveButtonsLayout) + self.rightWidgetsLayout.addWidget(self.prioritizationListView) + self.rightSide.setLayout(self.rightWidgetsLayout) + self.splitter.addWidget(self.rightSide) + self.mainLayout.addWidget(self.splitter) self.mainLayout.addWidget(self.buttonBox)