]> git.plutz.net Git - gladerunner/commitdiff
generic events
authorPaul Hänsch <paul@plutz.net>
Tue, 25 Aug 2026 09:46:12 +0000 (11:46 +0200)
committerPaul Hänsch <paul@plutz.net>
Tue, 25 Aug 2026 09:46:12 +0000 (11:46 +0200)
glade1.glade
gladerunner.c

index de6da826fbc69b7228622a8c6bc347dc05de223d..04761f06f48dbb333054bcf4b24f68167e7021f1 100644 (file)
@@ -2,16 +2,87 @@
 <!-- Generated with glade 3.40.0 -->
 <interface>
   <requires lib="gtk+" version="3.24"/>
+  <object class="GtkTextBuffer"/>
   <object class="GtkStatusIcon" id="tray">
     <property name="icon-name">applications-science</property>
     <property name="title" translatable="yes">LLameAss</property>
+    <signal name="activate" handler="activate_menu" object="traymenu" swapped="no"/>
+    <signal name="popup-menu" handler="popup_menu" object="traymenu" swapped="no"/>
+  </object>
+  <object class="GtkMenu" id="traymenu">
+    <property name="visible">True</property>
+    <property name="can-focus">False</property>
+    <child>
+      <object class="GtkImageMenuItem">
+        <property name="label">gtk-new</property>
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="use-underline">True</property>
+        <property name="use-stock">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem">
+        <property name="label">gtk-open</property>
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="use-underline">True</property>
+        <property name="use-stock">True</property>
+        <signal name="activate" handler="dopen" swapped="no"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem">
+        <property name="label">gtk-save</property>
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="use-underline">True</property>
+        <property name="use-stock">True</property>
+        <signal name="activate" handler="dsave" swapped="no"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem">
+        <property name="label">gtk-save-as</property>
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="use-underline">True</property>
+        <property name="use-stock">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkSeparatorMenuItem">
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem">
+        <property name="label">gtk-quit</property>
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="use-underline">True</property>
+        <property name="use-stock">True</property>
+        <signal name="activate" handler="app_quit" swapped="no"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem">
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="label" translatable="yes">__glade_unnamed_2</property>
+        <property name="use-underline">True</property>
+      </object>
+    </child>
   </object>
   <object class="GtkWindow" id="win1">
     <property name="visible">True</property>
     <property name="can-focus">False</property>
     <property name="window-position">mouse</property>
     <property name="icon-name">applications-science</property>
-    <signal name="destroy" handler="app_quit" swapped="no"/>
+    <property name="skip-taskbar-hint">True</property>
+    <property name="skip-pager-hint">True</property>
+    <signal name="delete-event" handler="app_quit" swapped="no"/>
     <child>
       <object class="GtkBox">
         <property name="visible">True</property>
index bbf107d95fedf9beeeab9df7e02e5eae73322c12..d08f0f4c04d2dcbf7c958c8477a21db2a4d7ca83 100644 (file)
@@ -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);