Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/adhoc_commands.py')
-rw-r--r--src/adhoc_commands.py68
1 files changed, 52 insertions, 16 deletions
diff --git a/src/adhoc_commands.py b/src/adhoc_commands.py
index 7519fee3b..7af0ff234 100644
--- a/src/adhoc_commands.py
+++ b/src/adhoc_commands.py
@@ -61,11 +61,11 @@ class CommandWindow:
self.xml = gtkgui_helpers.get_glade('adhoc_commands_window.glade')
self.window = self.xml.get_widget('adhoc_commands_window')
for name in ('cancel_button', 'back_button', 'forward_button',
- 'execute_button','stages_notebook',
+ 'execute_button','close_button','stages_notebook',
'retrieving_commands_stage_vbox',
'command_list_stage_vbox','command_list_vbox',
'sending_form_stage_vbox','sending_form_progressbar',
- 'no_commands_stage_vbox','error_stage_vbox',
+ 'notes_label','no_commands_stage_vbox','error_stage_vbox',
'error_description_label'):
self.__dict__[name] = self.xml.get_widget(name)
@@ -75,6 +75,7 @@ class CommandWindow:
self.sending_form_stage_vbox.pack_start(self.data_form_widget)
# setting initial stage
+ self.close_button.set_no_show_all(True)
self.stage1()
# displaying the window
@@ -87,6 +88,7 @@ class CommandWindow:
def stage_back_button_clicked(self, *anything): assert False
def stage_forward_button_clicked(self, *anything): assert False
def stage_execute_button_clicked(self, *anything): assert False
+ def stage_close_button_clicked(self, *anything): assert False
def stage_adhoc_commands_window_delete_event(self, *anything): assert False
def do_nothing(self, *anything): return False
@@ -103,8 +105,11 @@ class CommandWindow:
def on_execute_button_clicked(self, *anything):
return self.stage_execute_button_clicked(*anything)
+ def on_close_button_clicked(self, *anything):
+ return self.stage_close_button_clicked(*anything)
+
def on_adhoc_commands_window_destroy(self, *anything):
- # do all actions that are needed to remove this object from memory...
+ # TODO: do all actions that are needed to remove this object from memory...
self.remove_pulsing()
def on_adhoc_commands_window_delete_event(self, *anything):
@@ -215,6 +220,8 @@ class CommandWindow:
assert isinstance(self.commandnode, unicode)
+ self.form_status = None
+
self.stages_notebook.set_current_page(
self.stages_notebook.page_num(
self.sending_form_stage_vbox))
@@ -231,6 +238,7 @@ class CommandWindow:
self.stage_back_button_clicked = self.stage3_back_button_clicked
self.stage_forward_button_clicked = self.stage3_forward_button_clicked
self.stage_execute_button_clicked = self.stage3_execute_button_clicked
+ self.stage_close_button_clicked = self.stage3_close_button_clicked
self.stage_adhoc_commands_window_delete_event = self.stage3_cancel_button_clicked
def stage3_finish(self):
@@ -255,6 +263,14 @@ class CommandWindow:
return False
return True
+ def stage3_close_button_clicked(self, widget):
+ # this works also as a handler for window_delete_event, so we have to return appropriate
+ # values
+ if widget==self.window:
+ return False
+ else:
+ self.window.destroy()
+
def stage3_back_button_clicked(self, widget):
self.stage3_submit_form('prev')
@@ -287,23 +303,24 @@ class CommandWindow:
if self.sessionid is None:
self.sessionid = command.getAttr('sessionid')
- self.dataform = dataforms.DataForm(node=command.getTag('x'))
+ self.form_status = command.getAttr('status')
- self.data_form_widget.set_sensitive(True)
- try:
- self.data_form_widget.data_form=self.dataform
- except dataforms.BadDataFormNode:
- # TODO: translate
- self.stage5('Service sent malformed data', senderror=True)
- self.data_form_widget.show()
+ if command.getTag('x') is not None:
+ self.dataform = dataforms.DataForm(node=command.getTag('x'))
+
+ self.data_form_widget.set_sensitive(True)
+ try:
+ self.data_form_widget.data_form=self.dataform
+ except dataforms.BadDataFormNode:
+ # TODO: translate
+ self.stage5('Service sent malformed data', senderror=True)
+ self.data_form_widget.show()
+ else:
+ self.data_form_widget.hide()
action = command.getTag('action')
if action is None:
- # no action tag? check if that's last stage...
- if command.getAttr('status')=='completed':
- self.cancel_button.set_sensitive(False)
- else:
- self.cancel_button.set_sensitive(True)
+ self.cancel_button.set_sensitive(True)
self.back_button.set_sensitive(False)
self.forward_button.set_sensitive(False)
self.execute_button.set_sensitive(True)
@@ -314,6 +331,25 @@ class CommandWindow:
self.forward_button.set_sensitive(action.getTag('next') is not None)
self.execute_button.set_sensitive(True)
+ if self.form_status == 'completed':
+ self.cancel_button.set_sensitive(False)
+ self.back_button.set_sensitive(False)
+ self.forward_button.set_sensitive(False)
+ self.execute_button.set_no_show_all(True)
+ self.execute_button.hide()
+ self.close_button.set_no_show_all(False)
+ self.close_button.show()
+ self.stage_adhoc_commands_window_delete_event = self.stage3_close_button_clicked
+
+ note = command.getTag('note')
+ if note is not None:
+ self.notes_label.set_text(note.getData().decode('utf-8'))
+ self.notes_label.set_no_show_all(False)
+ self.notes_label.show()
+ else:
+ self.notes_label.set_no_show_all(True)
+ self.notes_label.hide()
+
# stage 4: no commands are exposed
def stage4(self):
'''Display the message. Wait for user to close the window'''