Diff
Differences From Artifact [f927301f5f]:
- File channels/_generic.py — part of check-in [7ef1553f61] at 2014-04-07 00:33:43 on branch trunk — Move __print__ into config, add unified dbg.COLOR codes (user: mario, size: 20094) [annotate] [blame] [check-ins using]
To Artifact [4cf18f9328]:
- File channels/_generic.py — part of check-in [1beab0563e] at 2014-04-10 04:31:02 on branch py3 — * Fixed gtk_list_store_get_value: assertion `column < list_store->n_columns' by removing {width:20} reference from treeview datamap. * row.setdefault() for absent search_col/set and deleted state * More __print__/dbg colorization * Disabled pson.filter_data in favour of str casting in mygtk.columns() * Removed streamactions.popup PY2/PY3 workaround with named args * More .iteritems() removal (user: mario, size: 20134) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
19 20 21 22 23 24 25 | # adds the required gtk Widgets manually. # import gtk from mygtk import mygtk from config import conf, __print__, dbg | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # adds the required gtk Widgets manually. # import gtk from mygtk import mygtk from config import conf, __print__, dbg import ahttp as http import action import favicon import os.path import xml.sax.saxutils import re import copy |
︙ | ︙ | |||
68 69 70 71 72 73 74 | gtk_cat = None #gtk widget # 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", {}], ], | | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | gtk_cat = None #gtk widget # 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", {}], ], ["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, 0, ["format", str, None, {}], ], [False, 0, ["favourite", bool, None, {}], ], |
︙ | ︙ | |||
145 146 147 148 149 150 151 | self.gtk_cat = parent.get_widget(self.module+"_cat") # category tree self.display_categories() #mygtk.tree(self.gtk_cat, self.categories, title="Category", icon=gtk.STOCK_OPEN); # update column names | | | | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | self.gtk_cat = parent.get_widget(self.module+"_cat") # category tree self.display_categories() #mygtk.tree(self.gtk_cat, self.categories, title="Category", icon=gtk.STOCK_OPEN); # update column names for field,title in list(self.titles.items()): self.update_datamap(field, title=title) # prepare stream list if (not self.rowmap): for row in self.datamap: for x in range(2, len(row)): self.rowmap.append(row[x][0]) # load default category if (self.current): self.load(self.current) else: mygtk.columns(self.gtk_list, self.datamap, [{}]) |
︙ | ︙ | |||
179 180 181 182 183 184 185 | # switch stream category, # load data, # update treeview content def load(self, category, force=False): # get data from cache or download | | | 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | # switch stream category, # load data, # update treeview content def load(self, category, force=False): # get data from cache or download if (force or not category in self.streams): new_streams = self.update_streams(category) if new_streams: # modify [self.postprocess(row) for row in new_streams] |
︙ | ︙ | |||
233 234 235 236 237 238 239 | # finds differences in new/old streamlist, marks deleted with flag def deleted_streams(self, new, old): diff = [] new = [row.get("url","http://example.com/") for row in new] for row in old: | | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 | # finds differences in new/old streamlist, marks deleted with flag def deleted_streams(self, new, old): diff = [] new = [row.get("url","http://example.com/") for row in new] for row in old: if (url in row and (row.get("url") not in new)): row["deleted"] = 1 diff.append(row) return diff # prepare data for display def prepare(self, streams): for i,row in enumerate(streams): # oh my, at least it's working # at start the bookmarks module isn't fully registered at instantiation in parent.channels{} - might want to do that step by step rather # then display() is called too early to take effect - load() & co should actually be postponed to when a notebook tab gets selected first # => might be fixed now, 1.9.8 # state icon: bookmark star if (conf.show_bookmarks and "bookmarks" in self.parent.channels and self.parent.bookmarks.is_in(streams[i].get("url", "file:///tmp/none"))): streams[i]["favourite"] = 1 # state icon: INFO or DELETE if (not row.get("state")): if row.get("favourite"): streams[i]["state"] = gtk.STOCK_ABOUT if conf.retain_deleted and row.get("deleted"): |
︙ | ︙ | |||
307 308 309 310 311 312 313 | if (self.shown != 55555): # if category tree is empty, initialize it if not self.categories: __print__(dbg.PROC, "first_show: reload_categories"); #self.parent.thread(self.reload_categories) | < | | 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 | if (self.shown != 55555): # if category tree is empty, initialize it if not self.categories: __print__(dbg.PROC, "first_show: reload_categories"); #self.parent.thread(self.reload_categories) self.reload_categories() self.display_categories() self.current = self.categories.keys()[0] __print__(dbg.STAT, self.current) self.load(self.current) # load current category else: __print__(dbg.STAT, "first_show: load current category"); self.load(self.current) |
︙ | ︙ |