| Index: third_party/twisted_8_1/twisted/spread/ui/gtk2util.py
|
| diff --git a/third_party/twisted_8_1/twisted/spread/ui/gtk2util.py b/third_party/twisted_8_1/twisted/spread/ui/gtk2util.py
|
| deleted file mode 100644
|
| index 07e7ef6616f8dd48c1fc4833742be2b24463de92..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/spread/ui/gtk2util.py
|
| +++ /dev/null
|
| @@ -1,215 +0,0 @@
|
| -
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -from __future__ import nested_scopes
|
| -
|
| -import gtk
|
| -
|
| -from twisted import copyright
|
| -from twisted.internet import defer
|
| -from twisted.python import failure, log, util
|
| -from twisted.spread import pb
|
| -from twisted.cred.credentials import UsernamePassword
|
| -
|
| -from twisted.internet import error as netError
|
| -
|
| -def login(client=None, **defaults):
|
| - """
|
| - @param host:
|
| - @param port:
|
| - @param identityName:
|
| - @param password:
|
| - @param serviceName:
|
| - @param perspectiveName:
|
| -
|
| - @returntype: Deferred RemoteReference of Perspective
|
| - """
|
| - d = defer.Deferred()
|
| - LoginDialog(client, d, defaults)
|
| - return d
|
| -
|
| -class GladeKeeper:
|
| - """
|
| - @cvar gladefile: The file in which the glade GUI definition is kept.
|
| - @type gladefile: str
|
| -
|
| - @cvar _widgets: Widgets that should be attached to me as attributes.
|
| - @type _widgets: list of strings
|
| - """
|
| -
|
| - gladefile = None
|
| - _widgets = ()
|
| -
|
| - def __init__(self):
|
| - from gtk import glade
|
| - self.glade = glade.XML(self.gladefile)
|
| -
|
| - # mold can go away when we get a newer pygtk (post 1.99.14)
|
| - mold = {}
|
| - for k in dir(self):
|
| - mold[k] = getattr(self, k)
|
| - self.glade.signal_autoconnect(mold)
|
| - self._setWidgets()
|
| -
|
| - def _setWidgets(self):
|
| - get_widget = self.glade.get_widget
|
| - for widgetName in self._widgets:
|
| - setattr(self, "_" + widgetName, get_widget(widgetName))
|
| -
|
| -
|
| -class LoginDialog(GladeKeeper):
|
| - # IdentityConnector host port identityName password
|
| - # requestLogin -> identityWrapper or login failure
|
| - # requestService serviceName perspectiveName client
|
| -
|
| - # window killed
|
| - # cancel button pressed
|
| - # login button activated
|
| -
|
| - fields = ['host','port','identityName','password',
|
| - 'perspectiveName']
|
| -
|
| - _widgets = ("hostEntry", "portEntry", "identityNameEntry", "passwordEntry",
|
| - "perspectiveNameEntry", "statusBar",
|
| - "loginDialog")
|
| -
|
| - _advancedControls = ['perspectiveLabel', 'perspectiveNameEntry',
|
| - 'protocolLabel', 'versionLabel']
|
| -
|
| - gladefile = util.sibpath(__file__, "login2.glade")
|
| -
|
| - def __init__(self, client, deferred, defaults):
|
| - self.client = client
|
| - self.deferredResult = deferred
|
| -
|
| - GladeKeeper.__init__(self)
|
| -
|
| - self.setDefaults(defaults)
|
| - self._loginDialog.show()
|
| -
|
| -
|
| - def setDefaults(self, defaults):
|
| - if not defaults.has_key('port'):
|
| - defaults['port'] = str(pb.portno)
|
| - elif isinstance(defaults['port'], (int, long)):
|
| - defaults['port'] = str(defaults['port'])
|
| -
|
| - for k, v in defaults.iteritems():
|
| - if k in self.fields:
|
| - widget = getattr(self, "_%sEntry" % (k,))
|
| - widget.set_text(v)
|
| -
|
| - def _setWidgets(self):
|
| - GladeKeeper._setWidgets(self)
|
| - self._statusContext = self._statusBar.get_context_id("Login dialog.")
|
| - get_widget = self.glade.get_widget
|
| - get_widget("versionLabel").set_text(copyright.longversion)
|
| - get_widget("protocolLabel").set_text("Protocol PB-%s" %
|
| - (pb.Broker.version,))
|
| -
|
| - def _on_loginDialog_response(self, widget, response):
|
| - handlers = {gtk.RESPONSE_NONE: self._windowClosed,
|
| - gtk.RESPONSE_DELETE_EVENT: self._windowClosed,
|
| - gtk.RESPONSE_OK: self._doLogin,
|
| - gtk.RESPONSE_CANCEL: self._cancelled}
|
| - handler = handlers.get(response)
|
| - if handler is not None:
|
| - handler()
|
| - else:
|
| - log.msg("Unexpected dialog response %r from %s" % (response,
|
| - widget))
|
| -
|
| - def _on_loginDialog_close(self, widget, userdata=None):
|
| - self._windowClosed()
|
| -
|
| - def _on_loginDialog_destroy_event(self, widget, userdata=None):
|
| - self._windowClosed()
|
| -
|
| - def _cancelled(self):
|
| - if not self.deferredResult.called:
|
| - self.deferredResult.errback(netError.UserError("User hit Cancel."))
|
| - self._loginDialog.destroy()
|
| -
|
| - def _windowClosed(self, reason=None):
|
| - if not self.deferredResult.called:
|
| - self.deferredResult.errback(netError.UserError("Window closed."))
|
| -
|
| - def _doLogin(self):
|
| - idParams = {}
|
| -
|
| - idParams['host'] = self._hostEntry.get_text()
|
| - idParams['port'] = self._portEntry.get_text()
|
| - idParams['identityName'] = self._identityNameEntry.get_text()
|
| - idParams['password'] = self._passwordEntry.get_text()
|
| -
|
| - try:
|
| - idParams['port'] = int(idParams['port'])
|
| - except ValueError:
|
| - pass
|
| -
|
| - f = pb.PBClientFactory()
|
| - from twisted.internet import reactor
|
| - reactor.connectTCP(idParams['host'], idParams['port'], f)
|
| - creds = UsernamePassword(idParams['identityName'], idParams['password'])
|
| - f.login(creds, self.client
|
| - ).addCallbacks(self._cbGotPerspective, self._ebFailedLogin
|
| - ).setTimeout(30
|
| - )
|
| - self.statusMsg("Contacting server...")
|
| -
|
| - # serviceName = self._serviceNameEntry.get_text()
|
| - # perspectiveName = self._perspectiveNameEntry.get_text()
|
| - # if not perspectiveName:
|
| - # perspectiveName = idParams['identityName']
|
| -
|
| - # d = _identityConnector.requestService(serviceName, perspectiveName,
|
| - # self.client)
|
| - # d.addCallbacks(self._cbGotPerspective, self._ebFailedLogin)
|
| - # setCursor to waiting
|
| -
|
| - def _cbGotPerspective(self, perspective):
|
| - self.statusMsg("Connected to server.")
|
| - self.deferredResult.callback(perspective)
|
| - # clear waiting cursor
|
| - self._loginDialog.destroy()
|
| -
|
| - def _ebFailedLogin(self, reason):
|
| - if isinstance(reason, failure.Failure):
|
| - reason = reason.value
|
| - self.statusMsg(reason)
|
| - if isinstance(reason, (unicode, str)):
|
| - text = reason
|
| - else:
|
| - text = unicode(reason)
|
| - msg = gtk.MessageDialog(self._loginDialog,
|
| - gtk.DIALOG_DESTROY_WITH_PARENT,
|
| - gtk.MESSAGE_ERROR,
|
| - gtk.BUTTONS_CLOSE,
|
| - text)
|
| - msg.show_all()
|
| - msg.connect("response", lambda *a: msg.destroy())
|
| -
|
| - # hostname not found
|
| - # host unreachable
|
| - # connection refused
|
| - # authentication failed
|
| - # no such service
|
| - # no such perspective
|
| - # internal server error
|
| -
|
| - def _on_advancedButton_toggled(self, widget, userdata=None):
|
| - active = widget.get_active()
|
| - if active:
|
| - op = "show"
|
| - else:
|
| - op = "hide"
|
| - for widgetName in self._advancedControls:
|
| - widget = self.glade.get_widget(widgetName)
|
| - getattr(widget, op)()
|
| -
|
| - def statusMsg(self, text):
|
| - if not isinstance(text, (unicode, str)):
|
| - text = unicode(text)
|
| - return self._statusBar.push(self._statusContext, text)
|
|
|