#!/usr/bin/python
+import gobject
import gtk
"""
self._dialog = widgetTree.get_widget("loginDialog")
self._parentWindow = widgetTree.get_widget("mainWindow")
+ self._serviceCombo = widgetTree.get_widget("serviceCombo")
self._usernameEntry = widgetTree.get_widget("usernameentry")
self._passwordEntry = widgetTree.get_widget("passwordentry")
+ self._serviceList = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING)
+ self._serviceCombo.set_model(self._serviceList)
+ cell = gtk.CellRendererText()
+ self._serviceCombo.pack_start(cell, True)
+ self._serviceCombo.add_attribute(cell, 'text', 1)
+ self._serviceCombo.set_active(0)
+
callbackMapping = {
"on_loginbutton_clicked": self._on_loginbutton_clicked,
"on_loginclose_clicked": self._on_loginclose_clicked,
"""
if parentWindow is None:
parentWindow = self._parentWindow
+
+ self._serviceCombo.hide()
+ self._serviceList.clear()
+
try:
self._dialog.set_transient_for(parentWindow)
self._dialog.set_default_response(gtk.RESPONSE_OK)
self._passwordEntry.set_text("")
finally:
self._dialog.hide()
+
return username, password
+ def request_credentials_from(self, services, parentWindow = None):
+ """
+ @note UI Thread
+ """
+ if parentWindow is None:
+ parentWindow = self._parentWindow
+
+ self._serviceList.clear()
+ for serviceIdserviceName in services.iteritems():
+ self._serviceList.append(serviceIdserviceName)
+ self._serviceCombo.set_active(0)
+ self._serviceCombo.show()
+
+ 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()
+
+ itr = self._serviceCombo.get_active_iter()
+ serviceId = int(self._serviceList.get_value(itr, 0))
+ self._serviceList.clear()
+ return serviceId, username, password
+
def _on_loginbutton_clicked(self, *args):
self._dialog.response(gtk.RESPONSE_OK)
self.__messages = []
self.__parentBox.remove(self.__errorBox)
+ def push_message_with_lock(self, message):
+ gtk.gdk.threads_enter()
+ try:
+ self.push_message(message)
+ finally:
+ gtk.gdk.threads_leave()
+
def push_message(self, message):
if 0 < len(self.__messages):
self.__messages.append(message)