mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-06 16:44:06 +00:00
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:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user