]> git.plutz.net Git - gladerunner/commitdiff
worked on command parsing
authorPaul Hänsch <paul@plutz.net>
Sun, 12 Jul 2026 19:08:26 +0000 (21:08 +0200)
committerPaul Hänsch <paul@plutz.net>
Sun, 12 Jul 2026 19:08:26 +0000 (21:08 +0200)
glade1.c
glade1.glade

index 2a2d79d6ab956226666b54c93148ac21148d4a22..712c86dd9c8b6fa72c6cfd3352f39aeb4d374305 100644 (file)
--- a/glade1.c
+++ b/glade1.c
@@ -23,7 +23,7 @@ void text_content(GtkWidget *wdg, gpointer user_data) {
   GtkEntry *e;
   if (GTK_IS_ENTRY(wdg)) {
     e = GTK_ENTRY( wdg );
-    printf( "ENTRY:%s:%s\n",
+    printf( "%s CHANGED %s\n",
             gtk_buildable_get_name(GTK_BUILDABLE(wdg)),
             gtk_entry_buffer_get_text(  gtk_entry_get_buffer( e ) )
           );
@@ -31,66 +31,71 @@ void text_content(GtkWidget *wdg, gpointer user_data) {
 }
 
 void button_click(GtkWidget *wdg, gpointer d) {
-  printf( "BUTTON:%s:clicked\n",
-          gtk_buildable_get_name(GTK_BUILDABLE(wdg))
+  printf( "%s CLICKED\n",
+          GTK_IS_BUILDABLE(wdg)?gtk_buildable_get_name(GTK_BUILDABLE(wdg)):(char *)d
         );
 }
 
 // ====== CLI ACTIONS =======
 
-void a_widget_enable(GtkWidget *w) {
-  gtk_widget_set_sensitive(w, TRUE);
-}
-void a_widget_disable(GtkWidget *w) {
-  gtk_widget_set_sensitive(w, FALSE);
-}
-
 void a_text_view_set(GtkTextView *v, char *c) {
   gtk_text_buffer_set_text(
     gtk_text_view_get_buffer( v ), c, -1
   );
 }
 
-void a_button(GtkButton *w, char *cli) {
-  char *cmd = strtok(cli, "    \n");
-
-  if (!w || !cmd || !cmd[0]) return;
-  else if (!strcmp(cli, "enable"))   a_widget_enable(GTK_WIDGET(w));
-  else if (!strcmp(cli, "disable")) a_widget_disable(GTK_WIDGET(w));
+int a_editable(GtkEditable *w, char *cmd, char *args) {
+  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);
+  else return 0;
+  return 1;
 }
-void a_entry(GtkEntry *w, char *cli) {
-  char *cmd = strtok(cli, "    \n");
-
-  if (!w || !cmd || !cmd[0]) return;
-  else if (!strcmp(cli, "enable"))   a_widget_enable(GTK_WIDGET(w));
-  else if (!strcmp(cli, "disable")) a_widget_disable(GTK_WIDGET(w));
-  else if (!strcmp(cli, "lock"))   gtk_editable_set_editable(GTK_EDITABLE(w), FALSE);
-  else if (!strcmp(cli, "unlock")) gtk_editable_set_editable(GTK_EDITABLE(w), TRUE);
+int a_widget(GtkWidget *w, char *cmd, char *args) {
+  if (!w || !cmd || !cmd[0]) return 0;
+  else if (!strcmp(cmd, "enable"))  gtk_widget_set_sensitive(w, TRUE);
+  else if (!strcmp(cmd, "disable")) gtk_widget_set_sensitive(w, FALSE);
+  else if (!strcmp(cmd, "show"))      gtk_widget_set_visible(w, TRUE);
+  else if (!strcmp(cmd, "hide"))      gtk_widget_set_visible(w, FALSE);
+  else return 0;
+  return 1;
 }
-void a_window(GtkWindow *w, char *cli) {
-  char *cmd = strtok(cli, "    \n");
 
-  if (!w || !cmd || !cmd[0]) return;
-  else if (!strcmp(cli, "enable"))   a_widget_enable(GTK_WIDGET(w));
-  else if (!strcmp(cli, "disable")) a_widget_disable(GTK_WIDGET(w));
+int a_button(GtkButton *w, char *cmd, char *args) {
+  if (!w || !cmd || !cmd[0]) return 0;
+  else return 0;
+  return 1;
 }
-void a_text_view(GtkTextView *w, char *cli) {
-  char *cmd = strtok(cli, "    \n");
-
-  if (!w || !cmd || !cmd[0]) return;
-  else if (!strcmp(cli, "set"))      a_text_view_set(w, strtok(NULL, ""));
-  else if (!strcmp(cli, "enable"))  a_widget_enable(GTK_WIDGET(w));
-  else if (!strcmp(cli, "disable")) a_widget_disable(GTK_WIDGET(w));
-  else if (!strcmp(cli, "lock"))   gtk_text_view_set_editable(w, FALSE);
-  else if (!strcmp(cli, "unlock")) gtk_text_view_set_editable(w, TRUE);
+int a_entry(GtkEntry *w, char *cmd, char *args) {
+  if (!w || !cmd || !cmd[0]) return 0;
+  else return 0;
+  return 1;
+}
+int a_window(GtkWindow *w, char *cmd, char *args) {
+  if (!w || !cmd || !cmd[0]) return 0;
+  else return 0;
+  return 1;
+}
+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 return 0;
+  return 1;
 }
 
-void a_widget(GtkWidget *wdg, char *cli) {
-  if (!wdg) return;
-  else if (GTK_IS_BUTTON(wdg))       a_button( GTK_BUTTON(wdg),    cli );
-  else if (GTK_IS_ENTRY(wdg))         a_entry( GTK_ENTRY(wdg),     cli );
-  else if (GTK_IS_WINDOW(wdg))       a_window( GTK_WINDOW(wdg),    cli );
-  else if (GTK_IS_TEXT_VIEW(wdg)) a_text_view( GTK_TEXT_VIEW(wdg), cli );
+int action(GtkWidget *wdg, char *cli) {
+  char *cmd = strtok(cli, "    \n");
+  char *args = strtok(NULL, "");
+
+  if (!wdg) return 0;
+  else if ( (GTK_IS_BUTTON(wdg)    &&    a_button(GTK_BUTTON(wdg),    cmd, args))
+         || (GTK_IS_ENTRY(wdg)     &&     a_entry(GTK_ENTRY(wdg),     cmd, args))
+         || (GTK_IS_WINDOW(wdg)    &&    a_window(GTK_WINDOW(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_WIDGET(wdg)    &&    a_widget(GTK_WIDGET(wdg),    cmd, args))
+  ) return 1;
+  else return 0;
 }
 
 void a_command(char *cli) {
@@ -98,7 +103,7 @@ void a_command(char *cli) {
   char *wid = strtok(cli, "    \n");  // Separator: Space, Tab
 
   if ( wdg = GTK_WIDGET(gtk_builder_get_object(builder, wid)) ) {
-    a_widget(wdg, strtok(NULL, ""));
+    action(wdg, strtok(NULL, ""));
   }
 }
 
@@ -117,20 +122,17 @@ gboolean idle_readline(gpointer d) {
 void init_widgets(gpointer wp, gpointer data) {
   GtkWidget *wdg;
 
-  fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK);
-
-  if (GTK_IS_WIDGET(wp)) { 
+  if (GTK_IS_BUILDABLE(wp)) { 
     wdg = GTK_WIDGET(wp);
-    printf("WIDGET:%s:load\n", gtk_widget_get_name(wdg));
+    printf("%s load\n", gtk_buildable_get_name(GTK_BUILDABLE(wp)));
 
     if      (GTK_IS_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(button_click), NULL);
     else if (GTK_IS_ENTRY(wdg) ) g_signal_connect(wdg, "changed", G_CALLBACK(text_content), NULL);
     else if (GTK_IS_WINDOW(wdg)) g_signal_connect(wdg, "destroy", G_CALLBACK(app_quit), NULL);
 
   } else if (GTK_IS_STATUS_ICON(wp)) {
-    // printf("WIDGET:%s:load\n", gtk_status_icon_get_title(GTK_STATUS_ICON(wp)));
-    printf("WIDGET:StatusIcon:load\n");
-    g_signal_connect(wp, "activate", G_CALLBACK(button_click), NULL);
+    printf("StatusIcon load\n");
+    g_signal_connect(wp, "activate", G_CALLBACK(button_click), "StatusIcon");
   }
 }
 
@@ -143,6 +145,7 @@ int main(int argc, char *argv[]) {
   g_slist_foreach(widgets, *init_widgets, NULL);
   g_slist_free(widgets);
 
+  fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK);
   g_idle_add(idle_readline, builder);
   // gtk_builder_connect_signals(builder, NULL);
 
index dcc665c758f75066062236a198d57471eb1b49b3..a09f50d6d1baeb20ae9d2f79d135bf9e6973feeb 100644 (file)
@@ -9,7 +9,11 @@
   <object class="GtkWindow" id="win1">
     <property name="visible">True</property>
     <property name="can-focus">False</property>
+    <property name="modal">True</property>
+    <property name="window-position">mouse</property>
     <property name="icon-name">applications-science</property>
+    <property name="skip-taskbar-hint">True</property>
+    <property name="skip-pager-hint">True</property>
     <signal name="destroy" handler="app_quit" swapped="no"/>
     <child>
       <object class="GtkBox">