[26575] in Source-Commits

home help back first fref pref prev next nref lref last post

/svn/athena r25633 - trunk/debathena/config/lightdm-config/debian

daemon@ATHENA.MIT.EDU (Jonathan D Reed)
Tue Jul 10 17:47:33 2012

Date: Tue, 10 Jul 2012 17:47:32 -0400
From: Jonathan D Reed <jdreed@MIT.EDU>
Message-Id: <201207102147.q6ALlW9j014358@drugstore.mit.edu>
To: source-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: jdreed
Date: 2012-07-10 17:47:32 -0400 (Tue, 10 Jul 2012)
New Revision: 25633

Modified:
   trunk/debathena/config/lightdm-config/debian/changelog
   trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter
   trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter.ui
Log:
In lightdm-config:
  * Drop a separate panel window and actually implement a real menubar on
    the background window for the top "panel"


Modified: trunk/debathena/config/lightdm-config/debian/changelog
===================================================================
--- trunk/debathena/config/lightdm-config/debian/changelog	2012-07-10 15:05:48 UTC (rev 25632)
+++ trunk/debathena/config/lightdm-config/debian/changelog	2012-07-10 21:47:32 UTC (rev 25633)
@@ -3,10 +3,10 @@
   * Be clearer about what a DBus error probably means when initiating a
     restart/shutdown from lightdm
   * Support basic accessibility options (read: a High Contrast Theme)
-  * For aesthetic reasons (since the windows have no borders), hide the
-    login window when displaying a dialog box
+  * Drop a separate panel window and actually implement a real menubar on
+    the background window for the top "panel"
 
- -- Jonathan Reed <jdreed@mit.edu>  Tue, 10 Jul 2012 11:04:27 -0400
+ -- Jonathan Reed <jdreed@mit.edu>  Tue, 10 Jul 2012 17:34:21 -0400
 
 debathena-lightdm-config (1.3) unstable; urgency=low
 

Modified: trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter
===================================================================
--- trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter	2012-07-10 15:05:48 UTC (rev 25632)
+++ trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter	2012-07-10 21:47:32 UTC (rev 25633)
@@ -33,6 +33,9 @@
                       "/usr/share/debathena-lightdm-config/debathena8.png"]
 KIOSK_LAUNCH_CMD="/usr/lib/debathena-kiosk/lightdm-launch-kiosk"
 
+# See below, and then go cry.
+_OBJS_TO_RENAME=["miShutdown", "miRestart", "miSuspend", "miHibernate"]
+
 class DebathenaGreeter:
     animation_loop_frames = 300
     
@@ -46,6 +49,13 @@
 
     def __init__(self, options):
         self.debugMode = options.debug
+        if self.debugMode:
+            # Sigh.  In theory, APPMENU_DISPLAY_BOTH=1 should give me both
+            # an appmenu and the "real" menubar.
+            # In reality, it doesn't.  
+            # QT_X11_NO_NATIVE_MENUBAR=1 is the KDE equivalent
+            self._debug("Attempting to turn off appmenu...")
+            os.putenv('UBUNTU_MENUPROXY', '')
         self.timePedantry = True
 
         # Set up and connect to the greeter
@@ -61,9 +71,9 @@
             "login_cb": self.cbLogin, 
             "cancel_cb": self.cancelLogin,
             "kpEvent": self.cbKeyPress,
-            "power_cb": self.showPowerDialog,
-            "access_cb": self.showAccessDialog,
-            "browse_cb": self.spawnBrowser,
+            "power_cb": self.doPowerOperation,
+            "contrast_cb": self.toggleContrast,
+            "browse_cb": self.spawnBrowser
         }
 
         # Sigh.  Pre lightdm-1.1, cancel_authentication() calls the
@@ -93,6 +103,13 @@
             print >> sys.stderr, "FATAL: Unable to load UI: ", e
             sys.exit(-1)
 
