mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-04-01 21:17:44 -05:00
feat: Add option to automatically apply found pattern when a provider is opened
This commit is contained in:
@@ -761,7 +761,10 @@ namespace hex::plugin::builtin {
|
||||
.setTooltip("hex.builtin.setting.general.max_mem_file_size.desc");
|
||||
ContentRegistry::Settings::add<Widgets::SliderInteger>("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.pattern_data_max_filter_items", 128, 32, 1024);
|
||||
|
||||
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.auto_load_patterns", true);
|
||||
auto suggestPatterns = ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.suggest_patterns", true);
|
||||
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.auto_apply_patterns", false).setEnabledCallback([=] {
|
||||
return static_cast<Widgets::Checkbox&>(suggestPatterns.getWidget()).isChecked();
|
||||
});
|
||||
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.general", "hex.builtin.setting.general.patterns", "hex.builtin.setting.general.sync_pattern_source", false);
|
||||
|
||||
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.general", "hex.builtin.setting.general.network", "hex.builtin.setting.general.network_interface", false);
|
||||
|
||||
@@ -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<bool>(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<bool>(true);
|
||||
ContentRegistry::Settings::onChange("hex.builtin.setting.general", "hex.builtin.setting.general.suggest_patterns", [this](const ContentRegistry::Settings::SettingsValue &value) {
|
||||
m_suggestSupportedPatterns = value.get<bool>(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<bool>(true);
|
||||
});
|
||||
|
||||
EventProviderOpened::subscribe(this, [this](prv::Provider *provider) {
|
||||
|
||||
Reference in New Issue
Block a user