static void nbconfig_repolist_add(UiEvent *event, void *userdata) {
+ NotebookConfigDialog *wdata = event->window;
+ NoteStore *store = note_store_get();
+
+ Repository *repo = cxCalloc(store->mp->allocator, 1, sizeof(Repository));
+ wdata->new_repository = repo;
+ ui_set(wdata->tab3_repo_name, "");
+ ui_list_setselection(wdata->tab3_repositories, 0);
}
static void nbconfig_repolist_delete(UiEvent *event, void *userdata) {
}
+static void nbconfig_repolist_name_changed(UiEvent *event, void *userdata) {
+ if(event->set) {
+ return;
+ }
+
+ NotebookConfigDialog *wdata = event->window;
+ NoteStore *store = note_store_get();
+
+ if(wdata->new_repository) {
+ UiBool add = FALSE;
+ if(!wdata->new_repository) {
+ add = TRUE;
+ } else {
+ cxFree(store->mp->allocator, wdata->new_repository->name);
+ }
+
+ wdata->new_repository->name = cx_strdup_a(store->mp->allocator, cx_str(ui_get(wdata->tab3_repo_name))).ptr;
+
+ if(add) {
+ cxListAdd(wdata->repositories, wdata->new_repository);
+ }
+ nbconfig_update_lists(wdata);
+ }
+}
+
void notebook_config_dialog(void) {
NoteStore *store = note_store_get();
// TODO: check store->root and show different dialog, when root is missing
ui_grid(obj, .columnspacing = 10, .rowspacing = 10, .fill = TRUE, .def_vfill = TRUE) {
ui_rlabel(obj, .label = "Name");
- ui_textfield(obj, .value = wdata->tab3_repo_name);
+ ui_textfield(obj, .value = wdata->tab3_repo_name, .onchange = nbconfig_repolist_name_changed);
ui_newline(obj);
ui_rlabel(obj, .label = "Local Path");