Add category dropdown with existing categories in macro editor

- Replace QLineEdit with editable QComboBox for category field
- Populate dropdown with existing categories from saved macros
- Allow typing new category names (editable combo box)
- Add styled dropdown arrow and item view to match dark theme

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-03 18:05:10 -08:00
parent efabf55eae
commit b37def8fec

View File

@@ -7,7 +7,7 @@ from PySide6.QtWidgets import (
QDialog, QVBoxLayout, QHBoxLayout, QFormLayout,
QLabel, QLineEdit, QPushButton, QListWidget, QListWidgetItem,
QComboBox, QSpinBox, QMessageBox, QFileDialog, QWidget,
QGroupBox, QScrollArea
QGroupBox, QScrollArea, QCompleter
)
from PySide6.QtCore import Qt, Signal
from PySide6.QtGui import QPixmap, QIcon
@@ -352,6 +352,33 @@ class MacroEditorDialog(QDialog):
QLineEdit:focus {{
border-color: {THEME['accent_color']};
}}
QComboBox {{
background-color: {THEME['bg_color']};
border: 1px solid {THEME['button_bg']};
border-radius: 4px;
padding: 8px;
color: {THEME['fg_color']};
}}
QComboBox:focus {{
border-color: {THEME['accent_color']};
}}
QComboBox::drop-down {{
border: none;
width: 20px;
}}
QComboBox::down-arrow {{
image: none;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid {THEME['fg_color']};
margin-right: 5px;
}}
QComboBox QAbstractItemView {{
background-color: {THEME['bg_color']};
color: {THEME['fg_color']};
selection-background-color: {THEME['accent_color']};
border: 1px solid {THEME['button_bg']};
}}
""")
self.setup_ui()
@@ -400,8 +427,14 @@ class MacroEditorDialog(QDialog):
category_group = QGroupBox("Category (optional)")
category_group.setStyleSheet(name_group.styleSheet())
category_layout = QVBoxLayout(category_group)
self.category_input = QLineEdit()
self.category_input.setPlaceholderText("Enter category")
self.category_input = QComboBox()
self.category_input.setEditable(True)
self.category_input.setInsertPolicy(QComboBox.NoInsert)
self.category_input.lineEdit().setPlaceholderText("Select or enter category")
# Populate with existing categories (excluding "All")
existing_categories = [c for c in self.macro_manager.get_unique_tabs() if c != "All"]
self.category_input.addItem("") # Empty option for no category
self.category_input.addItems(existing_categories)
category_layout.addWidget(self.category_input)
content_layout.addWidget(category_group)
@@ -522,7 +555,7 @@ class MacroEditorDialog(QDialog):
return
self.name_input.setText(macro.get("name", ""))
self.category_input.setText(macro.get("category", ""))
self.category_input.setCurrentText(macro.get("category", ""))
self.command_builder.set_commands(macro.get("commands", []))
if macro.get("image_path"):
@@ -563,7 +596,7 @@ class MacroEditorDialog(QDialog):
QMessageBox.warning(self, "Error", "Please add at least one command")
return
category = self.category_input.text().strip()
category = self.category_input.currentText().strip()
if self.macro_id:
# Update existing macro