commit 0c93c14b64a46d464a39bce24a986b8a09a9fe93 Author: Damian Johnson atagar@torproject.org Date: Fri Jan 1 16:31:56 2016 -0800
Using blank ConfigOption when unavailable
Making a blank ConfigOption rather than a bunch of 'if defined' checks. --- nyx/__init__.py | 6 +++--- nyx/config_panel.py | 40 +++++++++++----------------------------- nyx/connection_panel.py | 4 +++- nyx/util/__init__.py | 18 +++++++++--------- nyx/util/tor_config.py | 1 - test/settings.cfg | 1 + 6 files changed, 27 insertions(+), 43 deletions(-)
diff --git a/nyx/__init__.py b/nyx/__init__.py index 078955d..4d58435 100644 --- a/nyx/__init__.py +++ b/nyx/__init__.py @@ -2,6 +2,9 @@ Tor curses monitoring application. """
+import distutils.spawn +import sys + __version__ = '1.4.6-dev' __release_date__ = 'April 28, 2011' __author__ = 'Damian Johnson' @@ -21,9 +24,6 @@ __all__ = [ 'torrc_panel', ]
-import distutils.spawn -import sys -
def main(): try: diff --git a/nyx/config_panel.py b/nyx/config_panel.py index c2fe11a..ef80a59 100644 --- a/nyx/config_panel.py +++ b/nyx/config_panel.py @@ -59,16 +59,7 @@ class ConfigEntry(): def __init__(self, option, entry_type): self._option = option self._value_type = entry_type - self._man_entry = tor_manual().config_options.get(option) - - def category(self): - """ - Provides the category of this configuration option. - - :returns: **Category** this option belongs to - """ - - return self._man_entry.category if self._man_entry else stem.manual.Category.UNKNOWN + self._man_entry = tor_manual().config_options.get(option, stem.manual.ConfigOption(option))
def option(self): """ @@ -110,15 +101,6 @@ class ConfigEntry():
return self._value_type # TODO: should this be an enum instead?
- def summary(self): - """ - Provides a summery of this configuration option. - - :returns: short **str** description of the option - """ - - return self._man_entry.summary if self._man_entry else '' - def manual_entry(self): """ Provides the entry's man page entry. @@ -147,7 +129,7 @@ class ConfigEntry(): """
if attr == SortAttr.CATEGORY: - return self.category() + return self.manual_entry().category elif attr == SortAttr.OPTION: return self.option() elif attr == SortAttr.VALUE: @@ -155,11 +137,11 @@ class ConfigEntry(): elif attr == SortAttr.VALUE_TYPE: return self.value_type() elif attr == SortAttr.USAGE: - return self._man_entry.usage if self._man_entry else '' + return self._man_entry.usage elif attr == SortAttr.SUMMARY: - return self.summary() + return self.manual_entry().summary elif attr == SortAttr.DESCRIPTION: - return self._man_entry.description if self._man_entry else '' + return self._man_entry.description elif attr == SortAttr.MAN_PAGE_ENTRY: return tor_manual().config_options.keys().index(self.option()) if self.option() in tor_manual().config_options else 99999 # sorts non-man entries last elif attr == SortAttr.IS_SET: @@ -447,14 +429,14 @@ class ConfigPanel(panel.Panel): draw_line = line_number + DETAILS_HEIGHT + 2 - scroll_location
line_format = [curses.A_BOLD if entry.is_set() else curses.A_NORMAL] - line_format += [CONFIG['attr.config.category_color'].get(entry.category(), 'white')] + line_format += [CONFIG['attr.config.category_color'].get(entry.manual_entry().category, 'white')]
if entry == cursor_selection: line_format += [curses.A_STANDOUT]
option_label = str_tools.crop(entry.option(), OPTION_WIDTH) value_label = str_tools.crop(entry.value(), value_width) - summary_label = str_tools.crop(entry.summary(), description_width, None) + summary_label = str_tools.crop(entry.manual_entry().summary, description_width, None) line_text_layout = '%%-%is %%-%is %%-%is' % (OPTION_WIDTH, value_width, description_width) line_text = line_text_layout % (option_label, value_label, summary_label)
@@ -479,12 +461,12 @@ class ConfigPanel(panel.Panel): if is_scrollbar_visible: self.addch(detail_panel_height, 1, curses.ACS_TTEE)
- selection_format = (curses.A_BOLD, CONFIG['attr.config.category_color'].get(selection.category(), 'white')) + selection_format = (curses.A_BOLD, CONFIG['attr.config.category_color'].get(selection.manual_entry().category, 'white'))
# first entry: # <option> (<category> Option)
- option_label = ' (%s Option)' % selection.category() + option_label = ' (%s Option)' % selection.manual_entry().category self.addstr(1, 2, selection.option() + option_label, *selection_format)
# second entry: @@ -494,7 +476,7 @@ class ConfigPanel(panel.Panel): value_attr_label = ', '.join([ 'custom' if selection.is_set() else 'default', selection.value_type(), - 'usage: %s' % (selection.manual_entry().usage if selection.manual_entry() else '') + 'usage: %s' % (selection.manual_entry().usage) ])
value_label_width = max(0, width - 12 - len(value_attr_label)) @@ -505,7 +487,7 @@ class ConfigPanel(panel.Panel): # remainder is filled with the man page description
description_height = max(0, detail_panel_height - 3) - description_content = 'Description: %s' % (selection.manual_entry().description if selection.manual_entry() else '') + description_content = 'Description: %s' % (selection.manual_entry().description)
for i in range(description_height): if not description_content: diff --git a/nyx/connection_panel.py b/nyx/connection_panel.py index 42ddebd..cf4286c 100644 --- a/nyx/connection_panel.py +++ b/nyx/connection_panel.py @@ -350,8 +350,10 @@ class ConnectionPanel(panel.Panel, threading.Thread): if not selection: break
+ def is_close_key(key): + return key.is_selection() or key.match('d') or key.match('left') or key.match('right') + color = CONFIG['attr.connection.category_color'].get(selection.entry.get_type(), 'white') - is_close_key = lambda key: key.is_selection() or key.match('d') or key.match('left') or key.match('right') key = nyx.popups.show_descriptor_popup(selection.fingerprint, color, self.max_x, is_close_key)
if not key or key.is_selection() or key.match('d'): diff --git a/nyx/util/__init__.py b/nyx/util/__init__.py index 13cb6db..c19b9c7 100644 --- a/nyx/util/__init__.py +++ b/nyx/util/__init__.py @@ -3,15 +3,6 @@ General purpose utilities for a variety of tasks supporting nyx features and safely working with curses (hiding some of the gory details). """
-__all__ = [ - 'log', - 'panel', - 'text_input', - 'tor_config', - 'tracker', - 'ui_tools', -] - import os import sys
@@ -21,6 +12,15 @@ import stem.util.log
from nyx.util import log
+__all__ = [ + 'log', + 'panel', + 'text_input', + 'tor_config', + 'tracker', + 'ui_tools', +] + TOR_CONTROLLER = None BASE_DIR = os.path.sep.join(__file__.split(os.path.sep)[:-2]) TESTING = False diff --git a/nyx/util/tor_config.py b/nyx/util/tor_config.py index f404d3d..dea1f09 100644 --- a/nyx/util/tor_config.py +++ b/nyx/util/tor_config.py @@ -4,7 +4,6 @@ Helper functions for working with tor's configuration file.
import os import time -import socket import threading
import stem.version diff --git a/test/settings.cfg b/test/settings.cfg index d4aff84..21679cd 100644 --- a/test/settings.cfg +++ b/test/settings.cfg @@ -1,6 +1,7 @@ # PEP8 compliance issues that we're ignoreing.
pep8.ignore E111 +pep8.ignore E114 pep8.ignore E121 pep8.ignore E501 pep8.ignore E251