Skip to content

Commit adef945

Browse files
committed
Added capability for endless scrolling.
1 parent 3a47620 commit adef945

1 file changed

Lines changed: 23 additions & 13 deletions

File tree

scrolltext/utils.py

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)