Updated i18n docs, Changelog. New config file structure, proxy server settings.

git-svn-id: svn://svn.berlios.de/gpodder@75 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
Thomas Perl 2006-04-05 19:07:05 +00:00
parent 8d11713b60
commit 3d7026e5eb
10 changed files with 297 additions and 149 deletions

View File

@ -1,3 +1,9 @@
Wed, 05 Apr 2006 21:04:10 +0200 <thp@perli.net>
* Migrated to new config file style, retaining import support for old
* Using Python's ConfigParser to read/write ini-style config file
* Added option to properties + config to use environment's proxy
* Made gPodderLib a quasi-singleton (only load config once, etc..)
Wed, 05 Apr 2006 16:50:40 +0200 <thp@perli.net>
* Today is the "debian packaging" day - thanks to Peter Hoffmann
for his hard work on getting the "debian/" directory into gPodder

1
TODO
View File

@ -1,7 +1,6 @@
== 0.7 or afterwards ==
* add i18n files to installed data
* do more translations (you can contribute here, of course :)
* viewing pod info such as pubdate/description

View File

@ -1675,7 +1675,7 @@
<child>
<widget class="GtkTable" id="proxyTable">
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">5</property>
@ -1709,34 +1709,6 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="label" translatable="yes">FTP Proxy:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="httpProxy">
<property name="visible">True</property>
@ -1778,6 +1750,85 @@
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="label" translatable="yes">FTP Proxy:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label32">
<property name="visible">True</property>
<property name="label" translatable="yes">Automatic:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="cbEnvironmentVariables">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Use environment variables</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_cbEnvironmentVariables_toggled" last_modification_time="Wed, 05 Apr 2006 18:59:28 GMT"/>
</widget>
<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>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gPodder 0.7svn\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-04-05 16:32+0200\n"
"POT-Creation-Date: 2006-04-05 21:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -16,12 +16,12 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/gpodder/console.py:65
#: src/gpodder/console.py:64
#, python-format
msgid "delete channel: %s"
msgstr ""
#: src/gpodder/console.py:68
#: src/gpodder/console.py:67
#, python-format
msgid "%s is not a valid id"
msgstr ""
@ -178,20 +178,20 @@ msgstr ""
msgid "(unknown)"
msgstr ""
#: src/gpodder/gpodder.py:840
#: src/gpodder/gpodder.py:852
msgid ""
"Please do not call gpodder.py directly. Instead, call the gpodder binary."
msgstr ""
#: src/gpodder/libgpodder.py:64
#: src/gpodder/libgpodder.py:77
msgid "gPodder downloads"
msgstr ""
#: src/gpodder/libgpodder.py:160
#: src/gpodder/libgpodder.py:222
msgid "Downloading channel cover..."
msgstr ""
#: src/gpodder/libgpodder.py:211
#: src/gpodder/libgpodder.py:273
msgid "gPodder channel list"
msgstr ""
@ -230,78 +230,82 @@ msgid "Advanced"
msgstr ""
#: data/gpodder.glade.h:4
msgid "Available Podcasts"
msgid "Automatic:"
msgstr ""
#: data/gpodder.glade.h:5
msgid "Channel:"
msgid "Available Podcasts"
msgstr ""
#: data/gpodder.glade.h:6
msgid "Command:"
msgid "Channel:"
msgstr ""
#: data/gpodder.glade.h:7
msgid "Cover"
msgid "Command:"
msgstr ""
#: data/gpodder.glade.h:8
msgid "Delete selected item"
msgid "Cover"
msgstr ""
#: data/gpodder.glade.h:9
msgid "Description:"
msgid "Delete selected item"
msgstr ""
#: data/gpodder.glade.h:10
msgid "Desktop:"
msgid "Description:"
msgstr ""
#: data/gpodder.glade.h:11
msgid "Download Pod_cast"
msgid "Desktop:"
msgstr ""
#: data/gpodder.glade.h:12
msgid "Download Status"
msgid "Download Pod_cast"
msgstr ""
#: data/gpodder.glade.h:13
msgid "Download to:"
msgid "Download Status"
msgstr ""
#: data/gpodder.glade.h:14
msgid "Downloaded Podcasts"
msgid "Download to:"
msgstr ""
#: data/gpodder.glade.h:15
msgid "Downloads"
msgid "Downloaded Podcasts"
msgstr ""
#: data/gpodder.glade.h:16
msgid "E_xport list..."
msgid "Downloads"
msgstr ""
#: data/gpodder.glade.h:17
msgid "Episode Information"
msgid "E_xport list..."
msgstr ""
#: data/gpodder.glade.h:18
msgid "FTP Proxy:"
msgid "Episode Information"
msgstr ""
#: data/gpodder.glade.h:19
msgid "Feed URL:"
msgid "FTP Proxy:"
msgstr ""
#: data/gpodder.glade.h:20
msgid "General"
msgid "Feed URL:"
msgstr ""
#: data/gpodder.glade.h:21
msgid "HTTP Proxy:"
msgid "General"
msgstr ""
#: data/gpodder.glade.h:22
msgid "HTTP Proxy:"
msgstr ""
#: data/gpodder.glade.h:23
msgid ""
"If you have to use a HTTP or FTP proxy server,\n"
"you can use the usual format of the environment variables:\n"
@ -309,83 +313,87 @@ msgid ""
"<b>http://username:password@proxy_host:proxy_port/</b>"
msgstr ""
#: data/gpodder.glade.h:26
#: data/gpodder.glade.h:27
msgid "No cover available."
msgstr ""
#: data/gpodder.glade.h:27
#: data/gpodder.glade.h:28
msgid "Play selected item"
msgstr ""
#: data/gpodder.glade.h:28
#: data/gpodder.glade.h:29
msgid "Player application:"
msgstr ""
#: data/gpodder.glade.h:29
#: data/gpodder.glade.h:30
msgid "Proxy"
msgstr ""
#: data/gpodder.glade.h:30
#: data/gpodder.glade.h:31
msgid "Save downloads in:"
msgstr ""
#: data/gpodder.glade.h:31
#: data/gpodder.glade.h:32
msgid "Show \"gPodder downloads\" link"
msgstr ""
#: data/gpodder.glade.h:32
#: data/gpodder.glade.h:33
msgid "Title:"
msgstr ""
#: data/gpodder.glade.h:33
msgid "_About gPodder..."
msgstr ""
#: data/gpodder.glade.h:34
msgid "_Add channel..."
msgid "Use environment variables"
msgstr ""
#: data/gpodder.glade.h:35
msgid "_Channels"
msgid "_About gPodder..."
msgstr ""
#: data/gpodder.glade.h:36
msgid "_Check for Updates"
msgid "_Add channel..."
msgstr ""
#: data/gpodder.glade.h:37
msgid "_Close"
msgid "_Channels"
msgstr ""
#: data/gpodder.glade.h:38
msgid "_Edit channel..."
msgid "_Check for Updates"
msgstr ""
#: data/gpodder.glade.h:39
msgid "_Help"
msgid "_Close"
msgstr ""
#: data/gpodder.glade.h:40
msgid "_Podcasts"
msgid "_Edit channel..."
msgstr ""
#: data/gpodder.glade.h:41
msgid "_Preferences..."
msgid "_Help"
msgstr ""
#: data/gpodder.glade.h:42
msgid "_Remove channel"
msgid "_Podcasts"
msgstr ""
#: data/gpodder.glade.h:43
msgid "gPodder - your podcast catcher."
msgid "_Preferences..."
msgstr ""
#: data/gpodder.glade.h:44
msgid "gPodder Channel Editor"
msgid "_Remove channel"
msgstr ""
#: data/gpodder.glade.h:45
msgid "gPodder - your podcast catcher."
msgstr ""
#: data/gpodder.glade.h:46
msgid "gPodder Channel Editor"
msgstr ""
#: data/gpodder.glade.h:47
msgid "gPodder properties"
msgstr ""

