]> git.plutz.net Git - gladerunner/commitdiff
tidying up action code
authorPaul Hänsch <paul@plutz.net>
Wed, 29 Jul 2026 13:48:04 +0000 (15:48 +0200)
committerPaul Hänsch <paul@plutz.net>
Wed, 29 Jul 2026 13:48:04 +0000 (15:48 +0200)
gladerunner.c

index aa8548264881ee07534dc9080e3467f6dcdb72a5..b79d75a8bf81cde0e7a2e77712f054948125e9d4 100644 (file)
@@ -9,6 +9,9 @@
 static GtkBuilder *builder = NULL;
 static int chldin[2], chldout[2];
 
+// pre declaration
+void init_widgets(gpointer wp, gpointer data);
+
 // typedef struct wdg_command {
 //   GType wdg;
 //   const char *cmd;
@@ -78,16 +81,6 @@ void e_cmi_toggled(GtkWidget *wdg, gpointer d) {
   );
 }
 
-gboolean s_switch_state_set(GtkWidget *wdg, gboolean state, gpointer d) {
-  GtkSwitch *s = GTK_SWITCH(wdg);
-  printf(
-    "STATE-SET %s %i\n",
-    gtk_buildable_get_name(GTK_BUILDABLE(wdg)),
-    state
-  );
-  return 0;
-}
-
 void e_entry_activate(GtkWidget *wdg, gpointer user_data) {
   GtkEntry *e = GTK_ENTRY(wdg);
   printf(
@@ -106,6 +99,16 @@ void e_entry_changed(GtkWidget *wdg, gpointer user_data) {
   );
 }
 
+gboolean s_switch_state_set(GtkWidget *wdg, gboolean state, gpointer d) {
+  GtkSwitch *s = GTK_SWITCH(wdg);
+  printf(
+    "STATE-SET %s %i\n",
+    gtk_buildable_get_name(GTK_BUILDABLE(wdg)),
+    state
+  );
+  return 0;
+}
+
 // ====== CLI ACTIONS ======
 
 void a_text_view_set(GtkTextView *v, char *c) {
@@ -114,7 +117,60 @@ void a_text_view_set(GtkTextView *v, char *c) {
   );
 }
 
+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);
+  } 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);
+  }
+}
+
+void a_builder_load(char *file) {
+  GSList *widgets; GError *gerr = NULL;
+
+  if ( ! gtk_builder_add_from_file(builder, file, &gerr) ) {
+    dprintf(STDERR_FILENO, "Error during \"load\": %s\n", gerr->message);
+    free(gerr);
+  } else {
+    widgets = gtk_builder_get_objects(builder);
+    g_slist_foreach(widgets, *init_widgets, NULL);
+    g_slist_free(widgets);
+  }
+}
+
+void a_builder_add(char *xml) {
+  GSList *widgets; GError *gerr = NULL;
+
+  if ( ! gtk_builder_add_from_string(builder, xml, -1, &gerr) ) {
+    dprintf(STDERR_FILENO, "Error during \"add\": %s\n", gerr->message);
+    free(gerr);
+  } else {
+    widgets = gtk_builder_get_objects(builder);
+    g_slist_foreach(widgets, *init_widgets, NULL);
+    g_slist_free(widgets);
+  }
+}
+
+
+// ====== CLI ACTIONS PARSING ======
+
 int a_editable(GtkEditable *w, char *cmd, char *args) {
+  printf("ED\n");
   if (!w || !cmd || !cmd[0]) return 0;
   else if (!strcmp(cmd, "lock"))   gtk_editable_set_editable(w, FALSE);
   else if (!strcmp(cmd, "unlock")) gtk_editable_set_editable(w, TRUE);
@@ -130,6 +186,11 @@ int a_widget(GtkWidget *w, char *cmd, char *args) {
   else return 0;
   return 1;
 }
+
+// Toggle Button, Toggle Tool Button, and Check Menu Item are all forms of
+// check boxes and radio buttons, depending on whether they appear in
+// a drop down menu, in a tool bar, or elsewhere.
+
 int a_tb(GtkToggleButton *w, char *cmd, char *args) {
   if (!w || !cmd || !cmd[0]) return 0;
   else if (!strcmp(cmd, "check"))   gtk_toggle_button_set_active(w, TRUE);
@@ -164,34 +225,14 @@ int a_entry(GtkEntry *w, char *cmd, char *args) {
 }
 int a_text_view(GtkTextView *w, char *cmd, char *args) {
   if (!w || !cmd || !cmd[0]) return 0;
-  else if (!strcmp(cmd, "set"))      a_text_view_set(w, args);
+  else if (!strcmp(cmd, "set"))               a_text_view_set(w, args);
+  // text view is unrelated to editable
+  else if (!strcmp(cmd, "lock"))   gtk_text_view_set_editable(w, FALSE);
+  else if (!strcmp(cmd, "unlock")) gtk_text_view_set_editable(w, TRUE);
   else return 0;
   return 1;
 }
 
-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);
-  } 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);
@@ -200,34 +241,6 @@ int a_listbox(GtkListBox *w, char *cmd, char *args) {
   return 1;
 }
 
-void init_widgets(gpointer wp, gpointer data);
-
-void a_builder_load(char *file) {
-  GSList *widgets; GError *gerr = NULL;
-
-  if ( ! gtk_builder_add_from_file(builder, file, &gerr) ) {
-    dprintf(STDERR_FILENO, "Error during \"load\": %s\n", gerr->message);
-    free(gerr);
-  } else {
-    widgets = gtk_builder_get_objects(builder);
-    g_slist_foreach(widgets, *init_widgets, NULL);
-    g_slist_free(widgets);
-  }
-}
-
-void a_builder_add(char *xml) {
-  GSList *widgets; GError *gerr = NULL;
-
-  if ( ! gtk_builder_add_from_string(builder, xml, -1, &gerr) ) {
-    dprintf(STDERR_FILENO, "Error during \"add\": %s\n", gerr->message);
-    free(gerr);
-  } else {
-    widgets = gtk_builder_get_objects(builder);
-    g_slist_foreach(widgets, *init_widgets, NULL);
-    g_slist_free(widgets);
-  }
-}
-
 int a_builder(char *cmd, char *args) {
   if (!cmd || !cmd[0]) return 0;
   else if (!strcmp(cmd, "load")) a_builder_load(args);
@@ -253,8 +266,8 @@ int action(char *cli) {
   || (GTK_IS_TOGGLE_TOOL_BUTTON(wdg) && a_ttb(GTK_TOGGLE_TOOL_BUTTON(wdg), cmd, args))
   || (GTK_IS_ENTRY(wdg)              &&            a_entry(GTK_ENTRY(wdg), cmd, args))
   || (GTK_IS_LIST_BOX(wdg)           &&       a_listbox(GTK_LIST_BOX(wdg), cmd, args))
-  || (GTK_IS_TEXT_VIEW(wdg)          &&    a_text_view(GTK_TEXT_VIEW(wdg), cmd, args))
   || (GTK_IS_EDITABLE(wdg)           &&      a_editable(GTK_EDITABLE(wdg), cmd, args))
+  || (GTK_IS_TEXT_VIEW(wdg)          &&    a_text_view(GTK_TEXT_VIEW(wdg), cmd, args))
   || (GTK_IS_BUTTON(wdg)             &&          a_button(GTK_BUTTON(wdg), cmd, args))
   || (GTK_IS_WIDGET(wdg)             &&          a_widget(GTK_WIDGET(wdg), cmd, args))
   ) return 1;