Skip to content

Commit 07a9e9c

Browse files
committed
- version 0.9.2.4
- do not crash when we have a small number of Groups - get a minimum size so that we don't get stuck - position all windows relevant to parent
1 parent 8863f81 commit 07a9e9c

File tree

6 files changed

+48
-9
lines changed

6 files changed

+48
-9
lines changed

Changelog

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2023-04-01 s-n-g
2+
* version 0.9.2.4
3+
* do not crash when we have a small number of Groups
4+
* get a minimum size so that we don't get stuck
5+
* position all windows relevant to parent
6+
17
2023-04-01 s-n-g
28
* version 0.9.2.3
39
* fixing search function for Group Selection window (pressing

README.html

+6
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,12 @@ <h2 id="requirements">Requirements <span style="padding-left: 10px;"><sup style=
202202
<h2 id="changelog">Changelog <span style="padding-left: 10px;"><sup style="font-size: 50%"><a href="#" title="Go to top of the page">Top</a></sup></span></h2>
203203
<pre style="height: 200px;">
204204

205+
2023-04-01 s-n-g
206+
* version 0.9.2.4
207+
* do not crash when we have a small number of Groups
208+
* get a minimum size so that we don't get stuck
209+
* position all windows relevant to parent
210+
205211
2023-04-01 s-n-g
206212
* version 0.9.2.3
207213
* fixing search function for Group Selection window (pressing

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "pyradio"
3-
version = "0.9.2.3"
3+
version = "0.9.2.4"
44
authors = [
55
{ name="Ben Dowling", email="[email protected]" },
66
{ name="Spiros Georgaras", email="[email protected]" },

pyradio/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
" pyradio -- Console radio player. "
22

3-
version_info = (0, 9, 2, 3)
3+
version_info = (0, 9, 2, 4)
44

55
# Set it to True if new stations have been
66
# added to the package's stations.csv

pyradio/radio.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -2729,6 +2729,7 @@ def _show_group_help(self):
27292729
Down|,|k|,|PgDown |Change Group Header selection.
27302730
g G |Go to first / last Group Header.
27312731
H M L |Go to top / middle / bottom of screen.
2732+
/ n N |Perform search.
27322733
Space|, |Left|, |Enter
27332734
_________________|Select a Group Header.
27342735
Esc|,|q |Cancel.
@@ -8391,13 +8392,13 @@ def keypress(self, char):
83918392
else:
83928393
# logger.error('selection not in d')
83938394
if len(d) == 1:
8394-
logger.error('x1 ind = {}'.format(ind))
83958395
ind = d[0]
8396+
# logger.error('x1 ind = {}'.format(ind))
83968397
else:
83978398
if char == curses.ascii.EM:
83988399
try:
83998400
ind = [n for n in d if n < self.selection][-1]
8400-
logger.error('x2 ind = {}'.format(ind))
8401+
# logger.error('x2 ind = {}'.format(ind))
84018402
except IndexError:
84028403
ind = [n for n in d if n < self.number_of_items][0]
84038404
# logger.error('x3 ind = {}'.format(ind))

pyradio/simple_curses_widgets.py

+31-5
Original file line numberDiff line numberDiff line change
@@ -1855,23 +1855,37 @@ def _get_window(self):
18551855
if self._maxX > X - 2 * self._outer_margin:
18561856
self._maxX = X - 2 * self._outer_margin
18571857

1858+
''' make sure we have a big enough window '''
1859+
if self._maxY < 10:
1860+
self._maxY = 10
1861+
if self._maxX < 30:
1862+
self._maxX = 30
1863+
18581864
aY, aX = self._parent.getbegyx()
18591865
self._Y = aY + int((Y-self._maxY)/2)
1860-
self._X = int((X-self._maxX)/2)
1866+
self._X = aX + int((X-self._maxX)/2)
1867+
18611868
else:
1862-
pass
1869+
aY, aX = self._parent.getbegyx()
18631870

18641871
if self._maxY <= self._minY or \
1865-
self._maxX <= self._minX:
1872+
self._maxX <= self._minX or \
1873+
self._X < 2 or \
1874+
self._Y < 2:
18661875
self._too_small = True
18671876
aY, aX = self._parent.getbegyx()
18681877
self._win = curses.newwin(
18691878
4, 13,
18701879
aY + int((Y-4)/2),
1871-
int((X-13)/2)
1880+
aX + int((X-13)/2)
18721881
)
1882+
self._print_box()
18731883
else:
18741884
self._too_small = False
1885+
# logger.info('Y={0}, X={1}, maxY={2}, maxX={3}'.format(
1886+
# self._Y, self._X,
1887+
# self._maxY, self._maxX
1888+
# ))
18751889
self._win = curses.newwin(
18761890
self._maxY, self._maxX,
18771891
self._Y, self._X
@@ -1968,14 +1982,23 @@ def show(self, parent=None):
19681982
self.show()
19691983
return
19701984

1985+
self._print_box_and_title()
1986+
self._refresh()
1987+
1988+
def _print_box_and_title(self):
1989+
self._print_box()
1990+
self._print_title()
1991+
1992+
def _print_box(self):
19711993
self._win.bkgdset(' ', self._color_border)
19721994
self._win.erase()
19731995
self._win.box()
1996+
1997+
def _print_title(self):
19741998
self._win.addstr(
19751999
0, int((self._maxX-len(self._title))/2),
19762000
self._title, self._color_title
19772001
)
1978-
self._refresh()
19792002

19802003
def _refresh(self):
19812004
if len(self._items) == 0:
@@ -1991,6 +2014,9 @@ def _refresh(self):
19912014
self._start_pos = 0
19922015
elif self._start_pos > len(self._items) - 1 - self._body_maxY:
19932016
self._start_pos = len(self._items) - self._body_maxY
2017+
''' make sure we have a valid self._start_pos '''
2018+
if self._start_pos < 0:
2019+
self._start_pos = 0
19942020
# logger.error('refresh (st={0}, sel={1})'.format(self._start_pos, self._selection))
19952021
for i in range(0, self._body_maxY):
19962022
item_id = i + self._start_pos

0 commit comments

Comments
 (0)