@@ -1818,12 +1818,13 @@ def _set_selection(self, a_sel):
1818
1818
self ._old_start_pos = self ._start_pos
1819
1819
1820
1820
self ._selection = a_sel
1821
+ self ._make_sure_selection_is_visible ()
1821
1822
self ._verify_selection_not_on_caption ()
1822
1823
1823
1824
# log_it('last line = {}'.format(self._start_pos + self._maxY))
1824
1825
if a_sel < self ._start_pos or a_sel >= self ._start_pos + self ._body_maxY :
1825
1826
self ._start_pos = self ._selection - int (self ._body_maxY / 2 ) + 1
1826
- self .show ()
1827
+ self ._refresh ()
1827
1828
else :
1828
1829
self ._toggle_selected_item ()
1829
1830
@@ -1940,29 +1941,39 @@ def show(self, parent=None):
1940
1941
the window to print output
1941
1942
'''
1942
1943
# log_it('show')
1944
+ new_win = False
1943
1945
if (not self ._showed or parent != self ._parent ) \
1944
1946
and parent is not None :
1945
1947
# log_it('\n\nhere\n\n')
1946
1948
# log_it('got new parent')
1947
1949
self ._parent = parent
1948
1950
self ._get_window ()
1949
- self ._win .bkgdset (' ' , self ._color_border )
1950
- self ._win .erase ()
1951
- self ._win .box ()
1952
1951
# logger.error('too_small = {}'.format(self._too_small))
1953
- if not self ._too_small :
1954
- self ._win .addstr (
1955
- 0 , int ((self ._maxX - len (self ._title ))/ 2 ),
1956
- self ._title , self ._color_title
1957
- )
1958
1952
self ._calculate_max_height_max_width ()
1953
+ new_win = True
1959
1954
1960
1955
if self ._too_small :
1961
1956
self ._win .addstr (1 , 1 , ' Window is' , self ._color )
1962
1957
self ._win .addstr (2 , 1 , ' Too small' , self ._color )
1963
1958
self ._win .refresh ()
1964
1959
return
1965
1960
1961
+ if new_win :
1962
+ self ._verify_selection_not_on_caption ()
1963
+ self ._make_sure_selection_is_visible ()
1964
+ self .show ()
1965
+ return
1966
+
1967
+ self ._win .bkgdset (' ' , self ._color_border )
1968
+ self ._win .erase ()
1969
+ self ._win .box ()
1970
+ self ._win .addstr (
1971
+ 0 , int ((self ._maxX - len (self ._title ))/ 2 ),
1972
+ self ._title , self ._color_title
1973
+ )
1974
+ self ._refresh ()
1975
+
1976
+ def _refresh (self ):
1966
1977
if len (self ._items ) == 0 :
1967
1978
self ._win .hline (self ._Y , self ._X , ' ' , self ._maxX , self ._color )
1968
1979
self ._win .refresh ()
@@ -2111,7 +2122,7 @@ def delete_item(self, target):
2111
2122
2112
2123
self ._verify_selection_not_on_caption (mov )
2113
2124
if not self ._make_sure_selection_is_visible ():
2114
- self .show ()
2125
+ self ._refresh ()
2115
2126
2116
2127
return len (self ._items )
2117
2128
@@ -2190,28 +2201,6 @@ def keypress(self, char):
2190
2201
if self ._too_small :
2191
2202
return 1
2192
2203
2193
- if char == ord ('z' ):
2194
- self .selection = 10
2195
- return 1
2196
-
2197
- if char == ord ('d' ):
2198
- self .selection = 50
2199
- return 1
2200
-
2201
- if char == ord ('c' ):
2202
- self .selection = 100
2203
- return 1
2204
-
2205
- if char == ord ('e' ):
2206
- self .selection = 15
2207
- return 1
2208
-
2209
- if char == ord ('w' ):
2210
- self .selection = 1122
2211
- return 1
2212
-
2213
-
2214
-
2215
2204
if (not self ._focused ) or (not self ._enabled ):
2216
2205
return 1
2217
2206
@@ -2239,7 +2228,7 @@ def keypress(self, char):
2239
2228
if len (self ._items ) == len (self ._captions ) + 1 :
2240
2229
return 0
2241
2230
self .delete_item (self ._selection )
2242
- self .show ()
2231
+ self ._refresh ()
2243
2232
return 0
2244
2233
2245
2234
elif self ._right_arrow_selects and char in (
@@ -2270,7 +2259,7 @@ def keypress(self, char):
2270
2259
self ._toggle_selected_item ()
2271
2260
else :
2272
2261
self ._start_pos = 0
2273
- self .show ()
2262
+ self ._refresh ()
2274
2263
2275
2264
elif char in (ord ('G' ), curses .KEY_END ):
2276
2265
if len (self ._items ) == 0 :
@@ -2284,10 +2273,10 @@ def keypress(self, char):
2284
2273
self ._toggle_selected_item ()
2285
2274
else :
2286
2275
self ._start_pos = self ._selection - self ._body_maxY + 1
2287
- self .show ()
2276
+ self ._refresh ()
2288
2277
else :
2289
2278
self ._start_pos = 0
2290
- self .show ()
2279
+ self ._refresh ()
2291
2280
2292
2281
elif char == ord ('H' ):
2293
2282
if len (self ._items ) == 0 :
@@ -2318,17 +2307,17 @@ def keypress(self, char):
2318
2307
self ._verify_selection_not_on_caption ()
2319
2308
if self ._scroll :
2320
2309
self ._start_pos = self ._selection - self ._body_maxY + 1
2321
- self .show ()
2310
+ self ._refresh ()
2322
2311
return 1
2323
2312
else :
2324
2313
self ._selection -= 5
2325
2314
self ._verify_selection_not_on_caption ()
2326
2315
if self ._selection < self ._start_pos :
2327
2316
self ._start_pos = self ._selection
2328
- self .show ()
2317
+ self ._refresh ()
2329
2318
return 1
2330
2319
if not self ._toggle_selected_item ():
2331
- self .show ()
2320
+ self ._refresh ()
2332
2321
2333
2322
elif char in (curses .KEY_NPAGE , ):
2334
2323
if len (self ._items ) == 0 :
@@ -2338,7 +2327,7 @@ def keypress(self, char):
2338
2327
self ._verify_selection_not_on_caption ()
2339
2328
self ._start_pos = 0
2340
2329
if self ._scroll :
2341
- self .show ()
2330
+ self ._refresh ()
2342
2331
return 1
2343
2332
else :
2344
2333
self ._selection += 5
@@ -2350,10 +2339,10 @@ def keypress(self, char):
2350
2339
# log_it('sel = {1}, start = {1}'.format(self._selection, self._start_pos))
2351
2340
if self ._selection - self ._start_pos > self ._body_maxY - 1 :
2352
2341
self ._start_pos = self ._selection - self ._body_maxY + 1
2353
- self .show ()
2342
+ self ._refresh ()
2354
2343
return 1
2355
2344
if not self ._toggle_selected_item ():
2356
- self .show ()
2345
+ self ._refresh ()
2357
2346
2358
2347
elif char in (ord ('k' ), curses .KEY_UP ):
2359
2348
if len (self ._items ) == 0 :
@@ -2366,20 +2355,20 @@ def keypress(self, char):
2366
2355
self ._start_pos = 0
2367
2356
if self ._scroll :
2368
2357
self ._start_pos = self ._selection - self ._body_maxY + 1
2369
- self .show ()
2358
+ self ._refresh ()
2370
2359
return 1
2371
2360
if self ._scroll :
2372
2361
# we have scrolling items
2373
2362
if self ._selection < self ._start_pos :
2374
2363
# we need to scroll!
2375
2364
self ._start_pos -= 1
2376
2365
# log_it('We need to scroll: start: {0}, selection = {1}'.format(self._start_pos,self._selection))
2377
- self .show ()
2366
+ self ._refresh ()
2378
2367
return 1
2379
2368
# log_it('going from {0} to {1}, start at {2}'.format(self._old_selection, self._selection, self._start_pos))
2380
2369
if not self ._toggle_selected_item ():
2381
- # log_it('self.show ')
2382
- self .show ()
2370
+ # log_it('self._refresh ')
2371
+ self ._refresh ()
2383
2372
2384
2373
elif char in (ord ('j' ), curses .KEY_DOWN ):
2385
2374
if len (self ._items ) == 0 :
@@ -2393,19 +2382,19 @@ def keypress(self, char):
2393
2382
self ._verify_selection_not_on_caption ()
2394
2383
self ._start_pos = 0
2395
2384
if self ._scroll :
2396
- self .show ()
2385
+ self ._refresh ()
2397
2386
return 1
2398
2387
if self ._scroll :
2399
2388
# we have scrolling items
2400
2389
if self ._selection >= self ._start_pos + self ._body_maxY :
2401
2390
# we need to scroll!
2402
2391
self ._start_pos = self ._selection - self ._body_maxY + 1
2403
2392
# log_it('We need to scroll: start: {0}, selection {1}'.format(self._start_pos, self._selection))
2404
- self .show ()
2393
+ self ._refresh ()
2405
2394
return 1
2406
2395
2407
2396
if not self ._toggle_selected_item ():
2408
- self .show ()
2397
+ self ._refresh ()
2409
2398
2410
2399
elif char in self ._local_functions .keys ():
2411
2400
self ._local_functions (char )
@@ -2415,6 +2404,7 @@ def keypress(self, char):
2415
2404
2416
2405
return 1
2417
2406
2407
+
2418
2408
class SimpleCursesCheckBox (SimpleCursesWidget ):
2419
2409
'''A very simple checkbox curses widget '''
2420
2410
_checked = False
0 commit comments