From 8eadc6efa274a28848ca586d69055ee1953a2e49 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Sun, 25 Apr 2010 17:54:24 +0200 Subject: Added support for creating child tags in the tag dialog. --- window_tag.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'window_tag.c') diff --git a/window_tag.c b/window_tag.c index 35c814b..52db1ad 100644 --- a/window_tag.c +++ b/window_tag.c @@ -99,6 +99,8 @@ static void tagview_create_model(GtkTreeView *tagview, gpointer user_data) { g_array_free(walltag_single, TRUE); } g_array_free(walltags, TRUE); + + gtk_tree_view_expand_all(tagview); } static void tagview_init(GtkTreeView *tagview, gpointer user_data) { @@ -124,8 +126,6 @@ static void tagview_init(GtkTreeView *tagview, gpointer user_data) { gtk_tree_view_column_add_attribute(col2, renderer, "text", 2); tagview_create_model(tagview, user_data); - - gtk_tree_view_expand_all(tagview); } void on_tags_addbtn_clicked(GtkButton *button, gpointer user_data) { @@ -146,6 +146,35 @@ void on_tags_addbtn_clicked(GtkButton *button, gpointer user_data) { gtk_widget_destroy(GTK_WIDGET(dialog)); } +void on_tags_addchildbtn_clicked(GtkButton *button, gpointer user_data) { + struct tagdialog_data_t *data; + GtkDialog *dialog; + gchar *s; + GtkTreeSelection *selection; + GtkTreeModel *model; + GtkTreeIter iter; + struct tag_t *tag; + + data = user_data; + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->tagview)); + if(!gtk_tree_selection_get_selected(selection, &model, &iter)) { + return; + } + + tag_model_get_tag_record(GTK_TREE_MODEL(model), &iter, &tag); + + dialog = text_input_dialog_new(data->dialog, "Enter the name of the new tag:"); + if(gtk_dialog_run(dialog) == GTK_RESPONSE_OK) { + s = text_input_dialog_get_text(GTK_WIDGET(dialog)); + if(db_add_tag(s, tag->id)) + tagview_create_model(GTK_TREE_VIEW(data->tagview), user_data); + else + g_warning("Failed to add tag \"%s\"\n", s); + g_free(s); + } + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + void on_tags_rembtn_clicked(GtkButton *button, gpointer user_data) { GtkWidget *dialog; struct tagdialog_data_t *data; -- cgit v1.2.3