[tor-commits] [nyx/master] Drop 'title_visible' methods from the Panel

atagar at torproject.org atagar at torproject.org
Mon Mar 21 16:41:40 UTC 2016


commit 84cae714f5b6d386109147aaad007ac5b0f2635e
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Mar 20 12:15:37 2016 -0700

    Drop 'title_visible' methods from the Panel
    
    I never liked these. They're a hack needed by a couple popups to hide the title
    of the panel below them. I couldn't think of an elegant method for doing this,
    but did come up with a more localized hack. We now make an extra subwindow that
    covers the panel title and erase that.
---
 nyx/panel/__init__.py   | 16 -----------
 nyx/panel/config.py     |  5 ++--
 nyx/panel/connection.py |  6 +---
 nyx/panel/graph.py      |  3 +-
 nyx/panel/log.py        |  3 +-
 nyx/panel/torrc.py      |  7 ++---
 nyx/popups.py           | 74 ++++++++++++++++++++++++-------------------------
 7 files changed, 44 insertions(+), 70 deletions(-)

diff --git a/nyx/panel/__init__.py b/nyx/panel/__init__.py
index 62ae709..30b8b99 100644
--- a/nyx/panel/__init__.py
+++ b/nyx/panel/__init__.py
@@ -139,7 +139,6 @@ class Panel(object):
 
     self.panel_name = name
     self.visible = False
-    self.title_visible = True
 
     self.paused = False
     self.pause_time = -1
@@ -168,21 +167,6 @@ class Panel(object):
 
     return self.panel_name
 
