From 3dae4ccada529d84901198fcc4e1c961865f46cd Mon Sep 17 00:00:00 2001 From: Daniel Hammer Date: Wed, 22 Apr 2026 20:28:10 +0200 Subject: [PATCH] feat: docs page changes --- .../dtinternals/assets/discard_dialog.png | Bin 0 -> 9119 bytes .../docs/dtinternals/assets/save_dialog.png | Bin 0 -> 18490 bytes .../docs/dtinternals/dialogslib.html | 269 ++++++++++++++++++ 3 files changed, 269 insertions(+) create mode 100644 montaukos.org/docs/dtinternals/assets/discard_dialog.png create mode 100644 montaukos.org/docs/dtinternals/assets/save_dialog.png create mode 100644 montaukos.org/docs/dtinternals/dialogslib.html diff --git a/montaukos.org/docs/dtinternals/assets/discard_dialog.png b/montaukos.org/docs/dtinternals/assets/discard_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..6fea8f69ca9e6959415bd27d7859d115f2bbf09c GIT binary patch literal 9119 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

CALjgKGZ9Omca(}G#ZA}`ug?p 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 + + + + + + Dialogs Library - MontaukOS + + + + + + + +

+ +
+
+

Dialogs

+
+ +
+ +

Overview

+

+The dialogs library provides the following system dialogs across apps: +

+ +
    +
  • File selection (Open)
  • +
  • File save location selection (Save)
  • +
  • Print setup/submission
  • +
  • Message Box popups
  • +
+ +

Message Box

+

+message_box displays a popup window with text and buttons. +

+ +
gui::dialogs::MessageBoxResult message_box(
+    const char* title,
+    const char* message,
+    gui::dialogs::MessageBoxButtons buttons = gui::dialogs::MESSAGE_BOX_OK,
+    char* out_message = nullptr,
+    int out_message_len = 0);
+ +

Button Sets

+ + + + + + +
ValueButtons
MESSAGE_BOX_OKOK
MESSAGE_BOX_OK_CANCELOK, Cancel
MESSAGE_BOX_YES_NOYes, No
MESSAGE_BOX_YES_NO_CANCELYes, No, Cancel
+ +

Results

+ + + + + + + +
ValueMeaning
MESSAGE_BOX_RESULT_OKThe user selected OK.
MESSAGE_BOX_RESULT_CANCELThe user selected Cancel or closed a cancelable dialog.
MESSAGE_BOX_RESULT_YESThe user selected Yes.
MESSAGE_BOX_RESULT_NOThe user selected No, or closed a Yes/No dialog.
MESSAGE_BOX_RESULT_NONEThe dialog could not be loaded or invoked.
+ +

Example

+
#include <gui/dialogs.hpp>
+
+void show_confirm() {
+    auto result = gui::dialogs::message_box(
+        "Close Document",
+        "Discard unsaved changes?",
+        gui::dialogs::MESSAGE_BOX_YES_NO_CANCEL);
+
+    if (result == gui::dialogs::MESSAGE_BOX_RESULT_YES) {
+        /* discard and close */
+    }
+}
+ +
+Message box asking whether to discard unsaved changes +

Example MESSAGE_BOX_YES_NO_CANCEL dialog.

+
+ +

File Dialogs

+

+File dialog helpers allow applications to use graphical file selection views (similar to the Files app) to select paths for Open/Save operations. +

+ +
bool open_file(
+    const char* title,
+    const char* initial_path,
+    char* out_path,
+    int out_path_len,
+    char* out_message = nullptr,
+    int out_message_len = 0);
+
+bool save_file(
+    const char* title,
+    const char* initial_path,
+    const char* suggested_name,
+    char* out_path,
+    int out_path_len,
+    char* out_message = nullptr,
+    int out_message_len = 0);
+ +

+Use initial_path to select the starting directory or current file +context. save_file also accepts a suggested_name for +the filename field. +

+ +

Open Example

+
char path[256];
+char message[160];
+
+if (gui::dialogs::open_file("Open File", "", path, sizeof(path),
+                            message, sizeof(message))) {
+    /* open path */
+}
+ +

Save Example

+
char path[256];
+
+if (gui::dialogs::save_file("Save File", "", "untitled.txt",
+                            path, sizeof(path))) {
+    /* write path */
+}
+ +
+Save file dialog showing folders and a filename field +

Save-file dialog as used by the MontaukOS Word Processor app.

+
+ +

Print Dialogs

+

+Print dialog helpers allow applications to expose printer configuration to the user, and submit a file for printing. +

+ +
bool configure_print(
+    const char* title,
+    const char* initial_printer_uri,
+    const char* job_name,
+    char* out_printer_uri,
+    int out_printer_uri_len,
+    char* out_printer_name,
+    int out_printer_name_len,
+    uint32_t* out_copies = nullptr,
+    char* out_message = nullptr,
+    int out_message_len = 0);
+
+bool print_file(
+    const char* title,
+    const char* source_path,
+    const char* job_name,
+    char* out_job_id,
+    int out_job_id_len,
+    char* out_message = nullptr,
+    int out_message_len = 0);
+ + +

Include

+
#include <gui/dialogs.hpp>

+ +
+

Copyright (c) 2026 Montauk Operating System. All rights reserved.

Page last revised 22 April 2026.

+ +
+ + + +
+ +