feat(ai-studio): streamline final selection rails
This commit is contained in:
+64
-4
@@ -17,9 +17,18 @@ from app import accounts, ai, appconfig, db, image_paths, image_studio, prompts,
|
||||
if gui.QT_IMPORT_ERROR is not None:
|
||||
raise unittest.SkipTest("PySide6 未安装")
|
||||
|
||||
from PySide6.QtCore import QItemSelectionModel, QModelIndex, QRect, QSize
|
||||
from PySide6.QtCore import QItemSelectionModel, QModelIndex, QRect, QSize, Qt
|
||||
from PySide6.QtGui import QImage, QKeyEvent, QTextCursor
|
||||
from PySide6.QtWidgets import QApplication, QComboBox, QLineEdit, QPlainTextEdit, QProgressBar, QTableView
|
||||
from PySide6.QtWidgets import (
|
||||
QAbstractItemView,
|
||||
QApplication,
|
||||
QComboBox,
|
||||
QLineEdit,
|
||||
QListView,
|
||||
QPlainTextEdit,
|
||||
QProgressBar,
|
||||
QTableView,
|
||||
)
|
||||
|
||||
from app.gui import (
|
||||
AccountDialog,
|
||||
@@ -813,7 +822,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
if tab.main_selection_list.item(row).data(gui.Qt.UserRole) is not None
|
||||
])
|
||||
self.assertEqual(9, tab.main_selection_list.count())
|
||||
self.assertIn("空位", tab.main_selection_list.item(2).text())
|
||||
self.assertIn("空位", tab.main_selection_list.item(2).toolTip())
|
||||
self.assertEqual("#fff8c5", tab.main_selection_list.item(0).background().color().name())
|
||||
|
||||
self.assertFalse(tab.add_asset_to_selection("main", first.id))
|
||||
@@ -822,7 +831,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
detail = image_studio.list_selections(project.id, "detail", path=cfg["db_path"])
|
||||
self.assertEqual([first.id], [selection.asset_id for selection in detail])
|
||||
self.assertEqual(12, tab.detail_selection_list.count())
|
||||
self.assertIn("空位", tab.detail_selection_list.item(1).text())
|
||||
self.assertIn("空位", tab.detail_selection_list.item(1).toolTip())
|
||||
|
||||
self.assertTrue(tab.move_selection_asset("main", 1, 0))
|
||||
main = image_studio.list_selections(project.id, "main", path=cfg["db_path"])
|
||||
@@ -834,6 +843,57 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_image_studio_final_selection_uses_compact_single_row_rails(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
cfg = self.make_config(temp_dir)
|
||||
db.init_db(cfg["db_path"])
|
||||
project = image_studio.create_or_get_project(
|
||||
account_alias="alias-a",
|
||||
account_slug="alias_a",
|
||||
item_id="51100639510",
|
||||
path=cfg["db_path"],
|
||||
)
|
||||
tab = ImageStudioTab(config=cfg, db_path=cfg["db_path"])
|
||||
self.addCleanup(tab.close)
|
||||
tab._select_project(project.id)
|
||||
tab.resize(1280, 820)
|
||||
tab.show()
|
||||
self.app.processEvents()
|
||||
|
||||
self.assertGreaterEqual(tab.final_panel.minimumHeight(), 150)
|
||||
self.assertLessEqual(tab.final_panel.maximumHeight(), 170)
|
||||
self.assertLess(tab.main_selection_list.y(), tab.detail_selection_list.y())
|
||||
self.assertEqual(QListView.IconMode, tab.main_selection_list.viewMode())
|
||||
self.assertEqual(QListView.IconMode, tab.detail_selection_list.viewMode())
|
||||
self.assertEqual(QListView.LeftToRight, tab.main_selection_list.flow())
|
||||
self.assertEqual(QListView.LeftToRight, tab.detail_selection_list.flow())
|
||||
self.assertFalse(tab.main_selection_list.isWrapping())
|
||||
self.assertFalse(tab.detail_selection_list.isWrapping())
|
||||
self.assertEqual(QSize(60, 62), tab.main_selection_list.gridSize())
|
||||
self.assertEqual(QSize(50, 52), tab.detail_selection_list.gridSize())
|
||||
self.assertEqual(9, tab.main_selection_list.count())
|
||||
self.assertEqual(12, tab.detail_selection_list.count())
|
||||
self.assertEqual(
|
||||
QAbstractItemView.ScrollPerPixel,
|
||||
tab.main_selection_list.horizontalScrollMode(),
|
||||
)
|
||||
self.assertEqual(Qt.ScrollBarAlwaysOff, tab.detail_selection_list.verticalScrollBarPolicy())
|
||||
self.assertEqual(Qt.ScrollBarAsNeeded, tab.detail_selection_list.horizontalScrollBarPolicy())
|
||||
self.assertTrue(tab.export_button.isEnabled())
|
||||
self.assertIn("当前未选择终选图片", tab.export_summary_label.text())
|
||||
|
||||
tab.detail_selection_list.setFixedWidth(240)
|
||||
self.app.processEvents()
|
||||
self.assertGreater(tab.detail_selection_list.horizontalScrollBar().maximum(), 0)
|
||||
|
||||
tab._set_running(True)
|
||||
self.assertFalse(tab.main_selection_list.isEnabled())
|
||||
self.assertFalse(tab.detail_selection_list.isEnabled())
|
||||
self.assertFalse(tab.export_button.isEnabled())
|
||||
tab._set_running(False)
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_image_studio_tab_shows_resume_and_job_billing_status(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
cfg = self.make_config(temp_dir)
|
||||
|
||||
Reference in New Issue
Block a user