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 = []