3
3
import curses .ascii
4
4
import logging
5
5
from sys import version_info , platform , version
6
- from .cjkwrap import PY3 , is_wide , cjklen
6
+ try :
7
+ from .cjkwrap import PY3 , is_wide , cjklen
8
+ except :
9
+ from cjkwrap import PY3 , is_wide , cjklen
7
10
import locale
8
11
locale .setlocale (locale .LC_ALL , '' ) # set your locale
9
12
@@ -793,12 +796,19 @@ def keypress(self, char):
793
796
pX += 1
794
797
if pX >= self ._columns :
795
798
pX = 0
799
+ pY += 1
796
800
# logger.error('DE pY ={0}, pX ={1}'.format(pY, pX))
797
801
# logger.error('DE {}'.format(self._coords))
798
802
try :
799
803
it = self ._coords .index ((pY , pX ))
800
804
except ValueError :
801
- it = self ._coords .index ((pY , 0 ))
805
+ pX = 0
806
+ pY += 1
807
+ # logger.error('DE pY ={0}, pX ={1}'.format(pY, pX))
808
+ try :
809
+ it = self ._coords .index ((pY , pX ))
810
+ except :
811
+ it = self ._coords .index ((0 , 0 ))
802
812
# logger.error('DE it = {}'.format(it))
803
813
self .selection = it
804
814
self .show ()
@@ -810,20 +820,27 @@ def keypress(self, char):
810
820
pX -= 1
811
821
if pX < 0 :
812
822
pX = self ._columns - 1
813
- # logger.error('DE pY ={0}, pX ={1}'.format(pY, pX))
814
- # logger.error('DE {}'.format(self._coords))
815
- try :
816
- it = self ._coords .index ((pY , pX ))
817
- except ValueError :
818
- pX -= 1
819
- while True :
823
+ pY -= 1
824
+ if pY < 0 :
825
+ self .selection = self ._coords .index (max (self ._coords ))
826
+ else :
827
+ # logger.error('DE pY ={0}, pX ={1}'.format(pY, pX))
828
+ # logger.error('DE {}'.format(self._coords))
820
829
try :
821
830
it = self ._coords .index ((pY , pX ))
822
- break
823
831
except ValueError :
824
832
pX -= 1
825
- # logger.error('DE it = {}'.format(it))
826
- self .selection = it
833
+ while True :
834
+ try :
835
+ it = self ._coords .index ((pY , pX ))
836
+ break
837
+ except ValueError :
838
+ pX -= 1
839
+ # logger.error('DE it = {}'.format(it))
840
+ self .selection = it
841
+ else :
842
+ self .selection = self ._coords .index ((pY , pX ))
843
+
827
844
self .show ()
828
845
return 2
829
846
@@ -2730,3 +2747,89 @@ def reset_index(self):
2730
2747
self ._active_history_index = 0
2731
2748
2732
2749
2750
+ '''
2751
+ #
2752
+ # Testing part
2753
+ #
2754
+
2755
+ import logging
2756
+ logger = logging.getLogger('pyradio')
2757
+ logger.setLevel(logging.DEBUG)
2758
+
2759
+ def main(stdscr):
2760
+ __configureLogger()
2761
+ curses.start_color()
2762
+ curses.use_default_colors()
2763
+ #stdscr.addstr('Number of colors: {0}, number of pairs: {1}\n '.format(curses.COLORS, curses.COLOR_PAIRS), curses.color_pair(0))
2764
+ #stdscr.getch()
2765
+
2766
+ #pr(stdscr)
2767
+ #stdscr.getch()
2768
+
2769
+ curses.init_pair(4,curses.COLOR_RED, curses.COLOR_BLACK)
2770
+ curses.init_pair(5,curses.COLOR_WHITE,curses.COLOR_BLACK)
2771
+ curses.init_pair(6,curses.COLOR_BLACK,curses.COLOR_RED)
2772
+ curses.init_pair(9,curses.COLOR_BLACK,curses.COLOR_WHITE)
2773
+ #curses.init_pair(1,237,248)
2774
+ #for n in range(3,13):
2775
+ # stdscr.addstr(n,1,str(n),curses.color_pair(1))
2776
+
2777
+ stdscr.bkgdset(' ', curses.color_pair(3))
2778
+ stdscr.erase()
2779
+ stdscr.refresh()
2780
+ search_by_items = (
2781
+ 'Votes',
2782
+ 'Clicks',
2783
+ 'Recent click',
2784
+ 'Recently changed',
2785
+ 'Item 1',
2786
+ 'Item 2',
2787
+ 'Item 3',
2788
+ 'Item 4',
2789
+ )
2790
+
2791
+ a_widget = SimpleCursesWidgetColumns(
2792
+ Y=2, X=3, window=stdscr,
2793
+ selection=0,
2794
+ active=0,
2795
+ items=search_by_items,
2796
+ color=curses.color_pair(5),
2797
+ color_active=curses.color_pair(4),
2798
+ color_cursor_selection=curses.color_pair(6),
2799
+ color_cursor_active=curses.color_pair(9),
2800
+ margin=1,
2801
+ max_width=65
2802
+ )
2803
+ a_widget.show()
2804
+
2805
+ while True:
2806
+ try:
2807
+ c = stdscr.getch()
2808
+ # logger.error('DE pressed "{0} - {1}"'.format(c, chr(c)))
2809
+ ret = a_widget.keypress(c)
2810
+ if (ret == -1):
2811
+ return
2812
+ except KeyboardInterrupt:
2813
+ break
2814
+
2815
+ def __configureLogger():
2816
+ logger = logging.getLogger('pyradio')
2817
+ logger.setLevel(logging.DEBUG)
2818
+
2819
+ # Handler
2820
+ fh = logging.FileHandler('/home/spiros/pyradio.log')
2821
+ fh.setLevel(logging.DEBUG)
2822
+
2823
+ # create formatter
2824
+ PATTERN = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
2825
+ formatter = logging.Formatter(PATTERN)
2826
+
2827
+ # add formatter to ch
2828
+ fh.setFormatter(formatter)
2829
+
2830
+ # add ch to logger
2831
+ logger.addHandler(fh)
2832
+
2833
+ if __name__ == "__main__":
2834
+ curses.wrapper(main)
2835
+ '''
0 commit comments