ui/qt/window.cpp

Mon, 29 Sep 2025 21:14:46 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 29 Sep 2025 21:14:46 +0200
changeset 779
b84cbe57e0bd
parent 690
c1fc788d982d
child 822
54e43e4efac2
permissions
-rw-r--r--

change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages

54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2014 Olaf Wintermann. All rights reserved.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
516
4b31c74666d7 remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 157
diff changeset
29 #include <cx/mempool.h>
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #include "../common/context.h"
627
3f0c9fe60c68 use uic_object_new_toplevel to create toplevel objects
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 574
diff changeset
31 #include "../common/object.h"
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 #include "window.h"
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 #include "menu.h"
55
9076eb40454d added toolbar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
35 #include "toolbar.h"
56
87e3a5dc66dd added text widget (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 55
diff changeset
36 #include "container.h"
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37
66
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 56
diff changeset
38 #include <QVBoxLayout>
106
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
39 #include <QFileDialog>
519
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
40 #include <QPushButton>
688
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
41 #include <QDockWidget>
690
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
42 #include <QMessageBox>
66
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 56
diff changeset
43
688
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
44 static UiObject* create_window(const char *title, void *window_data, bool simple, bool sidebar = false) {
627
3f0c9fe60c68 use uic_object_new_toplevel to create toplevel objects
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 574
diff changeset
45 UiObject *obj = uic_object_new_toplevel();
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 obj->window = window_data;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 obj->next = NULL;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 QMainWindow *window = new QMainWindow();
519
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
50 window->setWindowTitle(title);
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 obj->widget = window;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52
106
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
53 if(!simple) {
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 520
diff changeset
54 ui_add_menus(obj, window);
574
19de5292f08f add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
55 QToolBar *toolbar = ui_create_toolbar(obj);
19de5292f08f add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
56 if(toolbar) {
19de5292f08f add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
57 window->addToolBar(Qt::TopToolBarArea, toolbar);
19de5292f08f add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
58 }
106
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
59 }
55
9076eb40454d added toolbar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
60
66
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 56
diff changeset
61 QBoxLayout *box = new QVBoxLayout();
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 56
diff changeset
62 QWidget *boxWidget = new QWidget();
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 56
diff changeset
63 boxWidget->setLayout(box);
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 56
diff changeset
64 window->setCentralWidget(boxWidget);
520
ea1bba55de44 add button (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
65 ui_container_add(obj, new UiBoxContainer(box));
688
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
66 if(sidebar) {
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
67 QDockWidget *dock = new QDockWidget();
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
68 window->addDockWidget(Qt::LeftDockWidgetArea, dock);
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
69 window->setProperty("ui_sidebar", QVariant::fromValue((void*)dock));
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
70 }
56
87e3a5dc66dd added text widget (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 55
diff changeset
71
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 obj->widget = window;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 return obj;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 }
106
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
75
519
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
76 UiObject* ui_window(const char *title, void *window_data) {
688
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
77 return create_window(title, window_data, false);
106
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
78 }
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
79
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
80 UiObject* ui_simplewindow(char *title, void *window_data) {
688
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
81 return create_window(title, window_data, true);
106
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
82 }
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
83
690
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
84 UiObject *ui_sidebar_window(const char *title, void *window_data) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
85 return create_window(title, window_data, false, true);
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
86 }
688
a3a057c0a0b6 add sidebar (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 627
diff changeset
87
690
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
88 void ui_dialog_create(UiObject *parent, UiDialogArgs *args) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
89 if(args->input || args->password) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
90 // TODO: QInputDialog
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
91 } else {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
92 QMessageBox msgBox;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
93 if(args->title) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
94 msgBox.setWindowTitle(args->title);
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
95 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
96 if(args->content) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
97 msgBox.setText(args->content);
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
98 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
99 QPushButton *btn1;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
100 QPushButton *btn2;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
101 if(args->button1_label) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
102 btn1 = msgBox.addButton(args->button1_label, QMessageBox::ActionRole);
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
103 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
104 if(args->button2_label) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
105 btn2 = msgBox.addButton(args->button2_label, QMessageBox::ActionRole);
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
106 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
107 if(args->closebutton_label) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
108 msgBox.addButton(args->closebutton_label, QMessageBox::DestructiveRole);
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
109 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
110
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
111 msgBox.exec();
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
112
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
113 UiEvent evt;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
114 evt.obj = parent;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
115 evt.document = evt.obj->ctx->document;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
116 evt.window = evt.obj->window;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
117 evt.eventdata = NULL;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
118 evt.eventdatatype = 0;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
119 evt.intval = 0;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
120 if(msgBox.clickedButton() == btn1) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
121 evt.intval = 1;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
122 } else if(msgBox.clickedButton() == btn2) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
123 evt.intval = 2;
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
124 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
125 if(args->result) {
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
126 args->result(&evt, args->resultdata);
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
127 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
128 }
c1fc788d982d add message dialog (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 688
diff changeset
129 }
106
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
130
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
131 char* ui_openfiledialog(UiObject *obj) {
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
132 QString fileName = QFileDialog::getOpenFileName(obj->widget);
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
133 if(fileName.size() > 0) {
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
134 QByteArray array = fileName.toLocal8Bit();
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
135 const char *cstr = array.constData();
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
136 return strdup(cstr);
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
137 } else {
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
138 return NULL;
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
139 }
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
140 }
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
141
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
142 char* ui_savefiledialog(UiObject *obj) {
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
143 QString fileName = QFileDialog::getSaveFileName(obj->widget);
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
144 if(fileName.size() > 0) {
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
145 QByteArray array = fileName.toLocal8Bit();
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
146 const char *cstr = array.constData();
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
147 return strdup(cstr);
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
148 } else {
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
149 return NULL;
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
150 }
a4f4123ca12a added simple window and open/save file dialogs for Qt
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 67
diff changeset
151 }

mercurial