View File

@ -4,7 +4,7 @@ default:
for langfile in *.po; do echo $${langfile}; msgmerge -U $${langfile} ../messages.pot; mkdir -p ../locale/`basename $${langfile} .po`/LC_MESSAGES/; msgfmt $${langfile} -o ../locale/`basename $${langfile} .po`/LC_MESSAGES/gpodder.mo; done
clean:
rm -rf ../locale *~
rm -rf ../locale *~ *.mo
.PHONY: default clean

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gPodder 0.7-svn\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-04-05 16:32+0200\n"
"PO-Revision-Date: 2006-04-04 00:22+0100\n"
"POT-Creation-Date: 2006-04-05 21:03+0200\n"
"PO-Revision-Date: 2006-04-05 20:12+0100\n"
"Last-Translator: Thomas Perl <thp@perli.net>\n"
"Language-Team: gPodder Team <thp@perli.net>\n"
"MIME-Version: 1.0\n"
@ -16,12 +16,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: German\n"
#: src/gpodder/console.py:65
#: src/gpodder/console.py:64
#, python-format
msgid "delete channel: %s"
msgstr "Channel entfernen: %s"
#: src/gpodder/console.py:68
#: src/gpodder/console.py:67
#, python-format
msgid "%s is not a valid id"
msgstr "%s is keine gültige ID"
@ -208,22 +208,22 @@ msgstr "Konnte den ausgew
msgid "(unknown)"
msgstr "(unbekannt)"
#: src/gpodder/gpodder.py:840
#: src/gpodder/gpodder.py:852
msgid ""
"Please do not call gpodder.py directly. Instead, call the gpodder binary."
msgstr ""
"Bitte starten Sie gPodder nie direkt über gpodder.py. Rufen Sie stattdessen "
"das \"gpodder\" Programm auf."
#: src/gpodder/libgpodder.py:64
#: src/gpodder/libgpodder.py:77
msgid "gPodder downloads"
msgstr "gPodder Downloads"
#: src/gpodder/libgpodder.py:160
#: src/gpodder/libgpodder.py:222
msgid "Downloading channel cover..."
msgstr "Bild wird heruntergeladen..."
#: src/gpodder/libgpodder.py:211
#: src/gpodder/libgpodder.py:273
msgid "gPodder channel list"
msgstr "gPodder Channel-Editor"
@ -263,78 +263,82 @@ msgid "Advanced"
msgstr "Erweitert"
#: data/gpodder.glade.h:4
msgid "Automatic:"
msgstr "Automatisch:"
#: data/gpodder.glade.h:5
msgid "Available Podcasts"
msgstr "Verfügbare Podcasts"
#: data/gpodder.glade.h:5
#: data/gpodder.glade.h:6
msgid "Channel:"
msgstr "Channel:"
#: data/gpodder.glade.h:6
#: data/gpodder.glade.h:7
msgid "Command:"
msgstr "Befehl:"
#: data/gpodder.glade.h:7
#: data/gpodder.glade.h:8
msgid "Cover"
msgstr "Bild"
#: data/gpodder.glade.h:8
#: data/gpodder.glade.h:9
msgid "Delete selected item"
msgstr "Ausgewähltes Element löschen"
#: data/gpodder.glade.h:9
#: data/gpodder.glade.h:10
msgid "Description:"
msgstr "Beschreibung:"
#: data/gpodder.glade.h:10
#: data/gpodder.glade.h:11
msgid "Desktop:"
msgstr "Desktop:"
#: data/gpodder.glade.h:11
#: data/gpodder.glade.h:12
msgid "Download Pod_cast"
msgstr "Pod_cast herunterladen"
#: data/gpodder.glade.h:12
#: data/gpodder.glade.h:13
msgid "Download Status"
msgstr "Download-Status"
#: data/gpodder.glade.h:13
#: data/gpodder.glade.h:14
msgid "Download to:"
msgstr "Herunterladen nach:"
#: data/gpodder.glade.h:14
#: data/gpodder.glade.h:15
msgid "Downloaded Podcasts"
msgstr "Heruntergeladene Podcasts"
#: data/gpodder.glade.h:15
#: data/gpodder.glade.h:16
msgid "Downloads"
msgstr "Downloads"
#: data/gpodder.glade.h:16
#: data/gpodder.glade.h:17
msgid "E_xport list..."
msgstr "Liste e_xportieren..."
#: data/gpodder.glade.h:17
#: data/gpodder.glade.h:18
msgid "Episode Information"
msgstr "Informationen zur Episode"
#: data/gpodder.glade.h:18
#: data/gpodder.glade.h:19
msgid "FTP Proxy:"
msgstr "FTP-Proxy:"
#: data/gpodder.glade.h:19
#: data/gpodder.glade.h:20
msgid "Feed URL:"
msgstr "Feed-Adresse:"
#: data/gpodder.glade.h:20
#: data/gpodder.glade.h:21
msgid "General"
msgstr "Allgemeines"
#: data/gpodder.glade.h:21
#: data/gpodder.glade.h:22
msgid "HTTP Proxy:"
msgstr "HTTP-Proxy:"
#: data/gpodder.glade.h:22
#: data/gpodder.glade.h:23
msgid ""
"If you have to use a HTTP or FTP proxy server,\n"
"you can use the usual format of the environment variables:\n"
@ -346,83 +350,87 @@ msgstr ""
"\n"
"<b>http://benutzer:passwort@proxy_host:proxy_port/</b>"
#: data/gpodder.glade.h:26
#: data/gpodder.glade.h:27
msgid "No cover available."
msgstr "Kein Cover verfügbar."
#: data/gpodder.glade.h:27
#: data/gpodder.glade.h:28
msgid "Play selected item"
msgstr "Ausgewähltes Element abspielen"
#: data/gpodder.glade.h:28
#: data/gpodder.glade.h:29
msgid "Player application:"
msgstr "Abspielprogramm:"
#: data/gpodder.glade.h:29
#: data/gpodder.glade.h:30
msgid "Proxy"
msgstr "Proxy"
#: data/gpodder.glade.h:30
#: data/gpodder.glade.h:31
msgid "Save downloads in:"
msgstr "Downloads speichern in:"
#: data/gpodder.glade.h:31
#: data/gpodder.glade.h:32
msgid "Show \"gPodder downloads\" link"
msgstr "\"gPodder Downloads\"-Verknüpfung anzeigen"
#: data/gpodder.glade.h:32
#: data/gpodder.glade.h:33
msgid "Title:"
msgstr "Titel:"
#: data/gpodder.glade.h:33
#: data/gpodder.glade.h:34
msgid "Use environment variables"
msgstr "Benutze Umgebungsvariablen"
#: data/gpodder.glade.h:35
msgid "_About gPodder..."
msgstr "Üb_er gPodder..."
#: data/gpodder.glade.h:34
#: data/gpodder.glade.h:36
msgid "_Add channel..."
msgstr "Ch_annel abbonieren..."
#: data/gpodder.glade.h:35
#: data/gpodder.glade.h:37
msgid "_Channels"
msgstr "_Channels"
#: data/gpodder.glade.h:36
#: data/gpodder.glade.h:38
msgid "_Check for Updates"
msgstr "Na_ch Aktualisierungen suchen"
#: data/gpodder.glade.h:37
#: data/gpodder.glade.h:39
msgid "_Close"
msgstr "S_chließen"
#: data/gpodder.glade.h:38
#: data/gpodder.glade.h:40
msgid "_Edit channel..."
msgstr "_Editiere Channel..."
#: data/gpodder.glade.h:39
#: data/gpodder.glade.h:41
msgid "_Help"
msgstr "_Hilfe"
#: data/gpodder.glade.h:40
#: data/gpodder.glade.h:42
msgid "_Podcasts"
msgstr "_Podcasts"
#: data/gpodder.glade.h:41
#: data/gpodder.glade.h:43
msgid "_Preferences..."
msgstr "Ein_s_tellungen..."
#: data/gpodder.glade.h:42
#: data/gpodder.glade.h:44
msgid "_Remove channel"
msgstr "Entfe_rne Channel"
#: data/gpodder.glade.h:43
#: data/gpodder.glade.h:45
msgid "gPodder - your podcast catcher."
msgstr "gPodder - dein podcast catcher."
#: data/gpodder.glade.h:44
#: data/gpodder.glade.h:46
msgid "gPodder Channel Editor"
msgstr "gPodder Channel-Editor"
#: data/gpodder.glade.h:45
#: data/gpodder.glade.h:47
msgid "gPodder properties"
msgstr "gPodder Einstellungen"

