[rhel7-branch][PATCH] Improve how we set the default screen height in text mode (#1184378)

Vratislav Podzimek vpodzime at redhat.com
Tue Jun 23 12:59:21 UTC 2015


We can either use given value or try to use the $LINES environment variable or
use the default which should be 24 lines because that's what serial consoles use
(see the bug).

Also fix the line counting when printing long widgets so that there are no gaps
(missing lines).

Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
 pyanaconda/constants_text.py         |  3 +++
 pyanaconda/ui/tui/simpleline/base.py | 17 +++++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/pyanaconda/constants_text.py b/pyanaconda/constants_text.py
index 750a984..9fb5e03 100644
--- a/pyanaconda/constants_text.py
+++ b/pyanaconda/constants_text.py
@@ -56,3 +56,6 @@ TEXT_NO_BUTTON = Translator(TEXT_NO_STR, TEXT_NO_CHECK)
 # Make the return calls from the UIScreen input() function more clear
 INPUT_PROCESSED = None
 INPUT_DISCARDED = False
+
+# default screen height in number of lines (24 lines is the default for serial consoles)
+DEFAULT_SCREEN_HEIGHT = 24
diff --git a/pyanaconda/ui/tui/simpleline/base.py b/pyanaconda/ui/tui/simpleline/base.py
index 6371b93..c4fe736 100644
--- a/pyanaconda/ui/tui/simpleline/base.py
+++ b/pyanaconda/ui/tui/simpleline/base.py
@@ -22,6 +22,7 @@
 __all__ = ["App", "UIScreen", "Widget"]
 
 import sys
+import os
 import Queue
 import getpass
 import threading
@@ -30,6 +31,7 @@ from pyanaconda.threads import threadMgr, AnacondaThread
 from pyanaconda.ui.communication import hubQ
 from pyanaconda import constants, iutil
 from pyanaconda.i18n import _, N_, C_
+from pyanaconda.constants_text import DEFAULT_SCREEN_HEIGHT
 
 RAW_INPUT_LOCK = threading.Lock()
 
@@ -491,17 +493,24 @@ class UIScreen(object):
     # title line of the screen
     title = u"Screen.."
 
-    def __init__(self, app, screen_height = 25):
+    def __init__(self, app, screen_height=0):
         """
         :param app: reference to application main class
         :type app: instance of class App
 
         :param screen_height: height of the screen (useful for printing long widgets)
+                              or 0 to use the default
         :type screen_height: int
         """
 
         self._app = app
-        self._screen_height = screen_height
+
+        if screen_height > 0:
+            self._screen_height = screen_height
+        elif "LINES" in os.environ:
+            self._screen_height = os.environ["LINES"]
+        else:
+            self._screen_height = DEFAULT_SCREEN_HEIGHT
 
         # list that holds the content to be printed out
         self._window = []
@@ -563,10 +572,10 @@ class UIScreen(object):
                 # prompt (2 lines)
                 for line in lines[pos:]:
                     print(line)
-                pos += self._screen_height - 1
+                pos += self._screen_height - 2
             else:
                 # print part with a prompt to continue
-                for line in lines[pos:(pos + self._screen_height - 2)]:
+                for line in lines[pos:(pos + self._screen_height - 1)]:
                     print(line)
                 self._app.raw_input(_("Press ENTER to continue"))
                 pos += self._screen_height - 1
-- 
2.1.0



More information about the anaconda-patches mailing list