commit 6fa253c08ddbd845b70fb0c0c50a61af069cbda9 Author: Damian Johnson atagar@torproject.org Date: Sun Jan 3 16:36:10 2016 -0800
Include border in DETAILS_HEIGHT constant
Having the DETAILS_HEIGHT include the top and bottom border, making it two larger. Just about every usage was adding to it for that reason anyway. --- nyx/config_panel.py | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-)
diff --git a/nyx/config_panel.py b/nyx/config_panel.py index 47d25b8..981da7d 100644 --- a/nyx/config_panel.py +++ b/nyx/config_panel.py @@ -17,7 +17,7 @@ from stem.util import conf, enum, log, str_tools
SortAttr = enum.Enum('NAME', 'VALUE', 'VALUE_TYPE', 'CATEGORY', 'USAGE', 'SUMMARY', 'DESCRIPTION', 'MAN_PAGE_ENTRY', 'IS_SET')
-DETAILS_HEIGHT = 6 +DETAILS_HEIGHT = 8 NAME_WIDTH = 25 VALUE_WIDTH = 15
@@ -219,7 +219,7 @@ class ConfigPanel(panel.Panel):
def handle_key(self, key): if key.is_scroll(): - page_height = self.get_preferred_size()[0] - DETAILS_HEIGHT - 2 + page_height = self.get_preferred_size()[0] - DETAILS_HEIGHT is_changed = self._scroller.handle_key(key, self._get_config_options(), page_height)
if is_changed: @@ -270,18 +270,13 @@ class ConfigPanel(panel.Panel): ]
def draw(self, width, height): - # Shrink detail panel if there isn't sufficient room for the whole - # thing. The extra line is for the bottom border. - contents = self._get_config_options() - scroll_location = self._scroller.get_scroll_location(contents, height - DETAILS_HEIGHT - 2) - cursor_selection = self._scroller.get_cursor_selection(contents) - is_scrollbar_visible = len(contents) > height - DETAILS_HEIGHT - 2 - - if cursor_selection is not None: - self._draw_selection_panel(cursor_selection, width, DETAILS_HEIGHT + 1, is_scrollbar_visible) + selection = self._scroller.get_cursor_selection(contents) + scroll_location = self._scroller.get_scroll_location(contents, height - DETAILS_HEIGHT) + is_scrollbar_visible = len(contents) > height - DETAILS_HEIGHT
- # draws the top label + if selection is not None: + self._draw_selection_panel(selection, width, is_scrollbar_visible)
if self.is_title_visible(): hidden_msg = "press 'a' to hide most options" if self._show_all else "press 'a' to show all options" @@ -294,7 +289,7 @@ class ConfigPanel(panel.Panel):
if is_scrollbar_visible: scroll_offset = 3 - self.add_scroll_bar(scroll_location, scroll_location + height - DETAILS_HEIGHT - 2, len(contents), DETAILS_HEIGHT + 2) + 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) @@ -308,12 +303,12 @@ class ConfigPanel(panel.Panel):
for line_number in range(scroll_location, len(contents)): entry = contents[line_number] - draw_line = line_number + DETAILS_HEIGHT + 2 - scroll_location + 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 == cursor_selection: + if entry == selection: line_format += [curses.A_STANDOUT]
option_label = str_tools.crop(entry.name, NAME_WIDTH) @@ -330,7 +325,7 @@ class ConfigPanel(panel.Panel): def _get_config_options(self): return self._contents if self._show_all else filter(lambda entry: stem.manual.is_important(entry.name) or entry.is_set(), self._contents)
- def _draw_selection_panel(self, selection, width, detail_panel_height, is_scrollbar_visible): + def _draw_selection_panel(self, selection, width, is_scrollbar_visible): """ Renders a panel for the selected configuration option. """ @@ -338,10 +333,10 @@ class ConfigPanel(panel.Panel): # This is a solid border unless the scrollbar is visible, in which case a # 'T' pipe connects the border to the bar.
- ui_tools.draw_box(self, 0, 0, width, detail_panel_height + 1) + ui_tools.draw_box(self, 0, 0, width, DETAILS_HEIGHT)
if is_scrollbar_visible: - self.addch(detail_panel_height, 1, curses.ACS_TTEE) + self.addch(DETAILS_HEIGHT - 1, 1, curses.ACS_TTEE)
selection_format = (curses.A_BOLD, CONFIG['attr.config.category_color'].get(selection.manual.category, 'white'))
@@ -354,7 +349,7 @@ class ConfigPanel(panel.Panel): # second entry: # Value: <value> ([default|custom], <type>, usage: <argument usage>)
- if detail_panel_height >= 3: + if DETAILS_HEIGHT >= 4: value_attr_label = ', '.join([ 'custom' if selection.is_set() else 'default', selection.value_type, @@ -368,7 +363,7 @@ class ConfigPanel(panel.Panel):
# remainder is filled with the man page description
- description_height = max(0, detail_panel_height - 3) + description_height = max(0, DETAILS_HEIGHT - 4) description_content = 'Description: %s' % (selection.manual.description)
for i in range(description_height):
tor-commits@lists.torproject.org