# HG changeset patch # User Olaf Wintermann # Date 1754680776 -7200 # Node ID a3a057c0a0b69aa636dfd198d011831a747c5e37 # Parent 3c9b430fb1603d5112f1283497713c4008fbca69 add sidebar (Qt) diff -r 3c9b430fb160 -r a3a057c0a0b6 ui/qt/container.cpp --- a/ui/qt/container.cpp Wed Jul 30 19:51:39 2025 +0200 +++ b/ui/qt/container.cpp Fri Aug 08 21:19:36 2025 +0200 @@ -35,6 +35,7 @@ #include #include #include +#include static void delete_container(UiContainerPrivate *ct) { delete ct; @@ -228,7 +229,7 @@ } } -UIEXPORT UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { +UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { UiContainerPrivate *ctn = (UiContainerPrivate*)ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); @@ -251,6 +252,25 @@ } +/* ---------------------------- UiSidebar ---------------------------- */ + +UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs *args) { + QVariant v = obj->widget->property("ui_sidebar"); + QDockWidget *dock = (QDockWidget*)v.value(); + if(!dock) { + fprintf(stderr, "Error: window is not configured for sidebar\n"); + return nullptr; + } + + QWidget *widget = new QWidget(); + QBoxLayout *box = new QBoxLayout(QBoxLayout::TopToBottom); + widget->setLayout(box); + dock->setWidget(widget); + + ui_container_add(obj, new UiBoxContainer(box)); + + return dock; +} /* -------------------- Container Helper Functions -------------------- */ diff -r 3c9b430fb160 -r a3a057c0a0b6 ui/qt/window.cpp --- a/ui/qt/window.cpp Wed Jul 30 19:51:39 2025 +0200 +++ b/ui/qt/window.cpp Fri Aug 08 21:19:36 2025 +0200 @@ -38,8 +38,9 @@ #include #include #include +#include -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 +62,28 @@ 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); + } + char* ui_openfiledialog(UiObject *obj) { QString fileName = QFileDialog::getOpenFileName(obj->widget);