From: Paul Hänsch Date: Tue, 28 Jul 2026 13:31:51 +0000 (+0200) Subject: remove option for listbox, acrivate signal for entries X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=7ecf6a74c774930474923c9e2ac722e652398969;p=gladerunner remove option for listbox, acrivate signal for entries --- diff --git a/gladerunner.c b/gladerunner.c index a5a529d..a886157 100644 --- a/gladerunner.c +++ b/gladerunner.c @@ -88,6 +88,15 @@ gboolean s_switch_state_set(GtkWidget *wdg, gboolean state, gpointer d) { return 0; } +void e_entry_activate(GtkWidget *wdg, gpointer user_data) { + GtkEntry *e = GTK_ENTRY(wdg); + printf( + "%s ACTIVATE %s\n", + gtk_buildable_get_name(GTK_BUILDABLE(wdg)), + gtk_entry_buffer_get_text(gtk_entry_get_buffer(e)) + ); +} + void e_entry_changed(GtkWidget *wdg, gpointer user_data) { GtkEntry *e = GTK_ENTRY(wdg); printf( @@ -164,14 +173,29 @@ void a_listbox_add(GtkListBox *w, char *arg) { GtkWidget *wdg; if (wdg = GTK_WIDGET(gtk_builder_get_object(builder, arg))) { gtk_list_box_insert(w, wdg, -1); - gtk_widget_set_visible(wdg, TRUE); + //gtk_widget_set_visible(wdg, TRUE); } else { dprintf(STDERR_FILENO, "Unknown Widget-ID: %s\n", arg); } } + +void a_listbox_remove(GtkListBox *w, char *arg) { + // ListBox children are silently wrapped into a GtkListBoxRow + // so we really detroy that wrapper after removing the child + GtkWidget *wdg, *p; + if (wdg = GTK_WIDGET(gtk_builder_get_object(builder, arg))) { + p = gtk_widget_get_parent(wdg); + gtk_container_remove(GTK_CONTAINER(p), wdg); + gtk_widget_destroy(p); + } else { + dprintf(STDERR_FILENO, "Unknown Widget-ID: %s\n", arg); + } +} + int a_listbox(GtkListBox *w, char *cmd, char *args) { if (!w || !cmd || !cmd[0]) return 0; - else if (!strcmp(cmd, "add")) a_listbox_add(w, args); + else if (!strcmp(cmd, "add")) a_listbox_add(w, args); + else if (!strcmp(cmd, "remove")) a_listbox_remove(w, args); else return 0; return 1; } @@ -300,10 +324,11 @@ void init_widgets(gpointer wp, gpointer data) { else if (GTK_IS_TOGGLE_BUTTON(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_tb_toggled), NULL); else if (GTK_IS_CHECK_MENU_ITEM(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_cmi_toggled), NULL); else if (GTK_IS_TOGGLE_TOOL_BUTTON(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_ttb_toggled), NULL); - else if (GTK_IS_MENU_ITEM(wdg)) g_signal_connect(wdg, "activate",G_CALLBACK(e_mi_activate), NULL); - else if (GTK_IS_ENTRY(wdg) ) g_signal_connect(wdg, "changed", G_CALLBACK(e_entry_changed), NULL); - else if (GTK_IS_TOOL_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(e_widget_clicked), NULL); - else if (GTK_IS_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(e_widget_clicked), NULL); + else if (GTK_IS_MENU_ITEM(wdg)) g_signal_connect(wdg, "activate", G_CALLBACK(e_mi_activate), NULL); + else if (GTK_IS_ENTRY(wdg) ) { g_signal_connect(wdg, "changed", G_CALLBACK(e_entry_changed), NULL); + g_signal_connect(wdg, "activate", G_CALLBACK(e_entry_activate), NULL);} + else if (GTK_IS_TOOL_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(e_widget_clicked), NULL); + else if (GTK_IS_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(e_widget_clicked), NULL); else if (GTK_IS_WINDOW(wdg)) g_signal_connect(wdg, "delete-event", G_CALLBACK(e_window_close), NULL); else { printf("%s unknown\n", name); return; } printf("%s loaded\n", name);