diff --git a/dist/ImHex.run.xml b/dist/ImHex.run.xml index 8b21d2964..a027facf3 100644 --- a/dist/ImHex.run.xml +++ b/dist/ImHex.run.xml @@ -1,5 +1,5 @@ - + @@ -8,6 +8,6 @@ - + \ No newline at end of file diff --git a/plugins/builtin/include/content/views/view_pattern_editor.hpp b/plugins/builtin/include/content/views/view_pattern_editor.hpp index 57eca8584..7e62d3374 100644 --- a/plugins/builtin/include/content/views/view_pattern_editor.hpp +++ b/plugins/builtin/include/content/views/view_pattern_editor.hpp @@ -140,7 +140,8 @@ namespace hex::plugin::builtin { std::atomic m_dangerousFunctionCalled = false; std::atomic m_dangerousFunctionsAllowed = DangerousFunctionPerms::Ask; - bool m_autoLoadPatterns = true; + bool m_suggestSupportedPatterns = true; + bool m_autoApplyPatterns = false; PerProvider m_visualizerDrawer; bool m_tooltipJustOpened = false; diff --git a/plugins/builtin/romfs/lang/de_DE.json b/plugins/builtin/romfs/lang/de_DE.json index cc6ac7f31..ed40dcccd 100644 --- a/plugins/builtin/romfs/lang/de_DE.json +++ b/plugins/builtin/romfs/lang/de_DE.json @@ -447,7 +447,7 @@ "hex.builtin.setting.general.auto_backup_time": "Periodisches Projekt Backup", "hex.builtin.setting.general.auto_backup_time.format.extended": "Alle {0}min {1}s", "hex.builtin.setting.general.auto_backup_time.format.simple": "Alle {0}s", - "hex.builtin.setting.general.auto_load_patterns": "Automatisches Laden unterstützter Pattern", + "hex.builtin.setting.general.auto_apply_patterns": "Automatisches Laden unterstützter Pattern", "hex.builtin.setting.general.network": "Netzwerk", "hex.builtin.setting.general.network_interface": "Netzwerk Interface Aktivieren", "hex.builtin.setting.general.patterns": "Patterns", diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index c64ebac74..5ff9fc975 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -498,7 +498,8 @@ "hex.builtin.setting.general.auto_backup_time": "Periodically backup project", "hex.builtin.setting.general.auto_backup_time.format.simple": "Every {0}s", "hex.builtin.setting.general.auto_backup_time.format.extended": "Every {0}m {1}s", - "hex.builtin.setting.general.auto_load_patterns": "Auto-load supported pattern", + "hex.builtin.setting.general.auto_apply_patterns": "Auto-load supported pattern", + "hex.builtin.setting.general.suggest_patterns": "Suggest patterns based on loaded data", "hex.builtin.setting.general.server_contact": "Enable update checks and usage statistics", "hex.builtin.setting.general.max_mem_file_size": "Max file size to load into RAM", "hex.builtin.setting.general.max_mem_file_size.desc": "Small files are loaded into memory to prevent them from being modified directly on disk.\n\nIncreasing this size allows larger files to be loaded into memory before ImHex resorts to streaming in data from disk.", diff --git a/plugins/builtin/romfs/lang/es_ES.json b/plugins/builtin/romfs/lang/es_ES.json index 91b9829db..466eb99cc 100644 --- a/plugins/builtin/romfs/lang/es_ES.json +++ b/plugins/builtin/romfs/lang/es_ES.json @@ -446,7 +446,7 @@ "hex.builtin.setting.general.auto_backup_time": "", "hex.builtin.setting.general.auto_backup_time.format.extended": "", "hex.builtin.setting.general.auto_backup_time.format.simple": "", - "hex.builtin.setting.general.auto_load_patterns": "Cargar automáticamente patterns soportados", + "hex.builtin.setting.general.auto_apply_patterns": "Cargar automáticamente patterns soportados", "hex.builtin.setting.general.network": "", "hex.builtin.setting.general.network_interface": "", "hex.builtin.setting.general.patterns": "", diff --git a/plugins/builtin/romfs/lang/fr_FR.json b/plugins/builtin/romfs/lang/fr_FR.json index 37677bbb1..c84edde57 100644 --- a/plugins/builtin/romfs/lang/fr_FR.json +++ b/plugins/builtin/romfs/lang/fr_FR.json @@ -467,7 +467,7 @@ "hex.builtin.setting.general.auto_backup_time": "Sauvegarder périodiquement le projet", "hex.builtin.setting.general.auto_backup_time.format.simple": "Toutes les {0}s", "hex.builtin.setting.general.auto_backup_time.format.extended": "Toutes les {0}m {1}s", - "hex.builtin.setting.general.auto_load_patterns": "Charger automatiquement les modèles pris en charge", + "hex.builtin.setting.general.auto_apply_patterns": "Charger automatiquement les modèles pris en charge", "hex.builtin.setting.general.server_contact": "Activer les vérifications de mise à jour et les statistiques d'utilisation", "hex.builtin.setting.general.max_mem_file_size": "Taille maximale du fichier à charger en mémoire", "hex.builtin.setting.general.max_mem_file_size.desc": "Les petits fichiers sont chargés en mémoire pour éviter qu'ils ne soient modifiés directement sur le disque.\n\nL'augmentation de cette taille permet de charger des fichiers plus volumineux en mémoire avqu'ImHex ne se mette à diffuser les données depuis le disque.", diff --git a/plugins/builtin/romfs/lang/hu_HU.json b/plugins/builtin/romfs/lang/hu_HU.json index baa0a6b4d..22a72104e 100644 --- a/plugins/builtin/romfs/lang/hu_HU.json +++ b/plugins/builtin/romfs/lang/hu_HU.json @@ -441,7 +441,7 @@ "hex.builtin.setting.general.auto_backup_time": "A projekt automatikus mentése időközönként", "hex.builtin.setting.general.auto_backup_time.format.simple": "Minden {0}mp", "hex.builtin.setting.general.auto_backup_time.format.extended": "Minden {0}p {1}mp", - "hex.builtin.setting.general.auto_load_patterns": "Támogatott sablonok automatikus betöltése", + "hex.builtin.setting.general.auto_apply_patterns": "Támogatott sablonok automatikus betöltése", "hex.builtin.setting.general.server_contact": "Frissítések ellenőrzésének és használati statisztikák gyűjtésének engedélyezése", "hex.builtin.setting.general.network_interface": "Hálózati interfész engedélyezése", "hex.builtin.setting.general.save_recent_providers": "Nemrég használt források mentése", diff --git a/plugins/builtin/romfs/lang/it_IT.json b/plugins/builtin/romfs/lang/it_IT.json index 34394a394..cf9007626 100644 --- a/plugins/builtin/romfs/lang/it_IT.json +++ b/plugins/builtin/romfs/lang/it_IT.json @@ -446,7 +446,7 @@ "hex.builtin.setting.general.auto_backup_time": "", "hex.builtin.setting.general.auto_backup_time.format.extended": "", "hex.builtin.setting.general.auto_backup_time.format.simple": "", - "hex.builtin.setting.general.auto_load_patterns": "Auto-caricamento del pattern supportato", + "hex.builtin.setting.general.auto_apply_patterns": "Auto-caricamento del pattern supportato", "hex.builtin.setting.general.network": "", "hex.builtin.setting.general.network_interface": "", "hex.builtin.setting.general.patterns": "", diff --git a/plugins/builtin/romfs/lang/ja_JP.json b/plugins/builtin/romfs/lang/ja_JP.json index 887c7e574..faafebae7 100644 --- a/plugins/builtin/romfs/lang/ja_JP.json +++ b/plugins/builtin/romfs/lang/ja_JP.json @@ -446,7 +446,7 @@ "hex.builtin.setting.general.auto_backup_time": "", "hex.builtin.setting.general.auto_backup_time.format.extended": "", "hex.builtin.setting.general.auto_backup_time.format.simple": "", - "hex.builtin.setting.general.auto_load_patterns": "対応するパターンを自動で読み込む", + "hex.builtin.setting.general.auto_apply_patterns": "対応するパターンを自動で読み込む", "hex.builtin.setting.general.network": "", "hex.builtin.setting.general.network_interface": "", "hex.builtin.setting.general.patterns": "", diff --git a/plugins/builtin/romfs/lang/ko_KR.json b/plugins/builtin/romfs/lang/ko_KR.json index 79d0cc378..50492254f 100644 --- a/plugins/builtin/romfs/lang/ko_KR.json +++ b/plugins/builtin/romfs/lang/ko_KR.json @@ -446,7 +446,7 @@ "hex.builtin.setting.general.auto_backup_time": "", "hex.builtin.setting.general.auto_backup_time.format.extended": "", "hex.builtin.setting.general.auto_backup_time.format.simple": "", - "hex.builtin.setting.general.auto_load_patterns": "지원하는 패턴 자동으로 불러오기", + "hex.builtin.setting.general.auto_apply_patterns": "지원하는 패턴 자동으로 불러오기", "hex.builtin.setting.general.network": "네트워크", "hex.builtin.setting.general.network_interface": "네트워크 인터페이스 사용", "hex.builtin.setting.general.patterns": "패턴", diff --git a/plugins/builtin/romfs/lang/pl_PL.json b/plugins/builtin/romfs/lang/pl_PL.json index 190f1f8df..bda19f1bc 100644 --- a/plugins/builtin/romfs/lang/pl_PL.json +++ b/plugins/builtin/romfs/lang/pl_PL.json @@ -468,7 +468,7 @@ "hex.builtin.setting.general.auto_backup_time": "Okresowe tworzenie kopii zapasowej projektu", "hex.builtin.setting.general.auto_backup_time.format.simple": "Co {0}s", "hex.builtin.setting.general.auto_backup_time.format.extended": "Co {0}m {1}s", - "hex.builtin.setting.general.auto_load_patterns": "Automatycznie wczytaj obsługiwany pattern", + "hex.builtin.setting.general.auto_apply_patterns": "Automatycznie wczytaj obsługiwany pattern", "hex.builtin.setting.general.server_contact": "Włącz sprawdzanie aktualizacji i statystyki użytkowania", "hex.builtin.setting.general.max_mem_file_size": "Maksymalny rozmiar pliku do wczytania do RAM", "hex.builtin.setting.general.max_mem_file_size.desc": "Małe pliki są wczytywane do pamięci aby zapobiec ich bezpośredniej modyfikacji na dysku.\n\nZwiększenie tego rozmiaru pozwala większym plikom być wczytanym do pamięci zanim ImHex ucieknie się do strumieniowania danych z dysku.", diff --git a/plugins/builtin/romfs/lang/pt_BR.json b/plugins/builtin/romfs/lang/pt_BR.json index 47099bf9b..8d2dddd2a 100644 --- a/plugins/builtin/romfs/lang/pt_BR.json +++ b/plugins/builtin/romfs/lang/pt_BR.json @@ -446,7 +446,7 @@ "hex.builtin.setting.general.auto_backup_time": "", "hex.builtin.setting.general.auto_backup_time.format.extended": "", "hex.builtin.setting.general.auto_backup_time.format.simple": "", - "hex.builtin.setting.general.auto_load_patterns": "Padrão compatível com carregamento automático", + "hex.builtin.setting.general.auto_apply_patterns": "Padrão compatível com carregamento automático", "hex.builtin.setting.general.network": "", "hex.builtin.setting.general.network_interface": "", "hex.builtin.setting.general.patterns": "", diff --git a/plugins/builtin/romfs/lang/ru_RU.json b/plugins/builtin/romfs/lang/ru_RU.json index bbf6e68b2..226dac8e7 100644 --- a/plugins/builtin/romfs/lang/ru_RU.json +++ b/plugins/builtin/romfs/lang/ru_RU.json @@ -456,7 +456,7 @@ "hex.builtin.setting.general.auto_backup_time": "Делать резервные копии каждые", "hex.builtin.setting.general.auto_backup_time.format.simple": "{0} секунд", "hex.builtin.setting.general.auto_backup_time.format.extended": "{0} минут {1} секунд", - "hex.builtin.setting.general.auto_load_patterns": "Автоматически подгружать распознанные шаблоны", + "hex.builtin.setting.general.auto_apply_patterns": "Автоматически подгружать распознанные шаблоны", "hex.builtin.setting.general.server_contact": "Включить проверку обновлений и статистики использования", "hex.builtin.setting.general.max_mem_file_size": "Макс. размер файла для сохранения в RAM", "hex.builtin.setting.general.max_mem_file_size.desc": "Маленькие файлы загружаются в оперативную память, чтобы не сохранять изменения сразу на диск.\n\nУвеличение этого параметра позволит ImHex загружать более объёмные файлы в память.", diff --git a/plugins/builtin/romfs/lang/uk_UA.json b/plugins/builtin/romfs/lang/uk_UA.json index a8248a07a..424a5d395 100644 --- a/plugins/builtin/romfs/lang/uk_UA.json +++ b/plugins/builtin/romfs/lang/uk_UA.json @@ -425,7 +425,7 @@ "hex.builtin.setting.general.patterns": "Шаблони", "hex.builtin.setting.general.auto_backup_time.format.simple": "кожні {0} секунд", "hex.builtin.setting.general.auto_backup_time.format.extended": "Кожні {0} хвилин {1} секунд", - "hex.builtin.setting.general.auto_load_patterns": "Автоматично завантажувати розпізнані шаблони", + "hex.builtin.setting.general.auto_apply_patterns": "Автоматично завантажувати розпізнані шаблони", "hex.builtin.setting.general.server_contact": "Увімкнути перевірку оновлень та статистику використання", "hex.builtin.setting.general.network_interface": "Увімкнути мережевий інтерфейс", "hex.builtin.setting.general.pattern_data_max_filter_items": "Максимальна кількість відфільтрованих елементів шаблону", diff --git a/plugins/builtin/romfs/lang/zh_CN.json b/plugins/builtin/romfs/lang/zh_CN.json index 3a4b5bd65..2f8cf8702 100644 --- a/plugins/builtin/romfs/lang/zh_CN.json +++ b/plugins/builtin/romfs/lang/zh_CN.json @@ -470,7 +470,7 @@ "hex.builtin.setting.general.auto_backup_time": "定期备份项目", "hex.builtin.setting.general.auto_backup_time.format.simple": "每 {0}秒", "hex.builtin.setting.general.auto_backup_time.format.extended": "每 {0}分 {1}秒", - "hex.builtin.setting.general.auto_load_patterns": "自动加载支持的模式", + "hex.builtin.setting.general.auto_apply_patterns": "自动加载支持的模式", "hex.builtin.setting.general.server_contact": "启用更新检查和使用统计", "hex.builtin.setting.general.max_mem_file_size": "要加载到内存中的文件的最大大小", "hex.builtin.setting.general.max_mem_file_size.desc": "小文件会被加载到内存中,以防止直接在磁盘上修改它们。\n\n增大这个大小可以让更大的文件在ImHex从磁盘读取数据之前被加载到内存中。", diff --git a/plugins/builtin/romfs/lang/zh_TW.json b/plugins/builtin/romfs/lang/zh_TW.json index 6727687f8..2cc8801d9 100644 --- a/plugins/builtin/romfs/lang/zh_TW.json +++ b/plugins/builtin/romfs/lang/zh_TW.json @@ -446,7 +446,7 @@ "hex.builtin.setting.general.auto_backup_time": "", "hex.builtin.setting.general.auto_backup_time.format.extended": "", "hex.builtin.setting.general.auto_backup_time.format.simple": "", - "hex.builtin.setting.general.auto_load_patterns": "自動載入支援的模式", + "hex.builtin.setting.general.auto_apply_patterns": "自動載入支援的模式", "hex.builtin.setting.general.network": "", "hex.builtin.setting.general.network_interface": "啟用網路介面", "hex.builtin.setting.general.patterns": "", diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index daeafbcec..77e88ee84 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -761,7 +761,10 @@ namespace hex::plugin::builtin { .setTooltip("hex.builtin.setting.general.max_mem_file_size.desc"); ContentRegistry::Settings::add("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.pattern_data_max_filter_items", 128, 32, 1024); - ContentRegistry::Settings::add("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.auto_load_patterns", true); + auto suggestPatterns = ContentRegistry::Settings::add("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.suggest_patterns", true); + ContentRegistry::Settings::add("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.auto_apply_patterns", false).setEnabledCallback([=] { + return static_cast(suggestPatterns.getWidget()).isChecked(); + }); ContentRegistry::Settings::add("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.sync_pattern_source", false); ContentRegistry::Settings::add("hex.builtin.setting.general", "hex.builtin.setting.general.network", "hex.builtin.setting.general.network_interface", false); diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index ae40c6d8d..72bb1d50e 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -1376,7 +1376,7 @@ namespace hex::plugin::builtin { m_shouldAnalyze = false; m_analysisTask = TaskManager::createBackgroundTask("hex.builtin.task.analyzing_data", [this, provider](Task &task) { - if (!m_autoLoadPatterns) + if (!m_suggestSupportedPatterns) return; auto foundPatterns = magic::findViablePatterns(provider, &task); @@ -1384,8 +1384,15 @@ namespace hex::plugin::builtin { if (!foundPatterns.empty()) { std::scoped_lock lock(m_possiblePatternFilesMutex); - m_possiblePatternFiles.get(provider) = std::move(foundPatterns); - PopupAcceptPattern::open(this); + auto &possiblePatterns = m_possiblePatternFiles.get(provider); + + possiblePatterns = std::move(foundPatterns); + + if (m_autoApplyPatterns && possiblePatterns.size() == 1) { + loadPatternFile(possiblePatterns.front().patternFilePath, provider, false); + } else { + PopupAcceptPattern::open(this); + } } }); } @@ -1806,8 +1813,12 @@ namespace hex::plugin::builtin { m_sourceCode.enableSync(value.get(false)); }); - ContentRegistry::Settings::onChange("hex.builtin.setting.general", "hex.builtin.setting.general.auto_load_patterns", [this](const ContentRegistry::Settings::SettingsValue &value) { - m_autoLoadPatterns = value.get(true); + ContentRegistry::Settings::onChange("hex.builtin.setting.general", "hex.builtin.setting.general.suggest_patterns", [this](const ContentRegistry::Settings::SettingsValue &value) { + m_suggestSupportedPatterns = value.get(true); + }); + + ContentRegistry::Settings::onChange("hex.builtin.setting.general", "hex.builtin.setting.general.auto_apply_patterns", [this](const ContentRegistry::Settings::SettingsValue &value) { + m_autoApplyPatterns = value.get(true); }); EventProviderOpened::subscribe(this, [this](prv::Provider *provider) {