add ability to execute adhoc commands in disco window

This commit is contained in:
Yann Leboulanger 2007-01-18 09:12:03 +00:00
parent ba2b1a0f58
commit ac58d394e9
2 changed files with 64 additions and 3 deletions

View File

@ -351,9 +351,34 @@ Agent JID - node</property>
</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 @@ Agent JID - node</property>
<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>

View File

@ -48,6 +48,7 @@ import dialogs
import tooltips
import gtkgui_helpers
import groups
import adhoc_commands
from common import gajim
from common import xmpp
@ -984,6 +985,7 @@ class ToplevelAgentBrowser(AgentBrowser):
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 @@ class ToplevelAgentBrowser(AgentBrowser):
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 @@ class ToplevelAgentBrowser(AgentBrowser):
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 @@ class ToplevelAgentBrowser(AgentBrowser):
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 @@ class ToplevelAgentBrowser(AgentBrowser):
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 @@ class ToplevelAgentBrowser(AgentBrowser):
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 = []