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 -sGL_UNSAFE_OPTS=0)
target_link_options(main PRIVATE -sEXPORTED_RUNTIME_METHODS=ccall) target_link_options(main PRIVATE -sEXPORTED_RUNTIME_METHODS=ccall)
target_link_options(main PRIVATE -sFETCH) target_link_options(main PRIVATE -sFETCH)
target_link_options(main PRIVATE -sASSERTIONS)
target_link_options(main PRIVATE -sWASM_BIGINT) target_link_options(main PRIVATE -sWASM_BIGINT)
target_link_options(main PRIVATE -O2) target_link_options(main PRIVATE -O2)
target_link_options(main PRIVATE -fsanitize=null) 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.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.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_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.show_titlebar_backdrop": "Show titlebar backdrop color",
"hex.builtin.setting.interface.style": "Styling", "hex.builtin.setting.interface.style": "Styling",
"hex.builtin.setting.interface.use_native_menu_bar": "Use native menu bar", "hex.builtin.setting.interface.use_native_menu_bar": "Use native menu bar",

View File

@@ -427,7 +427,11 @@ namespace hex::plugin::builtin {
#endif #endif
}); });
static ContentRegistry::Settings::SettingsVariable<bool, "hex.builtin.setting.interface", "hex.builtin.setting.interface.show_task_finish_notification"> taskFinishedNotificationEnabled = false;
TaskManager::addTaskCompletionCallback([](Task &task) { TaskManager::addTaskCompletionCallback([](Task &task) {
if (!taskFinishedNotificationEnabled)
return;
if (!glfwGetWindowAttrib(ImHexApi::System::getMainWindowHandle(), GLFW_FOCUSED) && !task.isBackgroundTask()) 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()))); 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.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.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::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); ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.sync_scrolling", false);