]> uap-core.de Git - note.git/commitdiff
add UI for "add notebook" dialog
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 4 May 2025 10:58:40 +0000 (12:58 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 4 May 2025 10:58:40 +0000 (12:58 +0200)
application/window.c
application/window.h

index 80fd2ad918cf44945ab4c3b98bc70b93c95ffd3d..dfd99120626c9f10fe46e341d7b9b219c28a9947 100644 (file)
@@ -53,7 +53,9 @@ void window_create() {
     ui_sidebar(obj) {
         ui_sourcelist(obj, .dynamic_sublist = wdata->notebooks, .getvalue = window_sidebar_getvalue, .onactivate = action_notebook_selected, .fill = UI_ON);
         ui_hbox(obj, .spacing = 2, .fill = UI_OFF) {
-            ui_button(obj, .icon = "folder-new-symbolic", .style_class = "flat");
+            ui_button(obj, .icon = "folder-new-symbolic", .style_class = "flat", .onclick = action_notebook_add);
+            ui_label(obj, .fill = UI_ON);
+            ui_button(obj, .icon = "emblem-system-symbolic", .style_class = "flat", .onclick = action_notebook_config);
         }
     }
     
@@ -254,6 +256,73 @@ void window_navigate(MainWindow *window, NavStack *nav) {
 
 
 
+static void action_nnd_new_group(UiEvent *event, void *userdata) {
+    NewNotebookDialog *wdata = event->window;
+    if(event->set) {
+        return;
+    }
+    
+    ui_set(wdata->gs_new_group, event->intval);
+    ui_set(wdata->gn_new_group, event->intval);
+    if(event->intval) {
+        wdata->new_group = 1;
+        ui_set_group(event->obj->ctx, NEWNOTEBOOK_DIALOG_STATE_NEW_GROUP);
+        ui_unset_group(event->obj->ctx, NEWNOTEBOOK_DIALOG_STATE_SELECT_GROUP);
+    } else {
+        wdata->new_group = 0;
+        ui_set_group(event->obj->ctx, NEWNOTEBOOK_DIALOG_STATE_SELECT_GROUP);
+        ui_unset_group(event->obj->ctx, NEWNOTEBOOK_DIALOG_STATE_NEW_GROUP);
+    }
+}
+
+void action_notebook_add(UiEvent *event, void *userdata) {
+    UiObject *obj = ui_dialog_window(event->obj,
+            .modal = UI_ON,
+            .show_closebutton = UI_OFF,
+            .title = "Add Notebook",
+            .lbutton1 = "Add",
+            .rbutton4 = "Cancel",
+            .default_button = 1);
+    ui_set_group(obj->ctx, NEWNOTEBOOK_DIALOG_STATE_SELECT_GROUP);
+    
+    NewNotebookDialog *wdata = ui_malloc(obj->ctx, sizeof(NewNotebookDialog));
+    wdata->groups = ui_list_new(obj->ctx, NULL);
+    wdata->notebook_name = ui_string_new(obj->ctx, NULL);
+    wdata->gs_new_group = ui_int_new(obj->ctx, NULL);
+    wdata->gn_new_group = ui_int_new(obj->ctx, NULL);
+    wdata->new_group = 0;
+    obj->window = wdata;
+    
+    ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10, .def_vfill = TRUE, .fill = UI_ON) {
+        UIWIDGET gs_label = ui_rlabel(obj, .label = "Group");
+        UIWIDGET gs_list = ui_combobox(obj, .varname = "notebook_groups", .hexpand = TRUE, .hfill = TRUE);
+        UIWIDGET gs_button = ui_togglebutton(obj, .label = "New Group", .value = wdata->gs_new_group, .onchange = action_nnd_new_group);
+        ui_newline(obj);
+        ui_widget_set_groups(obj->ctx, gs_label, (ui_enablefunc)ui_set_visible, NEWNOTEBOOK_DIALOG_STATE_SELECT_GROUP, -1);
+        ui_widget_set_groups(obj->ctx, gs_list, (ui_enablefunc)ui_set_visible, NEWNOTEBOOK_DIALOG_STATE_SELECT_GROUP, -1);
+        ui_widget_set_groups(obj->ctx, gs_button, (ui_enablefunc)ui_set_visible, NEWNOTEBOOK_DIALOG_STATE_SELECT_GROUP, -1);
+        
+        UIWIDGET gn_label = ui_rlabel(obj, .label = "Group");
+        UIWIDGET gn_textfield = ui_textfield(obj, .varname = "notebook_group_name", .hexpand = TRUE, .hfill = TRUE);
+        UIWIDGET gn_button = ui_togglebutton(obj, .label = "New Group", .value = wdata->gn_new_group, .onchange = action_nnd_new_group);
+        ui_newline(obj);
+        
+        ui_widget_set_groups(obj->ctx, gn_label, (ui_enablefunc)ui_set_visible, NEWNOTEBOOK_DIALOG_STATE_NEW_GROUP, -1);
+        ui_widget_set_groups(obj->ctx, gn_textfield, (ui_enablefunc)ui_set_visible, NEWNOTEBOOK_DIALOG_STATE_NEW_GROUP, -1);
+        ui_widget_set_groups(obj->ctx, gn_button, (ui_enablefunc)ui_set_visible, NEWNOTEBOOK_DIALOG_STATE_NEW_GROUP, -1);
+        
+        ui_newline(obj);
+        ui_rlabel(obj, .label = "Name");
+        ui_textfield(obj, .varname = "notebook_name", .colspan = 2, .hfill = TRUE);
+    }
+    
+    ui_show(obj);
+}
+
+void action_notebook_config(UiEvent *event, void *userdata) {
+    
+}
+
 void action_notebook_selected(UiEvent *event, void *userdata) {
     UiSubListEventData *data = event->eventdata;
     MainWindow *window = event->window;
index 4ce670e6eec74a8f280abd62d8fb1396285f9777..29be0bc5f94589fbcdfd7d10fe4fdf76db613812 100644 (file)
 #ifdef __cplusplus
 extern "C" {
 #endif
+    
+#define NEWNOTEBOOK_DIALOG_STATE_SELECT_GROUP 1
+#define NEWNOTEBOOK_DIALOG_STATE_NEW_GROUP 2
 
 #define ACTION_DATA_INSERT_LIST_ORDERED (void*)(intptr_t)1
 #define ACTION_DATA_INSERT_LIST_UNORDERED (void*)(intptr_t)0
     
+    
+typedef struct NewNotebookDialog {
+    UiList *groups;
+    UiString *group_name;
+    UiString *notebook_name;
+    UiInteger *gs_new_group;
+    UiInteger *gn_new_group;
+    int new_group;
+} NewNotebookDialog;
+    
 void window_create();
 
 MainWindow* window_init_data(UiObject *obj);
@@ -55,6 +68,9 @@ void update_sublists(UiContext *ctx, UiList *sublists);
 
 void* window_notelist_getvalue(void *data, int col);
 
+void action_notebook_add(UiEvent *event, void *userdata);
+void action_notebook_config(UiEvent *event, void *userdata);
+
 void action_notebook_selected(UiEvent *event, void *userdata);
 void action_note_selected(UiEvent *event, void *userdata);
 void action_note_activated(UiEvent *event, void *userdata);