impr: Add setting for task-finish notifications

This commit is contained in:
WerWolv
2025-12-28 18:17:38 +01:00
parent da6e7240d6
commit a496b14a0f
4 changed files with 9 additions and 0 deletions

View File

@@ -44,6 +44,7 @@ if (EMSCRIPTEN)
target_link_options(main PRIVATE -sGL_UNSAFE_OPTS=0)
target_link_options(main PRIVATE -sEXPORTED_RUNTIME_METHODS=ccall)
target_link_options(main PRIVATE -sFETCH)
target_link_options(main PRIVATE -sASSERTIONS)
target_link_options(main PRIVATE -sWASM_BIGINT)
target_link_options(main PRIVATE -O2)
target_link_options(main PRIVATE -fsanitize=null)

View File

@@ -556,6 +556,8 @@
"hex.builtin.setting.interface.scaling.native": "Native",
"hex.builtin.setting.interface.scaling.fractional_warning": "The default font does not support fractional scaling. For better results, select a custom font in the 'Font' tab.",
"hex.builtin.setting.interface.show_header_command_palette": "Show Command Palette in Window Header",
"hex.builtin.setting.interface.show_task_finish_notification": "Show task completion notifications",
"hex.builtin.setting.interface.show_task_finish_notification.desc": "Should a notification be shown when a long-running task finishes while ImHex is in the background?",
"hex.builtin.setting.interface.show_titlebar_backdrop": "Show titlebar backdrop color",
"hex.builtin.setting.interface.style": "Styling",
"hex.builtin.setting.interface.use_native_menu_bar": "Use native menu bar",

View File

@@ -427,7 +427,11 @@ namespace hex::plugin::builtin {
#endif
});
static ContentRegistry::Settings::SettingsVariable<bool, "hex.builtin.setting.interface", "hex.builtin.setting.interface.show_task_finish_notification"> taskFinishedNotificationEnabled = false;
TaskManager::addTaskCompletionCallback([](Task &task) {
if (!taskFinishedNotificationEnabled)
return;
if (!glfwGetWindowAttrib(ImHexApi::System::getMainWindowHandle(), GLFW_FOCUSED) && !task.isBackgroundTask())
hex::showToastMessage("ImHex", fmt::format("hex.builtin.os_toast_message.task_finished"_lang, Lang(task.getUnlocalizedName())));
});

View File

@@ -891,6 +891,8 @@ for (const auto &path : m_paths) {
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.randomize_window_title", false);
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.restore_window_pos", false);
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.show_task_finish_notification", true)
.setTooltip("hex.builtin.setting.interface.show_task_finish_notification.desc");
ContentRegistry::Settings::add<Widgets::ColorPicker>("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.highlight_color", ImColor(0x80, 0x80, 0xC0, 0x60));
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.sync_scrolling", false);