[SCM] streamtuner2/master: merge upstream
takaki at users.alioth.debian.org
takaki at users.alioth.debian.org
Thu Feb 2 10:36:51 UTC 2017
The following commit has been merged in the master branch:
commit 7c347a3472e3e1f31dd16147ae95418c508b7edc
Author: TANIGUCHI Takaki <takaki at asis.media-as.org>
Date: Thu Feb 2 18:59:40 2017 +0900
merge upstream
diff --git a/channels/dev_faulthandler.py b/channels/dev_faulthandler.py
deleted file mode 100644
index fc1db4e..0000000
--- a/channels/dev_faulthandler.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# api: python
-# title: faulthandler
-# description: capture fatal errors / memory fauls / Gtk and threading bugs
-# version: -1
-# type: io
-# category: debug
-# priority: development
-#
-# Debug Gtk/glibs/python/threading crashes.
-#
-# * Gdk:ERROR:/build/buildd/gtk+2.0-2.24.23/gdk/gdkregion-generic.c:1110:miUnionNonO:
-# assertion failed: (y1 < y2)
-# * foobar: double free or corruption (fasttop): 0x...
-
-
-import faulthandler
-faulthandler.enable()
- # file=open("/tmp/st2.log", "a+"), all_threads=True
-
-class dev_faulthandler(object):
- def __init__(sefl, *x, **kw):
- pass
-
diff --git a/channels/live365.py b/channels/live365.py
deleted file mode 100644
index e6ef4d4..0000000
--- a/channels/live365.py
+++ /dev/null
@@ -1,136 +0,0 @@
-
-# api: streamtunter2
-# title: Live365
-# description: Around 5000 categorized internet radio streams, some paid ad-free ones.
-# version: 0.4
-# type: channel
-# category: radio
-# url: http://www.live365.com/
-# config: -
-# priority: optional
-# png:
-# iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAzlJREFUOI1lk0tMXGUUx3/fvTP3zgyPGR5SKIQODdDGEtoCJdFopA9SJTFMjInGaJDEulWTGg2JApqoO+PShaAmdVEXQAxoCtgKNjYFWrQgMD6KDAylkde8Lnfunfu5IJii
-# Z3POSc7//M/i/AT/ichrbUE1NyckfN5WV0kpUjpYS4s4sdhAZnOrP9jTv/jgvHiw+ftSb5f2UEGnfuQYCIG9fg8pJa5AIdJIEf9hhNTkze5gz9ddexrXXrE1+E2v7/TZl9lcx/hxBCu5DUikzCDTFjiSrMYnyGp8vPOuaR+quNTXDqACRLve7cp5suV1YaSwpyewYts4
-# dgbhcuGprkFoOnZ0BTM8j9A85J576sQr96Pik4Xfr6l/nj8b9D7yaJ8rz8/O2FWctEXGTKP6/eQ924ZeUY21sowViSDTaaylJbSKSrCsplfNnS9cMiNC3ppayEhyX2wHAdt9l8k+cx6h68SGhzCmJ9CP1hAIPYdjGGQ21lF82cSHR0MuxzBbFU0js7FOOhzGU1tL9ulm
-# 3IUHAMhtbsFbc5yd2TsAJEavIC0b78k6sGWrohUfxJybJzE8gpoXAMBeWwPAWAqTvD6Ou6QULXgYgOwzzRi3bpMcv47n4WMo6B4yWzHM+TDGz7suyN2k5x9Er6zCSSSIDQ6x+tabKD4f7tIynHgcK3oPZf3mDfSqStSCQnZmf91V2hmiFy9iLixgLa+wMTmIOTeHq6gY
-# AOuvCHp1NcmFMK6ERx0wEvGmou5OtLJSrJUV7n/wEWY4TOLKCHsnlfV8hq+hgc3eL4l9O4y7sYGErgyIofqaYEHdqbvljzWx+v6HaI5ERSCE2Pen0pE4Wh22NUXxOx1Exq+yOTVRobRMzSxGZqa6zUI/3uefYcOrsq0JEqokhcRAkhSSuBti+gw5F9qxSw+wuRrpbp6e
-# XVQBLi+vXatfngseeuGlE/5TjUQX7pCSNoZbkNIUUrqCWRCg8u0OKC9h/L2Oz0OjP73xP5g+PXeyq+R4Q+eR5qfJ8maz/ds8AIGqoySNBMs3xvhjbKT7wvfT/8K0bwHAxy31QcWRIaA1v/ww3kA+0V8mAQb8+UX9bV99tw/nfwAe2WTAAcikxQAAAABJRU5ErkJggg==
-#
-# Live365 lists around 5000 radio stations. Some are paid
-# entries and require a logon. This plugins tries to filter
-# those out.
-
-
-# Non-tracking cookies:
-#
-# box_mc |bitrate=256|ls=3|hasFlash=Y|ab=viphp:G3|POC=8|mvd=2|SUPMsg=| (desktop player off)
-# |ab=viphp:G3|POC=10|bitrate=256|mvd=2|ls=3|hasFlash=Y|SUPMsg=| (desktop player on)
-# pg_mc |hp=A|darg=|curl=|curlt=Live365 - My Live365 - Listen Settings|
-# session_mc |plr=N|site=web|
-# player_mc |Vol=50|
-
-
-# streamtuner2 modules
-from config import *
-from uikit import *
-import ahttp
-from channels import *
-import action
-
-# python modules
-import re
-import copy
-import urllib
-from itertools import groupby
-from time import time
-
-
-# channel live365
-#
-# We're currently extracting from the JavaScript;
-#
-# stn.set("param", "value");
-#
-# And using a HTML5 player direct URL now:
-#
-# /cgi-bin/play.pls?stationid=%s&direct=1&file=%s.pls
-#
-class live365(ChannelPlugin):
-
- # control attributes
- base_url = "http://www.live365.com/"
- has_search = True
- listformat = "pls"
- mediatype = "audio/mpeg"
- has_search = False
-
- # content
- categories = ['Alternative', 'Blues', 'Classical', 'Country', 'Easy Listening', 'Electronic/Dance', 'Folk', 'Freeform', 'Hip-Hop/Rap', 'Inspirational', 'International', 'Jazz', 'Latin', 'Metal', 'New Age', 'Oldies', 'Pop', 'R&B/Urban', 'Reggae', 'Rock', 'Seasonal/Holiday', 'Soundtracks', 'Talk']
-
- # redefine
- streams = {}
-
-
- def __init__(self, parent=None):
-
- # override datamap fields //@todo: might need a cleaner method, also: do we really want the stream data in channels to be different/incompatible?
- self.datamap = copy.deepcopy(self.datamap)
- self.datamap[5][0] = "Rating"
- self.datamap[5][2][0] = "rating"
-
- # superclass
- ChannelPlugin.__init__(self, parent)
-
-
- # fixed for now
- def update_categories(self):
- pass
-
-
- # extract stream infos
- def update_streams(self, cat):
-
- # Retrieve genre index pages
- html = ""
- for i in [1, 17, 33, 49]:
- url = "http://www.live365.com/cgi-bin/directory.cgi?first=%i&site=web&mode=3&genre=%s&charset=UTF-8&target=content" % (i, cat.lower())
- html += ahttp.get(url)
-
- # Extract from JavaScript
- rx = re.compile(r"""
- stn.set\( " (\w+) ", \s+ " ((?:[^"\\]+|\\.)*) "\); \s+
- """, re.X|re.I|re.S|re.M)
-
- # Group entries before adding them
- ls = []
- for i,row in groupby(rx.findall(html), self.group_by_station):
- row = dict(row)
- ls.append({
- "status": (None if row["listenerAccess"] == "PUBLIC" else gtk.STOCK_STOP),
- "deleted": row["status"] != "OK",
- "name": row["stationName"],
- "title": row["title"],
- "playing": "n/a",
- "id": row["id"],
- "access": row["listenerAccess"],
- "status": row["status"],
- "mode": row["serverMode"],
- "rating": int(row["rating"]),
- #"rating": row["ratingCount"],
- "listeners": int(row["tlh"]),
- "location": row["location"],
- "favicon": row["imgUrl"],
- "format": self.mediatype,
- "url": "%scgi-bin/play.pls?stationid=%s&direct=1&file=%s.pls" % (self.base_url, row["id"], row["stationName"])
- })
- return ls
-
- # itertools.groupby filter
- gi = 0
- def group_by_station(self, kv):
- if kv[0] == "stationName":
- self.gi += 1
- return self.gi
-
-
-
diff --git a/channels/radionet.py b/channels/radionet.py
deleted file mode 100644
index 4196b2c..0000000
--- a/channels/radionet.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# encoding: UTF-8
-# api: streamtuner2
-# title: radio.net
-# description: Europe's biggest radio platform
-# url: http://radio.net/
-# version: 0.4
-# type: channel
-# category: radio
-# png:
-# iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAt0lEQVR42mNgYGD4r+Ar/F/BDwkD+SBxojBMs1mLPBArgGlFqEEENYMNQNLsukIDYkirAvGu
-# ABsA1OC6XOP/5f8nwIaYAg0k2gBFsAsgTgcZkvnfDugFEeK9AFKsCPMG0CU6eZJgQ4R1eP8H7LLEivWyFJANQcQCLPBAmkGG4MJohmA6C6QA5gI5OxEUDNII
-# MwSvASBFIA3ociCxkWQAKMDICkSQIpgh2LDnSmP80YhsCFEJiRIMADpmeUOpqgjRAAAAAElFTkSuQmCC
-# priority: optional
-#
-# Radio.net lists around 20.000 worldwide radio stations.
-# A maximum of three pages from each genre are fetched here,
-# some of the empty categories already omitted.
-#
-# The website heavily depends on JavaScript, a Flash player,
-# some social tracking cookies. But still feasible to access
-# per custom JSON extractor.
-#
-# May require refreshing the station lists once in a while,
-# because there's an API key in each JSON station info URL.
-
-
-import time
-import json
-import re
-from config import *
-from channels import *
-import ahttp
-import action
-
-
-# hook special JSON format in to avoid grepping images by generic handler
-action.playlist_fmt_prio.insert(5, "rnjs")
-action.playlist_content_map.insert(7, ("rnjs", r'"logo175x175rounded"'))
-action.extract_playlist.extr_urls["rnjs"] = dict(
- url = r" (?x) \"streamUrl\" \s*:\s* \"(\w+:\\?/\\?/[^\"]+)\" ",
- title = r" (?x) \"(?:description|seoTitle)\" \s*:\s* \"([^\"]+)\" ",
- unesc = "json",
-)
-
-
-# Radio.net extraction relies on HTML grepping, finding an api key required for station details,
-# and letting the action module extract the station/stream URL from that JSON format.
-#
-class radionet (ChannelPlugin):
-
- # control flags
- has_search = False
- audioformat = "audio/mpeg"
- listformat = "rnjs"
- titles = dict(listeners=False, playing="Description")
-
- # sources
- apiPrefix = "https://api.radio.net/info/v2"
- genre_url = "http://www.radio.net/genre/{}/"
- apiKey = None
-
-
- # Retrieve cat list and map
- def update_categories(self):
- html = ahttp.get("http://www.radio.net/")
- self.set_key(html)
- ls = re.findall("""<li><a class="language-info".*?>([\w\s']+)</a>""", html)
- self.categories = [i for i in ls][0:-18]
-
-
- # Fetch entries
- def update_streams(self, cat, search=None):
-
- # category page, get key
- html = ahttp.get(self.genre_url.format(cat))
- for p in range(2, 4):
- if html.find('"?p={}">'.format(p)) >= 0:
- html += ahttp.get(self.genre_url.format(cat) + "?p={}".format(p))
- self.set_key(html)
- r = []
-
- # split station blocks
- for row in re.split("""<div class="stationinfo""", html):
-
- # extract text fields
- d = re.findall("""
- <a\s+href="(//([\w-]+)\.radio.net)" .*?
- <img\s+src="([^<">]+)" .*?
- <strong>(.*?)</strong> .*?
- <small>\s*(.*?)\s*</small> .*?
- """, row, re.X|re.S)
-
- # refurbish extracted strings
- if d and len(d) and len(d[0]) == 5:
- href, name, img, title, desc = d[0]
- r.append(dict(
- name = name,
- genre = cat,
- title = unhtml(title),
- playing = unhtml(desc),
- url = self._url(name),
- homepage = "http:{}".format(href),
- img = img,
- ));
- return r
-
-
- # Patch together JSON station info URL
- def _url(self, name):
- return \
- "{}/search/station?apikey={}&pageindex=1&station={}".format(
- self.apiPrefix, self.apiKey, name
- ) # '?_={time}&' is omitted here, only relevant to jQuery/AJAX,
- # and just made bookmarks.is_in() fail due to randomized URLs
-
-
- # extract JavaScript key from any HTML blob (needed for station query)
- def set_key(self, html):
- ls = re.findall("""apiKey: '(\w+)'""", html)
- if ls:
- self.apiKey = ls[0]
-
-
-
diff --git a/channels/url_soundcloud.py b/channels/url_soundcloud.py
deleted file mode 100644
index 83d25ce..0000000
--- a/channels/url_soundcloud.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# api: streamtuner2
-# title: Soundcloud streams
-# description: Convert soundcloud links from reddit to streamable tracks
-# version: 0.2
-# type: filter
-# category: audio
-# depends: python:soundcloud, action >= 1.1, reddit >= 0.8
-# priority: rare
-#
-# Overrides action.play() function to convert soundcloud URLs
-# to track/streaming address. Disables the reddit filter for
-# walled gardens, and overrides any custom player configured
-# for "audio/soundcloud" in settings.
-
-
-import re
-import soundcloud
-from config import *
-import ahttp
-import action
-
-fmt = "audio/soundcloud"
-rx_url = re.compile("^https?://(www\.)?soundcloud\.com/[\w-]+/[\w-]+$")
-conn = None
-
-
-# API connect
-def client():
- global conn
- if not conn:
- conn = soundcloud.Client(client_id="f0aea6e0484043f6638cb5bf35d43312")
- return conn
-
-# Capture play events for faux MIME type
-def sndcl_convert(row={}, audioformat="audio/mpeg", source="pls", assoc={}):
- if audioformat==fmt or rx_url.match(url):
-
- # find streaming address
- try:
- url = row["url"]
- log.DATA_CONVERT_SOUNDCLOUD(url)
- track = client().get('/resolve', url=url)
- track_str = "/tracks/{}/stream".format(track.id)
- url = client().get(track_str, allow_redirects=False).location
-
- # override attributes
- row["url"] = url
- row["format"] = "audio/mpeg"
- audioformat = "audio/mpeg"
- source = "srv"
-
- except Exception as e:
- log.ERR_SOUNDCLOUD("URL resolving failed:", e)
-
- # let web browser run
- audioformat = "url/http"
-
- # let primary handler take over
- if audioformat != fmt:
- return action.run_fmt_url(row, audioformat, source, assoc)
-
-
-# Hook up custom action.handler for soundcloud URLs
-#
-# Still somewhat hodgepodge. The action module just lets .play() params
-# rewrite by above handler. Should turn faux "audio/soundcloud" URL into
-# plain/longwinded MP3 streaming address.
-#
-# Would need more generalized processing of custom URL schemes. But so
-# far only the reddit module uses them anyway.
-#
-class url_soundcloud(object):
- module = "url_soundcloud"
-
- # override action.play() with wrapper
- def __init__(self, parent, *a, **kw):
- conf.play[fmt] = "false / convert"
- #conf.filter_walledgardens = False
- action.handler[fmt] = sndcl_convert
-
diff --git a/contrib/bieber.py b/contrib/bieber.py
deleted file mode 100644
index e681903..0000000
--- a/contrib/bieber.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# api: streamtuner2
-# title: Bieber
-# description: Bieber music
-# url: http://www.justinbiebermusic.com/
-# version: 5.2
-# type: channel
-# category: example
-# config:
-# { "name": "bieber_filter", "type": "text", "value": "BIEBERBLAST", "description": "So and so." }
-# priority: joke
-#
-# This was an entertaining test plugin for development. (Compound function
-# went into the search feature, and the compound channel plugin obviously.)
-#
-# It's however a very simple plugin, and hence a good basis for writing
-# your own extensions.
-
-
-from channels import *
-
-
-# Bieber music filter plugin
-class bieber(ChannelPlugin):
-
-
- # config data
- config = [
- ]
-
-
- # category map
- categories = ['the Biebs']
- default = 'the Biebs'
- current = 'the Biebs'
-
-
-
-
- # static category list
- def update_categories(self):
- # nothing to do here
- pass
-
-
- # just runs over all channel plugins, and scans their streams{} for matching entries
- def update_streams(self, cat, force=0):
-
- # result list
- entries = []
-
- # kill our current list, so we won't find our own entries
- self.streams = {}
-
- # swamp through all plugins
- for name,p in self.parent.channels.iteritems():
- #print "bieberquest: channel", name
-
- # subcategories in plugins
- for cat,stations in p.streams.iteritems():
- #print " bq cat", cat
-
- # station entries
- for row in stations:
-
- # collect text fields, do some typecasting, lowercasing
- text = "|".join([str(e) for e in row.values()])
- text = text.lower()
-
- # compare
- if text.find("bieb") >= 0:
-
- # add to result list
- row["genre"] = name + ": " + row.get("genre", "")
- entries.append(row)
-
- # return final rows list
- return entries
-
-
-
diff --git a/contrib/di.py b/contrib/di.py
deleted file mode 100644
index c59f99a..0000000
--- a/contrib/di.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# encoding: UTF-8
-# api: streamtuner2
-# title: di.fm
-# description: "Digitally Imported", electronic music stations, + sky.fm and jazzradio
-# url: http://di.fm/
-# version: 0.2
-# type: channel
-# category: radio
-# config: -
-# png:
-# iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAPhJREFUOI3Fkj9OAkEYxX87uyyDgSxDYUyMV/AgNtzAkngC7Ci4AB1rTbyADYml8QY2tiZQmC34o4Qs
-# CDMUZAnRIQMmhNfNfN9733vJg1PDK7RMG6gB/j/4sVdomYVIh743n+w4ITBhEZ2PEOmQbM+ERbRUywDwvfmE78aVlT9ONffPIx7f1+Rsr9TsgVS+cHmMpOChWqEsptZ5kNkpNXtWcr9+CcD1RY7X
-# j5ldYNvaTSfhJYkwQZ7x11/R33BGcCGwqk4TYG37YIHu7bl18e3zx/q/V4S7pwEjfWaduYvEpjQ7ixRrqWpIFbqcaKlAquy5BOJ9EhwXK0vYVWJw1aEpAAAAAElFTkSuQmCC
-# priority: extra
-#
-# Just prints the public list of RadioTunes stations.
-# Premium entries are available, but not fetched here.
-# Public stations use a 64kbit/s AACP audio encoding.
-#
-# Alternative JSON list: http://listen.di.fm/public3
-# Required unpacking a complex category association,
-# and only adds a few more descriptions.
-
-
-from config import *
-from channels import *
-import ahttp
-import json
-
-
-# di.fm
-class di (ChannelPlugin):
-
- # control flags
- has_search = False
- listformat = "pls"
- audioformat = "audio/aac"
- titles = dict(listeners=False, bitrate=False, playing=False)
-
- categories = ["di.fm", "sky.fm", "jazzradio.com"]
- # sky.fm is an alias of "radiotunes.com"
-
- # static
- def update_categories(self):
- pass
-
- # ignore category, because there is just but one
- def update_streams(self, cat, search=None):
- ls = json.loads(ahttp.get("http://listen.{}/public1".format(cat)))
- rows = [
- dict(genre=row["key"], title=row["name"], url=row["playlist"], id=row["key"],
- homepage="http://www.{}/{}".format(cat, row["key"]), bitrate=64)
- for row in ls
- ]
- return rows
-
diff --git a/contrib/eighttracks.py b/contrib/eighttracks.py
deleted file mode 100644
index bac9bb3..0000000
--- a/contrib/eighttracks.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# encoding: UTF-8
-# api: streamtuner2
-# title: 8tracks
-# description: radio created by people, not algorithms
-# version: 0.1
-# type: channel
-# category: collection
-# config:
-# { name: eighttracks_apikey, value: "", type: text, description: Custom API access key. }
-# { name: eighttracks_safe, value: 1, type: bool, description: Filter explicit/NSFW tracks. }
-# priority: optional
-# url: http://8tracks.com/
-# documentation: https://8tracks.com/developers
-#
-# Requires a pingback on playing a track
-# → which is near impossible without player control.
-# → Automatic/implied notifications could work.
-# → Or checking via dbus/mpris even (less assertable).
-# → Else a customized playlist export with the reporting URL as
-# faux first entry even.
-# → Or an external URL redirector just (api.i-o/cache service).
-#
-
-import json
-import re
-from config import *
-from channels import *
-import ahttp
-
-
-# 8tracks mix tapes
-class eighttracks (ChannelPlugin):
-
- # description
- has_search = False
- listformat = "pls"
- titles = dict(listeners=False, playing="Location")
-
- categories = ["none"]
- catmap = {}
-
- base = "http://8tracks.com/mixes/1?format=json&api_key=%s" # or X-Api-Key: header
- cid = ""
-
-
- # Mix types, genres, etc?
- def update_categories(self):
- self.categories = []
-
-
- # Excerpt newest or most popular
- def update_streams(self, cat, search=None):
- row = {
- "url": "urn:8tracks",
- "id": "$mix_id-12345",
- }
- return []
-
-
- # Craft a stream URL with play token
- def row(self):
- self.status("Retrieving playback token...")
- r = ChannelPlugin.row(self)
- token = self.api("sets/new")["play_token"]
- track = self.api("sets/{}/play".format(r["id"]))
- r["url"] = track["set"]["track"]["track_file_stream_url"]
-
- # Call after .play()
- def report(self, mixid)
- self.api("sets/{}/report".format(mixid), {"track_id": mixid, "mix_id": mixid})
-
- #def play(self):
- # ChannelPlugin.play(self)
- # self.report()
-
-
- # Patch API url together, send request, decode JSON and whathaveyou
- def api(self, method="mix_sets/all", *params):
- params.update({
- "api_version": 3,
- "api_key": conf.eighttracks_apikey or self.cid,
- #"include": "mixes",
- })
- try:
- j = ahttp.get("http://8tracks.com/{}.json".format(method), params)
- r = json.loads(j)
- # test for mishaps
- if "errors" in r and r["errors"]:
- self.status(r["errors"])
- raise Exception(r)
- return r
- except Exception as e:
- log.ERR("8tracks API request failed:", e)
- return []
-
-
diff --git a/contrib/icast.py b/contrib/icast.py
deleted file mode 100644
index 86d0da6..0000000
--- a/contrib/icast.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# encoding: UTF-8
-# api: streamtuner2
-# title: iCast.io
-# description: Open collaborative stream directory
-# version: 0.2
-# type: channel
-# url: http://www.icast.io/
-# category: radio
-# priority: obsolete
-# config: -
-# png:
-# iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAcVQTFRF
-# ////8PDw5OTk9/f3z9fYW3qnKFmLC0N9K1qVYYay2N7hl6zAHU6BYIqaqdDN4vvt9fzstuPeV42+JVmWn7TKi6XBFE+Og62t+/6f7/2MoMmMs+OPpdPDns/7ir/YGlehjqjE0tnfGFGTQXWuncmX6/tt
-# 4vlvvfBv6vtsreGNbaXhdrTyXJXCY4m2JWStM2aZ4PhjtOhjy/FpeKioZaDoRYTAOXSpLGGgMXK/GlONlcxG1fZZfqyEX5XRY6TqPobZI2zCWJKqGVWbMHTHH12hT4BMt+0tgrFTfKt3XpG4WZfYR4vY
-# NHrTK3TMRYTCIlmdM3bNKmy8KGGWgrs3UYRXSHp0TISKS4WaPXq4OXrENHrNO3zRPnitXpZ/aqJrRnd5Y5VPWYVXNGeTNnO1M2OiLmy+PYPdSo3eUZHaU5DLg7cxtOwNntIaYpVrMGittLvEKV+lQofd
-# UZXoXp7rY6HfVoutsOUMQnOHdIurM2q2Y6TvbarqZJvFYpBlp9sSs+gMboag3t/dfZCqPWysSoLNYJvgYZSxfq5NNmF6MlmCcoab19nXqKyyZoSwTnawN2OfRGqXXXqanKKjzMzMt7e3o6SjsLKvtVfy
-# AwAAAAFiS0dEBxZhiOsAAAAJcEhZcwAAAEgAAABIAEbJaz4AAADxSURBVBjTY2AAAUYmIGBkZoACRhZWNnZ2Dk4uqAgjNw8vH7+AoJCwCCOIzywqJi4hKSUtIysnrwBSo6ikrKKqpq6hqaWto6QIVKCr
-# p69uYGBoZGxiYmrGyczAaG5haWVtbW1ja2fv4GjOyMDo5Ozi6ubu4enl7ePr5w8U8A8IDAoOCQ0Lj4iMigYJmDtHRcbExsUnJCYlR6YwMjCzpqalZ2SGZ2Vn5+TmsTIzMOcXFBYVl5TmZGeXlXPkgxxa
-# UZleVV1TW1efyNYAdmpjU3NLq1Zbe0dnVzfEM0w9vX3N/RMmTmqEeZd58pSpU6dNBnsWAEP5Nco3FJZfAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTA2LTAxVDAxOjI4OjA3KzAyOjAw7O+A+AAAACV0
-# RVh0ZGF0ZTptb2RpZnkAMjAxNC0wNi0wMVQwMToyODowNyswMjowMJ2yOEQAAAAASUVORK5CYII=
-# documentation: http://api.icast.io/
-#
-#
-# A modern alternative to ShoutCast/ICEcast.
-# Streams are user-contributed, but often lack
-# meta data (homepage) and there's no ordering
-# by listeneres/popularity.
-#
-# However it's every easy and stable to interface
-# with over JSON. However it's also somewhat slow,
-# because each query result has only 10 entries.
-# Which is why reloading takes a few seconds to
-# collect 200 station entries (see main options).
-
-
-import re
-import json
-from config import *
-from channels import *
-import ahttp
-
-
-# iCast.io API
-class icast (ChannelPlugin):
-
- # control attributes
- has_search = True
- listformat = "pls"
- titles = dict(listeners=False, bitrate=False, playing=False)
- categories = []
- base = "http://api.icast.io/1/"
-
-
- # Categories require little post-processing, just dict into list conversion
- def update_categories(self):
- self.categories = []
- for genre,cats in json.loads(ahttp.get(self.base + "genres"))["genres"].items():
- self.categories.append(genre.title())
- self.categories.append([c.title() for c in cats])
-
- # Just copy over stream URLs and station titles
- def update_streams(self, cat, search=None):
-
- if cat:
- data = self.api("stations/genre/", cat.lower(), {})
- elif search:
- data = self.api("stations/search", "", {"q": search})
- else:
- pass
-
- r = []
- for e in data:
- r.append(dict(
- genre = " ".join(e["genre_list"]),
- url = e["streams"][0]["uri"],
- format = e["streams"][0]["mime"],
- title = e["name"],
- #playing = " ".join(e["current"].items()),
- ))
-
- return r
-
- # fetch multiple pages
- def api(self, method, path, params):
- r = []
- while len(r) < int(conf.max_streams):
- try:
- data = ahttp.get(self.base + method + path, params)
- data = json.loads(data)
- except Exception as e:
- log.ERR("No data/json received.", e)
- return r
- r += data["stations"]
- if len(r) >= data["meta"]["total_count"] or len(data["stations"]) < 10:
- break
- else:
- params["page"] = int(data["meta"]["current_page"]) + 1
- self.parent.status(params["page"] * 9.5 / float(conf.max_streams))
- #log.DATA(data)
- return r
-
diff --git a/contrib/itunes.py b/contrib/itunes.py
deleted file mode 100644
index abe1441..0000000
--- a/contrib/itunes.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# encoding: UTF-8
-# api: streamtuner2
-# title: iTunes Radio
-# description: iTunes unsorted station list via RoliSoft Radio Playlist caching webservice.
-# version: 0.1
-# type: channel
-# category: radio
-# url: http://www.itunes.com?
-# status: broken
-# priority: optional
-# config: -
-# png:
-# iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAA3lJREFUOI1Fk01MHGUAht9vZnZml53dhcJSYIEVt8Tu1qbQRNI0wKGxiUk1HBpjbzUmatWUCzHe1Kjx0KQH5WA08aAXYzTRpKnSFG2kpB4ILEstP1skwC50f1nmf3Zmvvk8aOtzf05PHoL/YIyhWtpD
-# JBKRlpZzp3YK+6OqpqcAIBaN/N2f6L57evhUTtM0p7O797EGAgC6puCNtyYx+c6b6YXsX1M75cMXHSLFebGFI4TAdy1fZM1qf2fsxnNDJ65/9fW369OfXUNLOAoy88tNFEpVDPQnRn+bX/qiZErPdiTTCMltgBAAYwClLpqGAmV/A52idf/c2aErxf3yvc72VpC5ubuQRC714425H+4/wnBfZgQk
-# FAYlHIIBICoBMREQGMXmIw2F/AoyHe7SxQvjLzddusWNjY2Sheza23eWy8N+LIWKG0DNojjTS/DqmVa8Pt6N184lMTHSA9MBHHkAf+Sqpxdza1fGx8aIcG/+91R2tfjSniaD90PQPQFhniHdJaFNYlA1DaUDBgEEikugUAlFLYzsanHiz/k7Xwr7pdrwdsno1WkbKiaD6HHwgxx2azq+yevYhQxd
-# dXG5x4HhARWTQfNC2C41+vbKtSFB0Yxe3WYSJSI0h0FiHMKcgEOPYjGcgCVHQKHCovuwXAbV8uFBgG4zSdPMhOBT6gUCHCM8AQQOPs/BA2BaJrggQ9ixkOEP0cq7oNR/0j7AE0apRwUCfyveKplczYkQz0Ofp2IkREENDdS1McbtYCJuw3QA13VBqAvOtxFvkwwCusVpykE2lZDzEcEErx5gIl7F
-# +aMNUEsDMxwUKwaWHpbwa66GAwuAqSMqmHi6R95QGvVlfubWrLaSXZAdp/n8bs3jRGbDdmwsqjLUcBcaXBS5egBrShC2aoBWCxhJUu9EMnJ9aurdWf5QUdGol/KDT3U/Yzet9FIliDW7A0rLUXAEYE0HjumiWT+EVy7gZLuGs+noT3s7+U9v3Z61CAB8Pj2NzfzGwJGu5LX1Mp1YrQcCOhcDxBAY
-# Y4BtQPYayMSpk+4Rf25UCu+ljg1uT169+u9MAPDhB+9jdfXBkeOZk6+4JHSpbrK03oQMALIIvT2MNYHZ360/WPk+nc40Pvr4k/9vfExQEmE3HXLhhfMdqWODx4Mt4QQAWKZR3Np8uH5z5nZdEgOs6bhPnH8APR+/sJEZQ8oAAAAASUVORK5CYII=
-# documentation: http://lab.rolisoft.net/playlists.html
-#
-# API provides pre-parsed radio station playlists for various services
-#
-# → Shoutcast
-# → Xiph/ICEcast
-# → Tunein
-# → iTunes
-# → FilterMusic
-# → SomaFM
-# → AccuRadio
-# → BBC
-#
-# In this module only iTunes will be queried for now.
-#
-
-import re
-from config import *
-from channels import *
-import ahttp
-
-
-# Surfmusik sharing site
-class itunes (ChannelPlugin):
-
- # control attribues
- has_search = False
- listformat = "pls"
- titles = dict(listeners=False, bitrate=False, playing=False)
- #base = "http://lab.rolisoft.net/playlists/itunes.php"
- base = "http://aws-eu.rolisoft.net/playlists/itunes.php"
- #base = "http://aws-us.rolisoft.net/playlists/itunes.php"
-
- categories = [
- "Adult Contemporary",
- "Alternative Rock",
- "Ambient",
- "Blues",
- "Classic Rock",
- "Classical",
- "College",
- "Comedy",
- "Country",
- "Eclectic",
- "Electronica",
- "Golden Oldies",
- "Hard Rock",
- "Hip Hop",
- "International",
- "Jazz",
- "News",
- "Raggae",
- "Religious",
- "RnB",
- "Sports Radio",
- "Top 40",
- "'70s Retro",
- "'80s Flashback",
- "'90s Hits",
- ]
-
-
- # static list for iTunes
- def update_categories(self):
- pass
-
- # Just copy over stream URLs and station titles
- def update_streams(self, cat):
-
- m3u = ahttp.get(self.base, {"category": cat.lower()})
- if len(m3u) < 256:
- log.ERR(m3u)
-
- rx_m3u = re.compile(r"""
- ^File(\d+)\s*=\s*(http://[^\s]+)\s*$\s*
- ^Title\1\s*=\s*([^\r\n]+)\s*$\s*
- """, re.M|re.I|re.X)
-
- r = []
- for e in rx_m3u.findall(m3u):
- r.append(dict(
- genre = cat,
- url = e[1],
- title = e[2],
- format = "audio/mpeg",
- playing = "",
- ))
-
- return r
-
diff --git a/contrib/reddit.py b/contrib/reddit.py
deleted file mode 100644
index a33409e..0000000
--- a/contrib/reddit.py
+++ /dev/null
@@ -1,335 +0,0 @@
-# encoding: UTF-8
-# api: streamtuner2
-# title: reddit⛱
-# description: Music recommendations from reddit /r/music and associated subreddits.
-# version: 0.8
-# type: channel
-# url: http://reddit.com/r/Music
-# category: playlist
-# config:
-# { name: reddit_pages, type: int, value: 2, description: Number of pages to fetch. }
-# { name: filter_walledgardens, type: boolean, value: 1, description: Filter walled gardens (soundcloud/spotify/…) if there's no player. }
-# { name: reddit_keep_all, type: boolean, value: 0, description: Keep all web links (starts a browser for websites/news). }
-# png:
-# iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJ1BMVEUAAAAcICX/AABHSk1jZ299hYz/bmajq6//lY/d0M3C1+3T7P38+/iaLhuGAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF
-# HUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffBRUXIyQbWArCAAAAh0lEQVQI12Pg3g0BDLtXrVq1eveq3Qy7gIxCU9dqEGO11/ZKbzBDenUIUM3u7cGi1UDFW0TE55wsdpZikAw/
-# eebMnMmHGVxqDuUc0zzpynD4zIk5J3vOSDNsOQMG1gy7bI5HTq85Ws2wu/jM9PIzrkArdhmXlzuuXg00eVd5+epVqxmgrtgNAOWeS1KYtcY4AAAAAElFTkSuQmCC
-# priority: extra
-#
-# Just imports Youtube links from music-related subreddits.
-# Those are usually new bands or fresh releases, or favorite
-# user selections. The category/subreddit list is filtered
-# for a minimum quote of usable links (namely Youtube URLs).
-#
-# If you have a custom audio player available for Soundcloud,
-# Spotify or Bandcamp, you can enable to retain such links.
-# (For example configure `soundcli` for "audio/soundcloud".)
-#
-# This plugin currently uses the old reddit API, which might
-# be obsolete by August. It's thus a temporary channel, as
-# migrating to OAuth or regressing to plain HTML extraction
-# is not very enticing.
-
-
-import json
-import re
-from config import *
-from channels import *
-import action
-import ahttp
-
-
-# reddit.com
-#
-# Uses old API requests such as:
-# → http://www.reddit.com/r/music/new.json?sort=new
-#
-class reddit (ChannelPlugin):
-
- # control attributes
- has_search = False
- listformat = "srv"
- audioformat = "video/youtube"
- titles = dict(playing="submitter", listeners="votes", bitrate=False)
-
- # favicon scaling (from reddit preview `img`)
- img_resize = 32
- fixed_size = [32,26]
-
- # just subreddit names to extract from
- categories = [
- # static radio list
- "radioreddit 📟",
-
- # major subreddits
- "Music",
- ["trueMusic", "futurebeats", "FutureFunkAirlines",
- "Turntablists", "Catchysongs", "MusicForConcentration", "MusicToSleepTo"],
-
- # cover bands/songs
- "CoverSongs",
- ["ICoveredASong", "MyMusic", "UserProduced", "RepublicOfMusic", "RoyaltyFreeMusic"],
-
- # discover subreddits
- "music_discovery",
- ["ListenToThis", "ListenToUs", "WhatIListenTo", "ListenToConcerts",
- "HeadBangToThis", "unheardof", "under10k", "lt10k"],
-
- # Classical
- "ClassicalMusic",
- ["composer", "baroque", "classicalmusic", "contemporary",
- "choralmusic", "ChamberMusic", "EarlyMusic",
- "ElitistClassical", "icm", "Opera", "pianocovers"],
-
- # Electronic Music
- "ElectronicMusic",
- ["acidhouse", "ambientmusic", "AtmosphericDnB", "BigBeat",
- "boogiemusic", "breakbeat", "breakcore", #"brostep", "chicagohouse",
- "chillout", "Chipbreak", "darkstep", "deephouse",
- "DnB", "DubStep", "EDM", "electronicdancemusic", "ElectronicJazz",
- "ElectronicBlues", "electrohouse", #"electronicmagic",
- "ElectronicMusic", "electropop", "electroswing", #"ExperimentalMusic",
- "fidget", "frenchelectro", "frenchhouse", "funkhouse",
- "futurebeats", "FutureFunkAirlines", "FutureGarage",
- "futuresynth", "gabber", "glitch", "Grime", "happyhardcore",
- "hardhouse", "hardstyle", "house", "idm", "industrialmusic", "ItaloDisco",
- "latinhouse", "LiquidDubstep", "mashups", "minimal", "moombahcore",
- "nightstep", "OldskoolRave", "partymusic", "plunderphonics", "psybient",
- "PsyBreaks", "psytrance", "purplemusic", "raggajungle", "RealDubstep",
- "swinghouse", "tech_house", "Techno", "Trance", "tranceandbass",
- "tribalbeats", "ukfunky", "witchhouse", "wuuB"],
-
- # Rock / Metal
- "Rock",
- ["80sHardcorePunk", "90sAlternative", "90sPunk", "90sRock",
- "AlternativeRock", "AltCountry", "AORMelodic", "ausmetal",
- "BlackMetal", "bluegrass", "Blues", "bluesrock", "Boneyard",
- "CanadianClassicRock", "CanadianMusic", "ClassicRock", "country",
- "Christcore", "crunkcore", "deathcore", "deathmetal", "Djent", "DoomMetal",
- "Emo", "EmoScreamo", "epicmetal", "flocked", "folk", "folkmetal",
- "folkpunk", "folkrock", "folkunknown", "GaragePunk", "GothicMetal",
- "Grunge", "hardcore", "HardRock", "horrorpunk", "indie_rock", "jrock",
- "krautrock", "LadiesofMetal", "MathRock", "melodicdeathmetal",
- "MelodicMetal", "Metalmusic", "metal", "metalcore",
- "monsterfuzz", "neopsychedelia", "NewWave", "noiserock", "numetal",
- "pianorock", "poppunkers", "PostHardcore", "PostRock", "powermetal",
- "powerpop", "ProgMetal", "progrockmusic", "PsychedelicRock", "punk",
- "Punkskahardcore", "Punk_Rock", "raprock","shoegaze", "stonerrock",
- "symphonicblackmetal", "symphonicmetal", "synthrock", "truethrash",
- "Truemetal", "OutlawCountry", "WomenRock"],
-
- # hippety-hop
- "HipHopHeads",
- ["80sHipHop", "90sHipHop", "altrap", "asianrap", "backspin", "BayRap",
- "ChapHop", "ChiefKeef", "DrillandBop", "Gfunk", "NYrap",
- "Rap", "raprock", "rhymesandbeats", "trapmuzik"],
-
- # decades
- "Decades →", ["2010smusic", "2000smusic", "90sMusic", "80sMusic",
- "70s", "70sMusic", "60sMusic", "50sMusic"],
-
- # By country/region/culture
- "WorldMusic",
- ["AfricanMusic", "afrobeat", "balkanbrass", "balkanmusic", "britpop",
- "Irishmusic", "ItalianMusic", "jpop", "kpop", "spop", "cpop"],
-
- # Other
- "Genres →",
- ["Acappella", "AcousticCovers", "animemusic", "boomswing",
- "bossanova", "carmusic", "chillmusic",
- "dembow", "disco", "DreamPop", "Elephant6", "ETIMusic", "Exotica",
- "FilmMusic", "FunkSouMusic", "gamemusic", "GamesMusicMixMash",
- "GunslingerMusic", "GypsyJazz", "HomeworkMusic", "IndieFolk",
- "Jazz", "JazzFusion", "JazzInfluence", "listentoconcerts", "klezmer",
- "lt10k", "MedievalMusic", "MelancholyMusic", "minimalism_music", "motown",
- "MovieMusic", "muzyka", "NuDisco", "oldiemusic", "OldiesMusic",
- "pianocovers", "PopMusic", "PoptoRock", "rainymood", #"recordstorefinds",
- "reggae", "remixxd", "RetroMusic", "rnb", "rootsmusic", "SalsaMusic", "Ska",
- "Soca", "Soulies", "SoulDivas", "SoundsVintage", "SpaceMusic",
- "swing", "Tango", "TheRealBookVideos", "TouhouMusic", "TraditionalMusic",
- "treemusic", "triphop", "vaporwave", "VintageObscura", "vocaloid"],
-
- # Redditor Made Music (removed some spotify/soundcloud-only subreddits)
- "Redditor-Made →",
- ["AcousticOriginals", "Composer", "ICoveredASong",
- "independentmusic", "MusicCritique", "MyMusic",
- "ratemyband", "Songwriters",
- "ThisIsOurMusic", "UserProduced",],
-
- # Multi-Genre & Community Subreddits (a third cleaned out for too few usable links)
- "Community →",
- ["audioinsurrection", "albumaday", "albumoftheday", #"Albums",
- "albumlisteners", "BinauralMusic", "Catchysongs",
- "CircleMusic", "CoverSongs", "cyberpunk_music", "DANCEPARTY", "danktunes",
- "deepcuts", "EarlyMusic", "FemaleVocalists",
- "FitTunes", "freemusic", "Frisson",
- "GayMusic", "germusic", "gethightothis",
- "GuiltyPleasureMusic", "HeadNodders", "heady", "HeyThatWasIn",
- "indie", "IndieWok", "Instrumentals",
- "ipm", "IsolatedVocals", "LetsTalkMusic", "listentoconcerts",
- "listentomusic", "ListenToThis", "ListenToUs", "livemusic",
- "llawenyddhebddiwedd", "Lyrics", "mainstreammusic",
- "MiddleEasternMusic", "MLPtunes", "Music", "MusicAlbums",
- "musicsuggestions", "MusicToSleepTo", "musicvideos", "NameThatSong",
- "newmusic", "onealbumaweek", "partymusic", "RedditOriginals",
- "RepublicOfMusic", "RoyaltyFreeMusic", "runningmusic",
- "ScottishMusic", "ThemVoices",
- "unheardof", "WhatIListenTo", "WTFMusicVideos"],
- # Community
- #["AlbumArtPorn", "albumreviews", "Audio", "Audiophile", "AustinMusicians",
- #"bandmembers", "CarAV", "CassetteCulture", "Cd_collectors",
- #"ConcertTickets", "germusic", "glastonbury_festival", "ICoveredASong",
- #"ifyoulikeblank", "independentmusic", "ineedasong/", "japanesemusic",
- #"Jazzguitar", "koreanmusic", "LubbockMusicians", "mixcd", "musiccritics",
- #"MusicalComedy", "musicessentials", "MusicEventMeetUp", "musicfestivals",
- #"musicnews", "MusiciansBlogs", "Musicians", "NeedVocals", "OSOM",
- #"performer", "RecordClub", "recordstore", "redditmusicclub", "Rockband",
- #"RockbandChallenges", "TheSongRemainsTheSame", "TipOfMyTongue",
- #"TouringMusicians", "vinyl", "VinylReleases", "WeAreTheMusicMakers"],
-
- # Single Artist/Band subreddits (unchecked list)
- "Bands/Artists →",
- ["311", "ADTR", "AliciaKeys", "ArcadeFire", "ArethaFranklin",
- "APerfectCircle", "TheAvettBrothers", "BaysideIsACult", "TheBeachBoys",
- "Beatles", "billytalent", "Blink182", "BMSR", "boniver", "brandnew",
- "BruceSpringsteen", "Burial", "ChristinaAguilera", "cityandcolour",
- "Coldplay", "CutCopy", "TheCure", "DaftPunk", "DavidBowie", "Deadmau5",
- "DeathCabforCutie", "DeepPurple", "Deftones", "DieAntwoord", "DMB",
- "elliegoulding", "empireofthesun", "EnterShikari", "Evanescence", "feedme",
- "FirstAidKit", "flaminglips", "franzferdinand", "Gorillaz", "gratefuldead",
- "Greenday", "GunsNRoses", "Incubus", "JackWhite", "JanetJackson",
- "John_frusciante", "kings_of_leon", "Korn", "ladygaga", "lanadelrey",
- "lennykravitz", "Led_Zeppelin", "lorde", "Macklemore", "Madonna", "Manowar",
- "MariahCarey", "MattAndKim", "Megadeth", "Metallica", "MGMT",
- "MichaelJackson", "MinusTheBear", "ModestMouse", "Morrissey",
- "MyChemicalRomance", "Muse", "NeilYoung", "NIN", "Nirvana", "oasis",
- "Opeth", "OFWGKTA(OddFuture)", "OutKast", "panicatthedisco", "PearlJam",
- "phish", "Pinback", "PinkFloyd", "porcupinetree", "prettylights",
- "Puscifer", "Queen", "Radiohead", "RATM", "RedHotChiliPeppers",
- "The_Residents", "RiseAgainst", "Rush", "SigurRos", "Slayer", "slipknot",
- "SmashingPumpkins", "SparksFTW", "TeganAndSara", "TheKillers",
- "TheOffspring", "TheStrokes", "TheMagneticZeros", "tragicallyhip",
- "ToolBand", "U2Band", "Umphreys", "UnicornsMusic", "velvetunderground",
- "Ween", "weezer", "WeirdAl", "yesband", "Zappa"],
- ]
-
-
- # static
- def update_categories(self):
- pass
-
-
- # Extract video/music news links
- def update_streams(self, cat, search=None):
-
- # radioreddit
- if cat == "radioreddit 📟":
- return self.radioreddit()
- elif cat.find("→") > 0:
- return self.placeholder
-
- # collect links
- data = []
- after = None
- for i in range(1, int(conf.reddit_pages) + 1):
- try:
- j = ahttp.get(
- "http://www.reddit.com/r/{}/new.json".format(cat.lower()),
- { "sort": "new", "after": after }
- )
- j = json.loads(j)
- except Exception as e:
- log.ERR("Reddit down? -", e)
- break
- if j.get("data",{}).get("children"):
- data += j["data"]["children"]
- else:
- break
- if j.get("data",{}).get("after"):
- after = j["data"]["after"]
- else:
- break
-
- # convert
- r = []
- for row in (ls["data"] for ls in data):
-
- # find links in text posts
- text_urls = re.findall("\]\((https?://(?:www\.)?youtu[^\"\'\]\)]+)", row.get("selftext", ""))
- url_ext = (re.findall("\.(\w+)$", row["url"]) or [None])[0]
- listformat = "href"
- state = "gtk-media-play"
-
- # Youtube URLs
- if re.search("youtu\.?be|vimeo|dailymotion", row["url"]):
- format = "video/youtube"
- listformat = "srv"
- # direct MP3/Ogg
- elif url_ext in ("mp3", "ogg", "flac", "aac", "aacp"):
- format = "audio/" + url_ext
- listformat = "srv"
- # playlists?
- elif url_ext in ("m3u", "pls", "xspf"):
- listformat = url_ext
- format = "audio/x-unknown"
- # links from selftext
- elif text_urls:
- row["url"] = text_urls[0]
- format = "video/youtube"
- # check for specific web links (Soundcloud etc.)
- else:
- listformat = "srv"
- format = None
- # look for walled gardens
- urltype = re.findall("([\w-]+)\.\w+/", row["url"] + "/x-unknown.com/")[0]
- if urltype in ("soundcloud", "spotify", "bandcamp", "mixcloud"):
- # is a specific player configured?
- fmt = "audio/" + urltype
- if fmt in conf.play or fmt in action.handler:
- state = "gtk-media-forward"
- format = fmt
- # retain it as web link?
- elif not conf.filter_walledgardens:
- state = "gtk-media-pause"
- format = "url/http"
- # else skip entry completely
- if not format:
- if conf.reddit_keep_all:
- state = "gtk-page-setup"
- format = "url/http"
- else:
- log.DATA_SKIP(format, row["url"])
- continue
-
- # repack into streams list
- r.append(dict(
- title = row["title"],
- url = row["url"],
- genre = re.findall("\[(.+?)\]", row["title"] + "[-]")[0],
- playing = row["author"],
- listeners = row["score"],
- homepage = "http://reddit.com{}".format(row["permalink"]),
- img = row.get("thumbnail", ""),
- #img_resize = 24,
- format = format,
- listformat = listformat,
- state = state,
- ))
- return r
-
-
- # static station list
- def radioreddit(self):
- return [
- dict(
- genre=id, title=id.title(),
- url="http://cdn.audiopump.co/radioreddit/"+id+"_mp3_128k",
- format="audio/mpeg", homepage="http://radioreddit.com/",
- listformat="srv"
- )
- for id in [
- "main", "random", "rock", "metal", "indie",
- "electronic", "hiphop", "talk", "festival"
- ]
- ]
-
diff --git a/contrib/windowsmedia.py b/contrib/windowsmedia.py
deleted file mode 100644
index 5cd23b5..0000000
--- a/contrib/windowsmedia.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# encoding: UTF-8
-# api: streamtuner2
-# title: WindowsMedia
-# description: ASX-Playlist radio stations, common genres
-# url: http://windowsmedia.com/
-# version: 0.4
-# depends: streamtuner2 >= 2.1.8-dev
-# type: channel
-# category: radio
-# config:
-# { name: windowsmedia_culture, type: select, value: en-gb, select: "en-gb|de-de|da-dk|cs-cz|es-es|fr-fr|it-it|nl-nl|pl-pl|tr-tr|pt-pt|pt-br|en-us", description: "Country/language preference (for localized ads:?)" }
-# png:
-# iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAk1BMVEWwMjIAAQACAAoSAwQ2CQcAH5VqERZsESgNK489KFwA
-# MrMAN6UQQwAXNpEAPakAQJ8AQ44RO7S2JQ8ASr6vLwqPOgoZYgCCSgvPPgVCbAF9XwzMTRrqUAHNY0VemADjbTiShjOYhiJR
-# oApJqgRerwlUtgBjwgDAsQDdqQB02AnowgP+soDfywDs2RL25Qr4727/8rdsT1F2AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF
-# HUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffBQcANDDneHDIAAAAlUlEQVQY02VPWxKCMAzcKmIF5GGrVkVAKA+x
-# Ve9/OhUK0xmTj2Q3yU4WAPnmL6Y69rDQwJB/bDOLpYNDEFgc352betYh4EIcK5lVgVHnIk/3kCdp5g7PHykv742sp43LFS4y
-# lMMNgbvebJl3U6ptjSxFFDPop+7NF5RFcVK8X6qfPIS+n0BrNf9FQ98retXZDlfoxuYDwYsJfXHQg0AAAAAASUVORK5CYII=
-# png-orig: https://openclipart.org/detail/176727/windows-bug
-# priority: extra
-# status: unsupported
-#
-# Well, this one is Windows-specific, so naturally uses
-# horrible formats "WAX" (ASX) for playlists. Still can
-# be parsed by action module, but possibly falling back
-# onto raw extraction etc. VLC does quadruple redirects.
-#
-# Only fetches the first page for each category anyway.
-# Most entries are lower bitrates, 32 to 64 kbit/s MP3.
-
-
-import re
-from config import *
-from channels import *
-import ahttp
-
-
-# Yay, windows playlists.
-class windowsmedia (ChannelPlugin):
-
-
- # control flags
- has_search = False
- listformat = "asx"
- audioformat = "audio/mpeg"
- titles = dict(listeners=False, bitrate=False, playing="Location")
-
- _web = "http://www.windowsmedia.com/RadioUI/Home.aspx?g={}&culture=en-gb"
- base = "http://www.windowsmedia.com/RadioUI/getstationsforgenre.aspx?g={}&offset=0&culture={}"
- _url = "http://www.windowsmedia.com/RadioTunerAPI/Service.asmx/playStation?"\
- + "stationID={}&dialupDetected=false&useHighBandwidth=true&locale={}"
- # reversed default true and false for connection speed
-
- categories = ["80s", "Adult Hits", "Adult Rock", "Alternative Rock",
- "Americana + Roots", "Big Band", "Blues", "Christian Hits", "Classic R&B",
- "Classic Rock", "Classical", "Comedy", "Country", "Dance + Electronica",
- "Holiday", "Indie", "International", "Jazz", "Latin", "Metal", "Miscellaneous",
- "New Age", "News + Talk", "Oldies", "Public Radio", "Rap + Hip Hop", "Reggae",
- "Religious", "Rock", "Smooth Jazz", "Soft Rock", "Soundtracks + Musicals",
- "Sports", "Top 40", "Urban/Modern R&B"]
-
-
- # static
- def update_categories(self):
- pass
-
-
- # Fetch entries
- def update_streams(self, cat, search=None):
-
- ucat = re.sub("\W+", "", cat.lower())
- html = ahttp.get(self.base.format(ucat, conf.windowsmedia_culture))
- # onclick="Listen('31e11281-cf43-4d39-9164-77721604380b', 'DJ Perry Radio', 'http://www.djperryradio.com/', 'More Stations', '20', true);">
-
- r = []
- ls = re.findall(r"""
- onclick="Listen\('([\w\-]+)',\s*'(.+?)',\s*'(.+?)',
- """, html, re.X|re.S)
- for id, title, homepage in ls:
- r.append(dict(
- id = id,
- title = unhtml(title),
- homepage = ahttp.fix_url(homepage),
- url = self._url.format(id, conf.windowsmedia_culture),
- bitrate = 0,
- ))
- print r
- return r
-
-
diff --git a/debian/changelog b/debian/changelog
index 1b483c3..e817359 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+streamtuner2 (2.2.0-1) UNRELEASED; urgency=medium
+
+ * debian/ctonrol: update vcs link
+ * New upstream version 2.2.0
+
+ -- TANIGUCHI Takaki <takaki at debian.org> Thu, 02 Feb 2017 19:00:23 +0900
+
streamtuner2 (2.1.9-1) unstable; urgency=medium
* Imported Upstream version 2.1.9
diff --git a/gtk3.xml b/gtk3.xml
deleted file mode 100644
index 5239bcf..0000000
--- a/gtk3.xml
+++ /dev/null
@@ -1,5050 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.16.1 -->
-<interface>
- <requires lib="gtk+" version="3.0"/>
- <object class="GtkAdjustment" id="adjustment_config_max_streams">
- <property name="lower">50</property>
- <property name="upper">2000</property>
- <property name="value">500</property>
- <property name="step_increment">25</property>
- <property name="page_increment">100</property>
- </object>
- <object class="GtkListStore" id="config_play">
- <columns>
- <!-- column-name type -->
- <column type="gchararray"/>
- <!-- column-name app -->
- <column type="gchararray"/>
- <!-- column-name editable -->
- <column type="gboolean"/>
- <!-- column-name icon -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkListStore" id="config_record">
- <columns>
- <!-- column-name type -->
- <column type="gchararray"/>
- <!-- column-name app -->
- <column type="gchararray"/>
- <!-- column-name editable -->
- <column type="gboolean"/>
- <!-- column-name icon -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkWindow" id="win_config">
- <property name="width_request">565</property>
- <property name="can_focus">False</property>
- <property name="title" translatable="yes">streamtuner settings</property>
- <property name="window_position">center</property>
- <property name="destroy_with_parent">True</property>
- <property name="icon">/usr/share/pixmaps/streamtuner2.png</property>
- <signal name="delete-event" handler="config_cancel" swapped="no"/>
- <child>
- <object class="GtkFrame" id="frame1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="vbox1233">
- <property name="height_request">500</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkNotebook" id="config_notebook">
- <property name="width_request">520</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="scrollable">True</property>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkViewport" id="viewport2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="vbox_cfg_player">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label_player">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Audio player</b> association.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow4">
- <property name="height_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkTreeView" id="tv_config_player">
- <property name="width_request">540</property>
- <property name="height_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="border_width">2</property>
- <property name="model">config_play</property>
- <property name="headers_clickable">False</property>
- <property name="rules_hint">True</property>
- <property name="search_column">0</property>
- <property name="level_indentation">8</property>
- <property name="enable_grid_lines">both</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection1"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_player_type">
- <property name="spacing">10</property>
- <property name="min_width">125</property>
- <property name="title" translatable="yes">Format</property>
- <property name="sort_indicator">True</property>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_player_type">
- <signal name="edited" handler="config_play_list_edit_col0" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_player_app">
- <property name="spacing">5</property>
- <property name="min_width">300</property>
- <property name="title" translatable="yes">Application</property>
- <child>
- <object class="GtkCellRendererPixbuf" id="tvcr_config_player_bin"/>
- <attributes>
- <attribute name="stock-id">3</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_player_app">
- <signal name="edited" handler="config_play_list_edit_col1" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_player2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0.019999999552965164</property>
- <property name="yalign">0.49000000953674316</property>
- <property name="label" translatable="yes"><small>You can set the same player for all formats. And audio/* and video/* would even suffice.</small></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_player3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_record1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Recording</b> applications.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkTreeView" id="tv_config_record">
- <property name="width_request">540</property>
- <property name="height_request">100</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="border_width">5</property>
- <property name="model">config_record</property>
- <property name="headers_clickable">False</property>
- <property name="rules_hint">True</property>
- <property name="search_column">0</property>
- <property name="level_indentation">8</property>
- <property name="enable_grid_lines">both</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection2"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_record_type">
- <property name="spacing">10</property>
- <property name="min_width">125</property>
- <property name="title" translatable="yes">Format</property>
- <property name="sort_indicator">True</property>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_record_type">
- <signal name="edited" handler="config_record_list_edit_col0" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_record_app">
- <property name="spacing">10</property>
- <property name="min_width">300</property>
- <property name="title" translatable="yes">Application</property>
- <child>
- <object class="GtkCellRendererPixbuf" id="tvcr_config_record_bin"/>
- <attributes>
- <attribute name="stock-id">3</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_record_app">
- <signal name="edited" handler="config_record_list_edit_col1" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label15">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0.019999999552965164</property>
- <property name="yalign">0.49000000953674316</property>
- <property name="label" translatable="yes"><small>Each application may optionally use <a href="http://fossil.include-once.org/streamtuner2/wiki?name=player">placeholders</a> such as <b>%pls</b> for Shoutcast playlists,
-and <b>%xspf</b> for newer, <b>%m3u</b> for older players, or even <b>%srv</b> for direct streaming URLs.</small></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">7</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">🔊 Player</property>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow3">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkViewport" id="viewport3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="vbox1options">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">Display</property>
- <property name="justify">right</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_show_bookmarks">
- <property name="label" translatable="yes">Show bookmark ☆star for favourites in stream lists.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_auto_save_appstate">
- <property name="label" translatable="yes">Save window state, sizes and selections automatically.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_window_title">
- <property name="label" translatable="yes">Add current channel name to window title.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">Station loading</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">7</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_pyquery">
- <property name="label" translatable="yes">Try PyQuery/HTML traversion before regex station extraction.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="image_position">top</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">10</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHBox" id="hbox5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkSpinButton" id="config_max_streams">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">8</property>
- <property name="width_chars">7</property>
- <property name="primary_icon_stock">gtk-sort-ascending</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">False</property>
- <property name="secondary_icon_sensitive">False</property>
- <property name="adjustment">adjustment_config_max_streams</property>
- <property name="climb_rate">50.020000000000003</property>
- <property name="numeric">True</property>
- <property name="wrap">True</property>
- <property name="value">500</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label19">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="xpad">6</property>
- <property name="label" translatable="yes">Limit stream number per channel / category.
-<small>Some plugins use custom overrides.</small></property>
- <property name="use_markup">True</property>
- <property name="ellipsize">end</property>
- <property name="angle">0.01</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">8</property>
- <property name="position">12</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_retain_deleted">
- <property name="label" translatable="yes">Retain deleted stations in list.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">14</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_heuristic_bookmark_update">
- <property name="label" translatable="yes">Update bookmarked stream URLs when updating station lists.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">15</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_auto_save_stations">
- <property name="label" translatable="yes">Save station lists after editing or internal updates (favicon or dnd).</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0.0099999997764825821</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">16</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">Playlist conversion</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">19</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_reuse_m3u">
- <property name="label" translatable="yes">Keep and reuse temporary .pls/.m3u files for played stations.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">20</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_playlist_asis">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <child>
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Forgo any streaming URL and playlist format conversion for players.
-<small>(Ignore all <b>%fmt</b> placeholders. Sometimes faster, but won't work with all channels.)</small></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">21</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">System</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">24</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox2tmpfiles">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label24">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Temporary files directory </property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="config_tmp">
- <property name="width_request">200</property>
- <property name="height_request">20</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_stock">gtk-save-as</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">25</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1cfgdir">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label26">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Config directory.
-<small>This is determined by XDG_CONFIG_HOME.</small></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="config_dir">
- <property name="width_request">200</property>
- <property name="height_request">20</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="invisible_char">●</property>
- <property name="width_chars">20</property>
- <property name="primary_icon_stock">gtk-home</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">False</property>
- <property name="padding">3</property>
- <property name="position">28</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_debug">
- <property name="label" translatable="yes">Enable _debug messages (on the console).</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="xalign">0.5</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">30</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_nothreads">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Disable <i>"threading"</i> for user interface.
-<small>Makes browsing appear slower. But avoids some crashes with Gtk3.</small></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">31</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label20">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">☑ Options</property>
- </object>
- <packing>
- <property name="position">1</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow5">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
- <child>
- <object class="GtkViewport" id="viewport4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="resize_mode">queue</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="plugin_options">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">10</property>
- <child>
- <object class="GtkLabel" id="label1cplginsdoc1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.05000000074505806</property>
- <property name="label" translatable="yes"><b>Channels</b> show up as notebook tabs. Changed options take effect
-immediately, while plugin enabling/disabling requires a restart of ST2.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">📻 Channels</property>
- </object>
- <packing>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
- <child>
- <object class="GtkViewport" id="viewport1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="resize_mode">queue</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="feature_options">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">10</property>
- <child>
- <object class="GtkLabel" id="label1cplginsdoc">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.05000000074505806</property>
- <property name="label" translatable="yes"><b>Feature</b> <i>plugins</i> can add menu entries, or internal functionilty,
-or appear as further categories within the bookmarks tab.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label44">
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">🔌 Features</property>
- </object>
- <packing>
- <property name="position">3</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox124124">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label152095092">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button2">
- <property name="label" translatable="yes">cancel</property>
- <property name="width_request">100</property>
- <property name="height_request">35</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="config_cancel" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button1">
- <property name="label" translatable="yes">save</property>
- <property name="width_request">100</property>
- <property name="height_request">35</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="config_save" swapped="no"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><big><b>Configuration Settings</b></big></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-harddisk</property>
- </object>
- <object class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-add</property>
- </object>
- <object class="GtkDialog" id="search_dialog">
- <property name="width_request">375</property>
- <property name="can_focus">False</property>
- <property name="opacity">0.94999999999999996</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">station search</property>
- <property name="window_position">center-on-parent</property>
- <property name="destroy_with_parent">True</property>
- <property name="icon_name">edit-find</property>
- <property name="type_hint">dialog</property>
- <property name="gravity">center</property>
- <signal name="close" handler="search_cancel" swapped="no"/>
- <signal name="delete-event" handler="search_cancel" swapped="no"/>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">20</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImage" id="search_img">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">The Findeeeeeeeer</property>
- <property name="stock">gtk-find</property>
- <property name="icon_size">6</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="box1sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label2sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b><big>search</big></b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="search_full">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip_text" translatable="yes">A single word to search for in all stations.</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label4sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label3sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">10</property>
- <property name="ypad">10</property>
- <property name="label" translatable="yes"> in</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="search_dialog_all">
- <property name="label" translatable="yes">all channels</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0.5</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="search_dialog_current">
- <property name="label" translatable="yes">just current</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0.5</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">search_dialog_all</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">20</property>
- <child>
- <object class="GtkButton" id="cache_search">
- <property name="label" translatable="yes">Cache s_can</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Start searching for above search term in the currently loaded station lists. Doesn't find *new* information, just looks through the known data.</property>
- <property name="image">image1</property>
- <property name="relief">half</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="search_go" swapped="no"/>
- <accelerator key="Return" signal="activate"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="server_search">
- <property name="label" translatable="yes">Server _search</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="has_focus">True</property>
- <property name="is_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">True</property>
- <property name="tooltip_text" translatable="yes">Instead of doing a cache search, go through the search functions on the directory service homepages. (Not implemented by all channels.)</property>
- <property name="image">image2</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="search_srv" swapped="no"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkImage" id="image3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-home</property>
- </object>
- <object class="GtkImage" id="image4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-connect</property>
- </object>
- <object class="GtkWindow" id="win_streamtuner2">
- <property name="width_request">500</property>
- <property name="height_request">330</property>
- <property name="can_focus">False</property>
- <property name="title" translatable="yes">Streamtuner2</property>
- <property name="default_width">980</property>
- <property name="default_height">775</property>
- <property name="icon">/usr/share/pixmaps/streamtuner2.png</property>
- <signal name="delete-event" handler="gtk_main_quit" swapped="no"/>
- <child>
- <object class="GtkVBox" id="vbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkHBox" id="hbox8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkVBox" id="vbox3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuBar" id="mainmenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="streammenu1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Station</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="streammenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="menu_bookmark">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Bookmark</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="bookmark" swapped="no"/>
- <accelerator key="F8" signal="activate"/>
- <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem_saveas">
- <property name="label">gtk-save-as</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="save_as" swapped="no"/>
- <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- <accelerator key="F2" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="gtk-edit">
- <property name="label">gtk-edit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="streamedit_open" swapped="no"/>
- <accelerator key="Return" signal="activate" modifiers="GDK_MOD1_MASK"/>
- <accelerator key="space" signal="activate" modifiers="GDK_MOD1_MASK"/>
- <accelerator key="F3" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="men_sepmenu_0">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="extensions_main0">
- <property name="label" translatable="yes">Extensions</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="image">image4</property>
- <property name="use_stock">False</property>
- <child type="submenu">
- <object class="GtkMenu" id="extensions">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="men_sepmenu_2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem_quit">
- <property name="label">gtk-quit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="gtk_main_quit" swapped="no"/>
- <accelerator key="F4" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="editmenu">
- <property name="label">gtk-edit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem_copy">
- <property name="label">gtk-copy</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="menu_copy" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="menuitem_delete">
- <property name="label">gtk-delete</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="delete_entry" swapped="no"/>
- <accelerator key="x" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- <accelerator key="Delete" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem8">
- <property name="label">gtk-find</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="search_open" swapped="no"/>
- <accelerator key="F4" signal="activate"/>
- <accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Toolbar</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="menuitem9">
- <property name="label">gtk-revert-to-saved</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Only Symbols</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_style_icons" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem11">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">With Text</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_style_both" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Small</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_size_small" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Medium</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_size_medium" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem14">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Large</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_size_large" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Channel tab position</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Top</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_top" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Left</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_left" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Bottom</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_bottom" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Right</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_right" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem15savestates">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Save states</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="app_state" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="menu_settings">
- <property name="label">gtk-properties</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="menu_properties" swapped="no"/>
- <accelerator key="F12" signal="activate"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="channelmenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Channel</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="channelmenuitems">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="menuitem10homepage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Homepage of directory service</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="on_homepage_channel_clicked" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem_reload">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Reload</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="on_reload_clicked" swapped="no"/>
- <accelerator key="F5" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem10favicons">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">this will take a few seconds</property>
- <property name="label" translatable="yes">Update favicons...</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="update_favicons" swapped="no"/>
- <accelerator key="F6" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem_refreshcategory">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Reload Category Tree</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="update_categories" swapped="no"/>
- <accelerator key="F5" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="---">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="helpmenu">
- <property name="label">gtk-help</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="helpmenu1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Documentation</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_help" swapped="no"/>
- <accelerator key="F1" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuonlineforum">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Online forum</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_onlineforum" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menufossilwiki">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Wiki/Fossil/Bugs</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_fossilwiki" swapped="no"/>
- <accelerator key="F1" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem10">
- <property name="label">gtk-about</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="menu_about" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox9">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkToolbar" id="toolbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="toolbar_style">both</property>
- <property name="icon_size">6</property>
- <child>
- <object class="GtkToolButton" id="play">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">play</property>
- <property name="stock_id">gtk-media-play</property>
- <signal name="clicked" handler="on_play_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="record">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">record</property>
- <property name="stock_id">gtk-media-record</property>
- <signal name="clicked" handler="on_record_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="homepage_stream">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">station</property>
- <property name="stock_id">gtk-home</property>
- <signal name="clicked" handler="on_homepage_stream_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparatorToolItem" id="toolbutton1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="reload">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">reload</property>
- <property name="stock_id">gtk-refresh</property>
- <signal name="clicked" handler="on_reload_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="stop">
- <property name="can_focus">False</property>
- <property name="visible_horizontal">False</property>
- <property name="label" translatable="yes">stop</property>
- <property name="stock_id">gtk-cancel</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolItem" id="toolbutton2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="toolbar_link">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_markup">True</property>
- <property name="justify">center</property>
- <property name="width_chars">24</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="search_quick">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="width_chars">10</property>
- <property name="xalign">0.10000000149011612</property>
- <property name="secondary_icon_stock">gtk-find</property>
- <property name="primary_icon_activatable">False</property>
- <signal name="activate" handler="quicksearch_set" swapped="no"/>
- <signal name="changed" handler="quicksearch_set" swapped="no"/>
- <signal name="icon-press" handler="quicksearch_set" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="padding">20</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage" id="img_logo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK | GDK_PROXIMITY_IN_MASK | GDK_PROXIMITY_OUT_MASK | GDK_SUBSTRUCTURE_MASK | GDK_SCROLL_MASK</property>
- <property name="xpad">15</property>
- <property name="stock">gtk-media-play</property>
- <signal name="button-press-event" handler="double_click_channel_tab" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkNotebook" id="notebook_channels">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tab_pos">left</property>
- <property name="scrollable">True</property>
- <property name="enable_popup">True</property>
- <signal name="switch-page" handler="on_notebook_channels_switch_page" swapped="no"/>
- <child>
- <object class="GtkHPaned" id="v_bookmarks">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkScrolledWindow" id="bookmarks_cat_scrollwin1">
- <property name="width_request">150</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkTreeView" id="bookmarks_cat">
- <property name="width_request">75</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="enable_tree_lines">True</property>
- <signal name="button-release-event" handler="on_category_clicked" swapped="no"/>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection3"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="resize">False</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="bookmarks_list_scrollwin1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkTreeView" id="bookmarks_list">
- <property name="width_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <signal name="button-press-event" handler="station_context_menu" swapped="no"/>
- <signal name="row-activated" handler="on_stream_row_activated" swapped="no"/>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection4"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="reorderable">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkHBox" id="c_bookmarks">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <signal name="popup-menu" handler="on_homepage_channel_clicked" swapped="no"/>
- <child>
- <object class="GtkImage" id="image7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-indent</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="l_bookmarks">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Bookmarks</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="tab_expand">True</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="statusbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="xpad">6</property>
- <property name="ypad">4</property>
- <property name="angle">0.02</property>
- <attributes>
- <attribute name="weight" value="medium"/>
- <attribute name="foreground" value="#555557575353"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkProgressBar" id="progress">
- <property name="width_request">75</property>
- <property name="height_request">16</property>
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="fraction">1</property>
- <property name="text" translatable="yes">loading...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="padding">2</property>
- <property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject" id="win_streamtuner2-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">streamtuner2</property>
- </object>
- </child>
- </object>
- <object class="GtkImage" id="image5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-indent</property>
- <property name="icon_size">2</property>
- </object>
- <object class="GtkMenu" id="streamactions">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="streamactions_play">
- <property name="label">gtk-media-play</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="on_play_clicked" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="streamactions_record">
- <property name="label">gtk-media-record</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="on_record_clicked" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="streamactions_bookmark">
- <property name="label">Add bookmark</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="image">image5</property>
- <property name="use_stock">False</property>
- <signal name="activate" handler="bookmark" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="m_s_a_line1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="extensionsCTM">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Extensions</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="extensions_context">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="m_s_a_line2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="save">
- <property name="label">gtk-save-as</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="save_as" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="edit">
- <property name="label">gtk-edit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="streamedit_open" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="homepage">
- <property name="label">Station homepage</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="image">image3</property>
- <property name="use_stock">False</property>
- <signal name="activate" handler="on_homepage_stream_clicked" swapped="no"/>
- </object>
- </child>
- </object>
- <object class="GtkDialog" id="timer_dialog">
- <property name="can_focus">False</property>
- <property name="border_width">5</property>
- <property name="icon_name">appointment-new</property>
- <property name="type_hint">normal</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="timer_cancel">
- <property name="label" translatable="yes">cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="timer_ok">
- <property name="label" translatable="yes">ok</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkTable" id="table2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="n_rows">3</property>
- <property name="n_columns">3</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkEntry" id="timer_value">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="text" translatable="yes">Fri,Sat 20:00-21:00</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">timer_cancel</action-widget>
- <action-widget response="0">timer_ok</action-widget>
- </action-widgets>
- </object>
- <object class="GtkWindow" id="url_action_container">
- <property name="can_focus">False</property>
- <child>
- <object class="GtkVBox" id="url_action_list">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="url_action_1_online_forum">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">http://sourceforge.net/projects/streamtuner2/forums/forum/1173108</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="url_action_2_fossil_wiki">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">http://fossil.include-once.org/streamtuner2/</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="url_action_3_project_homepage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">http://milki.include-once.org/streamtuner2/</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkWindow" id="win_streamedit">
- <property name="can_focus">False</property>
- <property name="opacity">0.94999999999999996</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">inspect/edit stream data</property>
- <property name="window_position">center-on-parent</property>
- <property name="destroy_with_parent">True</property>
- <property name="icon_name">gtk-edit</property>
- <property name="skip_pager_hint">True</property>
- <signal name="delete-event" handler="streamedit_cancel" swapped="no"/>
- <child>
- <object class="GtkTable" id="table6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="n_rows">10</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">5</property>
- <property name="row_spacing">5</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label31">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Radio station name.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">title</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_title">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_playing">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_homepage">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_genre">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_url">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_favicon">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label32">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Either the last playing song, or a general description of the station.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">playing/desc</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="homepage1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">homepage</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label33">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">genre</property>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label34">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">PLS or M3U link.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">stream url</property>
- </object>
- <packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label35">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Homepage icon for station. Points to a local cache file.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">favicon</property>
- </object>
- <packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- </packing>
- </child>
- <child>
- <object class="GtkFixed" id="fixed2">
- <property name="height_request">40</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkButton" id="cancel5">
- <property name="label" translatable="yes">cancel</property>
- <property name="width_request">100</property>
- <property name="height_request">25</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="streamedit_cancel" swapped="no"/>
- </object>
- <packing>
- <property name="x">100</property>
- <property name="y">10</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="ok1">
- <property name="label" translatable="yes">ok</property>
- <property name="width_request">100</property>
- <property name="height_request">25</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="tooltip_text" translatable="yes">Save changes.</property>
- <signal name="clicked" handler="streamedit_save" swapped="no"/>
- </object>
- <packing>
- <property name="x">210</property>
- <property name="y">10</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="streamedit_new">
- <property name="label" translatable="yes">copy/new</property>
- <property name="width_request">85</property>
- <property name="height_request">25</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="streamedit_new" swapped="no"/>
- </object>
- <packing>
- <property name="x">5</property>
- <property name="y">10</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label36">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.69999998807907104</property>
- <property name="label" translatable="yes"><b>channel</b></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="label37">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.08999999612569809</property>
- <property name="label" translatable="yes"><b>information</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_extra">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label38">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">You can add extra information here, if you want. Useful for searching later. But take care that it gets reset on channel reloading.</property>
- <property name="label" translatable="yes">extra info</property>
- </object>
- <packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label39">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Audio file format MIME type.</property>
- <property name="label" translatable="yes">format</property>
- </object>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_format">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
-</interface>
diff --git a/gtk3.xml.gz b/gtk3.xml.gz
index a43ff69..6b825a9 100644
Binary files a/gtk3.xml.gz and b/gtk3.xml.gz differ
diff --git a/gtk3.xml~ b/gtk3.xml~
deleted file mode 100644
index 48c69ae..0000000
--- a/gtk3.xml~
+++ /dev/null
@@ -1,5029 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.16.1 -->
-<interface>
- <requires lib="gtk+" version="3.0"/>
- <object class="GtkAdjustment" id="adjustment_config_max_streams">
- <property name="lower">50</property>
- <property name="upper">2000</property>
- <property name="value">500</property>
- <property name="step_increment">25</property>
- <property name="page_increment">100</property>
- </object>
- <object class="GtkListStore" id="config_play">
- <columns>
- <!-- column-name type -->
- <column type="gchararray"/>
- <!-- column-name app -->
- <column type="gchararray"/>
- <!-- column-name editable -->
- <column type="gboolean"/>
- <!-- column-name icon -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkListStore" id="config_record">
- <columns>
- <!-- column-name type -->
- <column type="gchararray"/>
- <!-- column-name app -->
- <column type="gchararray"/>
- <!-- column-name editable -->
- <column type="gboolean"/>
- <!-- column-name icon -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkWindow" id="win_config">
- <property name="width_request">565</property>
- <property name="can_focus">False</property>
- <property name="title" translatable="yes">streamtuner settings</property>
- <property name="window_position">center</property>
- <property name="destroy_with_parent">True</property>
- <property name="icon">/usr/share/pixmaps/streamtuner2.png</property>
- <signal name="delete-event" handler="config_cancel" swapped="no"/>
- <child>
- <object class="GtkFrame" id="frame1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="vbox1233">
- <property name="height_request">500</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkNotebook" id="config_notebook">
- <property name="width_request">520</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="scrollable">True</property>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkViewport" id="viewport2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="vbox_cfg_player">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label_player">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Audio player</b> association.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow4">
- <property name="height_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkTreeView" id="tv_config_player">
- <property name="width_request">540</property>
- <property name="height_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="border_width">2</property>
- <property name="model">config_play</property>
- <property name="headers_clickable">False</property>
- <property name="rules_hint">True</property>
- <property name="search_column">0</property>
- <property name="level_indentation">8</property>
- <property name="enable_grid_lines">both</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection1"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_player_type">
- <property name="spacing">10</property>
- <property name="min_width">125</property>
- <property name="title" translatable="yes">Format</property>
- <property name="sort_indicator">True</property>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_player_type">
- <signal name="edited" handler="config_play_list_edit_col0" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_player_app">
- <property name="spacing">5</property>
- <property name="min_width">300</property>
- <property name="title" translatable="yes">Application</property>
- <child>
- <object class="GtkCellRendererPixbuf" id="tvcr_config_player_bin"/>
- <attributes>
- <attribute name="stock-id">3</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_player_app">
- <signal name="edited" handler="config_play_list_edit_col1" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_player2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0.019999999552965164</property>
- <property name="yalign">0.49000000953674316</property>
- <property name="label" translatable="yes"><small>You can set the same player for all formats. And audio/* and video/* would even suffice.</small></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_player3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_record1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Recording</b> applications.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkTreeView" id="tv_config_record">
- <property name="width_request">540</property>
- <property name="height_request">100</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="border_width">5</property>
- <property name="model">config_record</property>
- <property name="headers_clickable">False</property>
- <property name="rules_hint">True</property>
- <property name="search_column">0</property>
- <property name="level_indentation">8</property>
- <property name="enable_grid_lines">both</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection2"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_record_type">
- <property name="spacing">10</property>
- <property name="min_width">125</property>
- <property name="title" translatable="yes">Format</property>
- <property name="sort_indicator">True</property>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_record_type">
- <signal name="edited" handler="config_record_list_edit_col0" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="tvc_config_record_app">
- <property name="spacing">10</property>
- <property name="min_width">300</property>
- <property name="title" translatable="yes">Application</property>
- <child>
- <object class="GtkCellRendererPixbuf" id="tvcr_config_record_bin"/>
- <attributes>
- <attribute name="stock-id">3</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="tvcr_config_record_app">
- <signal name="edited" handler="config_record_list_edit_col1" swapped="no"/>
- </object>
- <attributes>
- <attribute name="editable">2</attribute>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label15">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0.019999999552965164</property>
- <property name="yalign">0.49000000953674316</property>
- <property name="label" translatable="yes"><small>Each application may optionally use <a href="http://fossil.include-once.org/streamtuner2/wiki?name=player">placeholders</a> such as <b>%pls</b> for Shoutcast playlists,
-and <b>%xspf</b> for newer, <b>%m3u</b> for older players, or even <b>%srv</b> for direct streaming URLs.</small></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">7</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">🔊 Player</property>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow3">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkViewport" id="viewport3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="vbox1options">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">Display</property>
- <property name="justify">right</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_show_bookmarks">
- <property name="label" translatable="yes">Show bookmark ☆star for favourites in stream lists.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_auto_save_appstate">
- <property name="label" translatable="yes">Save window state, sizes and selections automatically.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_window_title">
- <property name="label" translatable="yes">Add current channel name to window title.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">Station loading</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">7</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_pyquery">
- <property name="label" translatable="yes">Try PyQuery/HTML traversion before regex station extraction.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="image_position">top</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">10</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHBox" id="hbox5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkSpinButton" id="config_max_streams">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="max_length">8</property>
- <property name="width_chars">7</property>
- <property name="primary_icon_stock">gtk-sort-ascending</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">False</property>
- <property name="secondary_icon_sensitive">False</property>
- <property name="adjustment">adjustment_config_max_streams</property>
- <property name="climb_rate">50.020000000000003</property>
- <property name="numeric">True</property>
- <property name="wrap">True</property>
- <property name="value">500</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label19">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="xpad">6</property>
- <property name="label" translatable="yes">Limit stream number per channel / category.
-<small>Some plugins use custom overrides.</small></property>
- <property name="use_markup">True</property>
- <property name="ellipsize">end</property>
- <property name="angle">0.01</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">8</property>
- <property name="position">12</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_retain_deleted">
- <property name="label" translatable="yes">Retain deleted stations in list.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">14</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_heuristic_bookmark_update">
- <property name="label" translatable="yes">Update bookmarked stream URLs when updating station lists.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">15</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_auto_save_stations">
- <property name="label" translatable="yes">Save station lists after editing or internal updates (favicon or dnd).</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0.0099999997764825821</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">16</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">Playlist conversion</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">19</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_reuse_m3u">
- <property name="label" translatable="yes">Keep and reuse temporary .pls/.m3u files for played stations.</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">20</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_playlist_asis">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <child>
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Forgo any streaming URL and playlist format conversion for players.
-<small>(Ignore all <b>%fmt</b> placeholders. Sometimes faster, but won't work with all channels.)</small></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">21</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label_cfg_tab_options_display1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">System</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="gravity" value="east"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">10</property>
- <property name="position">24</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox2tmpfiles">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label24">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Temporary files directory </property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="config_tmp">
- <property name="width_request">200</property>
- <property name="height_request">20</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_stock">gtk-save-as</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">5</property>
- <property name="position">25</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1cfgdir">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label26">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Config directory.
-<small>This is determined by XDG_CONFIG_HOME.</small></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="config_dir">
- <property name="width_request">200</property>
- <property name="height_request">20</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="invisible_char">●</property>
- <property name="width_chars">20</property>
- <property name="primary_icon_stock">gtk-home</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">False</property>
- <property name="padding">3</property>
- <property name="position">28</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_debug">
- <property name="label" translatable="yes">Enable _debug messages (on the console).</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="xalign">0.5</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">30</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="config_nothreads">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Disable <i>"threading"</i> for user interface.
-<small>Makes browsing appear slower. But avoids some crashes with Gtk3.</small></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="padding">3</property>
- <property name="position">31</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label20">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">☑ Options</property>
- </object>
- <packing>
- <property name="position">1</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow5">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
- <child>
- <object class="GtkViewport" id="viewport4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="resize_mode">queue</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="plugin_options">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">10</property>
- <child>
- <object class="GtkLabel" id="label1cplginsdoc1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.05000000074505806</property>
- <property name="label" translatable="yes"><b>Channels</b> show up as notebook tabs. Changed options take effect
-immediately, while plugin enabling/disabling requires a restart of ST2.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">📻 Channels</property>
- </object>
- <packing>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
- <child>
- <object class="GtkViewport" id="viewport1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="resize_mode">queue</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkVBox" id="feature_options">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">10</property>
- <child>
- <object class="GtkLabel" id="label1cplginsdoc">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.05000000074505806</property>
- <property name="label" translatable="yes"><b>Feature</b> <i>plugins</i> can add menu entries, or internal functionilty,
-or appear as further categories within the bookmarks tab.</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label44">
- <property name="can_focus">False</property>
- <property name="xpad">12</property>
- <property name="ypad">5</property>
- <property name="label" translatable="yes">🔌 Features</property>
- </object>
- <packing>
- <property name="position">3</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox124124">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label152095092">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button2">
- <property name="label" translatable="yes">cancel</property>
- <property name="width_request">100</property>
- <property name="height_request">35</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="config_cancel" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button1">
- <property name="label" translatable="yes">save</property>
- <property name="width_request">100</property>
- <property name="height_request">35</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="config_save" swapped="no"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><big><b>Configuration Settings</b></big></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-harddisk</property>
- </object>
- <object class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-add</property>
- </object>
- <object class="GtkDialog" id="search_dialog">
- <property name="width_request">375</property>
- <property name="can_focus">False</property>
- <property name="opacity">0.94999999999999996</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">station search</property>
- <property name="window_position">center-on-parent</property>
- <property name="destroy_with_parent">True</property>
- <property name="icon_name">edit-find</property>
- <property name="type_hint">dialog</property>
- <property name="gravity">center</property>
- <signal name="close" handler="search_cancel" swapped="no"/>
- <signal name="delete-event" handler="search_cancel" swapped="no"/>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">20</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImage" id="search_img">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">The Findeeeeeeeer</property>
- <property name="stock">gtk-find</property>
- <property name="icon_size">6</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="box1sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label2sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b><big>search</big></b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="search_full">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip_text" translatable="yes">A single word to search for in all stations.</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label4sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label3sd">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xpad">10</property>
- <property name="ypad">10</property>
- <property name="label" translatable="yes"> in</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="search_dialog_all">
- <property name="label" translatable="yes">all channels</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0.5</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="search_dialog_current">
- <property name="label" translatable="yes">just current</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0.5</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">search_dialog_all</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">20</property>
- <child>
- <object class="GtkButton" id="cache_search">
- <property name="label" translatable="yes">Cache s_can</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Start searching for above search term in the currently loaded station lists. Doesn't find *new* information, just looks through the known data.</property>
- <property name="image">image1</property>
- <property name="relief">half</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="search_go" swapped="no"/>
- <accelerator key="Return" signal="activate"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="server_search">
- <property name="label" translatable="yes">Server _search</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="has_focus">True</property>
- <property name="is_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">True</property>
- <property name="tooltip_text" translatable="yes">Instead of doing a cache search, go through the search functions on the directory service homepages. (Not implemented by all channels.)</property>
- <property name="image">image2</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="search_srv" swapped="no"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkImage" id="image3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-home</property>
- </object>
- <object class="GtkImage" id="image4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-connect</property>
- </object>
- <object class="GtkWindow" id="win_streamtuner2">
- <property name="width_request">500</property>
- <property name="height_request">330</property>
- <property name="can_focus">False</property>
- <property name="title" translatable="yes">Streamtuner2</property>
- <property name="default_width">980</property>
- <property name="default_height">775</property>
- <property name="icon">/usr/share/pixmaps/streamtuner2.png</property>
- <signal name="delete-event" handler="gtk_main_quit" swapped="no"/>
- <child>
- <object class="GtkVBox" id="vbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkHBox" id="hbox8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkVBox" id="vbox3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuBar" id="mainmenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="streammenu1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Station</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="streammenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="menu_bookmark">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Bookmark</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="bookmark" swapped="no"/>
- <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- <accelerator key="F8" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem_saveas">
- <property name="label">gtk-save-as</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="save_as" swapped="no"/>
- <accelerator key="F2" signal="activate"/>
- <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="gtk-edit">
- <property name="label">gtk-edit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="streamedit_open" swapped="no"/>
- <accelerator key="F3" signal="activate"/>
- <accelerator key="space" signal="activate" modifiers="GDK_MOD1_MASK"/>
- <accelerator key="Return" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="men_sepmenu_0">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="extensions_main0">
- <property name="label" translatable="yes">Extensions</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="image">image4</property>
- <property name="use_stock">False</property>
- <child type="submenu">
- <object class="GtkMenu" id="extensions">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="men_sepmenu_2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem_quit">
- <property name="label">gtk-quit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="gtk_main_quit" swapped="no"/>
- <accelerator key="F4" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="editmenu">
- <property name="label">gtk-edit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem_copy">
- <property name="label">gtk-copy</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="menu_copy" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="menuitem_delete">
- <property name="label">gtk-delete</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="delete_entry" swapped="no"/>
- <accelerator key="Delete" signal="activate"/>
- <accelerator key="x" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem8">
- <property name="label">gtk-find</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="search_open" swapped="no"/>
- <accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- <accelerator key="F4" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Toolbar</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="menuitem9">
- <property name="label">gtk-revert-to-saved</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Only Symbols</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_style_icons" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem11">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">With Text</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_style_both" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="separatormenuitem3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Small</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_size_small" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Medium</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_size_medium" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem14">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Large</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_toolbar_size_large" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Channel tab position</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Top</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_top" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Left</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_left" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Bottom</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_bottom" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menu_entry_switch_channel_tabs4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Right</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_notebook_pos_right" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem15savestates">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Save states</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="app_state" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="menu_settings">
- <property name="label">gtk-properties</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="menu_properties" swapped="no"/>
- <accelerator key="F12" signal="activate"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="channelmenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Channel</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="channelmenuitems">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="menuitem10homepage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Homepage of directory service</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="on_homepage_channel_clicked" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem_reload">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Reload</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="on_reload_clicked" swapped="no"/>
- <accelerator key="F5" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem10favicons">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">this will take a few seconds</property>
- <property name="label" translatable="yes">Update favicons...</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="update_favicons" swapped="no"/>
- <accelerator key="F6" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitem_refreshcategory">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Reload Category Tree</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="update_categories" swapped="no"/>
- <accelerator key="F5" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="---">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="helpmenu">
- <property name="label">gtk-help</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="helpmenu1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Documentation</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_help" swapped="no"/>
- <accelerator key="F1" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuonlineforum">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Online forum</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_onlineforum" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menufossilwiki">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Wiki/Fossil/Bugs</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="menu_fossilwiki" swapped="no"/>
- <accelerator key="F1" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="imagemenuitem10">
- <property name="label">gtk-about</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="menu_about" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox9">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkToolbar" id="toolbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="toolbar_style">both</property>
- <property name="icon_size">6</property>
- <child>
- <object class="GtkToolButton" id="play">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">play</property>
- <property name="stock_id">gtk-media-play</property>
- <signal name="clicked" handler="on_play_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="record">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">record</property>
- <property name="stock_id">gtk-media-record</property>
- <signal name="clicked" handler="on_record_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="homepage_stream">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">station</property>
- <property name="stock_id">gtk-home</property>
- <signal name="clicked" handler="on_homepage_stream_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkSeparatorToolItem" id="toolbutton1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="reload">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">reload</property>
- <property name="stock_id">gtk-refresh</property>
- <signal name="clicked" handler="on_reload_clicked" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolButton" id="stop">
- <property name="can_focus">False</property>
- <property name="visible_horizontal">False</property>
- <property name="label" translatable="yes">stop</property>
- <property name="stock_id">gtk-cancel</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolItem" id="toolbutton2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="toolbar_link">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_markup">True</property>
- <property name="justify">center</property>
- <property name="width_chars">24</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="search_quick">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="width_chars">10</property>
- <property name="xalign">0.10000000149011612</property>
- <property name="secondary_icon_stock">gtk-find</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <signal name="changed" handler="quicksearch_set" swapped="no"/>
- <signal name="icon-press" handler="quicksearch_set" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="padding">20</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage" id="img_logo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK | GDK_PROXIMITY_IN_MASK | GDK_PROXIMITY_OUT_MASK | GDK_SUBSTRUCTURE_MASK | GDK_SCROLL_MASK</property>
- <property name="xpad">15</property>
- <property name="stock">gtk-media-play</property>
- <signal name="button-press-event" handler="double_click_channel_tab" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkNotebook" id="notebook_channels">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tab_pos">left</property>
- <property name="scrollable">True</property>
- <property name="enable_popup">True</property>
- <signal name="switch-page" handler="on_notebook_channels_switch_page" swapped="no"/>
- <child>
- <object class="GtkHPaned" id="v_bookmarks">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkScrolledWindow" id="bookmarks_cat_scrollwin1">
- <property name="width_request">150</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkTreeView" id="bookmarks_cat">
- <property name="width_request">75</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="enable_tree_lines">True</property>
- <signal name="button-release-event" handler="on_category_clicked" swapped="no"/>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection3"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="resize">False</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="bookmarks_list_scrollwin1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkTreeView" id="bookmarks_list">
- <property name="width_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <signal name="button-press-event" handler="station_context_menu" swapped="no"/>
- <signal name="row-activated" handler="on_stream_row_activated" swapped="no"/>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection4"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="reorderable">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkHBox" id="c_bookmarks">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <signal name="popup-menu" handler="on_homepage_channel_clicked" swapped="no"/>
- <child>
- <object class="GtkImage" id="image7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-indent</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="l_bookmarks">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Bookmarks</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="tab_expand">True</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="statusbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="xpad">6</property>
- <property name="ypad">4</property>
- <property name="angle">0.02</property>
- <attributes>
- <attribute name="weight" value="medium"/>
- <attribute name="foreground" value="#555557575353"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkProgressBar" id="progress">
- <property name="width_request">75</property>
- <property name="height_request">16</property>
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="fraction">1</property>
- <property name="text" translatable="yes">loading...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="padding">2</property>
- <property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject" id="win_streamtuner2-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">streamtuner2</property>
- </object>
- </child>
- </object>
- <object class="GtkImage" id="image5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-indent</property>
- <property name="icon_size">2</property>
- </object>
- <object class="GtkMenu" id="streamactions">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImageMenuItem" id="streamactions_play">
- <property name="label">gtk-media-play</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="on_play_clicked" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="streamactions_record">
- <property name="label">gtk-media-record</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="on_record_clicked" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="streamactions_bookmark">
- <property name="label">Add bookmark</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="image">image5</property>
- <property name="use_stock">False</property>
- <signal name="activate" handler="bookmark" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="m_s_a_line1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="extensionsCTM">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Extensions</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="extensions_context">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="m_s_a_line2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="save">
- <property name="label">gtk-save-as</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="save_as" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="edit">
- <property name="label">gtk-edit</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="streamedit_open" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="homepage">
- <property name="label">Station homepage</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="image">image3</property>
- <property name="use_stock">False</property>
- <signal name="activate" handler="on_homepage_stream_clicked" swapped="no"/>
- </object>
- </child>
- </object>
- <object class="GtkDialog" id="timer_dialog">
- <property name="can_focus">False</property>
- <property name="border_width">5</property>
- <property name="icon_name">appointment-new</property>
- <property name="type_hint">normal</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="timer_cancel">
- <property name="label" translatable="yes">cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="timer_ok">
- <property name="label" translatable="yes">ok</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkTable" id="table2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="n_rows">3</property>
- <property name="n_columns">3</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkEntry" id="timer_value">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="text" translatable="yes">Fri,Sat 20:00-21:00</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">timer_cancel</action-widget>
- <action-widget response="0">timer_ok</action-widget>
- </action-widgets>
- </object>
- <object class="GtkWindow" id="url_action_container">
- <property name="can_focus">False</property>
- <child>
- <object class="GtkVBox" id="url_action_list">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="url_action_1_online_forum">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">http://sourceforge.net/projects/streamtuner2/forums/forum/1173108</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="url_action_2_fossil_wiki">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">http://fossil.include-once.org/streamtuner2/</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="url_action_3_project_homepage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">http://milki.include-once.org/streamtuner2/</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkWindow" id="win_streamedit">
- <property name="can_focus">False</property>
- <property name="opacity">0.94999999999999996</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">inspect/edit stream data</property>
- <property name="window_position">center-on-parent</property>
- <property name="destroy_with_parent">True</property>
- <property name="icon_name">gtk-edit</property>
- <property name="skip_pager_hint">True</property>
- <signal name="delete-event" handler="streamedit_cancel" swapped="no"/>
- <child>
- <object class="GtkTable" id="table6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">15</property>
- <property name="n_rows">10</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">5</property>
- <property name="row_spacing">5</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <object class="GtkLabel" id="label31">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Radio station name.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">title</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_title">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_playing">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_homepage">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_genre">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_url">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_favicon">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label32">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Either the last playing song, or a general description of the station.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">playing/desc</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="homepage1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">homepage</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label33">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">genre</property>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label34">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">PLS or M3U link.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">stream url</property>
- </object>
- <packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label35">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Homepage icon for station. Points to a local cache file.</property>
- <property name="xalign">0.89999997615814209</property>
- <property name="label" translatable="yes">favicon</property>
- </object>
- <packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- </packing>
- </child>
- <child>
- <object class="GtkFixed" id="fixed2">
- <property name="height_request">40</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkButton" id="cancel5">
- <property name="label" translatable="yes">cancel</property>
- <property name="width_request">100</property>
- <property name="height_request">25</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="streamedit_cancel" swapped="no"/>
- </object>
- <packing>
- <property name="x">100</property>
- <property name="y">10</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="ok1">
- <property name="label" translatable="yes">ok</property>
- <property name="width_request">100</property>
- <property name="height_request">25</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="tooltip_text" translatable="yes">Save changes.</property>
- <signal name="clicked" handler="streamedit_save" swapped="no"/>
- </object>
- <packing>
- <property name="x">210</property>
- <property name="y">10</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="streamedit_new">
- <property name="label" translatable="yes">copy/new</property>
- <property name="width_request">85</property>
- <property name="height_request">25</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="streamedit_new" swapped="no"/>
- </object>
- <packing>
- <property name="x">5</property>
- <property name="y">10</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label36">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.69999998807907104</property>
- <property name="label" translatable="yes"><b>channel</b></property>
- <property name="use_markup">True</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="label37">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0.08999999612569809</property>
- <property name="label" translatable="yes"><b>information</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_extra">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label38">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">You can add extra information here, if you want. Useful for searching later. But take care that it gets reset on channel reloading.</property>
- <property name="label" translatable="yes">extra info</property>
- </object>
- <packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label39">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip_text" translatable="yes">Audio file format MIME type.</property>
- <property name="label" translatable="yes">format</property>
- </object>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="streamedit_format">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
-</interface>
diff --git a/help/channel_live365.page b/help/channel_live365.page
deleted file mode 100644
index b807874..0000000
--- a/help/channel_live365.page
+++ /dev/null
@@ -1,23 +0,0 @@
-<page xmlns="http://projectmallard.org/1.0/"
- type="guide"
- id="live365">
-
-<info>
- <link type="guide" xref="index#channels"/>
- <link type="guide" xref="channels#list"/>
- <desc>Live365 radio network</desc>
-</info>
-
- <title>Live365</title>
- <subtitle><link href="http://live365.com/">//live365.com/</link></subtitle>
- <p>Live365 is a radio broadcasting service and directory. It categorizes stations in
- over 250 genres. Not all radio stations are free to listen however. It's a commercial
- provider. Therefore streamtuner2 tries to filter result lists.</p>
-
- <p>This channel plugin is known to break once in a while. And it can't be guaranteed
- to pass working streaming URLs to audio players.</p>
-
- <p>If it breaks once more, it's going to get removed. (Unless someone else sends in
- a patch, of course!)</p>
-
-</page>
diff --git a/help/exportcat.page b/help/exportcat.page
deleted file mode 100644
index b4c6f9b..0000000
--- a/help/exportcat.page
+++ /dev/null
@@ -1,28 +0,0 @@
-<page xmlns="http://projectmallard.org/1.0/"
- type="guide"
- id="exportcat">
-
-<info>
- <link type="guide" xref="index#extra"/>
- <desc>Exporting a whole category as .pls.</desc>
-</info>
-
- <title>Export all stations</title>
-
- <p>There's an "Export All" plugin available. It adds an entry under
- <guiseq><gui>Main menu</gui> <gui>Extensions</gui> <gui>Export all stations</gui></guiseq>.
- Which allows to export all stations from the currently visible channel category.</p>
-
- <p>This is of course intended primarily for saving your bookmarks.
- And it allows to import radio lists into any other music player
- or playlist collection/management app (such as Rhythmbox).</p>
-
- <section id="configuration">
- <title>Configuration option</title>
- <p>You can set the default export format in the settings dialog
- <key>F12</key>.</p>
- <p>It supports all common export formats now, with .PLS being the
- default.</p>
- </section>
-
-</page>
diff --git a/help/glossary_json.page b/help/glossary_json.page
deleted file mode 100644
index 17b20cb..0000000
--- a/help/glossary_json.page
+++ /dev/null
@@ -1,28 +0,0 @@
-<page xmlns="http://projectmallard.org/1.0/"
- type="guide"
- id="json">
-
-<info>
- <link type="guide" xref="glossary#filetypes"/>
- <desc>JavaScript Object Notation is a common data exchange format.</desc>
-</info>
-
- <title>JSON files</title>
-
- <p>JSON is a data representation format derived from Javascript (the browser embedded
- programming language for websites). Streamtuner2 uses it to store its configuration
- and radio station data files.</p>
- <p>The MIME type of these files is application/json and they often look like: </p>
-
-<code>
-[
- {
- "title": "Station title..",
- "url": "http://1.2.3.4:8000/",
- "homepage": "http://radio.org/",
- },
- { "title": "second" }
-]
-</code>
-
-</page>
diff --git a/help/glossary_m3u.page b/help/glossary_m3u.page
deleted file mode 100644
index 95689af..0000000
--- a/help/glossary_m3u.page
+++ /dev/null
@@ -1,21 +0,0 @@
-<page xmlns="http://projectmallard.org/1.0/"
- type="guide"
- id="m3u">
-
-<info>
- <link type="guide" xref="glossary#filetypes"/>
- <desc>MP3-URL playlist file.</desc>
-</info>
-
- <title>.M3U files</title>
-
- <p>M3U files also contain playlists, like .pls files. They're often used by desktop audio players.</p>
- <p>The MIME type of these files is audio/x-mpegurl and they often look like: </p>
-
-<code>
-#M3U
-http://123.45.67.189:8222/
-http://123.45.67.222:7555/
-</code>
-
-</page>
diff --git a/help/glossary_pls.page b/help/glossary_pls.page
deleted file mode 100644
index 91c3375..0000000
--- a/help/glossary_pls.page
+++ /dev/null
@@ -1,27 +0,0 @@
-<page xmlns="http://projectmallard.org/1.0/"
- type="guide"
- id="pls">
-
-<info>
- <link type="guide" xref="glossary#filetypes"/>
- <desc>Playlist file format.</desc>
-</info>
-
- <title>.PLS files</title>
-
- <p>Playlist files often have the extension .pls</p>
-
- <p>It's the primary station stream link format of SHOUTcast, and was
- popularized by WinAmp.</p>
-
- <p>The MIME type of these files is <sys>audio/x-scpls</sys> and they often look like: </p>
-
-<code mime="audio/x-scpls">
-[playlist]
-numberofentries=1
-File1=http://123.45.67.189:8222
-Title1=(#1 - 555/2000) radio station Xyz - top 100 - all the hitzez
-Length1=-1
-</code>
-
-</page>
--
streamtuner2 packaging
More information about the pkg-multimedia-commits
mailing list