Check-in [a872fb7d36]
Overview
Comment: | Split up Extensions› submenus. Register major plugins (timer, myoggradio, radiotray) as direct menu entries, but complex extensions (exportcat) as subentry still. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a872fb7d36a84d1c530768f2ce41b548 |
User & Date: | mario on 2015-04-07 19:49:25 |
Other Links: | manifest | tags |
Context
2015-04-07
| ||
22:19 | Added some notes about "Export all" plugin. List streams#actions as topic in index.page check-in: 97bb4bbfe9 user: mario tags: trunk | |
19:49 | Split up Extensions› submenus. Register major plugins (timer, myoggradio, radiotray) as direct menu entries, but complex extensions (exportcat) as subentry still. check-in: a872fb7d36 user: mario tags: trunk | |
19:48 | Fix main. references from bookmarks callback. check-in: 5a772b3c64 user: mario tags: trunk | |
Changes
Makefile became a regular file with contents [d3f05bad3b].
︙ | ︙ |
Modified channels/myoggradio.py from [cdf48de82f] to [acdf73781d].
1 2 3 4 5 6 | # api: streamtuner2 # title: MyOggRadio # description: Open source internet radio directory. # type: channel # category: radio | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # api: streamtuner2 # title: MyOggRadio # description: Open source internet radio directory. # type: channel # category: radio # version: 0.7 # url: http://www.myoggradio.org/ # depends: json, StringIO # config: # { name: myoggradio_login, type: text, value: "user:password", description: "Account for storing personal favourites." } # { name: myoggradio_morph, type: boolean, value: 0, description: "Convert pls/m3u into direct shoutcast url." } # priority: standard # png: |
︙ | ︙ | |||
24 25 26 27 28 29 30 | # # Beforehand an account needs to be configured in the settings. (Registration # on myoggradio doesn't require an email address or personal information.) # from channels import * | | | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | # # Beforehand an account needs to be configured in the settings. (Registration # on myoggradio doesn't require an email address or personal information.) # from channels import * from config import * from action import action from uikit import uikit import ahttp as http import re import json from compat2and3 import StringIO import copy from uikit import gtk # open source radio sharing stie class myoggradio(ChannelPlugin): # settings title ="MOR" |
︙ | ︙ | |||
62 63 64 65 66 67 68 | # prepare GUI def __init__(self, parent): ChannelPlugin.__init__(self, parent) if parent: | | > | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | # prepare GUI def __init__(self, parent): ChannelPlugin.__init__(self, parent) if parent: #uikit.add_menu([parent.extensions, parent.extensions_context], "Share in MyOggRadio", self.share) uikit.add_menu([parent.streammenu, parent.streamactions], "Share in MyOggRadio", self.share, insert=4) # this is simple, there are no categories def update_categories(self): pass |
︙ | ︙ | |||
180 181 182 183 184 185 186 187 188 189 190 | def user_pw(self): if len(conf.myoggradio_login) and conf.myoggradio_login != "user:password": return conf.myoggradio_login.split(":") else: lap = conf.netrc(["myoggradio", "myoggradio.org", "www.myoggradio.org"]) if lap: return [lap[0] or lap[1], lap[2]] pass | > > | 181 182 183 184 185 186 187 188 189 190 191 192 193 | def user_pw(self): if len(conf.myoggradio_login) and conf.myoggradio_login != "user:password": return conf.myoggradio_login.split(":") else: lap = conf.netrc(["myoggradio", "myoggradio.org", "www.myoggradio.org"]) if lap: return [lap[0] or lap[1], lap[2]] else: self.parent.status("No login data for MyOggRadio configured. See F12 for setup, or F1 for help."); pass |
Modified channels/radiotray.py from [f93c102d40] to [6a4e939185].
︙ | ︙ | |||
71 72 73 74 75 76 77 | # create category self.bm.add_category("radiotray", plugin=self); self.bm.streams["radiotray"] = self.update_streams(cat="radiotray") self.bm.reload_if_current(self.module) # add context menu | < | | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | # create category self.bm.add_category("radiotray", plugin=self); self.bm.streams["radiotray"] = self.update_streams(cat="radiotray") self.bm.reload_if_current(self.module) # add context menu uikit.add_menu([parent.streammenu, parent.streamactions], "Keep in RadioTray", self.share, insert=4) # load RadioTray bookmarks def update_streams(self, cat): r = [] try: for group in ElementTree.parse(self.rt_xml).findall(".//group"): |
︙ | ︙ |
Modified channels/timer.py from [0dc91cdebf] to [242512e240].
︙ | ︙ | |||
45 46 47 48 49 50 51 | # kronos scheduler list sched = None # prepare gui def __init__(self, parent): | | > | | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | # kronos scheduler list sched = None # prepare gui def __init__(self, parent): if not parent: return # keep reference to main window self.parent = parent self.bookmarks = parent.bookmarks # add menu uikit.add_menu([parent.streammenu, parent.streamactions], "Add timer for station", self.edit_timer, insert=4) # target channel if not self.bookmarks.streams.get("timer"): self.bookmarks.streams["timer"] = [{"title":"--- timer events ---"}] self.bookmarks.add_category("timer") self.streams = self.bookmarks.streams["timer"] |
︙ | ︙ |
Modified gtk3.xml.gz from [4a4edf99dd] to [636af55d84].
cannot compute difference between binary files
Modified uikit.py from [594d66e076] to [0158bdc6ec].
︙ | ︙ | |||
431 432 433 434 435 436 437 | b.pack_start(w1, expand=not exr, fill=not exr) b.pack_start(w2, expand=exr, fill=exr) return b # Attach textual menu entry and callback @staticmethod | | > > > | | 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 | b.pack_start(w1, expand=not exr, fill=not exr) b.pack_start(w2, expand=exr, fill=exr) return b # Attach textual menu entry and callback @staticmethod def add_menu(menuwidget, label, action, insert=None): for where in list(menuwidget): m = gtk.MenuItem(label) m.connect("activate", action) m.show() if insert: where.insert(m, insert) else: where.add(m) # gtk.messagebox @staticmethod def msg(text, style=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_CLOSE): m = gtk.MessageDialog(None, 0, style, buttons, message_format=text) m.show() |
︙ | ︙ |