Author: asterix Date: 2007-01-18 10:12:03 +0100 (Thu, 18 Jan 2007) New Revision: 7853
Modified: trunk/data/glade/service_discovery_window.glade trunk/src/disco.py Log: add ability to execute adhoc commands in disco window
Modified: trunk/data/glade/service_discovery_window.glade =================================================================== --- trunk/data/glade/service_discovery_window.glade 2007-01-17 11:40:59 UTC (rev 7852) +++ trunk/data/glade/service_discovery_window.glade 2007-01-18 09:12:03 UTC (rev 7853) @@ -351,9 +351,34 @@ </child>
<child> - <widget class="GtkHButtonBox" id="action_buttonbox"> + <widget class="GtkLabel" id="label363"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</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="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="action_buttonbox"> + <property name="visible">True</property> + <property name="homogeneous">False</property> <property name="spacing">6</property>
<child> @@ -368,11 +393,17 @@ <property name="focus_on_click">True</property> <signal name="clicked" handler="on_close_button_clicked" last_modification_time="Sat, 26 Mar 2005 15:05:59 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="expand">False</property> <property name="fill">True</property> </packing> </child>
Modified: trunk/src/disco.py =================================================================== --- trunk/src/disco.py 2007-01-17 11:40:59 UTC (rev 7852) +++ trunk/src/disco.py 2007-01-18 09:12:03 UTC (rev 7853) @@ -48,6 +48,7 @@ import tooltips import gtkgui_helpers import groups +import adhoc_commands
from common import gajim from common import xmpp @@ -984,6 +985,7 @@ self.tooltip = tooltips.ServiceDiscoveryTooltip() self.register_button = None self.join_button = None + self.execute_button = None # Keep track of our treeview signals self._view_signals = [] self._scroll_signal = None @@ -1138,6 +1140,18 @@
def _add_actions(self): AgentBrowser._add_actions(self) + self.execute_button = gtk.Button() + image = gtk.image_new_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_BUTTON) + label = gtk.Label(_('_Execute Command...')) + label.set_use_underline(True) + hbox = gtk.HBox() + hbox.pack_start(image, False, True, 6) + hbox.pack_end(label, True, True) + self.execute_button.add(hbox) + self.execute_button.connect('clicked', self.on_execute_button_clicked) + self.window.action_buttonbox.add(self.execute_button) + self.execute_button.show_all() + self.register_button = gtk.Button(label=_("Re_gister"), use_underline=True) self.register_button.connect('clicked', self.on_register_button_clicked) @@ -1157,6 +1171,9 @@ self.join_button.show_all()
def _clean_actions(self): + if self.execute_button: + self.execute_button.destroy() + self.execute_button = None if self.register_button: self.register_button.destroy() self.register_button = None @@ -1176,6 +1193,15 @@ self._renderer.set_property('cell-background', bgcolor) self.window.services_treeview.queue_draw()
+ def on_execute_button_clicked(self, widget = None): + '''When we want to execute a command: + open adhoc command window''' + model, iter = self.window.services_treeview.get_selection().get_selected() + if not iter: + return + service = model[iter][0].decode('utf-8') + adhoc_commands.CommandWindow(self.account, service) + def on_register_button_clicked(self, widget = None): '''When we want to register an agent: request information about registering with the agent and close the @@ -1205,6 +1231,8 @@ self.window.destroy(chain = True)
def update_actions(self): + if self.execute_button: + self.execute_button.set_sensitive(False) if self.register_button: self.register_button.set_sensitive(False) if self.browse_button: @@ -1241,6 +1269,8 @@
def _update_actions(self, jid, node, identities, features, data): AgentBrowser._update_actions(self, jid, node, identities, features, data) + if self.execute_button and xmpp.NS_COMMANDS in features: + self.execute_button.set_sensitive(True) if self.register_button and xmpp.NS_REGISTER in features: # We can register this agent registered_transports = []