View File

@ -12,16 +12,13 @@
*) edit the "data/po/XX.po" file (translate the strings)
*) run "make generators" again
*) run "make test" to see if it works
*) add your language to the languages list in setup.py
report any problems/bugs to: gpodder-devel@berlios.de
KNOWN BUGS:
*) installation of locale files when doing
a "make install" not working
*) has had only minimal testing - there might be bugs..
-- thp <thp@perli.net>, Thu, 30 Mar 2006 23:16:20 +0200
Updated: Fri, 31 Mar 2006 18:11:41 +0200
Updated: Wed, 05 Apr 2006 20:13:07 +0200

View File

@ -2,7 +2,7 @@
# Python module src/gpodder/gpodder.py
# Autogenerated from gpodder.glade
# Generated on Wed Apr 5 16:33:16 2006
# Generated on Wed Apr 5 21:03:09 2006
# Warning: Do not modify any context comment such as #--
# They are required to keep user's code
@ -703,8 +703,10 @@ class Gpodderproperties(SimpleGladeApp):
self.httpProxy.set_text( gl.http_proxy)
self.ftpProxy.set_text( gl.ftp_proxy)
self.openApp.set_text( gl.open_app)
# the use proxy env vars check box
self.cbEnvironmentVariables.set_active( gl.proxy_use_environment)
# if the symlink exists, set the checkbox active
self.cbDesktopSymlink.set_active( gPodderLib().getDesktopSymlink())
self.cbDesktopSymlink.set_active( gl.getDesktopSymlink())
# setup cell renderers
cellrenderer = gtk.CellRendererPixbuf()
self.comboPlayerApp.pack_start( cellrenderer, False)
@ -764,6 +766,15 @@ class Gpodderproperties(SimpleGladeApp):
self.labelCustomCommand.hide()
#-- Gpodderproperties.on_comboPlayerApp_changed }
#-- Gpodderproperties.on_cbEnvironmentVariables_toggled {
def on_cbEnvironmentVariables_toggled(self, widget, *args):
if libgpodder.isDebugging():
print "on_cbEnvironmentVariables_toggled called with self.%s" % widget.get_name()
sens = not self.cbEnvironmentVariables.get_active()
self.httpProxy.set_sensitive( sens)
self.ftpProxy.set_sensitive( sens)
#-- Gpodderproperties.on_cbEnvironmentVariables_toggled }
#-- Gpodderproperties.on_btnOK_clicked {
def on_btnOK_clicked(self, widget, *args):
if libgpodder.isDebugging():
@ -772,6 +783,7 @@ class Gpodderproperties(SimpleGladeApp):
gl.http_proxy = self.httpProxy.get_text()
gl.ftp_proxy = self.ftpProxy.get_text()
gl.open_app = self.openApp.get_text()
gl.proxy_use_environment = self.cbEnvironmentVariables.get_active()
gl.propertiesChanged()
# create or remove symlink to download dir on desktop
if self.cbDesktopSymlink.get_active():

