Check-in [39304eb90b]
Overview
Comment: | Introduce channel.fixed_size=[24,24] to constrain favicon CellRendererPixbuf. Works in conjunction to .img_resize= attribute for favicon/img converter. Set expand:False in default datamap[] for favicon cell. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
39304eb90b41f27dc680fdf493b7174e |
User & Date: | mario on 2015-05-24 08:52:13 |
Other Links: | manifest | tags |
Context
2015-05-24
| ||
10:02 | Lighter highlight color: for plugin options. check-in: 160f4dd660 user: mario tags: trunk | |
08:52 | Introduce channel.fixed_size=[24,24] to constrain favicon CellRendererPixbuf. Works in conjunction to .img_resize= attribute for favicon/img converter. Set expand:False in default datamap[] for favicon cell. check-in: 39304eb90b user: mario tags: trunk | |
08:49 | Check for string length (.q) before starting cache/server search. Wrap channel+cat switching in ukit.do(). check-in: 708ecda3e9 user: mario tags: trunk | |
Changes
Modified channels/__init__.py from [54759d6b53] to [9cd47dabe0].
︙ | ︙ | |||
72 73 74 75 76 77 78 79 80 81 82 83 84 | # Gtk widgets gtk_list = None # Gtk widget for station treeview gtk_cat = None # Gtk widget for category columns ls = None # ListStore for station treeview rowmap = None # Preserve streams-datamap pix_entry = None # ListStore entry that contains favicon img_resize = None # Rescale `img` references to icon size # mapping of stream{} data into gtk treeview/treestore representation datamap = [ # coltitle width [ datasrc key, type, renderer, attrs ] [cellrenderer2], ... ["", 20, ["state", str, "pixbuf", {}], ], ["Genre", 65, ['genre', str, "t", {}], ], | > | | 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | # Gtk widgets gtk_list = None # Gtk widget for station treeview gtk_cat = None # Gtk widget for category columns ls = None # ListStore for station treeview rowmap = None # Preserve streams-datamap pix_entry = None # ListStore entry that contains favicon img_resize = None # Rescale `img` references to icon size fixed_size = [24,24] # Default height+width for favicons # mapping of stream{} data into gtk treeview/treestore representation datamap = [ # coltitle width [ datasrc key, type, renderer, attrs ] [cellrenderer2], ... ["", 20, ["state", str, "pixbuf", {}], ], ["Genre", 65, ['genre', str, "t", {}], ], ["Station Title",275, ["title", str, "text", {"strikethrough":11, "cell-background":12, "cell-background-set":13}], ["favicon", gtk.gdk.Pixbuf, "pixbuf", {"expand":False}], ], ["Now Playing", 185, ["playing", str, "text", {"strikethrough":11}], ], #{"width":20} ["Listeners", 45, ["listeners", int, "t", {"strikethrough":11}], ], #["Max", 45, ["max", int, "t", {}], ], ["Bitrate", 35, ["bitrate", int, "t", {}], ], ["Homepage", 160, ["homepage", str, "t", {"underline":10}], ], [False, 25, ["url", str, "t", {"strikethrough":11}], ], [False, 20, ["format", str, None, {}], ], |
︙ | ︙ | |||
183 184 185 186 187 188 189 | # add to main menu uikit.add_menu([parent.channelmenuitems], self.meta["title"], lambda w: parent.channel_switch_by_name(self.module) or 1) # Just wraps uikit.columns() to retain liststore, rowmap and pix_entry def columns(self, entries=None): self.ls, self.rowmap, self.pix_entry = uikit.columns( | | > | 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | # add to main menu uikit.add_menu([parent.channelmenuitems], self.meta["title"], lambda w: parent.channel_switch_by_name(self.module) or 1) # Just wraps uikit.columns() to retain liststore, rowmap and pix_entry def columns(self, entries=None): self.ls, self.rowmap, self.pix_entry = uikit.columns( self.gtk_list, self.datamap, entries, show_favicons=True, fixed_size=self.fixed_size ) # no longer using `conf.show_favicons` # Statusbar stub (defers to parent/main window, if in GUI mode) def status(self, *args, **kw): if self.parent: self.parent.status(*args, **kw) |
︙ | ︙ |
Modified contrib/reddit.py from [3ee971501f] to [74725ffeda].
︙ | ︙ | |||
46 47 48 49 50 51 52 | class reddit (ChannelPlugin): # control attributes has_search = False listformat = "srv" audioformat = "video/youtube" titles = dict(playing="submitter", listeners="votes", bitrate=False) | > > | > | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | class reddit (ChannelPlugin): # control attributes has_search = False listformat = "srv" audioformat = "video/youtube" titles = dict(playing="submitter", listeners="votes", bitrate=False) # favicon scaling (from reddit preview `img`) img_resize = 32 fixed_size = [32,26] # just subreddit names to extract from categories = [ # static radio list "radioreddit 📟", # major subreddits |
︙ | ︙ | |||
292 293 294 295 296 297 298 | if not format: if conf.reddit_keep_all: state = "gtk-page-setup" format = "url/http" else: log.DATA_SKIP(format, row["url"]) continue | < | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 | if not format: if conf.reddit_keep_all: state = "gtk-page-setup" format = "url/http" else: log.DATA_SKIP(format, row["url"]) continue # repack into streams list r.append(dict( title = row["title"], url = row["url"], genre = re.findall("\[(.+?)\]", row["title"] + "[-]")[0], playing = row["author"], |
︙ | ︙ |
Modified uikit.py from [b587b433a7] to [a196775096].
︙ | ︙ | |||
82 83 84 85 86 87 88 | # # An according entries list then would contain a dictionary for each row: # entries = [ {"titlerow":"first", "interndat":123}, {"titlerow":"..."}, ] # Keys not mentioned in the datamap get ignored, and defaults are applied # for missing cols. All values must already be in the correct type however. # @staticmethod | | | | | | | | | | > > > > > < < < < < < < | 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | # # An according entries list then would contain a dictionary for each row: # entries = [ {"titlerow":"first", "interndat":123}, {"titlerow":"..."}, ] # Keys not mentioned in the datamap get ignored, and defaults are applied # for missing cols. All values must already be in the correct type however. # @staticmethod def columns(widget, datamap=[], entries=None, show_favicons=True, pix_entry=False, fixed_size=24): # create treeviewcolumns? if not widget.get_column(0): # loop through titles datapos = 0 for n_col, desc in enumerate(datamap): # check for title if not isinstance(desc[0], str): datapos += 1 # if there is none, this is just an undisplayed data column continue # new tvcolumn col = gtk.TreeViewColumn(desc[0]) # title col.set_resizable(True) # width if (desc[1] > 0): col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) col.set_fixed_width(desc[1]) # loop through cells for var in range(2, len(desc)): cell = desc[var] # cell renderer if (cell[2] == "pixbuf"): rend = gtk.CellRendererPixbuf() # img cell # stock icons if cell[1] == str: # only match for literal `str` cell[3]["stock_id"] = datapos expand = False # pixbufs else: pix_entry = datapos cell[3]["pixbuf"] = datapos if fixed_size: if not isinstance(fixed_size, list): fixed_size = [fixed_size, fixed_size] rend.set_fixed_size(*fixed_size) else: rend = gtk.CellRendererText() # text cell cell[3]["text"] = datapos #col.set_sort_column_id(datapos) # only on textual cells # attach cell to column col.pack_end(rend, expand=cell[3].get("expand",True)) # apply attributes for attr,val in list(cell[3].items()): col.add_attribute(rend, attr, val) # next datapos += 1 #log.INFO(cell, len(cell)) # add column to treeview widget.append_column(col) # add data? if (entries is not None): #- expand datamap vartypes = [] #(str, str, bool, str, int, int, gtk.gdk.Pixbuf, str, int) rowmap = [] #["title", "desc", "bookmarked", "name", "count", "max", "img", ...] for desc in datamap: |
︙ | ︙ |