+        # This is just ridiculous.  Due to a GtkBuilder bug, it scribbles over
+        # the widget's name when instantiating them (via get_object()), but we
+        # can then call set_name to re-name them.  In a perfect world, this
+        # would be a no-op.
+        for obj in _OBJS_TO_RENAME:
+            self.builder.get_object(obj).set_name(obj)
+        
         # The login window
         self.winLogin = self.builder.get_object("winLogin")
         # A box containing the prompt label, entry, and a spinner
@@ -125,16 +142,6 @@
         # TODO: Select the configured default session or the user's session
         self.cmbSession.set_active(0)
 
-        self.powerDlg = self.builder.get_object("powerDialog")
-        # LightDM checks with PolKit for the various "get_can_foo()" functions
-        self.builder.get_object("rbShutdown").set_sensitive(LightDM.get_can_shutdown())
-        self.builder.get_object("rbReboot").set_sensitive(LightDM.get_can_restart())
-        # We don't allow suspend/hibernate on cluster
-        self.builder.get_object("rbHibernate").set_sensitive(LightDM.get_can_hibernate() and self.metapackage != "debathena-cluster")
-        self.builder.get_object("rbSuspend").set_sensitive(LightDM.get_can_suspend() and self.metapackage != "debathena-cluster")
-        
-        self.accessDlg = self.builder.get_object("accessibilityDialog")
-
         self.loginNotebook = self.builder.get_object("notebook1")
 
         # Scaling factor for smaller displays
@@ -144,7 +151,6 @@
         self.winLogin.set_position(Gtk.WindowPosition.CENTER)
         self.winLogin.show()
         self.initBackgroundWindow()
-        self.initPanelWindow()
         self.initBrandingWindow()
         # Connect Gtk+ signal handlers
         self.builder.connect_signals(handlers)
@@ -160,7 +166,7 @@
         self.noLoginMonitor.connect("changed", self._file_changed)
 
         if not os.path.exists(KIOSK_LAUNCH_CMD):
-            self.builder.get_object("btnBrowse").hide()
+            self.builder.get_object("mnuBrowse").hide()
         # Setup the login window for first login
         self.resetLoginWindow()
 
@@ -171,17 +177,27 @@
         bg_pixbuf = GdkPixbuf.Pixbuf.new_from_file(BG_IMG_FILE)
         bg_scaled = bg_pixbuf.scale_simple(self.screenSize[0], self.screenSize[1], GdkPixbuf.InterpType.BILINEAR)
         self.imgBg.set_from_pixbuf(bg_scaled)
+        # The menubar
+        # LightDM checks with PolKit for the various "get_can_foo()" functions
+        # We call .set_name() here because of a GtkBuilder bug 
+        self.builder.get_object("miShutdown").set_sensitive(LightDM.get_can_shutdown())
+        self.builder.get_object("miRestart").set_sensitive(LightDM.get_can_restart())
+#        self.builder.get_object("miRestart").set_name('restart')
+        # We don't allow suspend/hibernate on cluster
+        self.builder.get_object("miHibernate").set_sensitive(LightDM.get_can_hibernate() and self.metapackage != "debathena-cluster")
+        self.builder.get_object("miSuspend").set_sensitive(LightDM.get_can_suspend() and self.metapackage != "debathena-cluster")
+
+        # We just want images.  A Glade bug removes the "label" property
+        # completely if it's null, which results in bad redrawing artifacts
+        # So we set the label to text we don't care about in Glade, and 
+        # change it here.
+        for menu in ("mnuPower", "mnuAccess", "mnuBrowse"):
+            self.builder.get_object(menu).set_property('label', '')
+        # Used in the updateTime callback
+        self.mnuTime = self.builder.get_object("mnuClock")
+
         self.winBg.show_all()
 
-    def initPanelWindow(self):
-        # A window that looks like the GNOME "panel" at the top of the screen
-        self.winPanel = self.builder.get_object("winPanel")
-        self.lblTime = self.builder.get_object("lblTime")
-        self.winPanel.set_gravity(Gdk.Gravity.NORTH_WEST)
-        self.winPanel.move(0,0)
-        self.winPanel.set_size_request(self.screenSize[0], 2)
-        self.winPanel.show_all()
-
     def initBrandingWindow(self):
         # The "branding window", in the bottom right
         winBranding = self.builder.get_object("winBranding")
