From 6b9488a46eae07f0ba0a59664100d30b55270094 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Tue, 25 Aug 2026 11:46:12 +0200 Subject: [PATCH] generic events --- glade1.glade | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++- gladerunner.c | 23 ++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) diff --git a/glade1.glade b/glade1.glade index de6da82..04761f0 100644 --- a/glade1.glade +++ b/glade1.glade @@ -2,16 +2,87 @@ + applications-science LLameAss + + + + + True + False + + + gtk-new + True + False + True + True + + + + + gtk-open + True + False + True + True + + + + + + gtk-save + True + False + True + True + + + + + + gtk-save-as + True + False + True + True + + + + + True + False + + + + + gtk-quit + True + False + True + True + + + + + + True + False + __glade_unnamed_2 + True + + True False mouse applications-science - + True + True + True diff --git a/gladerunner.c b/gladerunner.c index bbf107d..d08f0f4 100644 --- a/gladerunner.c +++ b/gladerunner.c @@ -23,8 +23,12 @@ void init_widget(gpointer wp, gpointer data); // { GTK_TYPE_TEXT_VIEW, "set", &ca_text_view } // }; + // ====== UI EVENTS ====== +void e_si_menu(GtkWidget *wdg, guint b, guint t, gpointer d) { + printf("MENUPOPUP %s\n", (char *)d); +} void e_si_activate(GtkWidget *wdg, gpointer d) { printf("ACTIVATE %s\n", (char*) d); } @@ -334,6 +338,23 @@ int action(char *cli) { else return 0; } +// ====== Generic Functions ====== + +void activate_menu(GtkWidget *wdg, gpointer d) { + gtk_menu_popup_at_pointer(GTK_MENU(d), NULL); +} +void popup_menu(GtkWidget *wdg, guint b, guint t, gpointer d) { + gtk_menu_popup_at_pointer(GTK_MENU(d), NULL); +} +void app_quit(GtkWidget *wdg, gpointer d) { + exit(0); +} +void dlg_save() { a_builder_fsave(NULL); } +void dlg_open() { a_builder_fopen(NULL); } +void dlg_diropen() { a_builder_dopen(NULL); } + +// ====== Main Loop ====== + gboolean idle_readline(gpointer d) { static size_t s = 128; static char *buf = NULL; @@ -411,6 +432,7 @@ void init_widget(gpointer wp, gpointer data) { } else if (GTK_IS_STATUS_ICON(wp)) { printf("INIT StatusIcon\n"); g_signal_connect(wp, "activate", G_CALLBACK(e_si_activate), "StatusIcon"); + g_signal_connect(wp, "popup-menu", G_CALLBACK(e_si_menu), "StatusIcon"); } } @@ -454,6 +476,7 @@ int main(int argc, char *argv[]) { free(gerr); } } + gtk_builder_connect_signals(builder, NULL); widgets = gtk_builder_get_objects(builder); g_slist_foreach(widgets, *init_widget, NULL); g_slist_free(widgets); -- 2.47.3