ui/qt/window.cpp

changeset 109
c3dfcb8f0be7
parent 108
77254bd6dccb
child 112
c3f2f16fa4b8
--- a/ui/qt/window.cpp	Sun Jul 20 22:04:39 2025 +0200
+++ b/ui/qt/window.cpp	Sun Aug 24 15:24:16 2025 +0200
@@ -38,8 +38,10 @@
 #include <QVBoxLayout>
 #include <QFileDialog>
 #include <QPushButton>
+#include <QDockWidget>
+#include <QMessageBox>
 
-static UiObject* create_window(const char *title, void *window_data, bool simple) {
+static UiObject* create_window(const char *title, void *window_data, bool simple, bool sidebar = false) {
     UiObject *obj = uic_object_new_toplevel();
     obj->window = window_data;
     obj->next = NULL;
@@ -61,19 +63,70 @@
     boxWidget->setLayout(box);
     window->setCentralWidget(boxWidget);
     ui_container_add(obj, new UiBoxContainer(box));
+    if(sidebar) {
+        QDockWidget *dock = new QDockWidget();
+        window->addDockWidget(Qt::LeftDockWidgetArea, dock);
+        window->setProperty("ui_sidebar", QVariant::fromValue((void*)dock));
+    }
     
     obj->widget = window;
     return obj;
 }
 
 UiObject* ui_window(const char *title, void *window_data) {
-    return create_window(title, window_data, FALSE);
+    return create_window(title, window_data, false);
 }
 
 UiObject* ui_simplewindow(char *title, void *window_data) {
-    return create_window(title, window_data, TRUE);
+    return create_window(title, window_data, true);
+}
+
+UiObject *ui_sidebar_window(const char *title, void *window_data) {
+    return create_window(title, window_data, false, true);
 }
 
+void ui_dialog_create(UiObject *parent, UiDialogArgs *args) {
+    if(args->input || args->password) {
+        // TODO: QInputDialog
+    } else {
+        QMessageBox msgBox;
+        if(args->title) {
+            msgBox.setWindowTitle(args->title);
+        }
+        if(args->content) {
+            msgBox.setText(args->content);
+        }
+        QPushButton *btn1;
+        QPushButton *btn2;
+        if(args->button1_label) {
+            btn1 = msgBox.addButton(args->button1_label, QMessageBox::ActionRole);
+        }
+        if(args->button2_label) {
+            btn2 = msgBox.addButton(args->button2_label, QMessageBox::ActionRole);
+        }
+        if(args->closebutton_label) {
+            msgBox.addButton(args->closebutton_label, QMessageBox::DestructiveRole);
+        }
+        
+        msgBox.exec();
+        
+        UiEvent evt;
+        evt.obj = parent;
+        evt.document = evt.obj->ctx->document;
+        evt.window = evt.obj->window;
+        evt.eventdata = NULL;
+        evt.eventdatatype = 0;
+        evt.intval = 0;
+        if(msgBox.clickedButton() == btn1) {
+            evt.intval = 1;
+        } else if(msgBox.clickedButton() == btn2) {
+            evt.intval = 2;
+        }
+        if(args->result) {
+            args->result(&evt, args->resultdata);
+        }
+    }
+}
 
 char* ui_openfiledialog(UiObject *obj) {
     QString fileName = QFileDialog::getOpenFileName(obj->widget);

mercurial