hotwire-ssh r5 - in trunk/hotssh: . hotvte
- From: walters svn gnome org
- To: svn-commits-list gnome org
- Subject: hotwire-ssh r5 - in trunk/hotssh: . hotvte
- Date: Fri, 23 May 2008 01:51:46 +0000 (UTC)
Author: walters
Date: Fri May 23 01:51:46 2008
New Revision: 5
URL: http://svn.gnome.org/viewvc/hotwire-ssh?rev=5&view=rev
Log:
Make msgarea global, handle NM changes better
Modified:
trunk/hotssh/hotvte/vtewindow.py
trunk/hotssh/sshwindow.py
Modified: trunk/hotssh/hotvte/vtewindow.py
==============================================================================
--- trunk/hotssh/hotvte/vtewindow.py (original)
+++ trunk/hotssh/hotvte/vtewindow.py Fri May 23 01:51:46 2008
@@ -24,7 +24,7 @@
import dbus,dbus.glib,dbus.service
from hotssh.hotvte.vteterm import VteTerminalWidget
-
+from hotssh.hotlib_ui.msgarea import MsgAreaController
from hotssh.hotlib_ui.quickfind import QuickFindWindow
_logger = logging.getLogger("hotvte.VteWindow")
@@ -96,6 +96,9 @@
self.__create_ui()
vbox.pack_start(self.__ui.get_widget('/Menubar'), expand=False)
+ self.__msgarea_mgr = MsgAreaController()
+ vbox.pack_start(self.__msgarea_mgr, expand=False)
+
self.connect("key-press-event", self.__on_keypress)
self.__title = title
@@ -156,6 +159,9 @@
def _get_vbox(self):
return self.__vbox
+
+ def _get_msgarea_mgr(self):
+ return self.__msgarea_mgr
def __on_page_switch(self, n, p, pn):
_logger.debug("got page switch, pn=%d", pn)
Modified: trunk/hotssh/sshwindow.py
==============================================================================
--- trunk/hotssh/sshwindow.py (original)
+++ trunk/hotssh/sshwindow.py Fri May 23 01:51:46 2008
@@ -792,8 +792,12 @@
self._get_notebook().connect('switch-page', self.__on_page_switch)
try:
+ self.__cached_nm_connected = None
self.__nm_proxy = dbus.SystemBus().get_object('org.freedesktop.NetworkManager', '/org/freedesktop/NetworkManager')
self.__nm_proxy.connect_to_signal('StateChange', self.__on_nm_state_change)
+ dbus.Interface(self.__nm_proxy, 'org.freedesktop.DBus.Properties').Get('org.freedesktop.NetworkManager',
+ 'State', reply_handler=self.__on_nm_state_change,
+ error_handler=self.__on_dbus_error)
except dbus.DBusException, e:
_logger.debug("Couldn't find NetworkManager")
self.__nm_proxy = None
@@ -861,19 +865,37 @@
if len(widget.ssh_options) > 1:
text += _('; Options: ') + (' '.join(map(gobject.markup_escape_text, widget.ssh_options)))
id = self.__statusbar.push(self.__statusbar_ctx, text)
-
- def __on_nm_state_change(self, *args):
- self.__sync_nm_state()
-
- def __sync_nm_state(self):
- self.__nm_proxy.GetActiveConnections(reply_handler=self.__on_nm_connections, error_handler=self.__on_dbus_error)
-
- def __on_dbus_error(self, *args):
- _logger.debug("caught DBus error: %r", args, exc_info=True)
+
+ def __on_dbus_error(self, *args, **kwargs):
+ _logger.error("DBus error: %r %r", args, kwargs)
@log_except(_logger)
- def __on_nm_connections(self, connections):
- _logger.debug("nm connections: %s", connections)
+ def __on_nm_state_change(self, *args):
+ if len(args) > 1:
+ (_, curstate) = args
+ else:
+ curstate = args[0]
+ _logger.debug("nm state: %s", curstate)
+ connected = curstate == 3
+ if (self.__cached_nm_connected is not None) and \
+ (not self.__cached_nm_connected) and connected:
+ self.__do_network_change_notify()
+ self.__cached_nm_connected = connected
+
+ def __do_network_change_notify(self):
+ mgr = self._get_msgarea_mgr()
+ msgarea = mgr.new_from_text_and_icon(gtk.STOCK_INFO, _('Network connection changed'),
+ buttons=[(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)])
+ reconnect = self.__action_group.get_action('ReconnectAll')
+ msgarea.add_stock_button_with_text(reconnect.get_property('label'),
+ reconnect.get_property('stock-id'), gtk.RESPONSE_ACCEPT)
+ msgarea.connect('response', self.__on_msgarea_response)
+ msgarea.show_all()
+
+ def __on_msgarea_response(self, msgarea, respid):
+ if respid == gtk.RESPONSE_ACCEPT:
+ reconnect = self.__action_group.get_action('ReconnectAll')
+ reconnect.activate()
@log_except(_logger)
def __on_host_status(self, hostmon, host, connected, latency):
@@ -939,6 +961,7 @@
_('Open a SFTP connection'), self.__open_sftp_cb),
('ConnectionMenu', None, _('Connection')),
('Reconnect', gtk.STOCK_CONNECT, _('_Reconnect'), '<control><shift>R', _('Reset connection to server'), self.__reconnect_cb),
+ ('ReconnectAll', gtk.STOCK_CONNECT, _('Re_connect All'), None, _('Reset all connections'), self.__reconnect_all_cb),
]
self.__action_group = self._merge_ui(self.__actions, self.__ui_string)
@@ -986,6 +1009,11 @@
notebook = self._get_notebook()
widget = notebook.get_nth_page(notebook.get_current_page())
widget.ssh_reconnect()
+
+ @log_except(_logger)
+ def __reconnect_all_cb(self, a):
+ for widget in self._get_notebook().get_children():
+ widget.ssh_reconnect()
class SshApp(VteApp):
def __init__(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]