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

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


Check-in [9520bc51a3]

Overview
Comment:Removed plugin option background colors.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 9520bc51a3b5d7aa6f969eb78df576f611121e05
User & Date: mario on 2016-12-03 21:23:12
Other Links: manifest | tags
Context
2016-12-03
21:24
Fix regex groups for find_player_win path quoting check-in: a03f6235f0 user: mario tags: trunk
21:23
Removed plugin option background colors. check-in: 9520bc51a3 user: mario tags: trunk
14:47
Introduce Gtk theme switching again. check-in: 303e1c8e48 user: mario tags: trunk
Changes

Modified channels/favicon.py from [c4ea9b38ed] to [06b56c7d15].

1
2
3
4
5
6

7
8
9
10
11
12
13
1
2
3
4
5

6
7
8
9
10
11
12
13





-
+







# encoding: utf-8
# api: streamtuner2
# title: Favicons
# description: Load and display station favicons/logos.
# config:
#    { name: load_favicon, type: bool, value: 1, description: "Load favicon instantly when β–Έplaying a station.", color: "#fff7cc" }
#    { name: load_favicon, type: bool, value: 1, description: "Load favicon instantly when β–Έplaying a station." }
#    { name: favicon_google_first, type: bool, value: 1, description: "Use Google favicon-to-PNG conversion service (faster)." }
#    { name: favicon_delete_stub , type: bool, value: 1, description: "Don't accept any placeholder favicons." }
#    { name: google_homepage, type: bool, value: 0, description: "Google missing station homepages right away." }
# type: feature
# category: ui
# version: 2.0
# depends: streamtuner2 >= 2.1.9, python:pil

Modified channels/pluginmanager2.py from [5a7e32371d] to [9d68673fa8].

1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18










-
+







# encoding: UTF-8
# api: streamtuner2
# title: User Plugin Manager β…‘
# description: Downloads new plugins, or updates them.
# version: 0.5
# type: hook
# category: config
# depends: uikit >= 1.9, config >= 2.7, streamtuner2 >= 2.1.8, pluginconf < 1.0
# config:
#   { name: plugin_repos, type: text, value: "http://fossil.include-once.org/repo.json/streamtuner2/contrib/*.py, http://fossil.include-once.org/repo.json/streamtuner2/channels/*.py", description: "Plugin repository JSON source references.", hidden: 1 }
#   { name: plugin_auto, type: boolean, value: 1, description: Apply plugin activation/disabling without restart., color: "#fff7cc" }
#   { name: plugin_auto, type: boolean, value: 1, description: Apply plugin activation/disabling without restart. }
# priority: extra
# png:
#   iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAJ1BMVEUAAABNYQVcdAx1iTB6mQ6KsQGUsTCUuxGmyDKvzEK51FnB13LP3pnSUwRYAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsT
#   AQCanBgAAAAHdElNRQffBQ4EMidI8LXfAAABGUlEQVQoz32NPU7DQBCFx4aOxosIIOzGlkWRiogGkBssRfQoK/cxRBwAaw6AhJcLoAwtlTdlKtiSMj4U++PIBiReM/O+mXkD0ImdMxhqp23bsyHINkp9/Qu8TLXBj5BMrfsp
#   08rk2hT7KtIf2o1cmWJzIqU+pVVD9i6SW9Ev0BC9D0FDSzEExouyB0QkLGAQunMSL7IuwVNB+EZu/Bw/lLAnJ1fa6nOBT3CZQ0irDzsWiHo/gLFwqhFxbl6Me+/AiXhdmnUHfIBDMb+onccZnE7AXwTHncfH5CYHSGALeHGH
#   tybGAr7gFS8KC464Vs7Se84dGGlvmvQPqAZgFoM/7QYwQqx0fIoFuo0DE3oNuzbbgP1EKwDPlPgb5NefnUHe3aAAAAAASUVORK5CYII=
# support: experimental

Modified channels/timer.py from [54d1bc1879] to [5943cf3866].

100
101
102
103
104
105
106
107
108
109
110








111
112
113
114
115
116

117
118
119
120
121
122
123
124
125
126
127
100
101
102
103
104
105
106

107
108

109
110
111
112
113
114
115
116
117
118
119
120
121

122




123
124
125
126
127
128
129







-


-
+
+
+
+
+
+
+
+





-
+
-
-
-
-








    # done        
    def hide(self, *w):
        return self.parent.timer_dialog.hide()

    # close dialog,get data
    def add_timer(self, *w):
        self.parent.timer_dialog.hide()
        row = self.parent.row()
        row = copy.copy(row)
        

        # basic check for consistency
        if not re.match("^(\w{2,3}|\*|,)+\s+(\d+:\d+[-.\d+:]*)\s+(record|play)", row[self.timefield]):
            self.parent.status("β›” Danger, Will Robinson! β†’ The given timer date/action is likely invalid. Entry not saved.", timeout=22)
            return

        self.parent.timer_dialog.hide()

        # add data
        row["listformat"] = "href" #self.parent.channel().listformat
        if row.get(self.timefield):
            row["title"] = row["title"] + " -- " + row[self.timefield]
        row[self.timefield] = self.parent.timer_value.get_text()
        

        # basic check for consistency
        if not re.match("^(\w{2,3}|\*|,)+\s+(\d+:\d+[-.\d+:]*)\s+(record|play)", row[self.timefield]):
            self.parent.status("β›” Danger, Will Robinson! β†’ The given timer date/action is likely invalid. This won't work.", timeout=22)
        
        # store
        self.save_timer(row)
    
    
    # store row in timer database
    def save_timer(self, row):
        self.streams.append(row)