]> uap-core.de Git - note.git/commitdiff
hide notebook input fields that are not relevant for groups
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 23 Jan 2026 15:51:41 +0000 (16:51 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 23 Jan 2026 15:51:41 +0000 (16:51 +0100)
application/nbconfig.c
application/nbconfig.h
ui/gtk/list.c
ui/qt/text.cpp
ui/ui/list.h

index 03ab7f209eaf0a58572403a9051bf6e27209e516..2786593dfb22bbbce9bd7d45bc365871aeafcab9 100644 (file)
@@ -236,6 +236,12 @@ static void nbconfig_notebooklist_onselect(UiEvent *event, void *userdata) {
     nbconfig_load_notebook(wdata, res);  
       
     nbconfig_build_current_names_map(wdata, res);
+    
+    if(res->parent_id == wdata->root_resource_id) {
+        ui_unset_state(wdata->obj->ctx, NBCONFIG_STATE_NOTEBOOK_SELECTED);
+    } else {
+        ui_set_state(wdata->obj->ctx, NBCONFIG_STATE_NOTEBOOK_SELECTED);
+    }
 }
 
 static int get_notebook_insertpos(NotebookConfigDialog *wdata, int64_t parent_id) {
@@ -535,25 +541,33 @@ void notebook_config_dialog(void) {
                                 .model = model,
                                 .getvalue2 = reslist_getvalue, .getvalue2data = wdata,
                                 .getstyle = reslist_getstyle, .getstyledata = wdata,
-                                .width = 300, .fill = TRUE,
+                                .width = 300, .fill = TRUE, .hide_header = TRUE,
                                 .onselection = nbconfig_notebooklist_onselect);
                     }
                     
                     ui_grid(obj, .columnspacing = 10, .rowspacing = 10, .fill = TRUE, .def_vfill = TRUE) {
-                        ui_rlabel(obj, .label = "Group");
-                        ui_dropdown(obj, .list = wdata->tab1_groups, .getvalue2 = reslist_getvalue, .getvalue2data = wdata, .onactivate = nbconfig_group_onselect);
+                        int notebook_visible[] = { NBCONFIG_STATE_NOTEBOOK_SELECTED, -1 };
+                        
+                        UIWIDGET w = ui_rlabel(obj, .label = "Group");
+                        ui_widget_set_visibility_states(obj->ctx, w, notebook_visible, 1);
+                        w = ui_dropdown(obj, .list = wdata->tab1_groups, .getvalue2 = reslist_getvalue, .getvalue2data = wdata, .onactivate = nbconfig_group_onselect);
+                        ui_widget_set_visibility_states(obj->ctx, w, notebook_visible, 1);
                         ui_newline(obj);
 
                         ui_rlabel(obj, .label = "Name");
                         wdata->tab1_notebook_name_textfield = ui_textfield(obj, .value = wdata->tab1_notebook_name, .onchange = nbconfig_notebooklist_name_changed);
                         ui_newline(obj);
 
-                        ui_rlabel(obj, .label = "Repository");
-                        ui_dropdown(obj, .list = wdata->tab1_repositories);
+                        w = ui_rlabel(obj, .label = "Repository");
+                        ui_widget_set_visibility_states(obj->ctx, w, notebook_visible, 1);
+                        w = ui_dropdown(obj, .list = wdata->tab1_repositories);
+                        ui_widget_set_visibility_states(obj->ctx, w, notebook_visible, 1);
                         ui_newline(obj);
 
-                        ui_rlabel(obj, .label = "Type");
-                        ui_dropdown(obj, .list = wdata->tab1_types);
+                        w = ui_rlabel(obj, .label = "Type");
+                        ui_widget_set_visibility_states(obj->ctx, w, notebook_visible, 1);
+                        w = ui_dropdown(obj, .list = wdata->tab1_types);
+                        ui_widget_set_visibility_states(obj->ctx, w, notebook_visible, 1);
                         ui_newline(obj);
                     }
                 }
index 6f4197442f19f69e81253aa2742ff39c2a1f9436..414f35bf210beb0fef6aa96303acf0e7bde199d5 100644 (file)
@@ -35,6 +35,8 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+    
+#define NBCONFIG_STATE_NOTEBOOK_SELECTED 10
 
 typedef struct NotebookConfigDialog {
     MainWindow *parent;
index e8b649cdc261c09361aeda5a4d40a03786c44dea..3914bf2accfb731e9de6a6d3132ee233466c92cd 100644 (file)
@@ -661,6 +661,9 @@ UIWIDGET ui_table_create(UiObject *obj, UiListArgs *args) {
     
     GtkSelectionModel *selection_model = create_selection_model(tableview, ls, args->multiselection);
     GtkWidget *view = gtk_column_view_new(GTK_SELECTION_MODEL(selection_model));
+    if(args->hide_header) {
+        gtk_widget_set_visible(gtk_widget_get_first_child(view), FALSE);
+    }
     
     UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST);
     
@@ -1385,6 +1388,9 @@ static void table_cell_edited(
 UIWIDGET ui_table_create(UiObject *obj, UiListArgs *args) {
     // create treeview
     GtkWidget *view = gtk_tree_view_new();
+    if(args->hide_header) {
+        gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);
+    }
     
     UiModel *model = args->model;
     int columns = model ? model->columns : 0;
index 32871a295abb38cbe14052f4cb30421c0e86f2d5..95824789f2639c9ae4dc722bb46a1472f408fb5f 100644 (file)
@@ -278,3 +278,50 @@ void ui_textfield_set(UiString *str, const char *value) {
     }
     str->value.ptr = NULL;
 }
+
+void ui_textfield_focus(UIWIDGET textfield) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    edit->setFocus();
+    edit->selectAll();
+}
+
+void ui_textfield_focus_without_selecting(UIWIDGET textfield) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    edit->setFocus();
+}
+
+void ui_textfield_set_selection(UIWIDGET textfield, int begin, int end) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    if (begin < 0) {
+        begin = 0;
+    }
+    if (end < begin) {
+        end = begin;
+    }
+    edit->setSelection(begin, end - begin);
+}
+
+void ui_textfield_select_all(UIWIDGET textfield) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    edit->selectAll();
+}
+
+void ui_textfield_set_editable(UIWIDGET textfield, UiBool editable) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    edit->setReadOnly(!editable);
+}
+
+UiBool ui_textfield_is_editable(UIWIDGET textfield) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    return !edit->isReadOnly();
+}
+
+void ui_textfield_set_position(UIWIDGET textfield, int pos) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    edit->setCursorPosition(pos);
+}
+
+int ui_textfield_get_position(UIWIDGET textfield) {
+    QLineEdit *edit = static_cast<QLineEdit*>(textfield);
+    return edit->cursorPosition();
+}
index 7cfbfbba5cd2cb14ae25ceed9ab81c3cab0e88da..d74a2d9d4477953504a572c89fa6d0154a1fade7 100644 (file)
@@ -175,6 +175,7 @@ struct UiListArgs {
     ui_callback ondrop;
     void *ondropdata;
     UiBool multiselection;
+    UiBool hide_header;
     UiMenuBuilder *contextmenu;
     ui_list_savefunc onsave;
     void *onsavedata;