PICARD-1860: Easier editing in tag edit dialog

After entering or selecting the tag name open automatically switch to editing the value. Enter key enters new value instead of closing dialog.
This commit is contained in:
Philipp Wolfer
2020-08-17 08:16:35 +02:00
parent e27b7ed3a3
commit a6b35dd1d5
3 changed files with 43 additions and 3 deletions

View File

@@ -121,17 +121,37 @@ class EditTagDialog(PicardDialog):
self.value_selection_changed()
self.restore_geometry()
def keyPressEvent(self, event):
if event.modifiers() == QtCore.Qt.NoModifier and event.key() in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
self.add_or_edit_value()
event.accept()
else:
super().keyPressEvent(event)
def tag_selected(self, index):
self.add_or_edit_value()
def edit_value(self):
item = self.value_list.currentItem()
if item:
if item and not self.value_list.isPersistentEditorOpen(item):
self.value_list.editItem(item)
def add_value(self):
item = QtWidgets.QListWidgetItem()
item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsEditable)
self.value_list.addItem(item)
self.value_list.setCurrentItem(item)
self.value_list.editItem(item)
def add_or_edit_value(self):
last_item = self.value_list.item(self.value_list.count() - 1)
# Edit the last item, if it is empty, or add a new empty item
if last_item and not last_item.text():
self.value_list.setCurrentItem(last_item)
self.edit_value()
else:
self.add_value()
def remove_value(self):
value_list = self.value_list
row = value_list.currentRow()

View File

@@ -102,6 +102,7 @@ class Ui_EditTagDialog(object):
self.remove_value.clicked.connect(EditTagDialog.remove_value)
self.value_list.itemSelectionChanged.connect(EditTagDialog.value_selection_changed)
self.tag_names.editTextChanged['QString'].connect(EditTagDialog.tag_changed)
self.tag_names.activated['QString'].connect(EditTagDialog.tag_selected)
QtCore.QMetaObject.connectSlotsByName(EditTagDialog)
EditTagDialog.setTabOrder(self.tag_names, self.value_list)
EditTagDialog.setTabOrder(self.value_list, self.edit_value)

View File

@@ -144,7 +144,8 @@
<string/>
</property>
<property name="icon">
<iconset theme=":/images/16x16/go-up.png"/>
<iconset theme=":/images/16x16/go-up.png">
<normaloff>.</normaloff>.</iconset>
</property>
</widget>
</item>
@@ -160,7 +161,8 @@
<string/>
</property>
<property name="icon">
<iconset theme=":/images/16x16/go-down.png"/>
<iconset theme=":/images/16x16/go-down.png">
<normaloff>.</normaloff>.</iconset>
</property>
</widget>
</item>
@@ -375,6 +377,22 @@
</hint>
</hints>
</connection>
<connection>
<sender>tag_names</sender>
<signal>activated(QString)</signal>
<receiver>EditTagDialog</receiver>
<slot>tag_selected()</slot>
<hints>
<hint type="sourcelabel">
<x>199</x>
<y>21</y>
</hint>
<hint type="destinationlabel">
<x>199</x>
<y>124</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>move_row_up()</slot>
@@ -385,5 +403,6 @@
<slot>value_edited()</slot>
<slot>value_selection_changed()</slot>
<slot>tag_changed()</slot>
<slot>tag_selected()</slot>
</slots>
</ui>