added tag to sandbox_tab
This commit is contained in:
parent
b5567bf498
commit
1d72ea96d5
2 changed files with 31 additions and 13 deletions
Binary file not shown.
|
|
@ -44,6 +44,12 @@ class SandboxTab(QWidget):
|
|||
self.txt_context.setPlaceholderText("e.g., Camino 2027, Café, Market conversation...")
|
||||
self.txt_context.setStyleSheet("padding: 6px; font-size: 14px;")
|
||||
self.txt_context.textChanged.connect(self.handle_live_filter)
|
||||
|
||||
# NEW: Tags input field with live filter connection
|
||||
self.txt_tags = QLineEdit()
|
||||
self.txt_tags.setPlaceholderText("e.g., verb, greeting, subjunctive, travel...")
|
||||
self.txt_tags.setStyleSheet("padding: 6px; font-size: 14px;")
|
||||
self.txt_tags.textChanged.connect(self.handle_live_filter)
|
||||
|
||||
self.txt_notes = QLineEdit()
|
||||
self.txt_notes.setPlaceholderText("Grammar rules, formal vs informal nuances...")
|
||||
|
|
@ -53,6 +59,7 @@ class SandboxTab(QWidget):
|
|||
form_layout.addRow(QLabel("<b>English Text:</b>"), self.txt_english)
|
||||
form_layout.addRow(QLabel("<b>Spanish Text:</b>"), self.txt_spanish)
|
||||
form_layout.addRow(QLabel("<b>Source Context:</b>"), self.txt_context)
|
||||
form_layout.addRow(QLabel("<b>Tags:</b>"), self.txt_tags)
|
||||
form_layout.addRow(QLabel("<b>Historical Notes:</b>"), self.txt_notes)
|
||||
|
||||
main_layout.addWidget(form_container)
|
||||
|
|
@ -155,8 +162,8 @@ class SandboxTab(QWidget):
|
|||
|
||||
# --- SECTION 4: DATALIST DISPLAY REGION ---
|
||||
self.table = QTableWidget()
|
||||
self.table.setColumnCount(5)
|
||||
self.table.setHorizontalHeaderLabels(["ID", "English Phrase", "Spanish Translation", "Context", "Notes"])
|
||||
self.table.setColumnCount(6) # Increased to 6 to display Tags column
|
||||
self.table.setHorizontalHeaderLabels(["ID", "English Phrase", "Spanish Translation", "Context", "Tags", "Notes"])
|
||||
self.table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows)
|
||||
self.table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers)
|
||||
|
||||
|
|
@ -169,7 +176,8 @@ class SandboxTab(QWidget):
|
|||
header.setSectionResizeMode(1, QHeaderView.ResizeMode.Stretch)
|
||||
header.setSectionResizeMode(2, QHeaderView.ResizeMode.Stretch)
|
||||
header.setSectionResizeMode(3, QHeaderView.ResizeMode.Interactive)
|
||||
header.setSectionResizeMode(4, QHeaderView.ResizeMode.Interactive)
|
||||
header.setSectionResizeMode(4, QHeaderView.ResizeMode.Interactive) # Tags Header
|
||||
header.setSectionResizeMode(5, QHeaderView.ResizeMode.Interactive) # Notes Header
|
||||
|
||||
main_layout.addWidget(self.table)
|
||||
|
||||
|
|
@ -193,13 +201,14 @@ class SandboxTab(QWidget):
|
|||
|
||||
@pyqtSlot()
|
||||
def handle_live_filter(self):
|
||||
"""Filters the visible database entries based on current text input criteria."""
|
||||
"""Filters the visible entries based on English, Spanish, Context, and Tags criteria."""
|
||||
# Temporary block signals to prevent selection loops from fighting text changes
|
||||
self.table.blockSignals(True)
|
||||
|
||||
filter_en = self.txt_english.text().lower().strip()
|
||||
filter_es = self.txt_spanish.text().lower().strip()
|
||||
filter_ctx = self.txt_context.text().lower().strip()
|
||||
filter_tag = self.txt_tags.text().lower().strip() # Capture tag text query
|
||||
|
||||
self.table.setRowCount(0)
|
||||
visible_row_index = 0
|
||||
|
|
@ -208,15 +217,17 @@ class SandboxTab(QWidget):
|
|||
val_en = (row["en_text"] or "").lower()
|
||||
val_es = (row["es_text"] or "").lower()
|
||||
val_ctx = (row["source_context"] or "").lower()
|
||||
val_tag = (row["tags"] or "").lower() # Extract tags criteria
|
||||
|
||||
# Look for matches across English, Spanish, and Source Context
|
||||
if (filter_en in val_en) and (filter_es in val_es) and (filter_ctx in val_ctx):
|
||||
# Look for explicit matching conditions across all 4 entry variables
|
||||
if (filter_en in val_en) and (filter_es in val_es) and (filter_ctx in val_ctx) and (filter_tag in val_tag):
|
||||
self.table.insertRow(visible_row_index)
|
||||
|
||||
item_id = QTableWidgetItem(str(row["translation_id"]))
|
||||
item_en = QTableWidgetItem(row["en_text"])
|
||||
item_es = QTableWidgetItem(row["es_text"])
|
||||
item_ctx = QTableWidgetItem(row["source_context"] or "")
|
||||
item_tag = QTableWidgetItem(row["tags"] or "")
|
||||
item_nts = QTableWidgetItem(row["notes"] or "")
|
||||
|
||||
item_id.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
|
|
@ -225,7 +236,8 @@ class SandboxTab(QWidget):
|
|||
self.table.setItem(visible_row_index, 1, item_en)
|
||||
self.table.setItem(visible_row_index, 2, item_es)
|
||||
self.table.setItem(visible_row_index, 3, item_ctx)
|
||||
self.table.setItem(visible_row_index, 4, item_nts)
|
||||
self.table.setItem(visible_row_index, 4, item_tag)
|
||||
self.table.setItem(visible_row_index, 5, item_nts)
|
||||
|
||||
# If we have an active editing ID, highlight that specific row during re-renders
|
||||
if self.selected_translation_id == row["translation_id"]:
|
||||
|
|
@ -256,17 +268,20 @@ class SandboxTab(QWidget):
|
|||
self.txt_english.blockSignals(True)
|
||||
self.txt_spanish.blockSignals(True)
|
||||
self.txt_context.blockSignals(True)
|
||||
self.txt_tags.blockSignals(True)
|
||||
self.txt_notes.blockSignals(True)
|
||||
|
||||
self.selected_translation_id = record["translation_id"]
|
||||
self.txt_english.setText(record["en_text"])
|
||||
self.txt_spanish.setText(record["es_text"])
|
||||
self.txt_context.setText(record["source_context"] or "")
|
||||
self.txt_tags.setText(record["tags"] or "")
|
||||
self.txt_notes.setText(record["notes"] or "")
|
||||
|
||||
self.txt_english.blockSignals(False)
|
||||
self.txt_spanish.blockSignals(False)
|
||||
self.txt_context.blockSignals(False)
|
||||
self.txt_tags.blockSignals(False)
|
||||
self.txt_notes.blockSignals(False)
|
||||
|
||||
@pyqtSlot()
|
||||
|
|
@ -284,8 +299,8 @@ class SandboxTab(QWidget):
|
|||
en_text = self.txt_english.text().strip()
|
||||
es_text = self.txt_spanish.text().strip()
|
||||
context = self.txt_context.text().strip()
|
||||
tags = self.txt_tags.text().strip()
|
||||
notes = self.txt_notes.text().strip()
|
||||
tags = "" # Default empty placeholder string to fit the backend DB method signature
|
||||
|
||||
if not en_text or not es_text:
|
||||
QMessageBox.warning(self, "Validation Alert", "Both English and Spanish base text blocks are required.")
|
||||
|
|
@ -293,14 +308,12 @@ class SandboxTab(QWidget):
|
|||
|
||||
try:
|
||||
if self.selected_translation_id is not None:
|
||||
# Direct match for database.update_translation_record signature:
|
||||
# (translation_id, es_text, en_text, source_context, tags, notes)
|
||||
# database.update_translation_record signature: (translation_id, es_text, en_text, source_context, tags, notes)
|
||||
database.update_translation_record(
|
||||
self.selected_translation_id, es_text, en_text, context, tags, notes
|
||||
)
|
||||
else:
|
||||
# Direct match for database.insert_translation_record signature:
|
||||
# (es_text, en_text, source_context, tags, notes)
|
||||
# database.insert_translation_record signature: (es_text, en_text, source_context, tags, notes)
|
||||
database.insert_translation_record(
|
||||
es_text, en_text, context, tags, notes
|
||||
)
|
||||
|
|
@ -331,16 +344,19 @@ class SandboxTab(QWidget):
|
|||
self.txt_english.blockSignals(True)
|
||||
self.txt_spanish.blockSignals(True)
|
||||
self.txt_context.blockSignals(True)
|
||||
self.txt_tags.blockSignals(True)
|
||||
self.txt_notes.blockSignals(True)
|
||||
|
||||
self.txt_english.clear()
|
||||
self.txt_spanish.clear()
|
||||
self.txt_context.clear()
|
||||
self.txt_tags.clear()
|
||||
self.txt_notes.clear()
|
||||
|
||||
self.txt_english.blockSignals(False)
|
||||
self.txt_spanish.blockSignals(False)
|
||||
self.txt_context.blockSignals(False)
|
||||
self.txt_tags.blockSignals(False)
|
||||
self.txt_notes.blockSignals(False)
|
||||
|
||||
def reload_table_display(self):
|
||||
|
|
@ -358,6 +374,7 @@ class SandboxTab(QWidget):
|
|||
item_en = QTableWidgetItem(row["en_text"])
|
||||
item_es = QTableWidgetItem(row["es_text"])
|
||||
item_ctx = QTableWidgetItem(row["source_context"] or "")
|
||||
item_tag = QTableWidgetItem(row["tags"] or "")
|
||||
item_nts = QTableWidgetItem(row["notes"] or "")
|
||||
|
||||
item_id.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
|
|
@ -366,6 +383,7 @@ class SandboxTab(QWidget):
|
|||
self.table.setItem(idx, 1, item_en)
|
||||
self.table.setItem(idx, 2, item_es)
|
||||
self.table.setItem(idx, 3, item_ctx)
|
||||
self.table.setItem(idx, 4, item_nts)
|
||||
self.table.setItem(idx, 4, item_tag)
|
||||
self.table.setItem(idx, 5, item_nts)
|
||||
|
||||
self.table.blockSignals(False)
|
||||
Loading…
Reference in a new issue