feat: split generate title and image statuses
This commit is contained in:
@@ -26,6 +26,7 @@ class GenerateTab(QWidget):
|
||||
"cover": "封面",
|
||||
"all": "标题和封面",
|
||||
}
|
||||
TABLE_COLUMN_WEIGHTS = (1.0, 0.5, 1.0, 1.0, 1.25, 1.25)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -171,11 +172,13 @@ class GenerateTab(QWidget):
|
||||
self.empty_state_button.clicked.connect(self.open_accounts_callback)
|
||||
self.task_table = QTableView()
|
||||
self.model = GenerateTaskTableModel(self.task_table, db_path=self.db_path, status_callback=self._set_status)
|
||||
self.model.set_generate_cover_enabled(self.generate_cover_checkbox.isChecked())
|
||||
self.task_table.setModel(self.model)
|
||||
self.task_table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
self.task_table.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
||||
self.task_table.setEditTriggers(QAbstractItemView.DoubleClicked | QAbstractItemView.EditKeyPressed)
|
||||
self.task_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
self.task_table.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
|
||||
self.task_table.horizontalHeader().setStretchLastSection(False)
|
||||
self.task_table.verticalHeader().setVisible(False)
|
||||
|
||||
self.run_log_view = QPlainTextEdit()
|
||||
@@ -201,6 +204,7 @@ class GenerateTab(QWidget):
|
||||
self.splitter.setStretchFactor(0, 1)
|
||||
self.splitter.setStretchFactor(1, 3)
|
||||
self.splitter.setSizes([280, 860])
|
||||
self.splitter.splitterMoved.connect(lambda *_: self._apply_task_table_column_widths())
|
||||
|
||||
title_progress_layout = QHBoxLayout()
|
||||
title_progress_layout.addWidget(self.title_progress_label)
|
||||
@@ -256,6 +260,10 @@ class GenerateTab(QWidget):
|
||||
self._show_current_run_log_empty()
|
||||
self._update_cmhub_balance_label({})
|
||||
|
||||
def resizeEvent(self, event):
|
||||
super().resizeEvent(event)
|
||||
self._apply_task_table_column_widths()
|
||||
|
||||
def _set_status(self, message, level=None):
|
||||
_emit_status(self.status_callback, message, level=level)
|
||||
|
||||
@@ -281,11 +289,31 @@ class GenerateTab(QWidget):
|
||||
def _on_generate_cover_toggled(self, checked):
|
||||
previous = bool(appconfig.ai_config(self.config).get("generate_cover", False))
|
||||
if self._save_generate_cover_setting(show_status=True):
|
||||
self.model.set_generate_cover_enabled(bool(checked))
|
||||
self.refresh_tasks()
|
||||
return
|
||||
self.generate_cover_checkbox.blockSignals(True)
|
||||
self.generate_cover_checkbox.setChecked(previous)
|
||||
self.generate_cover_checkbox.blockSignals(False)
|
||||
self.model.set_generate_cover_enabled(previous)
|
||||
|
||||
def _apply_task_table_column_widths(self):
|
||||
if self.model.columnCount() != len(self.TABLE_COLUMN_WEIGHTS):
|
||||
return
|
||||
width = max(0, int(self.task_table.viewport().width()))
|
||||
if width <= 0:
|
||||
return
|
||||
total_weight = sum(self.TABLE_COLUMN_WEIGHTS)
|
||||
used = 0
|
||||
last_column = len(self.TABLE_COLUMN_WEIGHTS) - 1
|
||||
header = self.task_table.horizontalHeader()
|
||||
for column, weight in enumerate(self.TABLE_COLUMN_WEIGHTS):
|
||||
if column == last_column:
|
||||
section_width = max(1, width - used)
|
||||
else:
|
||||
section_width = max(1, int(width * weight / total_weight))
|
||||
used += section_width
|
||||
header.resizeSection(column, section_width)
|
||||
|
||||
def _save_generate_cover_setting(self, show_status=True):
|
||||
generate_cover = bool(self.generate_cover_checkbox.isChecked())
|
||||
@@ -964,7 +992,9 @@ class GenerateTab(QWidget):
|
||||
_set_empty_state(self.empty_state_card, self.empty_state_label, self.empty_state_button)
|
||||
self._set_status(f"AI 生成任务读取失败:{exc}")
|
||||
return
|
||||
self.model.set_generate_cover_enabled(self.generate_cover_checkbox.isChecked())
|
||||
self.model.set_tasks(filtered_tasks, accounts_rows)
|
||||
self._apply_task_table_column_widths()
|
||||
self.summary_label.setText(
|
||||
f"任务 {len(filtered_tasks)}/{len(batch_tasks)} 条"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user