mirror of
https://github.com/UiO-Gaming/ShiteMusicBot.git
synced 2026-11-07 06:44:29 +01:00
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
|
|
class NavBarRange:
|
|
def __init__(self, num_items: int, current_item: int, max_iter_length: int, add_ends: bool = True):
|
|
self._num_items = num_items
|
|
self._current_item = current_item
|
|
self._max_iter_length = max_iter_length
|
|
self._add_ends = add_ends
|
|
|
|
# Start can not be before 0
|
|
start = max(0, self._current_item - self._max_iter_length // 2)
|
|
# Start can not be closer to end than max_iter_length
|
|
self._start = min(start, self._num_items - self._max_iter_length)
|
|
self._end = self._start + self._max_iter_length
|
|
|
|
def __iter__(self):
|
|
if (self._max_iter_length > self._num_items):
|
|
return iter(range(0, self._num_items))
|
|
|
|
mid_select_items = list(range(self._start, self._end))
|
|
if self._add_ends:
|
|
mid_select_items[0] = 0
|
|
mid_select_items[-1] = self._num_items - 1
|
|
return iter(mid_select_items)
|
|
|
|
@property
|
|
def end(self):
|
|
return self._end
|
|
|
|
@property
|
|
def start(self):
|
|
return self._end
|