Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -2,11 +2,11 @@ # · http://fossil.include-once.org/versionnum/ # · http://fossil.include-once.org/xpm/ SHELL := /bin/bash #(for brace expansion) NAME := streamtuner2 -VERSION := $(shell version get:plugin st2.py || echo 2.1dev) +VERSION := $(shell version get:plugin st2.py || echo 2.2dev) DEST := /usr/share/streamtuner2 INST := install -m 644 PACK := xpm DEPS := -n $(NAME) -d python -d python-pyquery -d python-gtk2 -d python-requests -d python-keybinder DEPS_A := -n $(NAME) -d pygtk -d python2 -d python2-cssselect -d python2-keybinder2 -d python2-lxml -d python2-pillow -d python2-pyquery -d python2-xdg -d python2-requests --provides streamtuner-python @@ -69,10 +69,11 @@ dpkg-deb -I streamtuner2*deb rpm -qpil *rpm upload: scp *.{deb,rpm,exe,pyz,arch.txz,txz} io:st2/ + scp *.{deb,rpm,exe,pyz,arch.txz,txz} sf:/home/frs/project/streamtuner2/ # manual installation install: mkdir -p $(DEST)/channels mkdir -p /usr/share/doc/streamtuner2/help/img Index: NEWS ================================================================== --- NEWS +++ NEWS @@ -1,5 +1,23 @@ +2.2.1 (2018-12-31) + * Fix missing import for find_executable fallback. + * Fixed shoutcast base url, and added format option. + * Updates to extraction for radiolist.net, delicast, streema. + * Optional bookmark subcategories. + * Radiotray-NG support. + * Optional toolbar button for search dialog. + * Added plugin to highlight Vorbis and Opus streams. + * New recordflags plugin with additional command options. + * Support for internal calls in specbuttons. + * Disable man page compression. + * New st2subprocess plugin for alternative player invocation schemes (mostly Windows). + * UI changes for player/application configuration and feature settings, + colorization and icons in main statusbar. + * More streamlined heuristic for URL and format guessing. + * Logging and broader plugin dependency checking. + * Minor text fixes. + * Windows fixes related to paths and encoding. 2.2.0 (2016-12-31) * Adds new plugins for RCast, Streema, vTuner2, Liveradio.ie, RadioSure, house-mixes, and Reciva. * Feature extensions include the Cache Reset, Config import/export, Index: channels/bookmarks.py ================================================================== --- channels/bookmarks.py +++ channels/bookmarks.py @@ -102,10 +102,11 @@ # checks for existence of an URL in bookmarks store, # this method is called by other channel modules' display() method def is_in(self, url, once=1): if (not self.urls): + #@todo: traverse all categories? self.urls = [str(row.get("url","urn:x-streamtuner2:no")) for row in self.streams["favourite"]] return str(url) in self.urls # called from main window / menu / context menu, @@ -122,11 +123,11 @@ row["extra"] = self.parent.channel().module # append to storage self.streams[target].append(row) self.save() - self.load(self.default) + self.load(target) self.urls.append(row["url"]) # simplified gtk TreeStore display logic (just one category for the moment, always rebuilt) def load(self, category, force=False, y=None): Index: releases.json ================================================================== --- releases.json +++ releases.json @@ -15,10 +15,18 @@ "raw": "http://milki.include-once.org/streamtuner2/streamtuner2-$version.bin.txz", "exe": "http://milki.include-once.org/streamtuner2/streamtuner2-$version.exe", "arch": "http://milki.include-once.org/streamtuner2/streamtuner2-$version.arch.txz" }, "releases": [ + { + "version": "2.2.1", + "state": "stable", + "scope": "minor bugfix", + "changes": "Fix missing import for find_executable fallback. Fixed shoutcast base url, and added format option. Updates to extraction for radiolist.net, delicast, streema. Optional bookmark subcategories. Radiotray-NG support. Optional toolbar button for search dialog. Added plugin to highlight Vorbis and Opus streams. New recordflags plugin with additional command options. Support for internal calls in specbuttons. Disable man page compression. New st2subprocess plugin for alternative player invocation schemes (mostly Windows). UI changes for player/application configuration and feature settings, colorization and icons in main statusbar. More streamlined heuristic for URL and format guessing. Logging and broader plugin dependency checking. Windows fixes related to paths and encoding. Minor text fixes.", + "download": "http://sourceforge.net/projects/streamtuner2/files/", + "published": "2018-12-31T14:00:00+0000" + }, { "version": "2.2.0", "state": "stable", "scope": "major feature", "changes": "Adds new plugins for RCast, Streema, vTuner2, Liveradio.ie, RadioSure, house-mixes, and Reciva. Feature extensions include the Cache Reset, Config import/export, Gtk theme setting and installer, and Specbuttons for custom shortcuts, and script stations. Live365, di.fm and WindowsMediaGuide are gone. Marks the first release with thorough Windows support, and comes with a Python+Gtk post-installer and additional tools for the SFX archive. Comes with a CHM manual version instead. Many typos and stale infos in the manual have been remedied, more details on contrib plugins and station status icons (reddit, dirble, etc), and stream $placeholders have been documented. Internet-Radio now supports the search, its DOM extraction was updated. Other fixes encompass the file browser, MODarchive categories, Radio-Browser submit function, Radionomy icon sizes. Reddit and Record-stop are now distributed plugins. Channels can easier hook new content types and extractors in the action module, the .QTL export format was added, better cross-platform quoting and a multi-URL workaround added. Better channel refresh indication, and colorized status bar. Plugin management has been extended, and a few fixes and option safeguards applied, support for table/dict settings. Other internal changes include plugin init2() callbacks, a secret `conf.cmd` option, `rt` open flag fixes, new unichr() alias, a cmd= flag for run_fmt_url().", Index: st2.py ================================================================== --- st2.py +++ st2.py @@ -2,11 +2,11 @@ # encoding: UTF-8 # api: python # type: application # title: streamtuner2 # description: Directory browser for internet radio, audio and video streams -# version: 2.2.1-dev20181218 +# version: 2.2.1 # state: stable # author: Mario Salzer # license: Public Domain # url: http://freshcode.club/projects/streamtuner2 # config: Index: uikit.py ================================================================== --- uikit.py +++ uikit.py @@ -576,19 +576,29 @@ return gtk.STOCK_NEW # Attach textual menu entry and callback @staticmethod - def add_menu(menuwidget, label, action, insert=None): + def add_menu(menuwidget, label, action=None, stock=None, submenu=None, insert=None): for where in list(menuwidget): - m = gtk.MenuItem(label) - m.connect("activate", action) - m.show() + # plain or image menu item + if stock: + m = gtk.ImageMenuItem(stock) + m.set_label(label) + else: + m = gtk.MenuItem(label) + # callback or submenu + if action: + m.connect("activate", action) + elif submenu: + m.set_submenu(submenu) + # insert or append if insert: where.insert(m, insert) else: where.add(m) + m.show() # gtk.messagebox @staticmethod def msg(text, style=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_CLOSE, yes=None):