[krb5-auth-dialog] Add menu bar to main window



commit 604cd3bbf5ed06f45d06d89c62a13b05c85e6510
Author: Guido GÃnther <agx sigxcpu org>
Date:   Sun Sep 4 19:05:08 2011 +0200

    Add menu bar to main window

 src/ka-main-window.c    |   64 +++++++++++++-
 src/ka-main-window.h    |    2 +-
 src/krb5-auth-dialog.ui |  211 +++++++++++++++++++++++++++++++++++++----------
 3 files changed, 226 insertions(+), 51 deletions(-)
---
diff --git a/src/ka-main-window.c b/src/ka-main-window.c
index a27f0ef..84ecae3 100644
--- a/src/ka-main-window.c
+++ b/src/ka-main-window.c
@@ -27,9 +27,10 @@
 
 #include "ka-main-window.h"
 #include "ka-dialog.h"
+#include "ka-tools.h"
 
 static GtkListStore *tickets;
-static GtkWidget *main_window;
+static GtkWindow *main_window;
 
 static void
 ccache_changed_cb (KaApplet* applet G_GNUC_UNUSED,
@@ -39,7 +40,58 @@ ccache_changed_cb (KaApplet* applet G_GNUC_UNUSED,
     ka_get_service_tickets (tickets);
 }
 
-GtkWidget *
+static void
+menuitem_close_cb (GtkMenuItem *menuitem G_GNUC_UNUSED,
+                   gpointer user_data G_GNUC_UNUSED)
+{
+    ka_main_window_hide();
+}
+
+static void
+menuitem_preferences_cb (GtkMenuItem *menuitem G_GNUC_UNUSED,
+                         gpointer user_data G_GNUC_UNUSED)
+{
+    KA_DEBUG("");
+}
+
+static void
+menuitem_about_cb (GtkMenuItem *menuitem G_GNUC_UNUSED,
+                   gpointer user_data G_GNUC_UNUSED)
+{
+    KA_DEBUG("");
+}
+
+static void
+menuitem_help_contents_cb (GtkMenuItem *menuitem G_GNUC_UNUSED,
+                   gpointer user_data G_GNUC_UNUSED)
+{
+    ka_show_help (gtk_window_get_screen (main_window), NULL, NULL);
+}
+
+
+static void
+ka_main_window_create_menu (KaApplet *applet, GtkBuilder *xml)
+{
+    GtkMenuItem *item;
+
+#define CONNECT_MENU(name)                                              \
+    item = GTK_MENU_ITEM (gtk_builder_get_object (xml,                  \
+                                                  "menuitem_" #name));  \
+    g_signal_connect (item,                                             \
+                      "activate",                                       \
+                      G_CALLBACK(menuitem_ ##name## _cb),               \
+                      applet)
+
+    CONNECT_MENU(close);
+    CONNECT_MENU(preferences);
+    CONNECT_MENU(about);
+    CONNECT_MENU(help_contents);
+
+#undef CONNECT_MENU  
+}
+
+
+GtkWindow *
 ka_main_window_create (KaApplet *applet, GtkBuilder *xml)
 {
     GtkCellRenderer *text_renderer, *toggle_renderer;
@@ -53,7 +105,7 @@ ka_main_window_create (KaApplet *applet, GtkBuilder *xml)
                                   G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
 
     main_window =
-        GTK_WIDGET (gtk_builder_get_object (xml, "krb5_main_window"));
+        GTK_WINDOW (gtk_builder_get_object (xml, "krb5_main_window"));
     tickets_view =
         GTK_TREE_VIEW (gtk_builder_get_object (xml, "krb5_tickets_treeview"));
     gtk_tree_view_set_model (GTK_TREE_VIEW (tickets_view),
@@ -102,6 +154,8 @@ ka_main_window_create (KaApplet *applet, GtkBuilder *xml)
     g_signal_connect (applet, "krb-ccache-changed",
                       G_CALLBACK(ccache_changed_cb),
                       NULL);
+
+    ka_main_window_create_menu(applet, xml);
     return main_window;
 }
 
@@ -109,7 +163,7 @@ void
 ka_main_window_show ()
 {
     if (ka_get_service_tickets (tickets)) {
-        gtk_window_present (GTK_WINDOW (main_window));
+        gtk_window_present (main_window);
     } else {
         GtkWidget *message_dialog;
         
@@ -131,5 +185,5 @@ void
 ka_main_window_hide ()
 {
     KA_DEBUG("Hiding main window");
-    gtk_widget_hide (main_window);
+    gtk_widget_hide (GTK_WIDGET(main_window));
 }
diff --git a/src/ka-main-window.h b/src/ka-main-window.h
index 6ae2262..bc5b191 100644
--- a/src/ka-main-window.h
+++ b/src/ka-main-window.h
@@ -34,7 +34,7 @@ enum ticket_columns {
 };
 
 
-GtkWidget *ka_main_window_create (KaApplet *applet, GtkBuilder *xml);
+GtkWindow *ka_main_window_create (KaApplet *applet, GtkBuilder *xml);
 void ka_main_window_show (void);
 void ka_main_window_hide (void);
 
diff --git a/src/krb5-auth-dialog.ui b/src/krb5-auth-dialog.ui
index 1265c03..60fd94a 100644
--- a/src/krb5-auth-dialog.ui
+++ b/src/krb5-auth-dialog.ui
@@ -1,47 +1,101 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkDialog" id="krb5_dialog">
+    <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes">Kerberos Authentication</property>
     <property name="resizable">False</property>
     <property name="window_position">center-always</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox2">
+      <object class="GtkBox" id="dialog-vbox2">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="krb5_renew_button">
+                <property name="label" translatable="yes">_Renew Ticket</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
         <child>
           <object class="GtkHBox" id="hbox1">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="border_width">6</property>
             <property name="spacing">12</property>
             <child>
               <object class="GtkImage" id="image1">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="yalign">0</property>
                 <property name="icon_name">krb-valid-ticket</property>
                 <property name="icon-size">6</property>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkAlignment" id="alignment4">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="bottom_padding">10</property>
                 <child>
                   <object class="GtkVBox" id="vbox2">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="spacing">12</property>
                     <child>
                       <object class="GtkVBox" id="vbox1">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <child>
                           <object class="GtkLabel" id="krb5_message_label">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <property name="xalign">0</property>
                             <property name="use_markup">True</property>
                           </object>
@@ -53,28 +107,35 @@
                         </child>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkVBox" id="vbox3">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="spacing">3</property>
                         <child>
                           <object class="GtkHBox" id="entry_hbox">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <property name="spacing">3</property>
                             <child>
                               <placeholder/>
                             </child>
                           </object>
                           <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
                           <object class="GtkLabel" id="krb5_status_label">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <property name="xalign">1</property>
                             <property name="label">&lt;span size="smaller"&gt; &lt;/span&gt;</property>
                             <property name="use_markup">True</property>
@@ -87,6 +148,8 @@
                         </child>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
@@ -94,71 +157,129 @@
                 </child>
               </object>
               <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
                 <property name="position">1</property>
               </packing>
             </child>
           </object>
           <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
             <property name="position">1</property>
           </packing>
         </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area2">
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">krb5_renew_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkWindow" id="krb5_main_window">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Service Tickets</property>
+    <signal name="delete-event" handler="ka_main_window_hide" swapped="no"/>
+    <child>
+      <object class="GtkVBox" id="tickets-vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkMenuBar" id="menubar1">
             <property name="visible">True</property>
-            <property name="layout_style">end</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkButton" id="cancelbutton1">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkMenuItem" id="menuitem1">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="label" translatable="yes">_File</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuitem_close">
+                        <property name="label">gtk-close</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
             </child>
             <child>
-              <object class="GtkButton" id="krb5_renew_button">
-                <property name="label" translatable="yes">_Renew Ticket</property>
+              <object class="GtkMenuItem" id="menuitem2">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="label" translatable="yes">_Edit</property>
                 <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuitem_preferences">
+                        <property name="label">gtk-preferences</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="menuitem4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuitem_help_contents">
+                        <property name="label">gtk-help</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menuitem_about">
+                        <property name="label">gtk-about</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="pack_type">end</property>
+            <property name="fill">True</property>
             <property name="position">0</property>
           </packing>
         </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">cancelbutton1</action-widget>
-      <action-widget response="-5">krb5_renew_button</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkWindow" id="krb5_main_window">
-    <property name="can_focus">False</property>
-    <property name="title" translatable="yes">Service Tickets</property>
-    <signal name="delete-event" handler="ka_main_window_hide" swapped="no"/>
-    <child>
-      <object class="GtkVBox" id="tickets-vbox1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <child>
           <object class="GtkTreeView" id="krb5_tickets_treeview">
             <property name="visible">True</property>
@@ -170,7 +291,7 @@
           <packing>
             <property name="expand">True</property>
             <property name="fill">True</property>
-            <property name="position">0</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]