commit bf373956a64afa6126b0836329042775119a6114 Author: Damian Johnson atagar@torproject.org Date: Sun Jun 12 17:39:19 2011 -0700
Binding handlers for the torrc submenu --- README | 1 + src/cli/menu/actions.py | 26 ++++++++++++++++++ src/cli/torrcPanel.py | 65 ++++++++++++++++++++++++++++++++++------------- 3 files changed, 74 insertions(+), 18 deletions(-)
diff --git a/README b/README index 0f26163..44fabf1 100644 --- a/README +++ b/README @@ -180,6 +180,7 @@ Layout: __init__.py menu.py - provides an interactive menu item.py - individual items within the menu + actions.py - handlers for menu selections
__init__.py controller.py - main display loop, handling input and layout diff --git a/src/cli/menu/actions.py b/src/cli/menu/actions.py index 2072ead..53e5d1c 100644 --- a/src/cli/menu/actions.py +++ b/src/cli/menu/actions.py @@ -30,6 +30,8 @@ def makeMenu(): baseMenu.add(makeConnectionsMenu(pagePanel)) elif pagePanel.getName() == "configuration": baseMenu.add(makeConfigurationMenu(pagePanel)) + elif pagePanel.getName() == "torrc": + baseMenu.add(makeTorrcMenu(pagePanel))
return baseMenu
@@ -238,3 +240,27 @@ def makeConfigurationMenu(configPanel):
return configMenu
+def makeTorrcMenu(torrcPanel): + """ + Submenu for the torrc panel, consisting of... + Reload + Show / Hide Comments + Show / Hide Line Numbers + + Arguments: + torrcPanel - instance of the torrc panel + """ + + torrcMenu = cli.menu.item.Submenu("Torrc") + torrcMenu.add(cli.menu.item.MenuItem("Reload", torrcPanel.reloadTorrc)) + + if torrcPanel.stripComments: label, arg = "Show", True + else: label, arg = "Hide", False + torrcMenu.add(cli.menu.item.MenuItem("%s Comments" % label, functools.partial(torrcPanel.setCommentsVisible, arg))) + + if torrcPanel.showLineNum: label, arg = "Hide", False + else: label, arg = "Show", True + torrcMenu.add(cli.menu.item.MenuItem("%s Line Numbers" % label, functools.partial(torrcPanel.setLineNumberVisible, arg))) + + return torrcMenu + diff --git a/src/cli/torrcPanel.py b/src/cli/torrcPanel.py index a12cc87..c273bf0 100644 --- a/src/cli/torrcPanel.py +++ b/src/cli/torrcPanel.py @@ -6,6 +6,7 @@ import math import curses import threading
+import cli.controller import popups
from util import conf, enum, panel, torConfig, torTools, uiTools @@ -59,6 +60,49 @@ class TorrcPanel(panel.Panel): self.redraw(True) except: pass
+ def setCommentsVisible(self, isVisible): + """ + Sets if comments and blank lines are shown or stripped. + + Arguments: + isVisible - displayed comments and blank lines if true, strips otherwise + """ + + self.stripComments = not isVisible + self._lastContentHeightArgs = None + self.redraw(True) + + def setLineNumberVisible(self, isVisible): + """ + Sets if line numbers are shown or hidden. + + Arguments: + isVisible - displays line numbers if true, hides otherwise + """ + + self.showLineNum = isVisible + self._lastContentHeightArgs = None + self.redraw(True) + + def reloadTorrc(self): + """ + Reloads the torrc, displaying an indicator of success or failure. + """ + + cli.controller.getController().requestRedraw(True) + + try: + torConfig.getTorrc().load() + self._lastContentHeightArgs = None + self.redraw(True) + resultMsg = "torrc reloaded" + except IOError: + resultMsg = "failed to reload torrc" + + self._lastContentHeightArgs = None + self.redraw(True) + popups.showMsg(resultMsg, 1) + def handleKey(self, key): self.valsLock.acquire() isKeystrokeConsumed = True @@ -70,26 +114,11 @@ class TorrcPanel(panel.Panel): self.scroll = newScroll self.redraw(True) elif key == ord('n') or key == ord('N'): - self.showLineNum = not self.showLineNum - self._lastContentHeightArgs = None - self.redraw(True) + self.setLineNumberVisible(not self.showLineNum) elif key == ord('s') or key == ord('S'): - self.stripComments = not self.stripComments - self._lastContentHeightArgs = None - self.redraw(True) + self.setCommentsVisible(self.stripComments) elif key == ord('r') or key == ord('R'): - # reloads torrc, providing a notice if successful or not - try: - torConfig.getTorrc().load() - self._lastContentHeightArgs = None - self.redraw(True) - resultMsg = "torrc reloaded" - except IOError: - resultMsg = "failed to reload torrc" - - self._lastContentHeightArgs = None - self.redraw(True) - popups.showMsg(resultMsg, 1) + self.reloadTorrc() else: isKeystrokeConsumed = False
self.valsLock.release()
tor-commits@lists.torproject.org