@@ -198,35 +214,37 @@
         winBranding.move(self.screenSize[0] - width, self.screenSize[1] - height)
         winBranding.show_all()
 
-    def showPowerDialog(self, widget):
-        self.winLogin.hide()
-        if self.powerDlg.run() == Gtk.ResponseType.OK:
-            # Just do the action.  The relevant buttons should be
-            # greyed out for things we can't do.  LightDM will
-            # check with ConsoleKit anyway
-            try:
-                if self.builder.get_object("rbShutdown").get_active():
-                    LightDM.shutdown()
-                elif self.builder.get_object("rbReboot").get_active():
-                    LightDM.restart()
-                elif self.builder.get_object("rbHiberate").get_active():
-                    LightDM.hibernate()
-                elif self.builder.get_object("rbSuspend").get_active():
-                    LightDM.suspend()
-            except GLib.GError, e:
-                self.errDialog("An error occurred while trying to perform a power-related operation.  The most common cause of this is trying to shutdown, reboot, or suspend the machine when someone else is logged in remotely or on one of the virtual terminals.  The full error text appears below:\n\n" + str(e))
-        self.powerDlg.hide()
-        self.winLogin.show()
+    def doPowerOperation(self, widget):
+        # This only works because of the calls to .set_name() above.
+        # Other stupid ideas include:
+        #   if widget == self.builder.get_object('whatever'):
+        #
+        # N.B. user_data for GtkBuilder is a complete mess and all
+        # kinds of wrong (you can only specify objects defined in the
+        # builder xml, and it forces the 'swap' flag when
+        # autoconnected, AND the object you get _replaces_ the widget
+        # in the callback)
+        actions = {"miShutdown": LightDM.shutdown,
+                   "miRestart": LightDM.restart,
+                   "miHibernate": LightDM.hibernate,
+                   "miSuspend": LightDM.suspend}
+        try:
+            actions[widget.get_name()]()
+        except KeyError:
+            # "won't" happen
+            print >>sys.stderr, "ERR: No action for widget name: "+ widget.get_name()
+        except GLib.GError, e:
+            # It's possible we should look at the error text to see if
+            # it's ConsoleKit that's whining?  Because you get a
+            # (valid) error from UPower if you try to suspend when
+            # your hardware doesn't support it
+            self.errDialog("An error occurred while trying to perform a power-related operation.  The most common cause of this is trying to shutdown, reboot, or suspend the machine when someone else is logged in remotely or on one of the virtual terminals.  The full error text appears below:\n\n" + str(e))
 
-    def showAccessDialog(self, widget):
-        self.winLogin.hide()
-        if self.accessDlg.run() == Gtk.ResponseType.OK:
-            if self.builder.get_object("cbHighContrast").get_active():
-                self.gtkSettings.set_property('gtk-theme-name', 'HighContrastInverse')
-            else:
-                self.gtkSettings.set_property('gtk-theme-name', self.origTheme)
-        self.accessDlg.hide()
-        self.winLogin.show()
+    def toggleContrast(self, widget):
+        if widget.get_active():
+            self.gtkSettings.set_property('gtk-theme-name', 'HighContrastInverse')
+        else:
+            self.gtkSettings.set_property('gtk-theme-name', self.origTheme)
 
 
     def _file_changed(self, monitor, file1, file2, evt_type):
@@ -241,7 +259,7 @@
         timeFmt="%a, %b %e %Y %l:%M" + ":%S" if self.timePedantry else ""
         # every second counts
         timeFmt=timeFmt + " %p"
-        self.lblTime.set_text(time.strftime(timeFmt, time.localtime(time.time())))
+        self.mnuTime.set_label(time.strftime(timeFmt, time.localtime(time.time())))
         return True
 
     # Reset the UI and prepare for a new login

