Switching to login window
authorepage <eopage@byu.net>
Thu, 5 Mar 2009 03:38:20 +0000 (03:38 +0000)
committerepage <eopage@byu.net>
Thu, 5 Mar 2009 03:38:20 +0000 (03:38 +0000)
git-svn-id: file:///svnroot/gc-dialer/trunk@205 c39d3808-3fe2-4d86-a59f-b7f623ee9f21

src/dialcentral.glade
src/gc_dialer.py
src/gtk_toolbox.py

index 9596420..1cf87df 100644 (file)
@@ -2,7 +2,7 @@
 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
 <!--Generated with glade3 3.4.5 on Wed Mar  4 20:08:42 2009 -->
 <glade-interface>
-  <widget class="GtkWindow" id="Dialpad">
+  <widget class="GtkWindow" id="mainWindow">
     <property name="default_width">800</property>
     <property name="default_height">480</property>
     <property name="title" translatable="yes">Dialer</property>
@@ -724,7 +724,7 @@ must reauthenticate</property>
       </widget>
     </child>
   </widget>
-  <widget class="GtkDialog" id="login_dialog">
+  <widget class="GtkDialog" id="loginDialog">
     <property name="border_width">5</property>
     <property name="title" translatable="yes">Grandcentral Login</property>
     <property name="resizable">False</property>
@@ -735,7 +735,7 @@ must reauthenticate</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="skip_pager_hint">True</property>
     <property name="deletable">False</property>
-    <property name="transient_for">Dialpad</property>
+    <property name="transient_for">mainWindow</property>
     <property name="has_separator">False</property>
     <child internal-child="vbox">
       <widget class="GtkVBox" id="dialog-vbox1">
@@ -795,25 +795,27 @@ must reauthenticate</property>
             <property name="visible">True</property>
             <property name="layout_style">GTK_BUTTONBOX_END</property>
             <child>
-              <widget class="GtkButton" id="loginbutton">
+              <widget class="GtkButton" id="logins_close_button">
                 <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">True</property>
-                <property name="label" translatable="yes">Login</property>
+                <property name="label" translatable="yes">gtk-close</property>
+                <property name="use_stock">True</property>
                 <property name="response_id">0</property>
-                <signal name="clicked" handler="on_loginbutton_clicked"/>
+                <signal name="clicked" handler="on_loginclose_clicked"/>
               </widget>
             </child>
             <child>
-              <widget class="GtkButton" id="closebutton">
+              <widget class="GtkButton" id="loginbutton">
                 <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">True</property>
-                <property name="label" translatable="yes">Close</property>
+                <property name="label" translatable="yes">gtk-ok</property>
+                <property name="use_stock">True</property>
                 <property name="response_id">0</property>
-                <signal name="clicked" handler="on_loginclose_clicked"/>
+                <signal name="clicked" handler="on_loginbutton_clicked"/>
               </widget>
               <packing>
                 <property name="position">1</property>
index 437ff65..171e2d5 100755 (executable)
@@ -76,9 +76,10 @@ class Dialcentral(object):
                        gtk.main_quit()
                        return
 
-               self._window = self._widgetTree.get_widget("Dialpad")
+               self._window = self._widgetTree.get_widget("mainWindow")
                self._notebook = self._widgetTree.get_widget("notebook")
                self._errorDisplay = gtk_toolbox.ErrorDisplay(self._widgetTree)
+               self._credentials = gtk_toolbox.LoginWindow(self._widgetTree)
 
                self._app = None
                self._isFullScreen = False
@@ -111,8 +112,6 @@ class Dialcentral(object):
                        self._window.set_title("%s - Keypad" % self.__pretty_app_name__)
 
                callbackMapping = {
-                       "on_loginbutton_clicked": self._on_loginbutton_clicked,
-                       "on_loginclose_clicked": self._on_loginclose_clicked,
                        "on_dialpad_quit": self._on_close,
                }
                self._widgetTree.signal_autoconnect(callbackMapping)
@@ -245,15 +244,7 @@ class Dialcentral(object):
                                for x in xrange(numOfAttempts):
                                        gtk.gdk.threads_enter()
                                        try:
-                                               dialog = self._widgetTree.get_widget("login_dialog")
-                                               dialog.set_transient_for(self._window)
-                                               dialog.set_default_response(gtk.RESPONSE_CLOSE)
-                                               dialog.run()
-
-                                               username = self._widgetTree.get_widget("usernameentry").get_text()
-                                               password = self._widgetTree.get_widget("passwordentry").get_text()
-                                               self._widgetTree.get_widget("passwordentry").set_text("")
-                                               dialog.hide()
+                                               username, password = self._credentials.request_credentials()
                                        finally:
                                                gtk.gdk.threads_leave()
 
@@ -363,12 +354,6 @@ class Dialcentral(object):
                        else:
                                self._window.fullscreen()
 
-       def _on_loginbutton_clicked(self, *args):
-               self._widgetTree.get_widget("login_dialog").response(gtk.RESPONSE_OK)
-
-       def _on_loginclose_clicked(self, *args):
-               self._on_close()
-
        def _on_clearcookies_clicked(self, *args):
                self._gcBackend.logout()
                self._accountViews[True].clear()
index 2588674..5d81d9b 100644 (file)
@@ -27,16 +27,18 @@ class LoginWindow(object):
                """
                if parentWindow is None:
                        parentWindow = self._parentWindow
-               self._dialog.set_transient_for(parentWindow)
-               self._dialog.set_default_response(gtk.RESPONSE_OK)
-               response = self._dialog.run()
-               if response != gtk.RESPONSE_OK:
-                       raise StandardError("Login Cancelled")
-
-               username = self._usernameEntry.get_text()
-               password = self._passwordEntry.get_text()
-               self._usernameEntry.set_text("")
-               self._dialog.hide()
+               try:
+                       self._dialog.set_transient_for(parentWindow)
+                       self._dialog.set_default_response(gtk.RESPONSE_OK)
+                       response = self._dialog.run()
+                       if response != gtk.RESPONSE_OK:
+                               raise RuntimeError("Login Cancelled")
+
+                       username = self._usernameEntry.get_text()
+                       password = self._passwordEntry.get_text()
+                       self._passwordEntry.set_text("")
+               finally:
+                       self._dialog.hide()
                return username, password
 
        def _on_loginbutton_clicked(self, *args):