]> git.plutz.net Git - gladerunner/commitdiff
remove option for listbox, acrivate signal for entries
authorPaul Hänsch <paul@plutz.net>
Tue, 28 Jul 2026 13:31:51 +0000 (15:31 +0200)
committerPaul Hänsch <paul@plutz.net>
Tue, 28 Jul 2026 13:31:51 +0000 (15:31 +0200)
gladerunner.c

index a5a529de84df03e370437d569ef785c1d8d5099f..a886157803a9c77d10a6d648f8bc6aab9ad5459c 100644 (file)
@@ -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);