feat(product-suite): compact controls and remember settings
This commit is contained in:
@@ -7,7 +7,7 @@ sys.path.insert(0, os.path.dirname(__file__))
|
||||
|
||||
from _helpers import TempDirMixin
|
||||
|
||||
from app import accounts, image_studio, image_studio_images
|
||||
from app import accounts, appconfig, image_studio, image_studio_images
|
||||
from app import gui
|
||||
|
||||
if gui.QT_IMPORT_ERROR is not None:
|
||||
@@ -52,6 +52,9 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
|
||||
accounts.create_account("主店", "alias-a", debug_port=9222, config=config)
|
||||
tab = ProductSuiteTab(config=config, db_path=config["db_path"])
|
||||
self.addCleanup(tab.close)
|
||||
tab.resize(1180, 760)
|
||||
tab.show()
|
||||
self.app.processEvents()
|
||||
|
||||
self.assertEqual("productSuiteTab", tab.objectName())
|
||||
self.assertEqual(1, tab.task_tabs.count())
|
||||
@@ -61,6 +64,54 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
|
||||
self.assertEqual("中国台湾", tab.country_combo.currentData())
|
||||
self.assertEqual("繁体中文", tab.language_combo.currentData())
|
||||
self.assertEqual("1:1", tab.ratio_combo.currentData())
|
||||
self.assertEqual("Shopee", tab.platform_combo.currentText())
|
||||
self.assertEqual("中国台湾", tab.country_combo.currentText())
|
||||
self.assertEqual("繁体中文", tab.language_combo.currentText())
|
||||
self.assertEqual("1:1", tab.ratio_combo.currentText())
|
||||
self.assertEqual("平台", tab.platform_label.text())
|
||||
self.assertEqual("站点", tab.country_label.text())
|
||||
self.assertEqual("语言", tab.language_label.text())
|
||||
self.assertEqual("比例", tab.ratio_label.text())
|
||||
for column, combo in enumerate(
|
||||
(
|
||||
tab.platform_combo,
|
||||
tab.country_combo,
|
||||
tab.language_combo,
|
||||
tab.ratio_combo,
|
||||
)
|
||||
):
|
||||
self.assertIs(combo, tab.settings_grid.itemAtPosition(1, column).widget())
|
||||
self.assertEqual(
|
||||
1,
|
||||
len(
|
||||
{
|
||||
tab.platform_combo.width(),
|
||||
tab.country_combo.width(),
|
||||
tab.language_combo.width(),
|
||||
tab.ratio_combo.width(),
|
||||
}
|
||||
),
|
||||
)
|
||||
self.assertLessEqual(tab.task_tabs.maximumHeight(), 36)
|
||||
self.assertEqual(120, tab.account_combo.minimumWidth())
|
||||
self.assertEqual(160, tab.account_combo.maximumWidth())
|
||||
self.assertGreaterEqual(tab.item_id_edit.minimumWidth(), 120)
|
||||
self.assertLessEqual(tab.item_id_edit.maximumWidth(), 140)
|
||||
self.assertLess(
|
||||
tab.context_bar_layout.indexOf(tab.history_button),
|
||||
tab.context_bar_layout.indexOf(tab.account_combo),
|
||||
)
|
||||
self.assertLess(
|
||||
tab.context_bar_layout.indexOf(tab.open_folder_button),
|
||||
tab.context_bar_layout.indexOf(tab.account_combo),
|
||||
)
|
||||
self.assertLess(
|
||||
tab.context_bar_layout.indexOf(tab.add_images_button),
|
||||
tab.context_bar_layout.indexOf(tab.account_combo),
|
||||
)
|
||||
self.assertEqual(-1, tab.results_toolbar_layout.indexOf(tab.history_button))
|
||||
self.assertEqual(-1, tab.results_toolbar_layout.indexOf(tab.open_folder_button))
|
||||
self.assertEqual("打开结果文件夹", tab.open_folder_button.text())
|
||||
self.assertEqual("合计 5 张", tab.category_total_label.text())
|
||||
self.assertEqual("生成套图(5)", tab.generate_button.text())
|
||||
|
||||
@@ -84,6 +135,64 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_recent_dropdown_settings_restore_after_restart_and_project_wins(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
config_path = os.path.join(temp_dir, "config.json")
|
||||
config = appconfig.save_config(self._config(temp_dir), path=config_path)
|
||||
account = accounts.create_account(
|
||||
"主店",
|
||||
"alias-a",
|
||||
debug_port=9222,
|
||||
config=config,
|
||||
)
|
||||
project = image_studio.create_or_get_project(
|
||||
account,
|
||||
item_id="51100639510",
|
||||
path=config["db_path"],
|
||||
)
|
||||
project_settings = image_studio.project_suite_settings(project)
|
||||
project_settings["ratio"] = "4:3"
|
||||
image_studio.update_project_suite_settings(
|
||||
project.id,
|
||||
project_settings,
|
||||
path=config["db_path"],
|
||||
)
|
||||
|
||||
first = ProductSuiteTab(
|
||||
config=config,
|
||||
config_path=config_path,
|
||||
db_path=config["db_path"],
|
||||
)
|
||||
first.ratio_combo.setCurrentIndex(first.ratio_combo.findData("16:9"))
|
||||
self.assertEqual(
|
||||
"16:9",
|
||||
appconfig.product_suite_last_settings(
|
||||
appconfig.load_config(config_path)
|
||||
)["ratio"],
|
||||
)
|
||||
first.close()
|
||||
first.deleteLater()
|
||||
self.app.processEvents()
|
||||
|
||||
reloaded = appconfig.load_config(config_path)
|
||||
second = ProductSuiteTab(
|
||||
config=reloaded,
|
||||
config_path=config_path,
|
||||
db_path=reloaded["db_path"],
|
||||
)
|
||||
self.addCleanup(second.close)
|
||||
self.assertEqual("16:9", second.ratio_combo.currentData())
|
||||
|
||||
state = second._displayed_state
|
||||
state.account_alias = "alias-a"
|
||||
state.item_id = "51100639510"
|
||||
second._bind_project(state, load_existing=True)
|
||||
|
||||
self.assertEqual("4:3", second.ratio_combo.currentData())
|
||||
self.assertEqual("4:3", state.settings["ratio"])
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_task_tabs_keep_independent_prompt_and_settings(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
config = self._config(temp_dir)
|
||||
|
||||
Reference in New Issue
Block a user