add ability to execute adhoc commands in disco window
This commit is contained in:
parent
ba2b1a0f58
commit
ac58d394e9
|
@ -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>
|
||||
|
|
30
src/disco.py
30
src/disco.py
|
@ -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 = []
|
||||
|
|
Loading…
Reference in New Issue