Allow controlling login dialog with enter key

This commit is contained in:
Mathieu Comandon 2013-12-28 00:54:06 +01:00
parent 1095da73b5
commit 8e6a0ab173
2 changed files with 38 additions and 16 deletions

View file

@ -15,20 +15,20 @@
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkLinkButton" id="linkbutton1">
<property name="label" translatable="yes">Forgot password?</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="receives_default">False</property>
<property name="has_tooltip">True</property>
<property name="relief">none</property>
<property name="uri">http://lutris.net/user/password/reset/</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
<object class="GtkLinkButton" id="linkbutton1">
<property name="label" translatable="yes">Forgot password?</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="receives_default">False</property>
<property name="has_tooltip">True</property>
<property name="relief">none</property>
<property name="uri">http://lutris.net/user/password/reset/</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="cancel_button">
@ -124,6 +124,7 @@
<property name="invisible_char">•</property>
<property name="width_chars">32</property>
<property name="shadow_type">none</property>
<signal name="activate" handler="on_username_entry_activate" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
@ -141,6 +142,7 @@
<property name="visibility">False</property>
<property name="invisible_char">•</property>
<property name="invisible_char_set">True</property>
<signal name="activate" handler="on_password_entry_activate" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
@ -171,6 +173,7 @@
</object>
</child>
<action-widgets>
<action-widget response="0">linkbutton1</action-widget>
<action-widget response="0">cancel_button</action-widget>
<action-widget response="4">connect_button</action-widget>
</action-widgets>

View file

@ -203,17 +203,36 @@ class ClientLoginDialog(GtkBuilderDialog):
def __init__(self):
super(ClientLoginDialog, self).__init__()
self.username_entry = self.builder.get_object('username_entry')
self.password_entry = self.builder.get_object('password_entry')
cancel_button = self.builder.get_object('cancel_button')
cancel_button.connect('clicked', self.on_cancel)
connect_button = self.builder.get_object('connect_button')
connect_button.connect('clicked', self.on_connect)
def get_credentials(self):
username = self.username_entry.get_text()
password = self.password_entry.get_text()
return (username, password)
def on_username_entry_activate(self, widget):
if all(self.get_credentials()):
self.on_connect(None)
else:
self.password_entry.grab_focus()
def on_password_entry_activate(self, widget):
if all(self.get_credentials()):
self.on_connect(None)
else:
self.username_entry.grab_focus()
def on_cancel(self, widget):
self.dialog.destroy()
def on_connect(self, widget):
username = self.builder.get_object('username_entry').get_text()
password = self.builder.get_object('password_entry').get_text()
username, password = self.get_credentials()
token = api.connect(username, password)
if not token:
NoticeDialog("Login failed")