add ability to execute adhoc commands in disco window
This commit is contained in:
parent
ba2b1a0f58
commit
ac58d394e9
2 changed files with 64 additions and 3 deletions
|
@ -351,9 +351,34 @@ Agent JID - node</property>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkHButtonBox" id="action_buttonbox">
|
<widget class="GtkLabel" id="label363">
|
||||||
<property name="visible">True</property>
|
<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>
|
<property name="spacing">6</property>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
|
@ -368,11 +393,17 @@ Agent JID - node</property>
|
||||||
<property name="focus_on_click">True</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"/>
|
<signal name="clicked" handler="on_close_button_clicked" last_modification_time="Sat, 26 Mar 2005 15:05:59 GMT"/>
|
||||||
</widget>
|
</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>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="padding">0</property>
|
<property name="padding">0</property>
|
||||||
<property name="expand">True</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
30
src/disco.py
30
src/disco.py
|
@ -48,6 +48,7 @@ import dialogs
|
||||||
import tooltips
|
import tooltips
|
||||||
import gtkgui_helpers
|
import gtkgui_helpers
|
||||||
import groups
|
import groups
|
||||||
|
import adhoc_commands
|
||||||
|
|
||||||
from common import gajim
|
from common import gajim
|
||||||
from common import xmpp
|
from common import xmpp
|
||||||
|
@ -984,6 +985,7 @@ class ToplevelAgentBrowser(AgentBrowser):
|
||||||
self.tooltip = tooltips.ServiceDiscoveryTooltip()
|
self.tooltip = tooltips.ServiceDiscoveryTooltip()
|
||||||
self.register_button = None
|
self.register_button = None
|
||||||
self.join_button = None
|
self.join_button = None
|
||||||
|
self.execute_button = None
|
||||||
# Keep track of our treeview signals
|
# Keep track of our treeview signals
|
||||||
self._view_signals = []
|
self._view_signals = []
|
||||||
self._scroll_signal = None
|
self._scroll_signal = None
|
||||||
|
@ -1138,6 +1140,18 @@ class ToplevelAgentBrowser(AgentBrowser):
|
||||||
|
|
||||||
def _add_actions(self):
|
def _add_actions(self):
|
||||||
AgentBrowser._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"),
|
self.register_button = gtk.Button(label=_("Re_gister"),
|
||||||
use_underline=True)
|
use_underline=True)
|
||||||
self.register_button.connect('clicked', self.on_register_button_clicked)
|
self.register_button.connect('clicked', self.on_register_button_clicked)
|
||||||
|
@ -1157,6 +1171,9 @@ class ToplevelAgentBrowser(AgentBrowser):
|
||||||
self.join_button.show_all()
|
self.join_button.show_all()
|
||||||
|
|
||||||
def _clean_actions(self):
|
def _clean_actions(self):
|
||||||
|
if self.execute_button:
|
||||||
|
self.execute_button.destroy()
|
||||||
|
self.execute_button = None
|
||||||
if self.register_button:
|
if self.register_button:
|
||||||
self.register_button.destroy()
|
self.register_button.destroy()
|
||||||
self.register_button = None
|
self.register_button = None
|
||||||
|
@ -1176,6 +1193,15 @@ class ToplevelAgentBrowser(AgentBrowser):
|
||||||
self._renderer.set_property('cell-background', bgcolor)
|
self._renderer.set_property('cell-background', bgcolor)
|
||||||
self.window.services_treeview.queue_draw()
|
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):
|
def on_register_button_clicked(self, widget = None):
|
||||||
'''When we want to register an agent:
|
'''When we want to register an agent:
|
||||||
request information about registering with the agent and close the
|
request information about registering with the agent and close the
|
||||||
|
@ -1205,6 +1231,8 @@ class ToplevelAgentBrowser(AgentBrowser):
|
||||||
self.window.destroy(chain = True)
|
self.window.destroy(chain = True)
|
||||||
|
|
||||||
def update_actions(self):
|
def update_actions(self):
|
||||||
|
if self.execute_button:
|
||||||
|
self.execute_button.set_sensitive(False)
|
||||||
if self.register_button:
|
if self.register_button:
|
||||||
self.register_button.set_sensitive(False)
|
self.register_button.set_sensitive(False)
|
||||||
if self.browse_button:
|
if self.browse_button:
|
||||||
|
@ -1241,6 +1269,8 @@ class ToplevelAgentBrowser(AgentBrowser):
|
||||||
|
|
||||||
def _update_actions(self, jid, node, identities, features, data):
|
def _update_actions(self, jid, node, identities, features, data):
|
||||||
AgentBrowser._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:
|
if self.register_button and xmpp.NS_REGISTER in features:
|
||||||
# We can register this agent
|
# We can register this agent
|
||||||
registered_transports = []
|
registered_transports = []
|
||||||
|
|
Loading…
Add table
Reference in a new issue