From 7bd2c4ffbf3f4a87e81fc2d1ab145161d1913f29 Mon Sep 17 00:00:00 2001 From: dazedanon Date: Mon, 16 Mar 2026 18:56:22 -0500 Subject: [PATCH] Fixed --- gui/workflow_tab.py | 172 ++++++++++++++++++++++++---------------- modules/rpgmakermvmz.py | 2 +- 2 files changed, 103 insertions(+), 71 deletions(-) diff --git a/gui/workflow_tab.py b/gui/workflow_tab.py index 583ff8c..070807e 100644 --- a/gui/workflow_tab.py +++ b/gui/workflow_tab.py @@ -1402,21 +1402,16 @@ class WorkflowTab(QWidget): @staticmethod def _checkbox_box_style() -> str: - """Bordered style for sections that contain scrollable checkbox lists.""" + """Style for checkbox list container widgets.""" return ( - "QGroupBox{" - "border:1px solid #3c3c3c;" - "border-radius:4px;" + "QWidget#cbbox{" "background-color:#252526;" - "margin-top:10px;" - "padding:8px 8px 6px 8px;}" - "QGroupBox::title{" - "subcontrol-origin:margin;" - "subcontrol-position:top left;" - "left:10px;top:-1px;" - "padding:0 4px;" - "color:#888888;font-size:12px;" - "font-family:'Segoe UI','Segoe UI Emoji','Apple Color Emoji',sans-serif;}" + "border:1px solid #3c3c3c;" + "border-radius:6px;}" + "QWidget{" + "background-color:#252526;" + "border:none;}" + "QCheckBox{border:none;background-color:transparent;}" ) def _build_step3_glossary(self, layout: QVBoxLayout): @@ -1760,26 +1755,36 @@ class WorkflowTab(QWidget): pass # ── Code toggles ─────────────────────────────────────────────────── - toggle_box = QGroupBox() + codes_hdr = QHBoxLayout() + codes_title_lbl = QLabel("Enable Codes") + codes_title_lbl.setStyleSheet("color:#4ec9b0;font-size:13px;font-weight:bold;") + codes_hdr.addWidget(codes_title_lbl) + codes_hdr.addStretch() + codes_select_all_btn = QPushButton("☑") + codes_select_all_btn.setCheckable(True) + codes_select_all_btn.setFixedSize(28, 28) + codes_select_all_btn.setStyleSheet( + "QPushButton{background:transparent;color:#888888;border:none;" + "font-size:18px;padding:0 2px;}" + "QPushButton:hover{color:#cccccc;}" + "QPushButton:checked{color:#007acc;}" + ) + codes_select_all_btn.setToolTip("Select / Deselect All") + codes_hdr.addWidget(codes_select_all_btn) + layout.addLayout(codes_hdr) + + toggle_box = QWidget() + toggle_box.setObjectName("cbbox") toggle_box.setStyleSheet(self._checkbox_box_style()) toggle_box_layout = QVBoxLayout(toggle_box) - toggle_box_layout.setContentsMargins(6, 8, 6, 4) + toggle_box_layout.setContentsMargins(8, 8, 10, 6) toggle_box_layout.setSpacing(3) - codes_sa_row = QHBoxLayout() - codes_title_lbl = QLabel("Enable Codes") - codes_title_lbl.setStyleSheet("color:#888888;font-size:12px;") - codes_sa_row.addWidget(codes_title_lbl) - codes_sa_row.addStretch() - codes_select_all_btn = _make_toggle_btn("Select All") - codes_sa_row.addWidget(codes_select_all_btn) - toggle_box_layout.addLayout(codes_sa_row) - toggle_grid_container = QWidget() toggle_grid = QGridLayout(toggle_grid_container) toggle_grid.setContentsMargins(0, 0, 0, 0) - toggle_grid.setHorizontalSpacing(16) - toggle_grid.setVerticalSpacing(3) + toggle_grid.setHorizontalSpacing(24) + toggle_grid.setVerticalSpacing(4) _P2_CODE_DEFS = [ ("CODE122", "122 – Variables", "Control Variables (code 122)"), @@ -1802,7 +1807,7 @@ class WorkflowTab(QWidget): toggle_box_layout.addWidget(toggle_grid_container) def _toggle_codes(checked): - codes_select_all_btn.setText("Deselect All" if checked else "Select All") + codes_select_all_btn.setText("☑" if checked else "☐") for cb in self._p2_code_checks.values(): cb.setChecked(checked) codes_select_all_btn.toggled.connect(_toggle_codes) @@ -1812,101 +1817,128 @@ class WorkflowTab(QWidget): lists_row = QHBoxLayout() lists_row.setSpacing(8) - # Left: 357 plugin handlers - plugin357_box = QGroupBox() + _icon_btn_style = ( + "QPushButton{background:transparent;color:#888888;border:none;" + "font-size:18px;padding:0 2px;}" + "QPushButton:hover{color:#cccccc;}" + "QPushButton:checked{color:#007acc;}" + ) + + # Left column: header row + group box + left_col = QVBoxLayout() + left_col.setSpacing(3) + + plugin357_hdr = QHBoxLayout() + plugin357_title_lbl = QLabel("Code 357 — Plugin Handlers (MZ)") + plugin357_title_lbl.setStyleSheet("color:#4ec9b0;font-size:13px;font-weight:bold;") + plugin357_hdr.addWidget(plugin357_title_lbl) + plugin357_hdr.addStretch() + plugin357_select_all_btn = QPushButton("☑") + plugin357_select_all_btn.setCheckable(True) + plugin357_select_all_btn.setFixedSize(28, 28) + plugin357_select_all_btn.setStyleSheet(_icon_btn_style) + plugin357_select_all_btn.setToolTip("Select / Deselect All") + plugin357_hdr.addWidget(plugin357_select_all_btn) + left_col.addLayout(plugin357_hdr) + + plugin357_box = QWidget() + plugin357_box.setObjectName("cbbox") plugin357_box.setStyleSheet(self._checkbox_box_style()) plugin357_inner = QVBoxLayout(plugin357_box) plugin357_inner.setContentsMargins(8, 8, 10, 6) plugin357_inner.setSpacing(3) - plugin357_sa_row = QHBoxLayout() - plugin357_title_lbl = QLabel("Code 357 – Plugin Handlers (MZ)") - plugin357_title_lbl.setStyleSheet("color:#888888;font-size:12px;") - plugin357_sa_row.addWidget(plugin357_title_lbl) - plugin357_sa_row.addStretch() - plugin357_select_all_btn = _make_toggle_btn("Select All") - plugin357_sa_row.addWidget(plugin357_select_all_btn) - plugin357_inner.addLayout(plugin357_sa_row) - plugin357_container = QWidget() - plugin357_grid = QGridLayout(plugin357_container) - plugin357_grid.setContentsMargins(4, 2, 4, 2) - plugin357_grid.setHorizontalSpacing(12) - plugin357_grid.setVerticalSpacing(2) + plugin357_vbox = QVBoxLayout(plugin357_container) + plugin357_vbox.setContentsMargins(4, 2, 4, 2) + plugin357_vbox.setSpacing(2) self._p2_plugin_checks: dict = {} try: from modules.rpgmakermvmz import HEADER_MAPPINGS_357 as _HM357 - _keys357 = sorted(_HM357.keys(), key=str.casefold) - _nrows357 = -(-len(_keys357) // 2) # ceil division - for idx, key in enumerate(_keys357): + for key in sorted(_HM357.keys(), key=str.casefold): cb = QCheckBox(key) cb.setStyleSheet("color:#cccccc;font-size:13px;") - plugin357_grid.addWidget(cb, idx % _nrows357, idx // _nrows357) + plugin357_vbox.addWidget(cb) self._p2_plugin_checks[key] = cb except Exception: pass + plugin357_vbox.addStretch() plugin357_scroll = QScrollArea() plugin357_scroll.setWidgetResizable(True) plugin357_scroll.setWidget(plugin357_container) + plugin357_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) plugin357_scroll.setStyleSheet("QScrollArea{border:none;}") plugin357_inner.addWidget(plugin357_scroll, 1) + plugin357_box.setMaximumHeight(260) def _toggle_plugins357(checked): - plugin357_select_all_btn.setText("Deselect All" if checked else "Select All") + plugin357_select_all_btn.setText("☑" if checked else "☐") for cb in self._p2_plugin_checks.values(): cb.setChecked(checked) plugin357_select_all_btn.toggled.connect(_toggle_plugins357) - lists_row.addWidget(plugin357_box, 1) - # Right: 355/655 script patterns - patterns_box = QGroupBox() + left_col.addWidget(plugin357_box, 1) + lists_row.addLayout(left_col, 1) + + # Right column: header row + group box + right_col = QVBoxLayout() + right_col.setSpacing(3) + + patterns_hdr = QHBoxLayout() + patterns_title_lbl = QLabel("Code 355/655 — Script Patterns") + patterns_title_lbl.setStyleSheet("color:#4ec9b0;font-size:13px;font-weight:bold;") + patterns_hdr.addWidget(patterns_title_lbl) + patterns_hdr.addStretch() + patterns_select_all_btn = QPushButton("☑") + patterns_select_all_btn.setCheckable(True) + patterns_select_all_btn.setFixedSize(28, 28) + patterns_select_all_btn.setStyleSheet(_icon_btn_style) + patterns_select_all_btn.setToolTip("Select / Deselect All") + patterns_hdr.addWidget(patterns_select_all_btn) + right_col.addLayout(patterns_hdr) + + patterns_box = QWidget() + patterns_box.setObjectName("cbbox") patterns_box.setStyleSheet(self._checkbox_box_style()) patterns_inner_layout = QVBoxLayout(patterns_box) patterns_inner_layout.setContentsMargins(8, 8, 10, 6) patterns_inner_layout.setSpacing(3) - patterns_sa_row = QHBoxLayout() - patterns_title_lbl = QLabel("Code 355/655 – Script Patterns") - patterns_title_lbl.setStyleSheet("color:#888888;font-size:12px;") - patterns_sa_row.addWidget(patterns_title_lbl) - patterns_sa_row.addStretch() - patterns_select_all_btn = _make_toggle_btn("Select All") - patterns_sa_row.addWidget(patterns_select_all_btn) - patterns_inner_layout.addLayout(patterns_sa_row) - patterns_container = QWidget() - patterns_grid = QGridLayout(patterns_container) - patterns_grid.setContentsMargins(4, 2, 4, 2) - patterns_grid.setHorizontalSpacing(12) - patterns_grid.setVerticalSpacing(2) + patterns_vbox = QVBoxLayout(patterns_container) + patterns_vbox.setContentsMargins(4, 2, 4, 2) + patterns_vbox.setSpacing(2) self._p2_pattern_checks: dict = {} try: from modules.rpgmakermvmz import PATTERNS_355655 as _PAT - _keys_pat = sorted(_PAT.keys(), key=str.casefold) - _nrows_pat = -(-len(_keys_pat) // 2) # ceil division - for idx, key in enumerate(_keys_pat): + for key in sorted(_PAT.keys(), key=str.casefold): cb = QCheckBox(key) cb.setStyleSheet("color:#cccccc;font-size:13px;") - patterns_grid.addWidget(cb, idx % _nrows_pat, idx // _nrows_pat) + patterns_vbox.addWidget(cb) self._p2_pattern_checks[key] = cb except Exception: pass + patterns_vbox.addStretch() patterns_scroll = QScrollArea() patterns_scroll.setWidgetResizable(True) patterns_scroll.setWidget(patterns_container) + patterns_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) patterns_scroll.setStyleSheet("QScrollArea{border:none;}") patterns_inner_layout.addWidget(patterns_scroll, 1) + patterns_box.setMaximumHeight(260) def _toggle_patterns(checked): - patterns_select_all_btn.setText("Deselect All" if checked else "Select All") + patterns_select_all_btn.setText("☑" if checked else "☐") for cb in self._p2_pattern_checks.values(): cb.setChecked(checked) patterns_select_all_btn.toggled.connect(_toggle_patterns) - lists_row.addWidget(patterns_box, 1) - layout.addLayout(lists_row, 1) + right_col.addWidget(patterns_box, 1) + lists_row.addLayout(right_col, 1) + + layout.addLayout(lists_row) # ── Bottom row: Apply + Run ──────────────────────────────────────── bottom_row = QHBoxLayout() diff --git a/modules/rpgmakermvmz.py b/modules/rpgmakermvmz.py index 7f286c6..1eb24d7 100644 --- a/modules/rpgmakermvmz.py +++ b/modules/rpgmakermvmz.py @@ -191,7 +191,7 @@ HEADER_MAPPINGS_357 = { "SceneGlossary": (["category"], None), } # Subset of HEADER_MAPPINGS_357 keys that should be processed (empty = none). -ENABLED_PLUGINS_357: set = {"KN_StillManager"} +ENABLED_PLUGINS_357: set = {"_TMLogWindowMZ"} # All known code-355/655 script patterns. Enable entries via ENABLED_PATTERNS_355655. PATTERNS_355655 = {