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

⌈⌋ ⎇ branch:  streamtuner2


Diff

Differences From Artifact [d0ecae043d]:

To Artifact [3eb72c0f83]:


37
38
39
40
41
42
43

44
45
46
47
48
49
50
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51







+







import sys
import os
import re
from copy import copy
import inspect
import traceback
from threading import Thread
import time

# add library path (either global setup, or pyzip basename)
if not os.path.dirname(__file__) in sys.path:
    sys.path.insert(0, os.path.dirname(__file__))

# initializes itself, so all conf.vars are available right away
from config import *
353
354
355
356
357
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
354
355
356
357
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







-
-
-
+
+
+
+
-
-
-
+
+
-
-
-

+
-
-
+
+
+
+




-
+
-

-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+







    def switch_notebook_tabs_position(self, w, pos):
        self.notebook_channels.set_tab_pos(pos);
        




    # shortcut to statusbar
    # (hacked to work from within threads, circumvents the statusbar msg pool actually)
    def status(self, text="", sbar_msg=[]):
    # 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):
        # init
        sbar_cid = self.get_widget("statusbar").get_context_id("messages")
        # remove text
        self.status_last = time.time() + timeout

        while ((not text) and (type(text)==str) and len(sbar_msg)):
            sbar_msg.pop()
            uikit.do(self.statusbar.pop, sbar_cid, immediate=1)
        # progressbar
        if isinstance(text, (int, float)):
        if (type(text)==float):
            if text >= 0.999 or text < 0.0:  # completed
            log.FLOAT(text)
            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)
                if (text <= 0):  # unknown state

                    uikit.do(self.progress.pulse, immediate=1)
        # add text
        elif (type(text)==str):
        elif isinstance(text, (str, unicode)):
            sbar_msg.append(1)
            uikit.do(self.statusbar.push, sbar_cid, text, immediate=1)
        pass
            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()