[tor-commits] [nyx/master] Tidy up config panel's draw() method

atagar at torproject.org atagar at torproject.org
Mon Jan 4 17:43:06 UTC 2016


commit 96e14974119da71b8682b1ff8c889cd5ad982f89
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Jan 4 09:35:34 2016 -0800

    Tidy up config panel's draw() method
    
    Last bit of the config panel! Just revising bits to be a bit more concise.
---
 nyx/config_panel.py    |   47 +++++++++++++++++++----------------------------
 nyx/util/tor_config.py |    2 --
 2 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/nyx/config_panel.py b/nyx/config_panel.py
index eb51ba3..8f71861 100644
--- a/nyx/config_panel.py
+++ b/nyx/config_panel.py
@@ -278,15 +278,9 @@ class ConfigPanel(panel.Panel):
     if selection is not None:
       self._draw_selection_details(selection, width)
 
-      if is_scrollbar_visible:
-        self.addch(DETAILS_HEIGHT - 1, 1, curses.ACS_TTEE)
-
     if self.is_title_visible():
       hidden_msg = "press 'a' to hide most options" if self._show_all else "press 'a' to show all options"
-      title_label = 'Tor Configuration (%s):' % hidden_msg
-      self.addstr(0, 0, title_label, curses.A_STANDOUT)
-
-    # draws left-hand scroll bar if content's longer than the height
+      self.addstr(0, 0, 'Tor Configuration (%s):' % hidden_msg, curses.A_STANDOUT)
 
     scroll_offset = 1
 
@@ -294,35 +288,32 @@ class ConfigPanel(panel.Panel):
       scroll_offset = 3
       self.add_scroll_bar(scroll_location, scroll_location + height - DETAILS_HEIGHT, len(contents), DETAILS_HEIGHT)
 
-    value_width = VALUE_WIDTH
-    description_width = max(0, width - scroll_offset - NAME_WIDTH - value_width - 2)
+      if selection is not None:
+        self.addch(DETAILS_HEIGHT - 1, 1, curses.ACS_TTEE)
+
+    # Description column can grow up to eighty characters. After that any extra
+    # space goes to the value.
 
-    # if the description column is overly long then use its space for the
-    # value instead
+    description_width = max(0, width - scroll_offset - NAME_WIDTH - VALUE_WIDTH - 2)
 
     if description_width > 80:
-      value_width += description_width - 80
+      value_width = VALUE_WIDTH + (description_width - 80)
       description_width = 80
+    else:
+      value_width = VALUE_WIDTH
 
-    for line_number in range(scroll_location, len(contents)):
-      entry = contents[line_number]
-      draw_line = line_number + DETAILS_HEIGHT - scroll_location
-
-      line_format = [curses.A_BOLD if entry.is_set() else curses.A_NORMAL]
-      line_format += [CONFIG['attr.config.category_color'].get(entry.manual.category, 'white')]
-
-      if entry == selection:
-        line_format += [curses.A_STANDOUT]
+    for i, entry in enumerate(contents[scroll_location:]):
+      attr = nyx.util.ui_tools.get_color(CONFIG['attr.config.category_color'].get(entry.manual.category, 'white'))
+      attr |= curses.A_BOLD if entry.is_set() else curses.A_NORMAL
+      attr |= curses.A_STANDOUT if entry == selection else curses.A_NORMAL
 
-      option_label = str_tools.crop(entry.name, NAME_WIDTH)
-      value_label = str_tools.crop(entry.value(), value_width)
-      summary_label = str_tools.crop(entry.manual.summary, description_width, None)
-      line_text_layout = '%%-%is %%-%is %%-%is' % (NAME_WIDTH, value_width, description_width)
-      line_text = line_text_layout % (option_label, value_label, summary_label)
+      option_label = str_tools.crop(entry.name, NAME_WIDTH).ljust(NAME_WIDTH + 1)
+      value_label = str_tools.crop(entry.value(), value_width).ljust(value_width + 1)
+      summary_label = str_tools.crop(entry.manual.summary, description_width).ljust(description_width)
 
-      self.addstr(draw_line, scroll_offset, line_text, *line_format)
+      self.addstr(DETAILS_HEIGHT + i, scroll_offset, option_label + value_label + summary_label, attr)
 
-      if draw_line >= height:
+      if DETAILS_HEIGHT + i >= height:
         break
 
   def _get_config_options(self):
diff --git a/nyx/util/tor_config.py b/nyx/util/tor_config.py
index 56c6a7f..4749223 100644
--- a/nyx/util/tor_config.py
+++ b/nyx/util/tor_config.py
@@ -2,8 +2,6 @@
 Helper functions for working with tor's configuration file.
 """
 
-import os
-import time
 import threading
 
 import stem.version





More information about the tor-commits mailing list