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 ) )
);
}
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) {
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, ""));
}
}
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");
}
}
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);