Thu, 29 May 2025 13:28:50 +0200
refactore widget args passing (QT)
| ui/qt/button.cpp | file | annotate | diff | comparison | revisions | |
| ui/qt/container.cpp | file | annotate | diff | comparison | revisions | |
| ui/qt/container.h | file | annotate | diff | comparison | revisions | |
| ui/qt/entry.cpp | file | annotate | diff | comparison | revisions | |
| ui/qt/label.cpp | file | annotate | diff | comparison | revisions | |
| ui/qt/list.cpp | file | annotate | diff | comparison | revisions | |
| ui/qt/qt5.pro | file | annotate | diff | comparison | revisions | |
| ui/qt/text.cpp | file | annotate | diff | comparison | revisions | |
| ui/qt/widget.cpp | file | annotate | diff | comparison | revisions |
--- a/ui/qt/button.cpp Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/button.cpp Thu May 29 13:28:50 2025 +0200 @@ -30,15 +30,15 @@ #include "container.h" #include "toolkit.h" -UIWIDGET ui_button_create(UiObject* obj, UiButtonArgs args) { +UIWIDGET ui_button_create(UiObject* obj, UiButtonArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); - QString str = QString::fromUtf8(args.label); + QString str = QString::fromUtf8(args->label); QPushButton *button = new QPushButton(str); - if(args.onclick) { - UiEventWrapper *event = new UiEventWrapper(obj, args.onclick, args.onclickdata); + if(args->onclick) { + UiEventWrapper *event = new UiEventWrapper(obj, args->onclick, args->onclickdata); button->connect(button, SIGNAL(clicked()), event, SLOT(slot())); button->connect(button, SIGNAL(destroyed()), event, SLOT(destroy())); } @@ -56,18 +56,18 @@ } } -UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs args) { +UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); - QString str = QString::fromUtf8(args.label); + QString str = QString::fromUtf8(args->label); QPushButton *button = new QPushButton(str); button->setCheckable(true); - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_INTEGER); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); - if(args.onchange) { - UiEventWrapper *event = new UiEventWrapper(obj, args.onchange, args.onchangedata); + if(args->onchange) { + UiEventWrapper *event = new UiEventWrapper(obj, args->onchange, args->onchangedata); event->var = var; event->customdata1 = button; event->prepare_event = togglebutton_event; @@ -115,17 +115,17 @@ } -UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs args) { +UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); - QString str = QString::fromUtf8(args.label); + QString str = QString::fromUtf8(args->label); QCheckBox *checkbox = new QCheckBox(str); - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_INTEGER); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); - if(args.onchange) { - UiEventWrapper *event = new UiEventWrapper(obj, args.onchange, args.onchangedata); + if(args->onchange) { + UiEventWrapper *event = new UiEventWrapper(obj, args->onchange, args->onchangedata); event->var = var; event->customdata1 = checkbox; event->prepare_event = checkbox_event; @@ -173,15 +173,15 @@ } } -UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs args) { +UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); - QString str = QString::fromUtf8(args.label); + QString str = QString::fromUtf8(args->label); QRadioButton *button = new QRadioButton(str); button->setAutoExclusive(false); - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_INTEGER); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); if(var) { UiInteger *value = (UiInteger*)var->value; QButtonGroup *buttonGroup = (QButtonGroup*)value->obj; @@ -198,7 +198,7 @@ value->set = ui_radiobutton_set; } - UiEventWrapper *event = new UiEventWrapper(obj, args.onchange, args.onchangedata); + UiEventWrapper *event = new UiEventWrapper(obj, args->onchange, args->onchangedata); event->var = var; event->customdata1 = button; event->prepare_event = togglebutton_event;
--- a/ui/qt/container.cpp Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/container.cpp Thu May 29 13:28:50 2025 +0200 @@ -86,7 +86,7 @@ current = widget; } -UIWIDGET ui_box(UiObject *obj, UiContainerArgs args, QBoxLayout::Direction dir) { +UIWIDGET ui_box(UiObject *obj, UiContainerArgs *args, QBoxLayout::Direction dir) { UiContainerPrivate *ctn = (UiContainerPrivate*)ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); @@ -100,11 +100,11 @@ return widget; } -UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs args) { +UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs *args) { return ui_box(obj, args, QBoxLayout::TopToBottom); } -UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs args) { +UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) { return ui_box(obj, args, QBoxLayout::LeftToRight); } @@ -233,7 +233,7 @@ } } -UIEXPORT UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs args) { +UIEXPORT UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { UiContainerPrivate *ctn = (UiContainerPrivate*)ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); @@ -244,13 +244,13 @@ ui_container_add(obj, new UiGridContainer( grid, - args.margin, - args.columnspacing, - args.rowspacing, - args.def_hexpand, - args.def_vexpand, - args.def_hfill, - args.def_vfill)); + args->margin, + args->columnspacing, + args->rowspacing, + args->def_hexpand, + args->def_vexpand, + args->def_hfill, + args->def_vfill)); return widget; }
--- a/ui/qt/container.h Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/container.h Thu May 29 13:28:50 2025 +0200 @@ -41,14 +41,14 @@ #include <QSplitter> #define UI_APPLY_LAYOUT(layout, args) \ - layout.fill = args.fill; \ - layout.hexpand = args.hexpand; \ - layout.vexpand = args.vexpand; \ - layout.hfill = args.hfill; \ - layout.vfill = args.vfill; \ - layout.override_defaults = args.override_defaults; \ - layout.colspan = args.colspan; \ - layout.rowspan = args.rowspan + layout.fill = args->fill; \ + layout.hexpand = args->hexpand; \ + layout.vexpand = args->vexpand; \ + layout.hfill = args->hfill; \ + layout.vfill = args->vfill; \ + layout.override_defaults = args->override_defaults; \ + layout.colspan = args->colspan; \ + layout.rowspan = args->rowspan #define ui_reset_layout(layout) memset(&(layout), 0, sizeof(UiLayout)) #define ui_lb2bool(b) ((b) == UI_LAYOUT_TRUE ? TRUE : FALSE)
--- a/ui/qt/entry.cpp Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/entry.cpp Thu May 29 13:28:50 2025 +0200 @@ -36,35 +36,35 @@ -UIWIDGET ui_spinner_create(UiObject *obj, UiSpinnerArgs args) { +UIWIDGET ui_spinner_create(UiObject *obj, UiSpinnerArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); bool use_double = false; UiVar *var = NULL; - if(args.varname) { - var = uic_get_var(obj->ctx, args.varname); + if(args->varname) { + var = uic_get_var(obj->ctx, args->varname); if(var->type == UI_VAR_DOUBLE) { use_double = true; } else if(var->type == UI_VAR_RANGE) { use_double = true; } else if(var->type != UI_VAR_INTEGER) { var = NULL; - fprintf(stderr, "UI Error: var '%s' has wrong type (must be int/double/range)\n", args.varname); + fprintf(stderr, "UI Error: var '%s' has wrong type (must be int/double/range)\n", args->varname); } } if(!var) { - if(args.intvalue) { - var = uic_widget_var(obj->ctx, obj->ctx, args.intvalue, NULL, UI_VAR_INTEGER); - } else if(args.doublevalue) { - var = uic_widget_var(obj->ctx, obj->ctx, args.doublevalue, NULL, UI_VAR_DOUBLE); + if(args->intvalue) { + var = uic_widget_var(obj->ctx, obj->ctx, args->intvalue, NULL, UI_VAR_INTEGER); + } else if(args->doublevalue) { + var = uic_widget_var(obj->ctx, obj->ctx, args->doublevalue, NULL, UI_VAR_DOUBLE); use_double = true; - } else if(args.rangevalue) { - var = uic_widget_var(obj->ctx, obj->ctx, args.rangevalue, NULL, UI_VAR_RANGE); + } else if(args->rangevalue) { + var = uic_widget_var(obj->ctx, obj->ctx, args->rangevalue, NULL, UI_VAR_RANGE); use_double = true; } else { - if(args.digits > 0) { + if(args->digits > 0) { use_double = true; } } @@ -73,15 +73,15 @@ QAbstractSpinBox *widget = nullptr; if(use_double) { QDoubleSpinBox *spinbox = new QDoubleSpinBox(); - spinbox->setDecimals(args.digits); - if(args.step != 0) { - spinbox->setSingleStep(args.step); + spinbox->setDecimals(args->digits); + if(args->step != 0) { + spinbox->setSingleStep(args->step); } widget = spinbox; } else { QSpinBox *spinbox = new QSpinBox(); - if(args.step != 0) { - spinbox->setSingleStep(args.step); + if(args->step != 0) { + spinbox->setSingleStep(args->step); } widget = spinbox; }
--- a/ui/qt/label.cpp Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/label.cpp Thu May 29 13:28:50 2025 +0200 @@ -32,17 +32,17 @@ #include "ui/display.h" -UIWIDGET ui_label_create(UiObject* obj, UiLabelArgs args) { +UIWIDGET ui_label_create(UiObject* obj, UiLabelArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); - QString str = QString::fromUtf8(args.label); + QString str = QString::fromUtf8(args->label); QLabel *widget = new QLabel(str); Qt::AlignmentFlag align = Qt::AlignCenter; - if(args.align == UI_ALIGN_LEFT) { + if(args->align == UI_ALIGN_LEFT) { align = Qt::AlignLeft; - } else if(args.align == UI_ALIGN_RIGHT) { + } else if(args->align == UI_ALIGN_RIGHT) { align = Qt::AlignRight; } widget->setAlignment(align); @@ -52,12 +52,12 @@ return widget; } -UIWIDGET ui_llabel_create(UiObject* obj, UiLabelArgs args) { - args.align = UI_ALIGN_LEFT; +UIWIDGET ui_llabel_create(UiObject* obj, UiLabelArgs *args) { + args->align = UI_ALIGN_LEFT; return ui_label_create(obj, args); } -UIWIDGET ui_rlabel_create(UiObject* obj, UiLabelArgs args) { - args.align = UI_ALIGN_RIGHT; +UIWIDGET ui_rlabel_create(UiObject* obj, UiLabelArgs *args) { + args->align = UI_ALIGN_RIGHT; return ui_label_create(obj, args); }
--- a/ui/qt/list.cpp Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/list.cpp Thu May 29 13:28:50 2025 +0200 @@ -38,14 +38,14 @@ } -UIWIDGET ui_listview_create(UiObject* obj, UiListArgs args) { +UIWIDGET ui_listview_create(UiObject* obj, UiListArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); QListView *view = new QListView(); - ui_getvaluefunc getvalue = args.getvalue ? args.getvalue : ui_strmodel_getvalue; - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.list, args.varname, UI_VAR_LIST); + ui_getvaluefunc getvalue = args->getvalue ? args->getvalue : ui_strmodel_getvalue; + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); ListModel *model = new ListModel(obj, view, var, getvalue); view->setModel(model); @@ -58,8 +58,8 @@ list->obj = model; } - model->setActivationCallback(args.onactivate, args.onactivatedata); - model->setSelectionCallback(args.onselection, args.onselectiondata); + model->setActivationCallback(args->onactivate, args->onactivatedata); + model->setSelectionCallback(args->onselection, args->onselectiondata); QItemSelectionModel *s = view->selectionModel(); QObject::connect( @@ -74,20 +74,20 @@ return view; } -UIWIDGET ui_table_create(UiObject* obj, UiListArgs args) { +UIWIDGET ui_table_create(UiObject* obj, UiListArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); QTreeView *view = new QTreeView(); view->setItemsExpandable(false); view->setRootIsDecorated(false); - if(args.multiselection) { + if(args->multiselection) { view->setSelectionMode(QAbstractItemView::ExtendedSelection); } - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.list, args.varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); - TableModel *model = new TableModel(obj, view, var, args.model); + TableModel *model = new TableModel(obj, view, var, args->model); view->setModel(model); if(var) { @@ -98,8 +98,8 @@ list->obj = model; } - model->setActivationCallback(args.onactivate, args.onactivatedata); - model->setSelectionCallback(args.onselection, args.onselectiondata); + model->setActivationCallback(args->onactivate, args->onactivatedata); + model->setSelectionCallback(args->onselection, args->onselectiondata); QItemSelectionModel *s = view->selectionModel(); QObject::connect(
--- a/ui/qt/qt5.pro Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/qt5.pro Thu May 29 13:28:50 2025 +0200 @@ -33,6 +33,8 @@ MOC_DIR = ../build/ui/qt OBJECTS_DIR = ../build/ui/qt +QMAKE_CXXFLAGS += -I../ucx + QT += core gui widgets DEFINES += UI_QT5
--- a/ui/qt/text.cpp Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/text.cpp Thu May 29 13:28:50 2025 +0200 @@ -57,7 +57,7 @@ return document; } -UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs args) { +UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); @@ -66,7 +66,7 @@ QTextDocument *document = nullptr; - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); if(var) { UiText *value = (UiText*)var->value; @@ -210,7 +210,7 @@ /* ------------------------------ TextField ------------------------------ */ -static UIWIDGET create_textfield(UiObject *obj, UiTextFieldArgs args, bool password, bool frameless) { +static UIWIDGET create_textfield(UiObject *obj, UiTextFieldArgs *args, bool password, bool frameless) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); @@ -221,7 +221,7 @@ textfield->setEchoMode(QLineEdit::Password); } - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); if(var) { UiString *value = (UiString*)var->value; if(value->value.ptr) { @@ -241,15 +241,15 @@ return textfield; } -UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs args) { +UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs *args) { return create_textfield(obj, args, false, false); } -UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs args) { +UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs *args) { return create_textfield(obj, args, false, true); } -UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs args) { +UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs *args) { return create_textfield(obj, args, true, false); }
--- a/ui/qt/widget.cpp Thu May 29 13:23:56 2025 +0200 +++ b/ui/qt/widget.cpp Thu May 29 13:28:50 2025 +0200 @@ -31,7 +31,7 @@ #include "container.h" #include "../common/context.h" -UIWIDGET ui_customwidget_create(UiObject *obj, ui_createwidget_func create_widget, void *userdata, UiWidgetArgs args) { +UIWIDGET ui_customwidget_create(UiObject *obj, ui_createwidget_func create_widget, void *userdata, UiWidgetArgs *args) { UIWIDGET widget = create_widget(obj, args, userdata); UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); @@ -45,7 +45,7 @@ separator->setFrameShadow(QFrame::Sunken); UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, (*args)); + UI_APPLY_LAYOUT(ctn->layout, args); ctn->add(separator, false);