@@ -197,6 +197,8 @@ def __init__(self, cfg, term_size, **argv):
197197 self .visible_text_length = self .term_size .get_cols ()
198198 log .debug ("visibile_text_length: %d" , self .visible_text_length )
199199 self .min_scroll_line = argv ["min_scroll_line" ] if "min_scroll_line" in argv else 0
200+ self .visible_text_length = argv ["term_columns" ]
201+ self .endless = cfg ["main" ].getboolean ("endless" )
200202
201203 section_index = str (argv ["section_index" ]) if "section_index" in argv else "1"
202204 str_section = "scrolltext.text " + section_index
@@ -208,24 +210,16 @@ def __init__(self, cfg, term_size, **argv):
208210
209211 num_blanks = argv ["blanks" ] if "blanks" in argv else self .visible_text_length
210212 self .blanks = num_blanks * " "
211- self .complete_text = self .blanks + scroll_text + self .blanks
213+ self .complete_text = self .blanks + scroll_text + ( self .blanks if not self . endless else "" )
212214 self .pos = 0
215+ self ._last_pos = 0
213216 self .terminal_pos = len (self .complete_text )
214217 self .right_to_left = scroll_direction
215218 if "test" in argv :
216219 self .scrollspeedsec = 0
217220 else :
218221 self .scrollspeedsec = get_speedsec_float (cfg [str_section ].getint ("speed" ))
219- if not self .right_to_left :
220- self .pos = 0
221- self .terminal_pos = len (self .complete_text )
222- self ._pos_real = 0.
223- self ._last_pos = 0
224- else :
225- self .pos = len (self .complete_text )
226- self .terminal_pos = - 1
227- self ._pos_real = float (self .pos )
228- self ._last_pos = self .pos
222+ self ._set_start_params ()
229223 self .last_time = time ()
230224 self ._text = self .complete_text
231225
@@ -262,7 +256,9 @@ def _next_left_to_right(self):
262256 :rtype: str
263257 """
264258 if self .pos >= self .terminal_pos :
265- return None
259+ if not self .endless :
260+ return None
261+ self ._set_start_params ()
266262 end = self .pos + self .visible_text_length
267263 win_text = self .complete_text [self .pos :end ]
268264 if self .scrollspeedsec == 0 : # Special case for tests
@@ -288,7 +284,9 @@ def _next_right_to_left(self):
288284 :rtype: str
289285 """
290286 if self .pos <= self .terminal_pos :
291- return None
287+ if not self .endless :
288+ return None
289+ self ._set_start_params ()
292290 start = self .pos - self .visible_text_length
293291 win_text = self .complete_text [start :self .pos ]
294292 if self .scrollspeedsec == 0 : # Special case for tests
@@ -304,3 +302,15 @@ def _next_right_to_left(self):
304302 self ._last_pos = self .pos
305303 self ._text = win_text
306304 return self ._text
305+
306+ def _set_start_params (self ):
307+ if not self .right_to_left :
308+ self .pos = 0
309+ self .terminal_pos = len (self .complete_text )
310+ self ._pos_real = 0.
311+ self ._last_pos = 0
312+ else :
313+ self .pos = len (self .complete_text )
314+ self .terminal_pos = - 1
315+ self ._pos_real = float (self .pos )
316+ self ._last_pos = self .pos
0 commit comments