-  def is_title_visible(self):
-    """
-    True if the title is configured to be visible, False otherwise.
-    """
-
-    return self.title_visible
-
-  def set_title_visible(self, is_visible):
-    """
-    Configures the panel's title to be visible or not when it's next redrawn.
-    This is not guarenteed to be respected (not all panels have a title).
-    """
-
-    self.title_visible = is_visible
-
   def set_visible(self, is_visible):
     """
     Toggles if the panel is visible or not.
diff --git a/nyx/panel/config.py b/nyx/panel/config.py
index 765345a..8b759c5 100644
--- a/nyx/panel/config.py
+++ b/nyx/panel/config.py
@@ -291,9 +291,8 @@ class ConfigPanel(nyx.panel.Panel):
     if selected is not None:
       self._draw_selection_details(selected, width)
 
-    if self.is_title_visible():
-      hidden_msg = "press 'a' to hide most options" if self._show_all else "press 'a' to show all options"
-      self.addstr(0, 0, 'Tor Configuration (%s):' % hidden_msg, HIGHLIGHT)
+    hidden_msg = "press 'a' to hide most options" if self._show_all else "press 'a' to show all options"
+    self.addstr(0, 0, 'Tor Configuration (%s):' % hidden_msg, HIGHLIGHT)
 
     scroll_offset = 1
 
diff --git a/nyx/panel/connection.py b/nyx/panel/connection.py
index 3d571ec..952148f 100644
--- a/nyx/panel/connection.py
+++ b/nyx/panel/connection.py
@@ -344,8 +344,6 @@ class ConnectionPanel(nyx.panel.Panel, threading.Thread):
       if selected != -1:
         connection_tracker.set_custom_resolver(None if selected == 0 else options[selected])
     elif key.match('d'):
-      self.set_title_visible(False)
-      self.redraw(True)
       entries = self._entries
 
       while True:
@@ -368,7 +366,6 @@ class ConnectionPanel(nyx.panel.Panel, threading.Thread):
         elif key.match('right'):
           self.handle_key(nyx.curses.KeyInput(curses.KEY_DOWN))
 
-      self.set_title_visible(True)
       self.redraw(True)
     elif key.match('c') and user_traffic_allowed.inbound:
       nyx.popups.show_count_dialog('Client Locales', self._client_locale_usage)
@@ -451,8 +448,7 @@ class ConnectionPanel(nyx.panel.Panel, threading.Thread):
     is_scrollbar_visible = len(lines) > height - details_offset - 1
     scroll_offset = 2 if is_scrollbar_visible else 0
 
-    if self.is_title_visible():
-      self._draw_title(entries, self._show_details)
+    self._draw_title(entries, self._show_details)
 
     if is_showing_details:
       self._draw_details(selected, width, is_scrollbar_visible)
diff --git a/nyx/panel/graph.py b/nyx/panel/graph.py
index b325dd1..7315bea 100644
--- a/nyx/panel/graph.py
+++ b/nyx/panel/graph.py
@@ -573,8 +573,7 @@ class GraphPanel(nyx.panel.Panel):
       right_to_left = CONFIG['features.graph.right_to_left'],
     )
 
-    if self.is_title_visible():
-      self.addstr(0, 0, attr.stat.title(width), HIGHLIGHT)
+    self.addstr(0, 0, attr.stat.title(width), HIGHLIGHT)
 
     self._draw_subgraph(attr, attr.stat.primary, 0, PRIMARY_COLOR)
     self._draw_subgraph(attr, attr.stat.secondary, attr.subgraph_width, SECONDARY_COLOR)
diff --git a/nyx/panel/log.py b/nyx/panel/log.py
index 159469a..498651b 100644
--- a/nyx/panel/log.py
+++ b/nyx/panel/log.py
@@ -322,8 +322,7 @@ class LogPanel(nyx.panel.Panel, threading.Thread):
 
     # drawing the title after the content, so we'll clear content from the top line
 
-    if self.is_title_visible():
-      self._draw_title(width, event_types, event_filter)
+    self._draw_title(width, event_types, event_filter)
 
     # redraw the display if...
     # - last_content_height was off by too much
diff --git a/nyx/panel/torrc.py b/nyx/panel/torrc.py
index f52b6fb..39318f5 100644
--- a/nyx/panel/torrc.py
+++ b/nyx/panel/torrc.py
@@ -168,10 +168,9 @@ class TorrcPanel(panel.Panel):
 
       new_content_height = y + scroll - 1
 
-    if self.is_title_visible():
-      self.addstr(0, 0, ' ' * width)  # clear line
-      location = ' (%s)' % self._torrc_location if self._torrc_location else ''
-      self.addstr(0, 0, 'Tor Configuration File%s:' % location, HIGHLIGHT)
+    self.addstr(0, 0, ' ' * width)  # clear line
+    location = ' (%s)' % self._torrc_location if self._torrc_location else ''
+    self.addstr(0, 0, 'Tor Configuration File%s:' % location, HIGHLIGHT)
 
     if self._last_content_height != new_content_height:
       self._last_content_height = new_content_height
diff --git a/nyx/popups.py b/nyx/popups.py
index 6190a09..de83e7c 100644
--- a/nyx/popups.py
+++ b/nyx/popups.py
@@ -382,40 +382,35 @@ def show_menu(title, options, old_selection):
 
     selection = old_selection if old_selection != -1 else 0
 
-    # hides the title of the first panel on the page
+    with popup_window(1, -1) as (title_erase, _, _):
+      title_erase.addstr(0, 0, ' ' * 500)  # hide title of the panel below us
 
-    control = nyx.controller.get_controller()
-    top_panel = control.get_display_panels(include_sticky = False)[0]
-    top_panel.set_title_visible(False)
-    top_panel.redraw(True)
-
-    while True:
-      popup.win.erase()
-      popup.win.box()
-      popup.addstr(0, 0, title, HIGHLIGHT)
+      while True:
+        popup.win.erase()
+        popup.win.box()
+        popup.addstr(0, 0, title, HIGHLIGHT)
 
-      for i in range(len(options)):
-        label = options[i]
-        format = HIGHLIGHT if i == selection else NORMAL
-        tab = '> ' if i == old_selection else '  '
-        popup.addstr(i + 1, 2, tab)
-        popup.addstr(i + 1, 4, ' %s ' % label, format)
+        for i in range(len(options)):
+          label = options[i]
+          format = HIGHLIGHT if i == selection else NORMAL
+          tab = '> ' if i == old_selection else '  '
+          popup.addstr(i + 1, 2, tab)
+          popup.addstr(i + 1, 4, ' %s ' % label, format)
 
-      popup.win.refresh()
+        popup.win.refresh()
 
-      key = nyx.curses.key_input()
+        key = nyx.curses.key_input()
 
-      if key.match('up'):
-        selection = max(0, selection - 1)
-      elif key.match('down'):
-        selection = min(len(options) - 1, selection + 1)
-      elif key.is_selection():
-        break
-      elif key.match('esc'):
-        selection = -1
-        break
+        if key.match('up'):
+          selection = max(0, selection - 1)
+        elif key.match('down'):
+          selection = min(len(options) - 1, selection + 1)
+        elif key.is_selection():
+          break
+        elif key.match('esc'):
+          selection = -1
+          break
 
-  top_panel.set_title_visible(True)
   return selection
 
 
@@ -448,19 +443,22 @@ def show_descriptor_popup(fingerprint, color, max_width, is_close_key):
     if not popup:
       return None
 
-    scroller, redraw = nyx.curses.Scroller(), True
+    with popup_window(1, -1) as (title_erase, _, _):
+      title_erase.addstr(0, 0, ' ' * 500)  # hide title of the panel below us
 
-    while True:
-      if redraw:
-        _draw(popup, title, lines, color, scroller.location(), show_line_numbers)
-        redraw = False
+      scroller, redraw = nyx.curses.Scroller(), True
 
-      key = nyx.curses.key_input()
+      while True:
+        if redraw:
+          _draw(popup, title, lines, color, scroller.location(), show_line_numbers)
+          redraw = False
+
+        key = nyx.curses.key_input()
 
-      if key.is_scroll():
-        redraw = scroller.handle_key(key, len(lines), height - 2)
-      elif is_close_key(key):
-        return key
+        if key.is_scroll():
+          redraw = scroller.handle_key(key, len(lines), height - 2)
+        elif is_close_key(key):
+          return key
 
 
 def _display_text(fingerprint):





More information about the tor-commits mailing list