Check-in [363dce5eb9]
Overview
| Comment: | Cover most catched exceptions with log messages. |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
363dce5eb97bffc333a85e7f0d7f7e4f |
| User & Date: | mario on 2015-04-26 15:35:21 |
| Other Links: | manifest | tags |
Context
|
2015-04-26
| ||
| 22:21 | Fixed gtk.main_iteration() extraneous parameter in gui_startup. check-in: 748d2aaed8 user: mario tags: trunk | |
| 15:35 | Cover most catched exceptions with log messages. check-in: 363dce5eb9 user: mario tags: trunk | |
| 15:34 | More customized log categories/colorization. check-in: 0943cca27e user: mario tags: trunk | |
Changes
Modified channels/__init__.py from [b129e11a0f] to [5fc4a7eeff].
| ︙ | ︙ | |||
198 199 200 201 202 203 204 |
def row_icon(self, gtkIcon = gtk.STOCK_ABOUT):
try:
# Updates gtk_list store, set icon in current display.
# Since it is used by bookmarks, would be reshown with next display() anyhow,
# and there's no need to invalidate the ls cache, because that's referenced by model anyhow.
(model,iter) = self.model_iter()
model.set_value(iter, 0, gtkIcon)
| | | | 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
def row_icon(self, gtkIcon = gtk.STOCK_ABOUT):
try:
# Updates gtk_list store, set icon in current display.
# Since it is used by bookmarks, would be reshown with next display() anyhow,
# and there's no need to invalidate the ls cache, because that's referenced by model anyhow.
(model,iter) = self.model_iter()
model.set_value(iter, 0, gtkIcon)
except Exception as e:
log.ERR_UIKIT("Couldn't set row_icon()", e)
#------------------------ base implementations -----------------------------
# read previous channel/stream data, if there is any
def cache(self):
|
| ︙ | ︙ |
Modified channels/links.py from [a70b7e1793] to [d2e4f35037].
| ︙ | ︙ | |||
74 75 76 77 78 79 80 |
# fill it up later
parent.hooks["init"].append(self.populate)
def populate(self, parent):
| | | | | | | | | | | > > > | 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# fill it up later
parent.hooks["init"].append(self.populate)
def populate(self, parent):
# Collect links from channel plugins
for name,channel in parent.channels.items():
try:
self.streams.append({
"favourite": 1,
"genre": "channel",
"title": channel.meta.get("title", channel.module),
"homepage": channel.meta.get("url", ""),
"type": "text/html",
})
except Exception as e:
log.ERR("links: adding entry failed:", e)
# Add built-in link list
for row in self.default:
(genre, title, homepage) = row
self.streams.append({
"genre": genre,
"title": title,
"homepage": homepage,
"type": "text/html",
|
| ︙ | ︙ |
Modified channels/radiotray.py from [60345f8f8f] to [f195cf603e].
| ︙ | ︙ | |||
87 88 89 90 91 92 93 |
for bookmark in group.findall("bookmark"):
r.append({
"genre": group.attrib["name"],
"title": bookmark.attrib["name"],
"url": bookmark.attrib["url"],
"playing": "",
})
| | | | 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
for bookmark in group.findall("bookmark"):
r.append({
"genre": group.attrib["name"],
"title": bookmark.attrib["name"],
"url": bookmark.attrib["url"],
"playing": "",
})
except Exception as e:
log.DATA("Extracting from radiotray bookmarks.xml failed:", e)
return r
# send to
def share(self, *w):
row = self.parent.row()
if row:
|
| ︙ | ︙ |
Modified channels/search.py from [14f30d1313] to [21f830ba0a].
| ︙ | ︙ | |||
105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
log.PROC("has_search:", cn.module)
try:
add = cn.update_streams(cat=None, search=self.q)
for row in add:
row["genre"] = cn.meta["title"] + " " + row.get("genre", "")
entries += add
except:
continue
#main.status(main, 1.0 * i / 15)
uikit.do(self.show_results, entries)
# search text edited in text entry box
def quicksearch_set(self, w, *eat, **up):
| > | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
log.PROC("has_search:", cn.module)
try:
add = cn.update_streams(cat=None, search=self.q)
for row in add:
row["genre"] = cn.meta["title"] + " " + row.get("genre", "")
entries += add
except:
log.WARN("server_search: update_streams error in {}:".format(cn.module), e)
continue
#main.status(main, 1.0 * i / 15)
uikit.do(self.show_results, entries)
# search text edited in text entry box
def quicksearch_set(self, w, *eat, **up):
|
| ︙ | ︙ |
Modified favicon.py from [0e317dc343] to [f1c4f8f20a].
| ︙ | ︙ | |||
260 261 262 263 264 265 266 |
direct_download(favicon, file(url))
# convert .ico file to .png format
def ico2png(ico, png_fn):
image = Image.open(ico)
| | | 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 |
direct_download(favicon, file(url))
# convert .ico file to .png format
def ico2png(ico, png_fn):
image = Image.open(ico)
log.FAVICON_ICO2PNG(ico, png, image)
# resize
if image.size[0] > 16:
image.resize((16, 16), Image.ANTIALIAS)
# .png format
image.save(png_fn, "PNG", quality=98)
|
| ︙ | ︙ |
Modified st2.py from [3eb72c0f83] to [a5bfd28a13].
| ︙ | ︙ | |||
362 363 364 365 366 367 368 |
# Either pass a string "" or a float 0.5, the message and pulse will be automatically
# removed after 5 seconds now.
def status(self, text=None, timeout=3):
self.status_last = time.time() + timeout
# progressbar
if isinstance(text, (int, float)):
| < | | 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 |
# Either pass a string "" or a float 0.5, the message and pulse will be automatically
# removed after 5 seconds now.
def status(self, text=None, timeout=3):
self.status_last = time.time() + timeout
# progressbar
if isinstance(text, (int, float)):
if (text <= 0): # unknown state
uikit.do(self.progress.pulse, immediate=1)
elif text >= 0.999 or text < 0.0: # completed
uikit.do(self.progress.hide)
else: # show percentage
uikit.do(self.progress.show, immediate=1)
uikit.do(self.progress.set_fraction, text, immediate=1)
# add text
elif isinstance(text, (str)):
uikit.do(self.statusbar.set_text, text)
# timeout
if not text or time.time() >= self.status_last:
self.statusbar.set_text("")
self.progress.hide()
return False
|
| ︙ | ︙ | |||
430 431 432 433 434 435 436 |
# load application state (widget sizes, selections, etc.)
def init_app_state(self):
winlayout = conf.load("window")
if (winlayout):
try: uikit.app_restore(self, winlayout)
| | | | 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 |
# load application state (widget sizes, selections, etc.)
def init_app_state(self):
winlayout = conf.load("window")
if (winlayout):
try: uikit.app_restore(self, winlayout)
except Exception as e: log.APPSTATE_RESTORE(e) # may fail for disabled/reordered plugin channels
winstate = conf.load("state")
if (winstate):
for id,prev in winstate.items():
try: self.channels[id].current = prev["current"]
except Exception as e: log.APPSTATE_RESTORE(e)
# store window/widget states (sizes, selections, etc.)
def save_app_state(self, widget):
# gtk widget states
widgetnames = ["win_streamtuner2", "toolbar", "notebook_channels", ] \
+ [id+"_list" for id in self.channel_names] \
+ [id+"_cat" for id in self.channel_names]
|
| ︙ | ︙ | |||
459 460 461 462 463 464 465 |
# end application and gtk+ main loop
def gtk_main_quit(self, widget, *x):
if conf.auto_save_appstate:
try: # doesn't work with gtk3 yet (probably just hooking at the wrong time)
self.save_app_state(widget)
except Exception as e:
| | | 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 |
# end application and gtk+ main loop
def gtk_main_quit(self, widget, *x):
if conf.auto_save_appstate:
try: # doesn't work with gtk3 yet (probably just hooking at the wrong time)
self.save_app_state(widget)
except Exception as e:
log.ERR("st2.gtk_main_quit", e)
gtk.main_quit()
# Right clicking a stream/station in the treeview to make context menu pop out.
def station_context_menu(self, treeview, event):
if treeview and event and event.button >= 3:
path = treeview.get_path_at_pos(int(event.x), int(event.y))
|
| ︙ | ︙ |
Modified uikit.py from [0b23e6b513] to [09bab8deb1].
| ︙ | ︙ | |||
664 665 666 667 668 669 670 |
pass
elif p < 1.0:
progressbar.set_fraction(p)
progressbar.set_property("text", msg)
while gtk.events_pending(): gtk.main_iteration(False)
else:
progresswin.hide()
| | > | 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 |
pass
elif p < 1.0:
progressbar.set_fraction(p)
progressbar.set_property("text", msg)
while gtk.events_pending(): gtk.main_iteration(False)
else:
progresswin.hide()
except Exception as e:
log.ERR("gui_startup()", e)
# Encapsulates references to gtk objects AND properties in main window,
# which allows to use self. and main. almost interchangably.
#
|
| ︙ | ︙ |