Internet radio browser GUI for music/video streams from various directory services.

βŒˆβŒ‹ βŽ‡ branch:  streamtuner2


Check-in [049b945a64]

Overview
Comment:Statusbar timeout and reset still not as planned.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 049b945a64b7babe9343d9713086f341ce40e73d
User & Date: mario on 2015-04-30 06:21:29
Other Links: manifest | tags
Context
2015-04-30
06:22
Add new channel plugin for filtermusic.net, which works both per website extraction and from XML map traversal. (Again, the HTMLβ†’regex grepping seems more reliable.) check-in: 4b395e5d70 user: mario tags: trunk
06:21
Statusbar timeout and reset still not as planned. check-in: 049b945a64 user: mario tags: trunk
06:21
Add new config dialog group for "Playlists". Conf setting `playlist_asis` completely skips action.convert_playlist(). Works for any real m3u/pls/srv server and flexible audio players. But obviously breaks Jamendo albums or other JSON playlist sources. check-in: 470e3fac2b user: mario tags: trunk
Changes

Modified st2.py from [64a9872a0a] to [a4ef7a55bf].

358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375

376
377
378
379

380
381
382
383
384
385
386
387
388
389

390
391
392
393
394
395
396



    # Shortcut to statusbar and progressbar.
    # 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
        # add timer
        else:
            gobject.timeout_add(int(timeout*1000), self.status)
        return True



    # load plugins from /usr/share/streamtuner2/channels/
    def load_plugin_channels(self):

        # initialize plugin modules (pre-ordered)
        ls = module_list()







|










>
|



>










>







358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399



    # Shortcut to statusbar and progressbar.
    # 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):
        t = 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)
            self.status_last = t
            
        # add text
        elif isinstance(text, (str)):
            uikit.do(self.statusbar.set_text, text)
            self.status_last = t

        # timeout
        if not text or time.time() >= self.status_last:
            self.statusbar.set_text("")
            self.progress.hide()
            return False
        # add timer
        else:
            gobject.timeout_add(int(timeout*1000), self.status)
        return True
    status_last = 0


    # load plugins from /usr/share/streamtuner2/channels/
    def load_plugin_channels(self):

        # initialize plugin modules (pre-ordered)
        ls = module_list()