[#138] Added a prompt label and a remove button to the reprioritization dialog (Qt).

This commit is contained in:
Virgil Dupras 2011-09-12 11:05:53 -04:00
parent 90f9493ccc
commit cf606a494c
3 changed files with 41 additions and 4 deletions

View File

@ -23,6 +23,9 @@ class PrioritizationList(GUISelectableList):
self.dialog = dialog self.dialog = dialog
GUISelectableList.__init__(self) GUISelectableList.__init__(self)
def _refresh_contents(self):
self[:] = [crit.display for crit in self.dialog.prioritizations]
def move_indexes(self, indexes, dest_index): def move_indexes(self, indexes, dest_index):
indexes.sort() indexes.sort()
prilist = self.dialog.prioritizations prilist = self.dialog.prioritizations
@ -30,7 +33,13 @@ class PrioritizationList(GUISelectableList):
for i in reversed(indexes): for i in reversed(indexes):
del prilist[i] del prilist[i]
prilist[dest_index:dest_index] = selected prilist[dest_index:dest_index] = selected
self[:] = [crit.display for crit in prilist] self._refresh_contents()
def remove_selected(self):
prilist = self.dialog.prioritizations
for i in sorted(self.selected_indexes, reverse=True):
del prilist[i]
self._refresh_contents()
class PrioritizeDialog: class PrioritizeDialog:
def __init__(self, view, app): def __init__(self, view, app):
@ -57,5 +66,8 @@ class PrioritizeDialog:
self.prioritizations.append(crit) self.prioritizations.append(crit)
self.prioritization_list[:] = [crit.display for crit in self.prioritizations] self.prioritization_list[:] = [crit.display for crit in self.prioritizations]
def remove_selected(self):
self.prioritization_list.remove_selected()
def perform_reprioritization(self): def perform_reprioritization(self):
self.app.reprioritize_groups(self._sort_key) self.app.reprioritize_groups(self._sort_key)

View File

@ -111,6 +111,17 @@ def test_reorder_prioritizations(app):
] ]
eq_(app.pdialog.prioritization_list[:], expected) eq_(app.pdialog.prioritization_list[:], expected)
@with_app(app_normal_results)
def test_remove_crit_from_list(app):
app.add_pri_criterion("Kind", 0)
app.add_pri_criterion("Kind", 1)
app.pdialog.prioritization_list.select(0)
app.pdialog.remove_selected()
expected = [
"Kind (ext2)",
]
eq_(app.pdialog.prioritization_list[:], expected)
#--- #---
def app_one_name_ends_with_number(): def app_one_name_ends_with_number():
dupes = [ dupes = [

View File

@ -8,10 +8,11 @@
from PyQt4.QtCore import Qt, QMimeData, QByteArray from PyQt4.QtCore import Qt, QMimeData, QByteArray
from PyQt4.QtGui import (QDialog, QVBoxLayout, QHBoxLayout, QPushButton, QComboBox, QListView, from PyQt4.QtGui import (QDialog, QVBoxLayout, QHBoxLayout, QPushButton, QComboBox, QListView,
QDialogButtonBox, QAbstractItemView) QDialogButtonBox, QAbstractItemView, QLabel)
from hscommon.trans import tr from hscommon.trans import tr
from qtlib.selectable_list import ComboboxModel, ListviewModel from qtlib.selectable_list import ComboboxModel, ListviewModel
from qtlib.util import verticalSpacer
from core.gui.prioritize_dialog import PrioritizeDialog as PrioritizeDialogModel from core.gui.prioritize_dialog import PrioritizeDialog as PrioritizeDialogModel
MIME_INDEXES = 'application/dupeguru.rowindexes' MIME_INDEXES = 'application/dupeguru.rowindexes'
@ -60,16 +61,23 @@ class PrioritizeDialog(QDialog):
self.prioritizationList = PrioritizationList(model=self.model.prioritization_list, view=self.prioritizationListView) self.prioritizationList = PrioritizationList(model=self.model.prioritization_list, view=self.prioritizationListView)
self.addCriteriaButton.clicked.connect(self.model.add_selected) self.addCriteriaButton.clicked.connect(self.model.add_selected)
self.removeCriteriaButton.clicked.connect(self.model.remove_selected)
self.buttonBox.accepted.connect(self.accept) self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject) self.buttonBox.rejected.connect(self.reject)
def _setupUi(self): def _setupUi(self):
self.setWindowTitle(tr("Re-prioritize duplicates")) self.setWindowTitle(tr("Re-prioritize duplicates"))
self.resize(413, 323) self.resize(700, 400)
#widgets #widgets
msg = tr("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.")
self.promptLabel = QLabel(msg)
self.promptLabel.setWordWrap(True)
self.categoryCombobox = QComboBox() self.categoryCombobox = QComboBox()
self.criteriaListView = QListView() self.criteriaListView = QListView()
self.removeCriteriaButton = QPushButton("<--")
self.addCriteriaButton = QPushButton("-->") self.addCriteriaButton = QPushButton("-->")
self.prioritizationListView = QListView() self.prioritizationListView = QListView()
self.prioritizationListView.setAcceptDrops(True) self.prioritizationListView.setAcceptDrops(True)
@ -81,12 +89,18 @@ class PrioritizeDialog(QDialog):
# layout # layout
self.mainLayout = QVBoxLayout(self) self.mainLayout = QVBoxLayout(self)
self.mainLayout.addWidget(self.promptLabel)
self.widgetsLayout = QHBoxLayout() self.widgetsLayout = QHBoxLayout()
self.leftWidgetsLayout = QVBoxLayout() self.leftWidgetsLayout = QVBoxLayout()
self.leftWidgetsLayout.addWidget(self.categoryCombobox) self.leftWidgetsLayout.addWidget(self.categoryCombobox)
self.leftWidgetsLayout.addWidget(self.criteriaListView) self.leftWidgetsLayout.addWidget(self.criteriaListView)
self.widgetsLayout.addLayout(self.leftWidgetsLayout) self.widgetsLayout.addLayout(self.leftWidgetsLayout)
self.widgetsLayout.addWidget(self.addCriteriaButton) self.addRemoveButtonsLayout = QVBoxLayout()
self.addRemoveButtonsLayout.addItem(verticalSpacer())
self.addRemoveButtonsLayout.addWidget(self.removeCriteriaButton)
self.addRemoveButtonsLayout.addWidget(self.addCriteriaButton)
self.addRemoveButtonsLayout.addItem(verticalSpacer())
self.widgetsLayout.addLayout(self.addRemoveButtonsLayout)
self.widgetsLayout.addWidget(self.prioritizationListView) self.widgetsLayout.addWidget(self.prioritizationListView)
self.mainLayout.addLayout(self.widgetsLayout) self.mainLayout.addLayout(self.widgetsLayout)
self.mainLayout.addWidget(self.buttonBox) self.mainLayout.addWidget(self.buttonBox)