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);
}
}
+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;
#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);
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);