Modified: trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter.ui
===================================================================
--- trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter.ui	2012-07-10 15:05:48 UTC (rev 25632)
+++ trunk/debathena/config/lightdm-config/debian/debathena-lightdm-greeter.ui	2012-07-10 21:47:32 UTC (rev 25633)
@@ -1,135 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
-  <object class="GtkDialog" id="accessibilityDialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="resizable">False</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox2">
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area2">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button3">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button1">
-                <property name="label">gtk-ok</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</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="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="frame1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">in</property>
-            <child>
-              <object class="GtkBox" id="box5">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="margin_left">3</property>
-                <property name="margin_right">3</property>
-                <property name="margin_top">3</property>
-                <property name="margin_bottom">3</property>
-                <property name="orientation">vertical</property>
-                <property name="spacing">3</property>
-                <child>
-                  <object class="GtkCheckButton" id="cbHighContrast">
-                    <property name="label" translatable="yes">High Contrast Theme</property>
-                    <property name="use_action_appearance">False</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_action_appearance">False</property>
-                    <property name="xalign">0</property>
-                    <property name="draw_indicator">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkCheckButton" id="cbPickboard">
-                    <property name="label" translatable="yes">On-Screen Keyboard</property>
-                    <property name="use_action_appearance">False</property>
-                    <property name="visible">True</property>
-                    <property name="sensitive">False</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_action_appearance">False</property>
-                    <property name="xalign">0</property>
-                    <property name="draw_indicator">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label3">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes"> &lt;b&gt;Accessibility Options&lt;/b&gt; </property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">button3</action-widget>
-      <action-widget response="-5">button1</action-widget>
-    </action-widgets>
-  </object>
   <object class="GtkImage" id="imgAccess">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -143,209 +14,176 @@
   <object class="GtkImage" id="imgPower">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="stock">gtk-quit</property>
+    <property name="icon_name">gtk-quit</property>
   </object>
-  <object class="GtkDialog" id="powerDialog">
+  <object class="GtkWindow" id="winBg">
     <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="resizable">False</property>
-    <property name="modal">True</property>
-    <property name="window_position">center</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox1">
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="accept_focus">False</property>
+    <property name="focus_on_map">False</property>
+    <property name="decorated">False</property>
+    <property name="has_resize_grip">False</property>
+    <child>
+      <object class="GtkBox" id="box6">
+        <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="orientation">vertical</property>
-        <property name="spacing">5</property>
         <child>
-          <object class="GtkBox" id="box3">
+          <object class="GtkMenuBar" id="menubar2">
+            <property name="height_request">30</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="pack_direction">rtl</property>
+            <property name="child_pack_direction">rtl</property>
             <child>
-              <object class="GtkImage" id="image1">
+              <object class="GtkImageMenuItem" id="mnuPower">
+                <property name="label" translatable="yes">[None]</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="stock">gtk-quit</property>
-                <property name="icon-size">6</property>
+                <property name="tooltip_text" translatable="yes">Shutdown or restart the workstation</property>
+                <property name="image">imgPower</property>
+                <property name="use_stock">False</property>
+                <property name="always_show_image">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu4">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkMenuItem" id="miHibernate">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Hibernate</property>
+                        <signal name="activate" handler="power_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="miSuspend">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Suspend</property>
+                        <signal name="activate" handler="power_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="miRestart">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">a</property>
+                        <property name="label" translatable="yes">Restart</property>
+                        <signal name="activate" handler="power_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="miShutdown">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Shutdown</property>
+                        <signal name="activate" handler="power_cb" swapped="no"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label2">
+              <object class="GtkImageMenuItem" id="mnuAccess">
+                <property name="label" translatable="yes">[None]</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="label" translatable="yes">What would you like to do?</property>
+                <property name="tooltip_text" translatable="yes">Accessibility/Universal Access</property>
+                <property name="image">imgAccess</property>
+                <property name="use_stock">False</property>
+                <property name="always_show_image">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="miHighContrast">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Use 'High Contrast' Theme</property>
+                        <signal name="toggled" handler="contrast_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="miPickboard">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Use On-screen Keyboard</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="miLargeFont">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Use Large Font</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
               </object>
-              <packing>
-                <property name="expand">False</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">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkBox" id="box4">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="margin_left">10</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">5</property>
             <child>
-              <object class="GtkRadioButton" id="rbShutdown">
-                <property name="label" translatable="yes">Shut Down</property>
+              <object class="GtkImageMenuItem" id="mnuBrowse">
+                <property name="label" translatable="yes">[None]</property>
                 <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="xalign">0</property>