View File

@ -3,7 +3,7 @@
# Python module src/gpodder/gpodder.py
# Autogenerated from gpodder.glade
# Generated on Wed Apr 5 16:33:16 2006
# Generated on Wed Apr 5 21:03:09 2006
# Warning: Do not modify any context comment such as #--
# They are required to keep user's code
@ -197,6 +197,11 @@ class Gpodderproperties(SimpleGladeApp):
print "on_comboPlayerApp_changed called with self.%s" % widget.get_name()
#-- Gpodderproperties.on_comboPlayerApp_changed }
#-- Gpodderproperties.on_cbEnvironmentVariables_toggled {
def on_cbEnvironmentVariables_toggled(self, widget, *args):
print "on_cbEnvironmentVariables_toggled called with self.%s" % widget.get_name()
#-- Gpodderproperties.on_cbEnvironmentVariables_toggled }
#-- Gpodderproperties.on_btnOK_clicked {
def on_btnOK_clicked(self, widget, *args):
print "on_btnOK_clicked called with self.%s" % widget.get_name()

View File

@ -38,6 +38,8 @@ from libpodcasts import podcastChannel
from gtk.gdk import PixbufLoader
from ConfigParser import ConfigParser
# global debugging variable, set to False on release
# TODO: while developing a new version, set this to "True"
debugging = True
@ -45,6 +47,9 @@ debugging = True
# global recursive lock for thread exclusion
globalLock = threading.RLock()
# my gpodderlib variable
g_podder_lib = None
def isDebugging():
return debugging
@ -54,14 +59,23 @@ def getLock():
def releaseLock():
globalLock.release()
class gPodderLib( object):
# some awkward kind of "singleton" ;)
def gPodderLib():
global g_podder_lib
if g_podder_lib == None:
g_podder_lib = gPodderLibClass()
return g_podder_lib
class gPodderLibClass( object):
gpodderdir = ""
downloaddir = ""
cachedir = ""
http_proxy = ""
ftp_proxy = ""
proxy_use_environment = False
open_app = ""
desktop_link = _("gPodder downloads")
gpodderconf_section = 'gpodder-conf-1'
def __init__( self):
self.gpodderdir = expanduser( "~/.config/gpodder/")
@ -94,43 +108,91 @@ class gPodderLib( object):
def getConfigFilename( self):
return self.gpodderdir + "gpodder.conf"
def getChannelsFilename( self):
return self.gpodderdir + "channels.xml"
def propertiesChanged( self):
# set new environment variables for subprocesses to use
environ['http_proxy'] = self.http_proxy
environ['ftp_proxy'] = self.ftp_proxy
# set new environment variables for subprocesses to use,
# but only if we are not told to passthru the env vars
if not self.proxy_use_environment:
environ['http_proxy'] = self.http_proxy
environ['ftp_proxy'] = self.ftp_proxy
# save settings for next startup
self.saveConfig()
def saveConfig( self):
parser = ConfigParser()
self.write_to_parser( parser, 'http_proxy', self.http_proxy)
self.write_to_parser( parser, 'ftp_proxy', self.ftp_proxy)
self.write_to_parser( parser, 'player', self.open_app)
self.write_to_parser( parser, 'proxy_use_env', self.proxy_use_environment)
fn = self.getConfigFilename()
fp = open( fn, "w")
fp.write( self.http_proxy + "\n")
fp.write( self.ftp_proxy + "\n")
fp.write( self.open_app + "\n")
parser.write( fp)
fp.close()
def get_from_parser( self, parser, option, default = ''):
try:
result = parser.get( self.gpodderconf_section, option)
if isDebugging():
print "get_from_parser( %s) = %s" % ( option, result )
return result
except:
return default
def get_boolean_from_parser( self, parser, option, default = False):
try:
result = parser.getboolean( self.gpodderconf_section, option)
return result
except:
return default
def write_to_parser( self, parser, option, value = ''):
if not parser.has_section( self.gpodderconf_section):
parser.add_section( self.gpodderconf_section)
try:
parser.set( self.gpodderconf_section, option, str(value))
except:
if isDebugging():
print 'write_to_parser: could not write config (option=%s, value=%s' % (option, value)
def loadConfig( self):
was_oldstyle = False
try:
fn = self.getConfigFilename()
fp = open( fn, "r")
http = fp.readline()
ftp = fp.readline()
app = fp.readline()
if http != "" and ftp != "":
if open(fn,'r').read(1) != '[':
if isDebugging():
print 'seems like old-style config. trying to read it anyways..'
fp = open( fn, 'r')
http = fp.readline()
ftp = fp.readline()
app = fp.readline()
fp.close()
was_oldstyle = True
else:
parser = ConfigParser()
parser.read( fn)
if parser.has_section( self.gpodderconf_section):
http = self.get_from_parser( parser, 'http_proxy')
ftp = self.get_from_parser( parser, 'ftp_proxy')
app = self.get_from_parser( parser, 'player', 'gnome-open')
self.proxy_use_environment = self.get_boolean_from_parser( parser, 'proxy_use_env')
else:
if isDebugging():
print "config file %s has no section %s" % (fn, gpodderconf_section)
if not self.proxy_use_environment:
self.http_proxy = strip( http)
self.ftp_proxy = strip( ftp)
if strip( app) != "":
if strip( app) != '':
self.open_app = strip( app)
else:
self.open_app = "gnome-open"
fp.close()
self.open_app = 'gnome-open'
except:
# TODO: well, well.. (http + ftp?)
self.open_app = "gnome-open"
self.open_app = 'gnome-open'
if was_oldstyle:
self.saveConfig()
def openFilename( self, filename):
if isDebugging():