}
void nbconfig_update_lists(NotebookConfigDialog *wdata) {
+ ui_list_clear(wdata->tab1_groups);
+ ui_list_clear(wdata->tab2_groups);
CxIterator i = cxListIterator(wdata->groups);
cx_foreach(Resource *, res, i) {
ui_list_append(wdata->tab1_groups, res);
ui_list_append(wdata->tab2_groups, res);
}
+ ui_list_clear(wdata->tab2_notebooks);
i = cxListIterator(wdata->notebooks);
cx_foreach(Resource *, res, i) {
ui_list_append(wdata->tab2_notebooks, res);
return;
}
nbconfig_tab1_load_group(wdata, res);
+ // TODO: check for empty new group and discard it in that case
+ wdata->new_group = NULL;
}
static void nbconfig_notebooklist_activate(UiEvent *event, void *userdata) {
nbconfig_tab2_load_notebook(wdata, res);
}
+static void nbconfig_grouplist_add(UiEvent *event, void *userdata) {
+ NotebookConfigDialog *wdata = event->window;
+ NoteStore *store = note_store_get();
+
+ Resource *group = cxCalloc(store->mp->allocator, 1, sizeof(Resource));
+ group->parent_id = store->root->resource_id;
+ group->notebook = cxCalloc(store->mp->allocator, 1, sizeof(Notebook));
+
+ if(wdata->new_group) {
+ // TODO
+ }
+
+ wdata->new_group = group;
+
+ ui_set(wdata->tab1_group_name, "");
+ ui_list_setselection(wdata->tab1_repositories, 0);
+ ui_list_setselection(wdata->tab1_types, 0);
+}
+
+static void nbconfig_grouplist_delete(UiEvent *event, void *userdata) {
+
+}
+
+static void nbconfig_grouplist_move_up(UiEvent *event, void *userdata) {
+
+}
+
+static void nbconfig_grouplist_move_down(UiEvent *event, void *userdata) {
+
+}
+
+static void nbconfig_grouplist_name_changed(UiEvent *event, void *userdata) {
+ if(event->set) {
+ return;
+ }
+ NotebookConfigDialog *wdata = event->window;
+ NoteStore *store = note_store_get();
+
+ if(wdata->new_group) {
+ UiBool add_group = FALSE;
+ if(!wdata->new_group->nodename) {
+ add_group = TRUE;
+ } else {
+ cxFree(store->mp->allocator, wdata->new_group->nodename);
+ }
+
+ wdata->new_group->nodename = cx_strdup_a(store->mp->allocator, cx_str(ui_get(wdata->tab1_group_name))).ptr;
+
+ if(add_group) {
+ cxListAdd(wdata->groups, wdata->new_group);
+ }
+ nbconfig_update_lists(wdata); // TODO: update only single row
+ }
+}
+
+static void nbconfig_notebooklist_add(UiEvent *event, void *userdata) {
+
+}
+
+static void nbconfig_notebooklist_delete(UiEvent *event, void *userdata) {
+
+}
+
+static void nbconfig_notebooklist_move_up(UiEvent *event, void *userdata) {
+
+}
+
+static void nbconfig_notebooklist_move_down(UiEvent *event, void *userdata) {
+
+}
+
+
+
void action_notebook_config(UiEvent *event, void *userdata) {
NoteStore *store = note_store_get();
// TODO: check store->root and show different dialog, when root is missing
ui_vbox(obj, .fill = UI_OFF) {
ui_listview(obj, .list = wdata->tab1_groups, .getvalue = reslist_getvalue, .fill = UI_ON, .onactivate = nbconfig_grouplist_activate);
ui_hbox(obj, .fill = UI_OFF) {
- ui_button(obj, .icon = UI_ICON_NEW_FOLDER);
- ui_button(obj, .icon = UI_ICON_DELETE);
- ui_button(obj, .icon = UI_ICON_GO_UP);
- ui_button(obj, .icon = UI_ICON_GO_DOWN);
+ ui_button(obj, .icon = UI_ICON_NEW_FOLDER, .onclick = nbconfig_grouplist_add);
+ ui_button(obj, .icon = UI_ICON_DELETE, .onclick = nbconfig_grouplist_delete);
+ ui_button(obj, .icon = UI_ICON_GO_UP, .onclick = nbconfig_grouplist_move_up);
+ ui_button(obj, .icon = UI_ICON_GO_DOWN, .onclick = nbconfig_grouplist_move_down);
}
}
ui_grid(obj, .columnspacing = 10, .rowspacing = 10, .fill = UI_ON, .def_vfill = TRUE) {
ui_rlabel(obj, .label = "Name");
- ui_textfield(obj, .value = wdata->tab1_group_name);
+ ui_textfield(obj, .value = wdata->tab1_group_name, .onchange = nbconfig_grouplist_name_changed);
ui_newline(obj);
ui_rlabel(obj, .label = "Default Repository");
ui_vbox(obj, .fill = UI_OFF) {
ui_listview(obj, .list = wdata->tab2_notebooks, .getvalue = reslist_getvalue, .fill = UI_ON, .onactivate = nbconfig_notebooklist_activate);
ui_hbox(obj, .fill = UI_OFF) {
- ui_button(obj, .icon = UI_ICON_NEW_FOLDER);
- ui_button(obj, .icon = UI_ICON_DELETE);
- ui_button(obj, .icon = "go-up");
- ui_button(obj, .icon = "go-down");
+ ui_button(obj, .icon = UI_ICON_NEW_FOLDER, .onclick = nbconfig_notebooklist_add);
+ ui_button(obj, .icon = UI_ICON_DELETE, .onclick = nbconfig_notebooklist_delete);
+ ui_button(obj, .icon = UI_ICON_GO_UP, .onclick = nbconfig_notebooklist_move_up);
+ ui_button(obj, .icon = UI_ICON_GO_DOWN, .onclick = nbconfig_notebooklist_move_down);
}
}