Hello, ask requested, i attach a patch against lcd.py version 1.12 which change the left-right bouncing scroller to an marquee like scroller.
All screen definitions are changed and tested with lcdproc curses. All working. Please verify: in the 2 line displays i found to references to "tv.display_name)", which i do not understand. 1. i only get a empty line 2. what is the bracket good for? These both references i changed to tv.channel_id new variable: sep_str_mscroll = " " * added, if data to show is wider than lcd new function: get_sepstrmscroll( self, mscrolldata ) * returns value of sep_str_mscroll if data is wider than lcd changes to screen definitions like this: "title_v" : ( "scroller", - "7 1 %d 1 h 2 \"%s\"", - "( self.width, menu.heading )" ), + "7 1 %d 1 m 3 \"%s%s\"", + "( self.width, menu.heading, self.get_sepstrm * h 2 changed to m 3, which is marquee scroller and a little slower than before * added a new string parameter and value Immo
--- lcd.py_1.12 Mon Sep 29 23:19:15 2003 +++ lcd.py_1.12_m Mon Oct 6 16:19:23 2003 @@ -91,6 +91,7 @@ # Configuration: (Should move to freevo_conf.py?) sep_str = " | " # use as separator between two strings. Like: "Length: 123<sep_str>Plot: ..." +sep_str_mscroll = " " # if string > width of lcd add this # Animaton-Sequence used in audio playback # Some displays (like the CrytstalFontz) do display the \ as a / @@ -179,8 +180,8 @@ "Freevo", None ), "calendar" : ( "scroller", - "1 2 %d 2 h 2 \"Today is %s.\"", - "( self.width, time.strftime('%A, %d-%B') )" ), + "1 2 %d 2 m 3 \"Today is %s.%s\"", + "( self.width, time.strftime('%A, %d-%B'), self.get_sepstrmscroll(time.strftime('%A, %d-%B')) )" ), "clock" : ( "string", "%d 3 \"%s\"", "( ( self.width - len( time.strftime('%T') ) ) / 2 + 1 ," + \ @@ -201,17 +202,17 @@ "1 4 'INFO: '", None ), "title_v" : ( "scroller", - "7 1 %d 1 h 2 \"%s\"", - "( self.width, menu.heading )" ), + "7 1 %d 1 m 3 \"%s%s\"", + "( self.width, menu.heading, self.get_sepstrmscroll(menu.heading) )" ), "item_v" : ( "scroller", - "7 2 %d 2 h 2 \"%s\"", - "( self.width, title )" ), + "7 2 %d 2 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "type_v" : ( "scroller", - "7 3 %d 3 h 2 \"%s\"", - "( self.width, typeinfo )" ), + "7 3 %d 3 m 3 \"%s%s\"", + "( self.width, typeinfo, self.get_sepstrmscroll(typeinfo) )" ), "info_v" : ( "scroller", - "7 4 %d 1 h 2 \"%s\"", - "( self.width, info )" ) + "7 4 %d 1 m 3 \"%s%s\"", + "( self.width, info, self.get_sepstrmscroll(info) )" ) }, "audio_player" : @@ -225,14 +226,14 @@ "1 3 'ARTIST: '", None ), "music_v" : ( "scroller", - "9 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "9 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "album_v" : ( "scroller", - "9 2 %d 2 h 2 \"%s\"", - "( self.width, player.getattr('album') )" ), + "9 2 %d 2 m 3 \"%s%s\"", + "( self.width, player.getattr('album'), self.get_sepstrmscroll(player.getattr('album')) )" ), "artist_v" : ( "scroller", - "9 3 %d 3 h 2 \"%s\"", - "( self.width, player.getattr('artist') )" ), + "9 3 %d 3 m 3 \"%s%s\"", + "( self.width, player.getattr('artist'), self.get_sepstrmscroll(player.getattr('artist')) )" ), "time_v1" : ( "string", "2 4 '% 2d:%02d/'", "( int(player.length / 60), int(player.length % 60) )" ), @@ -263,14 +264,14 @@ "1 3 'GENRE: '", None ), "video_v" : ( "scroller", - "9 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "9 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "tag_v" : ( "scroller", - "9 2 %d 2 h 2 \"%s\"", - "( self.width, player.getattr('tagline') )" ), + "9 2 %d 2 m 3 \"%s%s\"", + "( self.width, player.getattr('tagline'), self.get_sepstrmscroll(player.getattr('tagline')) )" ), "genre_v" : ( "scroller", - "9 3 %d 3 h 2 \"%s\"", - "( self.width, player.getattr('genre') )" ), + "9 3 %d 3 m 3 \"%s%s\"", + "( self.width, player.getattr('genre'), self.get_sepstrmscroll(player.getattr('genre')) )" ), "time_v1" : ( "string", "2 4 '%s/'", "( length )" ), @@ -305,17 +306,17 @@ "1 4 'DESC: '", None ), "chan_v" : ( "scroller", - "7 1 %d 1 h 2 \"%s\"", - "( self.width, tv.channel_id )" ), + "7 1 %d 1 m 3 \"%s%s\"", + "( self.width, tv.channel_id, self.get_sepstrmscroll(tv.channel_id) )" ), "prog_v" : ( "scroller", - "7 2 %d 2 h 2 \"%s\"", - "( self.width, tv.title )" ), + "7 2 %d 2 m 3 \"%s%s\"", + "( self.width, tv.title, self.get_sepstrmscroll(tv.title) )" ), "time_v" : ( "scroller", - "7 3 %d 3 h 2 \"%s-%s\"", - "( self.width, tv.start, tv.stop )" ), + "7 3 %d 3 m 3 \"%s-%s%s\"", + "( self.width, tv.start, tv.stop, self.get_sepstrmscroll(tv.start+'-'+tv.stop) )" ), "desc_v" : ( "scroller", - "7 4 %d 4 h 2 \"%s\"", - "( self.width, tv.desc )" ) + "7 4 %d 4 m 3 \"%s%s\"", + "( self.width, tv.desc, self.get_sepstrmscroll(tv.desc) )" ) } }, @@ -327,8 +328,8 @@ "Freevo", None ), "calendar" : ( "scroller", - "1 2 %d 2 h 2 \"Today is %s.\"", - "( self.width, time.strftime('%A, %d-%B') )" ), + "1 2 %d 2 m 3 \"Today is %s.%s\"", + "( self.width, time.strftime('%A, %d-%B'), self.get_sepstrmscroll(time.strftime('%A, %d-%B')) )" ), "clock" : ( "string", "%d 3 \"%s\"", "( ( self.width - len( time.strftime('%T') ) ) / 2 + 1 ," + \ @@ -337,29 +338,29 @@ "menu" : { "title_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, menu.heading )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, menu.heading, self.get_sepstrmscroll(menu.heading) )" ), "item_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, title )" ), + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "type_v" : ( "scroller", - "1 3 %d 3 h 2 \"%s\"", - "( self.width, typeinfo )" ), + "1 3 %d 3 m 3 \"%s%s\"", + "( self.width, typeinfo, self.get_sepstrmscroll(typeinfo) )" ), "info_v" : ( "scroller", - "1 4 %d 1 h 2 \"%s\"", - "( self.width, info )" ) + "1 4 %d 1 m 3 \"%s%s\"", + "( self.width, info, self.get_sepstrmscroll(info) )" ) }, "audio_player" : { "music_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "album_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, player.getattr('album') )" ), + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, player.getattr('album'), self.get_sepstrmscroll(player.getattr('album')) )" ), "artist_v" : ( "scroller", - "1 3 %d 3 h 2 \"%s\"", - "( self.width, player.getattr('artist') )" ), + "1 3 %d 3 m 3 \"%s%s\"", + "( self.width, player.getattr('artist'), self.get_sepstrmscroll(player.getattr('artist')) )" ), "time_v1" : ( "string", "2 4 '% 2d:%02d/'", "( int(player.length / 60), int(player.length % 60) )" ), @@ -376,14 +377,14 @@ "video_player" : { "video_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "tag_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, player.getattr('tagline') )" ), + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, player.getattr('tagline'), self.get_sepstrmscroll(player.getattr('tagline')) )" ), "genre_v" : ( "scroller", - "1 3 %d 3 h 2 \"%s\"", - "( self.width, player.getattr('genre') )" ), + "1 3 %d 3 m 3 \"%s%s\"", + "( self.width, player.getattr('genre'), self.get_sepstrmscroll(player.getattr('genre')) )" ), "time_v1" : ( "string", "3 4 '%s /'", "( length )" ), @@ -398,17 +399,17 @@ "tv" : { "chan_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, tv.channel_id )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, tv.channel_id, self.get_sepstrmscroll(tv.channel_id) )" ), "prog_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, tv.title )" ), + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, tv.title, self.get_sepstrmscroll(tv.title) )" ), "time_v" : ( "scroller", - "1 3 %d 3 h 2 \"%s-%s\"", - "( self.width, tv.start, tv.stop )" ), + "1 3 %d 3 m 3 \"%s-%s%s\"", + "( self.width, tv.start, tv.stop, self.get_sepstrmscroll(tv.start+'-'+tv.stop) )" ), "desc_v" : ( "scroller", - "1 4 %d 4 h 2 \"%s\"", - "( self.width, tv.desc )" ) + "1 4 %d 4 m 3 \"%s%s\"", + "( self.width, tv.desc, self.get_sepstrmscroll(tv.desc) )" ) } } # screens }, # chars per line @@ -425,17 +426,17 @@ "menu" : { "title_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, menu.heading )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, menu.heading, self.get_sepstrmscroll(menu.heading) )" ), "item_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, title )" ) + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ) }, "audio_player" : { "music_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "time_v1" : ( "string", "2 2 '% 2d:%02d/'", "( int(player.length / 60), int(player.length % 60) )" ), @@ -450,8 +451,8 @@ "video_player" : { "video_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"" , - "( self.width, title )" ), + "1 1 %d 1 m 3 \"%s%s\"" , + "( self.width, title, self.get_sepstrmscroll(title) )" ), "time_v2" : ( "string", "2 2 '%s'", "( elapsed )" ), @@ -467,11 +468,11 @@ "tv" : { "chan_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, tv.display_name) )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, tv.channel_id, self.get_sepstrmscroll(tv.channel_id) )" ), "prog_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, tv.title )" ) + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, tv.title, self.get_sepstrmscroll(tv.title) )" ) } }, @@ -485,17 +486,17 @@ "menu" : { "title_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, menu.heading )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, menu.heading, self.get_sepstrmscroll(menu.heading) )" ), "item_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, title )" ) + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ) }, "audio_player": { "music_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "time_v1" : ( "string", "2 2 '% 2d:%02d/'", "( int(player.length / 60), int(player.length % 60) )" ), @@ -513,8 +514,8 @@ "video_player" : { "video_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "time_v1" : ( "string", "3 2 '%s /'", "( length )" ), @@ -530,11 +531,11 @@ "tv": { "chan_v" : ( "scroller", - "1 1 %d 1 h 2 \"%s\"", - "( self.width, tv.display_name) )" ), + "1 1 %d 1 m 3 \"%s%s\"", + "( self.width, tv.channel_id, self.get_sepstrmscroll(tv.channel_id) )" ), "prog_v" : ( "scroller", - "1 2 %d 2 h 2 \"%s\"", - "( self.width, tv.title )" ) + "1 2 %d 2 m 3 \"%s%s\"", + "( self.width, tv.title, self.get_sepstrmscroll(tv.title) )" ) } }, @@ -554,11 +555,11 @@ "1 2 'ITEM: '", None ), "title_v" : ( "scroller", - "7 1 %d 1 h 2 \"%s\"", - "( self.width, menu.heading )" ), + "7 1 %d 1 m 3 \"%s%s\"", + "( self.width, menu.heading, self.get_sepstrmscroll(menu.heading) )" ), "item_v" : ( "scroller", - "7 2 %d 2 h 2 \"%s\"", - "( self.width, title )" ) + "7 2 %d 2 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ) }, "audio_player": @@ -566,8 +567,8 @@ "1 1 'MUSIC: '", None ), "music_v" : ( "scroller", - "8 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "8 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "time_v1" : ( "string", "2 2 '% 2d:%02d/'", "( int(player.length / 60), int(player.length % 60) )" ), @@ -593,8 +594,8 @@ "2 1 'VIDEO: '", None ), "video_v" : ( "scroller", - "9 1 %d 1 h 2 \"%s\"", - "( self.width, title )" ), + "9 1 %d 1 m 3 \"%s%s\"", + "( self.width, title, self.get_sepstrmscroll(title) )" ), "time_v1" : ( "string", "2 2 '%s/'", "( length )" ), @@ -624,14 +625,14 @@ "1 2 'PROG: '", None ), "chan_v" : ( "scroller", - "7 1 %d 1 h 2 \"%s\"", - "( self.width, tv.channel_id )" ), + "7 1 %d 1 m 3 \"%s%s\"", + "( self.width, tv.channel_id, self.get_sepstrmscroll(tv.channel_id) )" ), "prog_v" : ( "scroller", - "7 2 %d 2 h 2 \"%s\"", - "( self.width, tv.title )" ), + "7 2 %d 2 m 3 \"%s%s\"", + "( self.width, tv.title, self.get_sepstrmscroll(tv.title) )" ), "time_v" : ( "scroller", - "%d 1 %d 3 h 2 \"[%s-%s]\"", - "( self.width - 13, 13, tv.start, tv.stop )" ), + "%d 1 %d 3 m 3 \"[%s-%s%s]\"", + "( self.width - 13, 13, tv.start, tv.stop, self.get_sepstrmscroll(tv.start+'-'+tv.stop) )" ), } } # screens } # chars per line @@ -664,7 +665,6 @@ return info - class PluginInterface( plugin.DaemonPlugin ): """ Display context info in LCD using lcdproc daemon. @@ -882,7 +882,7 @@ for w in widgets: type, param, val = self.screens[ s ][ w ] - + if val: param = param % eval( val ) try: self.lcd.widget_set( s, w, param.encode( 'latin1' ) ) @@ -953,3 +953,13 @@ self.playitem = None return 0 + + def get_sepstrmscroll( self, mscrolldata ): + """ + used for marquee scroller; returns seperator if info is wider then lcd + """ + if len(mscrolldata) > self.width: + return sep_str_mscroll + else: + return '' +