Skip to content

Commit 85f38ab

Browse files
committed
use list widget for selecting fields to add
1 parent 57e27bb commit 85f38ab

File tree

2 files changed

+21
-32
lines changed

2 files changed

+21
-32
lines changed

tagstudio/src/qt/modals/add_field.py

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
QHBoxLayout,
1111
QLabel,
1212
QPushButton,
13-
QComboBox,
13+
QListWidget,
1414
)
1515

1616
from src.core.library import Library
1717

1818

1919
class AddFieldModal(QWidget):
20-
done = Signal(int)
20+
done = Signal(list)
2121

2222
def __init__(self, library: "Library"):
2323
# [Done]
@@ -37,31 +37,25 @@ def __init__(self, library: "Library"):
3737
self.title_widget.setStyleSheet(
3838
# 'background:blue;'
3939
# 'text-align:center;'
40-
"font-weight:bold;" "font-size:14px;" "padding-top: 6px" ""
40+
"font-weight:bold;" "font-size:14px;" "padding-top: 6px"
4141
)
4242
self.title_widget.setText("Add Field")
4343
self.title_widget.setAlignment(Qt.AlignmentFlag.AlignCenter)
4444

45-
self.combo_box = QComboBox()
46-
self.combo_box.setEditable(False)
47-
# self.combo_box.setMaxVisibleItems(5)
48-
self.combo_box.setStyleSheet("combobox-popup:0;")
49-
self.combo_box.view().setVerticalScrollBarPolicy(
50-
Qt.ScrollBarPolicy.ScrollBarAsNeeded
51-
)
45+
self.list_widget = QListWidget()
46+
self.list_widget.setSelectionMode(QListWidget.SelectionMode.ExtendedSelection)
47+
48+
items = []
5249
for df in self.lib.default_fields:
53-
self.combo_box.addItem(
54-
f'{df["name"]} ({df["type"].replace("_", " ").title()})'
55-
)
50+
items.append(f'{df["name"]} ({df["type"].replace("_", " ").title()})')
51+
52+
self.list_widget.addItems(items)
5653

5754
self.button_container = QWidget()
5855
self.button_layout = QHBoxLayout(self.button_container)
5956
self.button_layout.setContentsMargins(6, 6, 6, 6)
6057
self.button_layout.addStretch(1)
6158

62-
# self.cancel_button = QPushButton()
63-
# self.cancel_button.setText('Cancel')
64-
6559
self.cancel_button = QPushButton()
6660
self.cancel_button.setText("Cancel")
6761
self.cancel_button.clicked.connect(self.hide)
@@ -74,17 +68,12 @@ def __init__(self, library: "Library"):
7468
self.save_button.setDefault(True)
7569
self.save_button.clicked.connect(self.hide)
7670
self.save_button.clicked.connect(
77-
lambda: self.done.emit(self.combo_box.currentIndex())
71+
lambda: self.done.emit(self.list_widget.selectedIndexes())
7872
)
79-
# self.save_button.clicked.connect(lambda: save_callback(widget.get_content()))
8073
self.button_layout.addWidget(self.save_button)
8174

82-
# self.returnPressed.connect(lambda: self.done.emit(self.combo_box.currentIndex()))
83-
84-
# self.done.connect(lambda x: callback(x))
85-
8675
self.root_layout.addWidget(self.title_widget)
87-
self.root_layout.addWidget(self.combo_box)
88-
# self.root_layout.setStretch(1,2)
76+
self.root_layout.addWidget(self.list_widget)
77+
8978
self.root_layout.addStretch(1)
9079
self.root_layout.addWidget(self.button_container)

tagstudio/src/qt/widgets/preview_panel.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import rawpy
1313
from PIL import Image, UnidentifiedImageError
1414
from PIL.Image import DecompressionBombError
15-
from PySide6.QtCore import Signal, Qt, QSize
15+
from PySide6.QtCore import QModelIndex, Signal, Qt, QSize
1616
from PySide6.QtGui import QResizeEvent, QAction
1717
from PySide6.QtWidgets import (
1818
QWidget,
@@ -411,13 +411,13 @@ def place_add_field_button(self):
411411
)
412412
self.add_field_button.clicked.connect(self.afm.show)
413413

414-
def add_field_to_selected(self, field_id: int):
415-
"""Adds an entry field to one or more selected items."""
416-
added = set()
417-
for item_pair in self.selected:
418-
if item_pair[0] == ItemType.ENTRY and item_pair[1] not in added:
419-
self.lib.add_field_to_entry(item_pair[1], field_id)
420-
added.add(item_pair[1])
414+
def add_field_to_selected(self, field_list: list[QModelIndex]):
415+
"""Add list of entry fields to one or more selected items."""
416+
for item_type, item_id in self.selected:
417+
if item_type != ItemType.ENTRY:
418+
continue
419+
for field_item in field_list:
420+
self.lib.add_field_to_entry(item_id, field_item.row())
421421

422422
# def update_widgets(self, item: Union[Entry, Collation, Tag]):
423423
def update_widgets(self):

0 commit comments

Comments
 (0)