[tor-commits] [nyx/master] Replace subwindow box() requests with draw_box()

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


commit 36740e39556fcbcda9e93a064aec684936f0b6cc
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Mar 20 13:43:40 2016 -0700

    Replace subwindow box() requests with draw_box()
    
    We have a helper function for drawing boxes so using that rather than drawing
    directly to our subwindow...
    
      https://docs.python.org/2/library/curses.html#curses.window.box
    
    We want to drop all direct subwindow usage so this gets us one step closer.
---
 nyx/panel/__init__.py | 11 ++++++++++-
 nyx/panel/config.py   |  4 +++-
 nyx/panel/log.py      |  2 +-
 nyx/popups.py         | 12 ++++++------
 4 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/nyx/panel/__init__.py b/nyx/panel/__init__.py
index d4c7171..70c577d 100644
--- a/nyx/panel/__init__.py
+++ b/nyx/panel/__init__.py
@@ -634,7 +634,7 @@ class Panel(object):
 
     return recreate
 
-  def draw_box(self, top, left, width, height, *attributes):
+  def draw_box(self, top = 0, left = 0, width = -1, height = -1, *attributes):
     """
     Draws a box in the panel with the given bounds.
 
@@ -646,6 +646,15 @@ class Panel(object):
       attr   - text attributes
     """
 
+    if width == -1 or height == -1:
+      panel_height, panel_width = self.get_preferred_size()
+
+      if width == -1:
+        width = panel_width - left
+
+      if height == -1:
+        height = panel_height - top
+
     # draws the top and bottom
 
     self.hline(top, left + 1, width - 2, *attributes)
diff --git a/nyx/panel/config.py b/nyx/panel/config.py
index 8b759c5..2ad6f8f 100644
--- a/nyx/panel/config.py
+++ b/nyx/panel/config.py
@@ -209,7 +209,7 @@ class ConfigPanel(nyx.panel.Panel):
           x = popup.addstr(height - 2, x, option, BOLD, HIGHLIGHT if i == selection else NORMAL)
           x = popup.addstr(height - 2, x, '] ')
 
-        popup.win.box()
+        popup.draw_box()
         popup.addstr(0, 0, 'Torrc to save:', HIGHLIGHT)
         popup.win.refresh()
 
@@ -231,6 +231,8 @@ class ConfigPanel(nyx.panel.Panel):
         elif key.match('esc'):
           break  # esc - cancel
 
+    self.redraw(True)
+
   def handle_key(self, key):
     if key.is_scroll():
       page_height = self.get_preferred_size()[0] - DETAILS_HEIGHT
diff --git a/nyx/panel/log.py b/nyx/panel/log.py
index 498651b..094ad06 100644
--- a/nyx/panel/log.py
+++ b/nyx/panel/log.py
@@ -144,7 +144,7 @@ class LogPanel(nyx.panel.Panel, threading.Thread):
       if popup:
         # displays the available flags
 
-        popup.win.box()
+        popup.draw_box()
         popup.addstr(0, 0, 'Event Types:', HIGHLIGHT)
         event_lines = CONFIG['msg.misc.event_types'].split('\n')
 
diff --git a/nyx/popups.py b/nyx/popups.py
index de83e7c..bf40e4c 100644
--- a/nyx/popups.py
+++ b/nyx/popups.py
@@ -141,7 +141,7 @@ def show_help_popup():
 
       # test doing afterward in case of overwriting
 
-      popup.win.box()
+      popup.draw_box()
       popup.addstr(0, 0, 'Page %i Commands:' % (control.get_page() + 1), HIGHLIGHT)
 
       for i in range(len(help_options)):
@@ -192,7 +192,7 @@ def show_about_popup():
 
   with popup_window(9, 80) as (popup, _, height):
     if popup:
-      popup.win.box()
+      popup.draw_box()
       popup.addstr(0, 0, 'About:', HIGHLIGHT)
       popup.addstr(1, 2, 'nyx, version %s (released %s)' % (__version__, __release_date__), BOLD)
       popup.addstr(2, 4, 'Written by Damian Johnson (atagar at torproject.org)')
@@ -244,7 +244,7 @@ def show_count_dialog(title, counts):
 
       popup.addstr(height - 2, 2, 'Press any key...')
 
-    popup.win.box()
+    popup.draw_box()
     popup.addstr(0, 0, title, HIGHLIGHT)
     popup.win.refresh()
 
@@ -281,7 +281,7 @@ def show_sort_dialog(title, options, old_selection, option_colors):
 
       while len(new_selections) < len(old_selection):
         popup.win.erase()
-        popup.win.box()
+        popup.draw_box()
         popup.addstr(0, 0, title, HIGHLIGHT)
 
         _draw_sort_selection(popup, 1, 2, 'Current Order: ', old_selection, option_colors)
@@ -387,7 +387,7 @@ def show_menu(title, options, old_selection):
 
       while True:
         popup.win.erase()
-        popup.win.box()
+        popup.draw_box()
         popup.addstr(0, 0, title, HIGHLIGHT)
 
         for i in range(len(options)):
@@ -548,6 +548,6 @@ def _draw(popup, title, lines, entry_color, scroll, show_line_numbers):
     if y > height:
       break
 
-  popup.win.box()
+  popup.draw_box()
   popup.addstr(0, 0, title, HIGHLIGHT)
   popup.win.refresh()



More information about the tor-commits mailing list