-                <property name="active">True</property>
-                <property name="draw_indicator">True</property>
+                <property name="can_focus">False</property>
+                <property name="tooltip_text" translatable="yes">Browse the web or register for an account</property>
+                <property name="image">imgBrowse</property>
+                <property name="use_stock">False</property>
+                <property name="always_show_image">True</property>
+                <signal name="activate" handler="browse_cb" swapped="no"/>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
             </child>
             <child>
-              <object class="GtkRadioButton" id="rbReboot">
-                <property name="label" translatable="yes">Reboot</property>
+              <object class="GtkMenuItem" id="mnuClock">
                 <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="xalign">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">rbShutdown</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">False</property>
+                <property name="tooltip_text" translatable="yes">Time is an illusion.  
+Lunchtime doubly so.</property>
+                <property name="right_justified">True</property>
+                <property name="label" translatable="yes">[time]</property>
+                <property name="use_underline">True</property>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
             </child>
-            <child>
-              <object class="GtkRadioButton" id="rbSuspend">
-                <property name="label" translatable="yes">Suspend</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="xalign">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">rbShutdown</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkRadioButton" id="rbHibernate">
-                <property name="label" translatable="yes">Hibernate</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="xalign">0</property>
-                <property name="draw_indicator">True</property>
-                <property name="group">rbShutdown</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="position">1</property>
+            <property name="position">0</property>
           </packing>
         </child>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
+        <child>
+          <object class="GtkImage" id="imgBg">
+            <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button2">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="btnOK">
-                <property name="label">gtk-ok</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
+            <property name="stock">gtk-missing-image</property>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">2</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
     </child>
-    <action-widgets>
-      <action-widget response="-6">button2</action-widget>
-      <action-widget response="-5">btnOK</action-widget>
-    </action-widgets>
   </object>
-  <object class="GtkWindow" id="winBg">
-    <property name="can_focus">False</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <property name="accept_focus">False</property>
-    <property name="focus_on_map">False</property>
-    <property name="decorated">False</property>
-    <property name="has_resize_grip">False</property>
-    <child>
-      <object class="GtkImage" id="imgBg">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="stock">gtk-missing-image</property>
-      </object>
-    </child>
-  </object>
   <object class="GtkWindow" id="winBranding">
     <property name="can_focus">False</property>
     <property name="resizable">False</property>
@@ -631,92 +469,4 @@
       </object>
     </child>
   </object>
-  <object class="GtkWindow" id="winPanel">
-    <property name="can_focus">False</property>
-    <property name="title" translatable="yes">window1</property>
-    <property name="resizable">False</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <property name="accept_focus">False</property>
-    <property name="focus_on_map">False</property>
-    <property name="decorated">False</property>
-    <property name="has_resize_grip">False</property>
-    <child>
-      <object class="GtkBox" id="box2">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="margin_left">5</property>
-        <property name="margin_right">5</property>
-        <property name="spacing">10</property>
-        <child>
-          <object class="GtkLabel" id="lblTime">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="halign">start</property>
-            <property name="valign">center</property>
-            <property name="label" translatable="yes">[time]</property>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="btnBrowse">
-            <property name="use_action_appearance">False</property>
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="use_action_appearance">False</property>
-            <property name="image">imgBrowse</property>
-            <property name="relief">none</property>
-            <property name="image_position">top</property>
-            <signal name="clicked" handler="browse_cb" swapped="no"/>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="btnAccess">
-            <property name="use_action_appearance">False</property>
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="use_action_appearance">False</property>
-            <property name="image">imgAccess</property>
-            <property name="relief">none</property>
-            <property name="image_position">top</property>
-            <signal name="clicked" handler="access_cb" swapped="no"/>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="btnPower">
-            <property name="use_action_appearance">False</property>
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="use_action_appearance">False</property>
-            <property name="image">imgPower</property>
-            <property name="relief">none</property>
-            <property name="image_position">top</property>
-            <signal name="clicked" handler="power_cb" swapped="no"/>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
 </interface>


home help back first fref pref prev next nref lref last post