Philipp Hörist pushed to branch master at gajim / gajim

Commits:

5 changed files:

Changes:

  • gajim/gtk/account_wizard.py
    ... ... @@ -27,7 +27,9 @@ from nbxmpp.const import Mode
    27 27
     from nbxmpp.const import StreamError
    
    28 28
     from nbxmpp.const import ConnectionProtocol
    
    29 29
     from nbxmpp.const import ConnectionType
    
    30
    -from nbxmpp.util import is_error_result
    
    30
    +from nbxmpp.errors import StanzaError
    
    31
    +from nbxmpp.errors import MalformedStanzaError
    
    32
    +from nbxmpp.errors import RegisterStanzaError
    
    31 33
     
    
    32 34
     from gajim.common import app
    
    33 35
     from gajim.common import configpaths
    
    ... ... @@ -46,7 +48,6 @@ from gajim.gtk.assistant import SuccessPage
    46 48
     from gajim.gtk.dataform import DataFormWidget
    
    47 49
     from gajim.gtk.util import get_builder
    
    48 50
     from gajim.gtk.util import open_window
    
    49
    -from gajim.gtk.util import ensure_not_destroyed
    
    50 51
     
    
    51 52
     
    
    52 53
     log = logging.getLogger('gajim.gtk.account_wizard')
    
    ... ... @@ -425,12 +426,13 @@ class AccountWizard(Assistant):
    425 426
                 i += 1
    
    426 427
             return domain
    
    427 428
     
    
    428
    -    @ensure_not_destroyed
    
    429
    -    def _on_register_form(self, result):
    
    430
    -        if is_error_result(result):
    
    429
    +    def _on_register_form(self, task):
    
    430
    +        try:
    
    431
    +            result = task.finish()
    
    432
    +        except (StanzaError, MalformedStanzaError) as error:
    
    431 433
                 self._show_error_page(_('Error'),
    
    432 434
                                       _('Error'),
    
    433
    -                                  result.get_text())
    
    435
    +                                  error.get_text())
    
    434 436
                 self._disconnect()
    
    435 437
                 return
    
    436 438
     
    
    ... ... @@ -460,14 +462,36 @@ class AccountWizard(Assistant):
    460 462
     
    
    461 463
             form = self.get_page('form').get_submit_form()
    
    462 464
             self._client.get_module('Register').submit_register_form(
    
    463
    -            None,
    
    464 465
                 form,
    
    465 466
                 callback=self._on_register_result)
    
    466 467
     
    
    467
    -    @ensure_not_destroyed
    
    468
    -    def _on_register_result(self, result):
    
    469
    -        if is_error_result(result):
    
    470
    -            self._on_register_error(result)
    
    468
    +    def _on_register_result(self, task):
    
    469
    +        try:
    
    470
    +            task.finish()
    
    471
    +        except RegisterStanzaError as error:
    
    472
    +            self._set_error_text(error)
    
    473
    +            if error.type != 'modify':
    
    474
    +                self.get_page('form').remove_form()
    
    475
    +                self._disconnect()
    
    476
    +                return
    
    477
    +
    
    478
    +            register_data = error.get_data()
    
    479
    +            form = register_data.form
    
    480
    +            if register_data.form is None:
    
    481
    +                form = register_data.fields_form
    
    482
    +
    
    483
    +            if form is not None:
    
    484
    +                self.get_page('form').add_form(form)
    
    485
    +
    
    486
    +            else:
    
    487
    +                self.get_page('form').remove_form()
    
    488
    +                self._disconnect()
    
    489
    +            return
    
    490
    +
    
    491
    +        except (StanzaError, MalformedStanzaError) as error:
    
    492
    +            self._set_error_text(error)
    
    493
    +            self.get_page('form').remove_form()
    
    494
    +            self._disconnect()
    
    471 495
                 return
    
    472 496
     
    
    473 497
             username, password = self.get_page('form').get_credentials()
    
    ... ... @@ -489,31 +513,13 @@ class AccountWizard(Assistant):
    489 513
             self.get_page('form').remove_form()
    
    490 514
             self._disconnect()
    
    491 515
     
    
    492
    -    def _on_register_error(self, result):
    
    493
    -        error_text = result.get_text()
    
    516
    +    def _set_error_text(self, error):
    
    517
    +        error_text = error.get_text()
    
    494 518
             if not error_text:
    
    495 519
                 error_text = _('The server rejected the registration '
    
    496 520
                                'without an error message')
    
    497 521
             self._show_error_page(_('Error'), _('Error'), error_text)
    
    498 522
     
    
    499
    -        register_data = result.get_data()
    
    500
    -        if register_data is None:
    
    501
    -            # IQ error did not have the payload included
    
    502
    -            self.get_page('form').remove_form()
    
    503
    -            self._disconnect()
    
    504
    -            return
    
    505
    -
    
    506
    -        form = register_data.form
    
    507
    -        if register_data.form is None:
    
    508
    -            form = register_data.fields_form
    
    509
    -
    
    510
    -        if form is not None:
    
    511
    -            self.get_page('form').add_form(form)
    
    512
    -
    
    513
    -        else:
    
    514
    -            self.get_page('form').remove_form()
    
    515
    -            self._disconnect()
    
    516
    -
    
    517 523
         def _on_destroy(self, *args):
    
    518 524
             self._disconnect()
    
    519 525
             self._destroyed = True
    

  • gajim/gtk/assistant.py
    ... ... @@ -49,6 +49,7 @@ class Assistant(Gtk.ApplicationWindow, EventHelper):
    49 49
             self.set_default_size(width, height)
    
    50 50
             self.set_resizable(True)
    
    51 51
             self.set_transient_for(transient_for)
    
    52
    +        self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
    
    52 53
     
    
    53 54
             self._pages = {}
    
    54 55
             self._buttons = {}
    

  • gajim/gtk/change_password.py
    ... ... @@ -16,7 +16,8 @@ import logging
    16 16
     
    
    17 17
     from gi.repository import Gtk
    
    18 18
     
    
    19
    -from nbxmpp.util import is_error_result
    
    19
    +from nbxmpp.errors import StanzaError
    
    20
    +from nbxmpp.errors import ChangePasswordStanzaError
    
    20 21
     
    
    21 22
     from gajim.common import app
    
    22 23
     from gajim.common.i18n import _
    
    ... ... @@ -26,7 +27,6 @@ from gajim.common.helpers import to_user_string
    26 27
     from gajim.gtk.assistant import Assistant
    
    27 28
     from gajim.gtk.assistant import Page
    
    28 29
     from gajim.gtk.dataform import DataFormWidget
    
    29
    -from gajim.gtk.util import ensure_not_destroyed
    
    30 30
     
    
    31 31
     log = logging.getLogger('gajim.gtk.change_password')
    
    32 32
     
    
    ... ... @@ -119,17 +119,20 @@ class ChangePassword(Assistant):
    119 119
                 self._con.get_module('Register').change_password(
    
    120 120
                     password, callback=self._on_change_password)
    
    121 121
     
    
    122
    -    @ensure_not_destroyed
    
    123
    -    def _on_change_password(self, result):
    
    124
    -        if is_error_result(result):
    
    125
    -            error_text = to_user_string(result)
    
    122
    +    def _on_change_password(self, task):
    
    123
    +        try:
    
    124
    +            task.finish()
    
    125
    +        except ChangePasswordStanzaError as error:
    
    126
    +            self.get_page('next_stage').set_form(error.get_form())
    
    127
    +            self.show_page('next_stage', Gtk.StackTransitionType.SLIDE_LEFT)
    
    128
    +
    
    129
    +        except StanzaError as error:
    
    130
    +            error_text = to_user_string(error)
    
    126 131
                 self.get_page('error').set_text(error_text)
    
    127 132
                 self.show_page('error', Gtk.StackTransitionType.SLIDE_LEFT)
    
    128
    -        elif result.successful:
    
    129
    -            self.show_page('success')
    
    133
    +
    
    130 134
             else:
    
    131
    -            self.get_page('next_stage').set_form(result.form)
    
    132
    -            self.show_page('next_stage', Gtk.StackTransitionType.SLIDE_LEFT)
    
    135
    +            self.show_page('success')
    
    133 136
     
    
    134 137
         def _on_destroy(self, *args):
    
    135 138
             self._destroyed = True
    

  • gajim/gtk/remove_account.py
    ... ... @@ -16,7 +16,7 @@ import logging
    16 16
     
    
    17 17
     from gi.repository import Gtk
    
    18 18
     
    
    19
    -from nbxmpp.util import is_error_result
    
    19
    +from nbxmpp.errors import StanzaError
    
    20 20
     
    
    21 21
     from gajim.common import app
    
    22 22
     from gajim.common import ged
    
    ... ... @@ -26,7 +26,6 @@ from gajim.common.helpers import event_filter
    26 26
     
    
    27 27
     from gajim.gtk.assistant import Assistant
    
    28 28
     from gajim.gtk.assistant import Page
    
    29
    -from gajim.gtk.util import ensure_not_destroyed
    
    30 29
     
    
    31 30
     log = logging.getLogger('gajim.gtk.remove_account')
    
    32 31
     
    
    ... ... @@ -149,12 +148,13 @@ class RemoveAccount(Assistant):
    149 148
             self._con.disconnect(gracefully=True, reconnect=False)
    
    150 149
             self._account_removed = True
    
    151 150
     
    
    152
    -    @ensure_not_destroyed
    
    153
    -    def _on_remove_response(self, result):
    
    154
    -        if is_error_result(result):
    
    151
    +    def _on_remove_response(self, task):
    
    152
    +        try:
    
    153
    +            task.finish()
    
    154
    +        except StanzaError as error:
    
    155 155
                 self._con.set_remove_account(False)
    
    156 156
     
    
    157
    -            error_text = to_user_string(result)
    
    157
    +            error_text = to_user_string(error)
    
    158 158
                 self.get_page('error').set_text(error_text)
    
    159 159
                 self.show_page('error')
    
    160 160
                 return
    

  • gajim/gtk/xml_console.py
    ... ... @@ -346,7 +346,10 @@ class XMLConsoleWindow(Gtk.ApplicationWindow, EventHelper):
    346 346
             self._print_stanza(event, 'outgoing')
    
    347 347
     
    
    348 348
         def _print_stanza(self, event, kind):
    
    349
    -        account_label = app.get_account_label(event.account)
    
    349
    +        if event.account == 'AccountWizard':
    
    350
    +            account_label = 'Account Wizard'
    
    351
    +        else:
    
    352
    +            account_label = app.get_account_label(event.account)
    
    350 353
     
    
    351 354
             stanza = event.stanza
    
    352 355
             if not isinstance(stanza, str):