Reporting errors and no-commands-exposed.
This commit is contained in:
parent
145cdbbf40
commit
ce9cbe6f21
|
@ -92,26 +92,7 @@
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="label250">
|
<placeholder/>
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes"></property>
|
|
||||||
<property name="use_underline">False</property>
|
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
||||||
<property name="wrap">False</property>
|
|
||||||
<property name="selectable">False</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xpad">0</property>
|
|
||||||
<property name="ypad">0</property>
|
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
||||||
<property name="width_chars">-1</property>
|
|
||||||
<property name="single_line_mode">False</property>
|
|
||||||
<property name="angle">0</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="type">tab</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
|
@ -157,6 +138,41 @@
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkHBox" id="hbox2957">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="homogeneous">False</property>
|
||||||
|
<property name="spacing">0</property>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkButton" id="check_commands_1_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="label" translatable="yes">Check once more</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||||
|
<property name="focus_on_click">True</property>
|
||||||
|
<signal name="clicked" handler="on_check_commands_1_button_clicked" last_modification_time="Fri, 23 Jun 2006 18:05:14 GMT"/>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="pack_type">GTK_PACK_END</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="tab_expand">False</property>
|
<property name="tab_expand">False</property>
|
||||||
|
@ -165,26 +181,7 @@
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="label251">
|
<placeholder/>
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes"></property>
|
|
||||||
<property name="use_underline">False</property>
|
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
||||||
<property name="wrap">False</property>
|
|
||||||
<property name="selectable">False</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xpad">0</property>
|
|
||||||
<property name="ypad">0</property>
|
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
||||||
<property name="width_chars">-1</property>
|
|
||||||
<property name="single_line_mode">False</property>
|
|
||||||
<property name="angle">0</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="type">tab</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
|
@ -245,45 +242,79 @@
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="label252">
|
<placeholder/>
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes"></property>
|
|
||||||
<property name="use_underline">False</property>
|
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
||||||
<property name="wrap">False</property>
|
|
||||||
<property name="selectable">False</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xpad">0</property>
|
|
||||||
<property name="ypad">0</property>
|
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
||||||
<property name="width_chars">-1</property>
|
|
||||||
<property name="single_line_mode">False</property>
|
|
||||||
<property name="angle">0</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="type">tab</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="label254">
|
<widget class="GtkVBox" id="no_commands_stage_vbox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="label" translatable="yes">This jabber entity doesn't expose any commands.</property>
|
<property name="homogeneous">False</property>
|
||||||
<property name="use_underline">False</property>
|
<property name="spacing">0</property>
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
<child>
|
||||||
<property name="wrap">False</property>
|
<widget class="GtkLabel" id="label263">
|
||||||
<property name="selectable">False</property>
|
<property name="visible">True</property>
|
||||||
<property name="xalign">0.5</property>
|
<property name="label" translatable="yes">This jabber entity does not expose any commands.</property>
|
||||||
<property name="yalign">0.5</property>
|
<property name="use_underline">False</property>
|
||||||
<property name="xpad">0</property>
|
<property name="use_markup">False</property>
|
||||||
<property name="ypad">0</property>
|
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
<property name="wrap">False</property>
|
||||||
<property name="width_chars">-1</property>
|
<property name="selectable">False</property>
|
||||||
<property name="single_line_mode">False</property>
|
<property name="xalign">0.5</property>
|
||||||
<property name="angle">0</property>
|
<property name="yalign">0.5</property>
|
||||||
|
<property name="xpad">0</property>
|
||||||
|
<property name="ypad">0</property>
|
||||||
|
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||||
|
<property name="width_chars">-1</property>
|
||||||
|
<property name="single_line_mode">False</property>
|
||||||
|
<property name="angle">0</property>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkHBox" id="hbox2956">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="homogeneous">False</property>
|
||||||
|
<property name="spacing">0</property>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkButton" id="check_commands_2_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="label" translatable="yes">Check once more</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||||
|
<property name="focus_on_click">True</property>
|
||||||
|
<signal name="clicked" handler="on_check_commands_2_button_clicked" last_modification_time="Fri, 23 Jun 2006 18:05:31 GMT"/>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="pack_type">GTK_PACK_END</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">GTK_PACK_END</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="tab_expand">False</property>
|
<property name="tab_expand">False</property>
|
||||||
|
@ -292,45 +323,64 @@
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="label255">
|
<placeholder/>
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes"></property>
|
|
||||||
<property name="use_underline">False</property>
|
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
||||||
<property name="wrap">False</property>
|
|
||||||
<property name="selectable">False</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xpad">0</property>
|
|
||||||
<property name="ypad">0</property>
|
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
||||||
<property name="width_chars">-1</property>
|
|
||||||
<property name="single_line_mode">False</property>
|
|
||||||
<property name="angle">0</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="type">tab</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="label257">
|
<widget class="GtkVBox" id="error_stage_vbox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="label" translatable="yes">An error has occured.</property>
|
<property name="homogeneous">False</property>
|
||||||
<property name="use_underline">False</property>
|
<property name="spacing">0</property>
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
<child>
|
||||||
<property name="wrap">False</property>
|
<widget class="GtkLabel" id="label257">
|
||||||
<property name="selectable">False</property>
|
<property name="visible">True</property>
|
||||||
<property name="xalign">0.5</property>
|
<property name="label" translatable="yes">An error has occured:</property>
|
||||||
<property name="yalign">0.5</property>
|
<property name="use_underline">False</property>
|
||||||
<property name="xpad">0</property>
|
<property name="use_markup">False</property>
|
||||||
<property name="ypad">0</property>
|
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
<property name="wrap">False</property>
|
||||||
<property name="width_chars">-1</property>
|
<property name="selectable">False</property>
|
||||||
<property name="single_line_mode">False</property>
|
<property name="xalign">0.5</property>
|
||||||
<property name="angle">0</property>
|
<property name="yalign">0.5</property>
|
||||||
|
<property name="xpad">0</property>
|
||||||
|
<property name="ypad">0</property>
|
||||||
|
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||||
|
<property name="width_chars">-1</property>
|
||||||
|
<property name="single_line_mode">False</property>
|
||||||
|
<property name="angle">0</property>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkLabel" id="error_description_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">Error description...</property>
|
||||||
|
<property name="use_underline">False</property>
|
||||||
|
<property name="use_markup">False</property>
|
||||||
|
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||||
|
<property name="wrap">True</property>
|
||||||
|
<property name="selectable">False</property>
|
||||||
|
<property name="xalign">0.5</property>
|
||||||
|
<property name="yalign">0.5</property>
|
||||||
|
<property name="xpad">0</property>
|
||||||
|
<property name="ypad">0</property>
|
||||||
|
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||||
|
<property name="width_chars">-1</property>
|
||||||
|
<property name="single_line_mode">False</property>
|
||||||
|
<property name="angle">0</property>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="tab_expand">False</property>
|
<property name="tab_expand">False</property>
|
||||||
|
@ -339,26 +389,7 @@
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="label256">
|
<placeholder/>
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes"></property>
|
|
||||||
<property name="use_underline">False</property>
|
|
||||||
<property name="use_markup">False</property>
|
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
|
||||||
<property name="wrap">False</property>
|
|
||||||
<property name="selectable">False</property>
|
|
||||||
<property name="xalign">0.5</property>
|
|
||||||
<property name="yalign">0.5</property>
|
|
||||||
<property name="xpad">0</property>
|
|
||||||
<property name="ypad">0</property>
|
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
||||||
<property name="width_chars">-1</property>
|
|
||||||
<property name="single_line_mode">False</property>
|
|
||||||
<property name="angle">0</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="type">tab</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
|
|
|
@ -56,7 +56,8 @@ class CommandWindow:
|
||||||
'execute_button','stages_notebook',
|
'execute_button','stages_notebook',
|
||||||
'retrieving_commands_stage_vbox',
|
'retrieving_commands_stage_vbox',
|
||||||
'command_list_stage_vbox','command_list_vbox',
|
'command_list_stage_vbox','command_list_vbox',
|
||||||
'sending_form_stage_vbox'):
|
'sending_form_stage_vbox','no_commands_stage_vbox',
|
||||||
|
'error_stage_vbox', 'error_description_label'):
|
||||||
self.__dict__[name] = self.xml.get_widget(name)
|
self.__dict__[name] = self.xml.get_widget(name)
|
||||||
|
|
||||||
# setting initial stage
|
# setting initial stage
|
||||||
|
@ -78,6 +79,7 @@ class CommandWindow:
|
||||||
def on_forward_button_clicked(self, *anything): pass
|
def on_forward_button_clicked(self, *anything): pass
|
||||||
def on_execute_button_clicked(self, *anything): pass
|
def on_execute_button_clicked(self, *anything): pass
|
||||||
def on_adhoc_commands_window_destroy(self, *anything): pass
|
def on_adhoc_commands_window_destroy(self, *anything): pass
|
||||||
|
def do_nothing(self, *anything): pass
|
||||||
|
|
||||||
# stage 1: waiting for command list
|
# stage 1: waiting for command list
|
||||||
def stage1(self):
|
def stage1(self):
|
||||||
|
@ -142,10 +144,16 @@ class CommandWindow:
|
||||||
self.command_list_vbox.pack_end(radio, expand=False)
|
self.command_list_vbox.pack_end(radio, expand=False)
|
||||||
self.command_list_vbox.show_all()
|
self.command_list_vbox.show_all()
|
||||||
|
|
||||||
self.stage_finish = self.stage_finish
|
self.stage_finish = self.stage2_finish
|
||||||
self.on_cancel_button_clicked = self.stage2_on_cancel_button_clicked
|
self.on_cancel_button_clicked = self.stage2_on_cancel_button_clicked
|
||||||
self.on_forward_button_clicked = self.stage2_on_forward_button_clicked
|
self.on_forward_button_clicked = self.stage2_on_forward_button_clicked
|
||||||
|
|
||||||
|
def stage2_finish(self):
|
||||||
|
'''Remove widgets we created.'''
|
||||||
|
def remove_widget(widget):
|
||||||
|
self.command_list_vbox.remove(widget)
|
||||||
|
self.command_list_vbox.foreach(remove_widget)
|
||||||
|
|
||||||
def stage2_on_cancel_button_clicked(self):
|
def stage2_on_cancel_button_clicked(self):
|
||||||
self.stage_finish()
|
self.stage_finish()
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
@ -153,6 +161,58 @@ class CommandWindow:
|
||||||
def stage2_on_forward_button_clicked(self):
|
def stage2_on_forward_button_clicked(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def on_check_commands_1_button_clicked(self, widget):
|
||||||
|
self.stage1()
|
||||||
|
|
||||||
|
# stage 4: no commands are exposed
|
||||||
|
def stage4(self):
|
||||||
|
'''Display the message. Wait for user to close the window'''
|
||||||
|
# close old stage
|
||||||
|
self.stage_finish()
|
||||||
|
|
||||||
|
self.stages_notebook.set_current_page(
|
||||||
|
self.stages_notebook.page_num(
|
||||||
|
self.no_commands_stage_vbox))
|
||||||
|
|
||||||
|
self.cancel_button.set_sensitive(True)
|
||||||
|
self.back_button.set_sensitive(False)
|
||||||
|
self.forward_button.set_sensitive(False)
|
||||||
|
self.execute_button.set_sensitive(False)
|
||||||
|
|
||||||
|
self.stage_finish = self.do_nothing
|
||||||
|
self.on_cancel_button_clicked = self.stage4_on_cancel_button_clicked
|
||||||
|
|
||||||
|
def stage4_on_cancel_button_clicked(self):
|
||||||
|
self.window.destroy()
|
||||||
|
|
||||||
|
def on_check_commands_2_button_clicked(self, widget):
|
||||||
|
self.stage1()
|
||||||
|
|
||||||
|
# stage 5: an error has occured
|
||||||
|
def stage5(self, error):
|
||||||
|
'''Display the error message. Wait for user to close the window'''
|
||||||
|
# close old stage
|
||||||
|
self.stage_finish()
|
||||||
|
|
||||||
|
assert isinstance(error, unicode)
|
||||||
|
|
||||||
|
self.stages_notebook.set_current_page(
|
||||||
|
self.stages_notebook.page_num(
|
||||||
|
self.error_stage_vbox))
|
||||||
|
|
||||||
|
self.cancel_button.set_sensitive(True)
|
||||||
|
self.back_button.set_sensitive(False)
|
||||||
|
self.forward_button.set_sensitive(False)
|
||||||
|
self.execute_button.set_sensitive(False)
|
||||||
|
|
||||||
|
self.error_description_label.set_text(error)
|
||||||
|
|
||||||
|
self.stage_finish = self.do_nothing
|
||||||
|
self.on_cancel_button_clicked = self.stage5_on_cancel_button_clicked
|
||||||
|
|
||||||
|
def stage5_on_cancel_button_clicked(self):
|
||||||
|
self.window.destroy()
|
||||||
|
|
||||||
# helpers to handle pulsing in progressbar
|
# helpers to handle pulsing in progressbar
|
||||||
def setup_pulsing(self, progressbar):
|
def setup_pulsing(self, progressbar):
|
||||||
'''Set the progressbar to pulse. Makes a custom
|
'''Set the progressbar to pulse. Makes a custom
|
||||||
|
@ -184,14 +244,18 @@ class CommandWindow:
|
||||||
# is error => error stage
|
# is error => error stage
|
||||||
error = response.getError()
|
error = response.getError()
|
||||||
if error is not None:
|
if error is not None:
|
||||||
pass
|
# extracting error description from xmpp/protocol.py
|
||||||
|
errorname=xmpp.NS_STANZAS + ' ' + str(error)
|
||||||
|
errordesc=xmpp.ERRORS[errorname][2]
|
||||||
|
self.stage5(errordesc.decode('utf-8'))
|
||||||
|
return
|
||||||
|
|
||||||
# no commands => no commands stage
|
# no commands => no commands stage
|
||||||
# commands => command selection stage
|
# commands => command selection stage
|
||||||
items = response.getTag('query').getTags('item')
|
items = response.getTag('query').getTags('item')
|
||||||
if len(items)==0:
|
if len(items)==0:
|
||||||
self.commandlist = []
|
self.commandlist = []
|
||||||
self.stage2() # stageX, where X is the number for error page
|
self.stage4()
|
||||||
else:
|
else:
|
||||||
self.commandlist = [(t.getAttr('node'), t.getAttr('name')) for t in items]
|
self.commandlist = [(t.getAttr('node'), t.getAttr('name')) for t in items]
|
||||||
self.stage2()
|
self.stage2()
|
||||||
|
|
Loading…
Reference in New Issue