commit b5c7dca851bb7f1e13c90bd667136398fa89ce01 Author: Damian Johnson atagar@torproject.org Date: Tue May 31 20:50:03 2011 -0700
Minor api, formatting, and documentation changes
Revising some of the merged changes for the menus. --- src/cli/controller.py | 10 +++------- src/cli/popups.py | 15 +++++---------- src/util/menuItem.py | 22 ++++++++++++---------- src/util/panel.py | 25 +++++++++++++++++-------- 4 files changed, 37 insertions(+), 35 deletions(-)
diff --git a/src/cli/controller.py b/src/cli/controller.py index bb258c3..fcbaed5 100644 --- a/src/cli/controller.py +++ b/src/cli/controller.py @@ -7,6 +7,7 @@ import time import curses import threading
+import cli.menu import cli.popups import cli.headerPanel import cli.logPanel @@ -17,7 +18,6 @@ import cli.graphing.bandwidthStats import cli.graphing.connStats import cli.graphing.resourceStats import cli.connections.connPanel -import cli.menu
from util import connections, conf, enum, log, panel, sysTools, torConfig, torTools
@@ -77,9 +77,6 @@ def initController(stdscr, startTime): # fourth page: torrc pagePanels.append([cli.torrcPanel.TorrcPanel(stdscr, cli.torrcPanel.Config.TORRC, config)])
- # top menu - menu = cli.menu.Menu() - # initializes the controller ARM_CONTROLLER = Controller(stdscr, stickyPanels, pagePanels)
@@ -110,7 +107,7 @@ class LabelPanel(panel.Panel): """
def __init__(self, stdscr): - panel.Panel.__init__(self, stdscr, "msg", 0, 1) + panel.Panel.__init__(self, stdscr, "msg", 0, height=1) self.msgText = "" self.msgAttr = curses.A_NORMAL
@@ -144,7 +141,6 @@ class Controller: stdscr - curses window stickyPanels - panels shown at the top of each page pagePanels - list of pages, each being a list of the panels on it - menu - popup drop-down menu """
self._screen = stdscr @@ -304,7 +300,7 @@ class Controller:
if attr == None: if not self._isPaused: - msg = "page %i / %i - m: menu, q: quit, p: pause, h: page help" % (self._page + 1, len(self._pagePanels)) + msg = "page %i / %i - m: menu, p: pause, h: page help, q: quit" % (self._page + 1, len(self._pagePanels)) attr = curses.A_NORMAL else: msg = "Paused" diff --git a/src/cli/popups.py b/src/cli/popups.py index b3eb105..0e50aa1 100644 --- a/src/cli/popups.py +++ b/src/cli/popups.py @@ -8,7 +8,7 @@ import cli.controller
from util import panel, uiTools
-def init(height = -1, width = -1, top = -1, left = -1): +def init(height = -1, width = -1, top = 0, left = 0): """ Preparation for displaying a popup. This creates a popup with a valid subwindow instance. If that's successful then the curses lock is acquired @@ -19,19 +19,14 @@ def init(height = -1, width = -1, top = -1, left = -1): Arguments: height - maximum height of the popup width - maximum width of the popup + top - top position, relative to the sticky content + left - left position from the screen """
control = cli.controller.getController() - topSize = sum(stickyPanel.getHeight() for stickyPanel in control.getStickyPanels()) - leftSize = 0 - - if top != -1: - topSize = topSize + top - if left != -1: - leftSize = left + stickyHeight = sum(stickyPanel.getHeight() for stickyPanel in control.getStickyPanels())
- popup = panel.Panel(control.getScreen(), "popup", topSize, height, width) - popup.setLeft(leftSize) + popup = panel.Panel(control.getScreen(), "popup", top + stickyHeight, left, height, width) popup.setVisible(True)
# Redraws the popup to prepare a subwindow instance. If none is spawned then diff --git a/src/util/menuItem.py b/src/util/menuItem.py index b48c433..277c78a 100644 --- a/src/util/menuItem.py +++ b/src/util/menuItem.py @@ -1,25 +1,27 @@ """ -Menu Item class, used by the drop-down menus +Menu Item class, used by the drop-down menus. """
class MenuItem(): - """Contains title, callback handler and possible children""" - + """ + Contains title, callback handler and possible children. + """ + def __init__(self, label=None, callback=None, children=[], enabled=None): self._label = label self._callback = callback self._children = children self._enabled = enabled - + def getLabel(self): return self._label - + def isLeaf(self): return self._children == [] - + def isParent(self): return self._children != [] - + def isEnabled(self): if self._enabled == None: return True @@ -27,13 +29,13 @@ class MenuItem(): return self._enabled() else: return self._enabled - + def getChildren(self): return self._children - + def getChildrenCount(self): return len(self._children) - + def select(self): return self._callback(self)
diff --git a/src/util/panel.py b/src/util/panel.py index 4fc2158..93b44c2 100644 --- a/src/util/panel.py +++ b/src/util/panel.py @@ -43,7 +43,7 @@ class Panel(): redraw(). """
- def __init__(self, parent, name, top, height=-1, width=-1): + def __init__(self, parent, name, top, left=0, height=-1, width=-1): """ Creates a durable wrapper for a curses subwindow in the given parent.
@@ -51,6 +51,7 @@ class Panel(): parent - parent curses window name - identifier for the panel top - positioning of top within parent + left - positioning of the left edge within the parent height - maximum height of panel (uses all available space if -1) width - maximum width of panel (uses all available space if -1) """ @@ -74,7 +75,7 @@ class Panel(): self.pauseTime = -1
self.top = top - self.left = 0 + self.left = left self.height = height self.width = width
@@ -256,25 +257,33 @@ class Panel(): self.top = top self.win = None
- def getHeight(self): + def getLeft(self): """ - Provides the height used for subwindows (-1 if it isn't limited). + Provides the left position where this subwindow is placed within its + parent. """
- return self.height - + return self.left + def setLeft(self, left): """ - Changes the position where subwindows are placed within its parent. + Changes the left position where this subwindow is placed within its parent.
Arguments: - top - positioning of top within parent + left - positioning of top within parent """
if self.left != left: self.left = left self.win = None
+ def getHeight(self): + """ + Provides the height used for subwindows (-1 if it isn't limited). + """ + + return self.height + def setHeight(self, height): """ Changes the height used for subwindows. This uses all available space if -1.
tor-commits@lists.torproject.org