Lots of code clean-ups, translation update, itunes image support :) (for full list, please see changelog...)
git-svn-id: svn://svn.berlios.de/gpodder@65 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
parent
498fbb1a1b
commit
3b3d806d38
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
Fri, 31 Mar 2006 18:13:16 +0200 <thp@perli.net>
|
||||||
|
* Major code clean-up in gpodder.py and other modules
|
||||||
|
* Updated strings in all source code + gladefile (for i18n)
|
||||||
|
* Added support for itunes image ("Cover") in channel editor
|
||||||
|
* Removed orphaned (for a very long time) download status window
|
||||||
|
* User applications (from libplayers) only readed once now
|
||||||
|
* Fixed gPodder window icon when running with "make test"
|
||||||
|
* Updated gladefile (removed status, non-translatable strings)
|
||||||
|
* Updated data/messages.pot and updated german translation (de.po)
|
||||||
|
|
||||||
Thu, 30 Mar 2006 23:00:44 +0200 <thp@perli.net>
|
Thu, 30 Mar 2006 23:00:44 +0200 <thp@perli.net>
|
||||||
* Modified makefile for i18n purposes
|
* Modified makefile for i18n purposes
|
||||||
* Added data/po directory structure
|
* Added data/po directory structure
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -62,7 +62,7 @@ $(GLADEGETTEXT): $(GLADEFILE)
|
||||||
intltool-extract --type=gettext/glade $(GLADEFILE)
|
intltool-extract --type=gettext/glade $(GLADEFILE)
|
||||||
|
|
||||||
$(MESSAGESPOT): src/gpodder/*.py $(GLADEGETTEXT) $(BINFILE)
|
$(MESSAGESPOT): src/gpodder/*.py $(GLADEGETTEXT) $(BINFILE)
|
||||||
xgettext -j -k_ -kN_ -o $(MESSAGESPOT) src/gpodder/*.py $(GLADEGETTEXT) $(BINFILE)
|
xgettext -k_ -kN_ -o $(MESSAGESPOT) src/gpodder/*.py $(GLADEGETTEXT) $(BINFILE)
|
||||||
sed -e 's/SOME DESCRIPTIVE TITLE/gPodder translation template/g' -e 's/YEAR THE PACKAGE'"'"'S COPYRIGHT HOLDER/2006 Thomas Perl/g' -e 's/FIRST AUTHOR <EMAIL@ADDRESS>, YEAR/Thomas Perl <thp@perli.net>, 2006/g' -e 's/PACKAGE VERSION/gPodder '$(GPODDERVERSION)'/g' -e 's/PACKAGE/gPodder/g' $(MESSAGESPOT) > $(MESSAGESPOT).tmp
|
sed -e 's/SOME DESCRIPTIVE TITLE/gPodder translation template/g' -e 's/YEAR THE PACKAGE'"'"'S COPYRIGHT HOLDER/2006 Thomas Perl/g' -e 's/FIRST AUTHOR <EMAIL@ADDRESS>, YEAR/Thomas Perl <thp@perli.net>, 2006/g' -e 's/PACKAGE VERSION/gPodder '$(GPODDERVERSION)'/g' -e 's/PACKAGE/gPodder/g' $(MESSAGESPOT) > $(MESSAGESPOT).tmp
|
||||||
mv $(MESSAGESPOT).tmp $(MESSAGESPOT)
|
mv $(MESSAGESPOT).tmp $(MESSAGESPOT)
|
||||||
|
|
||||||
|
|
5
TODO
5
TODO
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
== 0.7 or afterwards ==
|
== 0.7 or afterwards ==
|
||||||
|
|
||||||
* i18n support (http://docs.python.org/lib/node333.html)
|
* add i18n files to installed data
|
||||||
more help here: http://www.async.com.br/faq/pygtk/index.py?querytype=simple&query=gettext&req=search
|
* do more translations (you can contribute here, of course :)
|
||||||
(might look into this soon ) -- thp <thp@perli.net>
|
|
||||||
|
|
||||||
* viewing pod info such as pubdate/description
|
* viewing pod info such as pubdate/description
|
||||||
would've been nice.. It would give a better over view on your
|
would've been nice.. It would give a better over view on your
|
||||||
|
|
24
bin/gpodder
24
bin/gpodder
|
@ -36,29 +36,29 @@ def main(argv=None):
|
||||||
|
|
||||||
parser.add_option("-v", "--verbose",
|
parser.add_option("-v", "--verbose",
|
||||||
action="store_true", dest="verbose", default=False,
|
action="store_true", dest="verbose", default=False,
|
||||||
help=_("print extra information"))
|
help=_("Be more verbose"))
|
||||||
|
|
||||||
parser.add_option("--debug",
|
parser.add_option("--debug",
|
||||||
action="store_true", dest="debug", default=False,
|
action="store_true", dest="debug", default=False,
|
||||||
help=_("run local version for debugging"))
|
help=_("Run local version in current directory"))
|
||||||
|
|
||||||
parser.add_option("-l", "--list",
|
parser.add_option("-l", "--list",
|
||||||
action="store_true", dest="list", default=False,
|
action="store_true", dest="list", default=False,
|
||||||
help=_("list all channel subscriptions"))
|
help=_("List all channel subscriptions"))
|
||||||
|
|
||||||
parser.add_option("-r", "--run",
|
parser.add_option("-r", "--run",
|
||||||
action="store_true", dest="run", default=False,
|
action="store_true", dest="run", default=False,
|
||||||
help=_("update channels and download new podcasts"))
|
help=_("Update channel list, download new podcasts"))
|
||||||
|
|
||||||
parser.add_option("-u", "--update",
|
parser.add_option("-u", "--update",
|
||||||
action="store_true", dest="update", default=False,
|
action="store_true", dest="update", default=False,
|
||||||
help=_("update channels"))
|
help=_("Update channel list and exit"))
|
||||||
|
|
||||||
parser.add_option("-a", "--add", dest="add",
|
parser.add_option("-a", "--add", dest="add",
|
||||||
help=_("add FEEDURL to channel subscriptions"), metavar="FEEDURL")
|
help=_("Subscribe to channel from FEEDURL"), metavar="FEEDURL")
|
||||||
|
|
||||||
parser.add_option("-d", "--delete", dest="delete",
|
parser.add_option("-d", "--delete", dest="delete",
|
||||||
help=_("delete channel n"), metavar="n")
|
help=_("Delete channel with ID n"), metavar="n")
|
||||||
|
|
||||||
|
|
||||||
(options, args) = parser.parse_args(argv)
|
(options, args) = parser.parse_args(argv)
|
||||||
|
@ -76,10 +76,8 @@ def main(argv=None):
|
||||||
from gpodder import console
|
from gpodder import console
|
||||||
which_wget = console.testForWget()
|
which_wget = console.testForWget()
|
||||||
if which_wget == "":
|
if which_wget == "":
|
||||||
print _("ERROR: You do not seem to have a usable \"wget\" binary in your path.")
|
print _("Error: cannot find wget.")
|
||||||
return 20
|
return 20
|
||||||
else:
|
|
||||||
print _("Found wget: %s") % which_wget
|
|
||||||
# which_wget
|
# which_wget
|
||||||
|
|
||||||
if options.list:
|
if options.list:
|
||||||
|
@ -95,15 +93,15 @@ def main(argv=None):
|
||||||
if options.add != None and options.add != "" and (options.add[:4] == "http" or options.add[:3] == "ftp"):
|
if options.add != None and options.add != "" and (options.add[:4] == "http" or options.add[:3] == "ftp"):
|
||||||
console.add_channel(options.add)
|
console.add_channel(options.add)
|
||||||
else:
|
else:
|
||||||
print _('unknown channel: %s') % options.add
|
print _('Cannot add channel: %s') % options.add
|
||||||
|
|
||||||
elif options.delete:
|
elif options.delete:
|
||||||
try:
|
try:
|
||||||
chid = int(options.delete)
|
chid = int(options.delete)
|
||||||
console.del_channel(chid)
|
console.del_channel(chid)
|
||||||
print _("channel IDs may have changed, list before deleting again")
|
print _("Channel IDs may have changed, list before deleting again.")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print _('%s is not a valid id') %options.delete
|
print _('Not a valid channel ID: %s') %options.delete
|
||||||
|
|
||||||
else:
|
else:
|
||||||
#default run gui
|
#default run gui
|
||||||
|
|
|
@ -1024,288 +1024,6 @@
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
<widget class="GtkWindow" id="gPodderStatus">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="title" translatable="yes">gPodder Download Status</property>
|
|
||||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
|
||||||
<property name="window_position">GTK_WIN_POS_CENTER</property>
|
|
||||||
<property name="modal">False</property>
|
|
||||||
<property name="resizable">True</property>
|
|
||||||
<property name="destroy_with_parent">False</property>
|
|
||||||
<property name="decorated">True</property>
|
|
||||||
<property name="skip_taskbar_hint">False</property>
|
|
||||||
<property name="skip_pager_hint">False</property>
|
|
||||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
|
|
||||||
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
|
||||||
<property name="focus_on_map">True</property>
|
|
||||||
<property name="urgency_hint">False</property>
|
|
||||||
<signal name="destroy" handler="on_gPodderStatus_destroy" last_modification_time="Sun, 30 Oct 2005 14:04:51 GMT"/>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkTable" id="waiterTable">
|
|
||||||
<property name="border_width">10</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="n_rows">5</property>
|
|
||||||
<property name="n_columns">2</property>
|
|
||||||
<property name="homogeneous">False</property>
|
|
||||||
<property name="row_spacing">5</property>
|
|
||||||
<property name="column_spacing">5</property>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="label7">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes">Downloading from:</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">1</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">0</property>
|
|
||||||
<property name="bottom_attach">1</property>
|
|
||||||
<property name="x_options">fill</property>
|
|
||||||
<property name="y_options"></property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="label8">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes">Episode:</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">1</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="label9">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes">Current speed:</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">1</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="GtkHBox" id="hbox3">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="homogeneous">False</property>
|
|
||||||
<property name="spacing">0</property>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkButton" id="btnCancel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="label">gtk-cancel</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
|
||||||
<property name="focus_on_click">True</property>
|
|
||||||
<signal name="clicked" handler="on_btnCancel_clicked" last_modification_time="Sun, 30 Oct 2005 13:59:26 GMT"/>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="padding">0</property>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="pack_type">GTK_PACK_END</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</widget>
|
|
||||||
<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>
|
|
||||||
<property name="y_options">fill</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="label10">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes">Progress:</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">1</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">3</property>
|
|
||||||
<property name="bottom_attach">4</property>
|
|
||||||
<property name="x_options">fill</property>
|
|
||||||
<property name="y_options">expand</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="labelFrom">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes"><b>labelFrom</b></property>
|
|
||||||
<property name="use_underline">False</property>
|
|
||||||
<property name="use_markup">True</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">1</property>
|
|
||||||
<property name="right_attach">2</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="bottom_attach">1</property>
|
|
||||||
<property name="x_options">fill</property>
|
|
||||||
<property name="y_options"></property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="labelFilename">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes"><b>labelFilename</b></property>
|
|
||||||
<property name="use_underline">False</property>
|
|
||||||
<property name="use_markup">True</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">1</property>
|
|
||||||
<property name="right_attach">2</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="labelSpeed">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes">labelSpeed</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">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>
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<widget class="GtkProgressBar" id="progressBar">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
|
|
||||||
<property name="fraction">0</property>
|
|
||||||
<property name="pulse_step">0.10000000149</property>
|
|
||||||
<property name="text" translatable="yes"></property>
|
|
||||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
|
||||||
</widget>
|
|
||||||
<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>
|
|
||||||
<property name="x_options">fill</property>
|
|
||||||
<property name="y_options">expand</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</widget>
|
|
||||||
</child>
|
|
||||||
</widget>
|
|
||||||
|
|
||||||
<widget class="GtkWindow" id="gPodderChannel">
|
<widget class="GtkWindow" id="gPodderChannel">
|
||||||
<property name="border_width">10</property>
|
<property name="border_width">10</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -1558,7 +1276,7 @@
|
||||||
<widget class="GtkTable" id="table3">
|
<widget class="GtkTable" id="table3">
|
||||||
<property name="border_width">10</property>
|
<property name="border_width">10</property>
|
||||||
<property name="visible">True</property>
|
<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="n_columns">2</property>
|
||||||
<property name="homogeneous">False</property>
|
<property name="homogeneous">False</property>
|
||||||
<property name="row_spacing">5</property>
|
<property name="row_spacing">5</property>
|
||||||
|
@ -1642,6 +1360,82 @@
|
||||||
<property name="type">tab</property>
|
<property name="type">tab</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkVBox" id="vbox1">
|
||||||
|
<property name="border_width">10</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="homogeneous">False</property>
|
||||||
|
<property name="spacing">0</property>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkImage" id="imgCover">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="xalign">0.5</property>
|
||||||
|
<property name="yalign">0.5</property>
|
||||||
|
<property name="xpad">0</property>
|
||||||
|
<property name="ypad">0</property>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkLabel" id="labelCoverStatus">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">No cover available.</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.5</property>
|
||||||
|
<property name="yalign">0.5</property>
|
||||||
|
<property name="xpad">0</property>
|
||||||
|
<property name="ypad">4</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="padding">0</property>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="tab_expand">False</property>
|
||||||
|
<property name="tab_fill">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkLabel" id="label31">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">Cover</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.5</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="type">tab</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="padding">0</property>
|
<property name="padding">0</property>
|
||||||
|
@ -2145,7 +1939,7 @@ you can use the usual format of the environment variables:
|
||||||
<property name="editable">True</property>
|
<property name="editable">True</property>
|
||||||
<property name="visibility">True</property>
|
<property name="visibility">True</property>
|
||||||
<property name="max_length">0</property>
|
<property name="max_length">0</property>
|
||||||
<property name="text" translatable="yes">~/.config/gpodder/downloads/</property>
|
<property name="text">~/.config/gpodder/downloads/</property>
|
||||||
<property name="has_frame">True</property>
|
<property name="has_frame">True</property>
|
||||||
<property name="invisible_char">*</property>
|
<property name="invisible_char">*</property>
|
||||||
<property name="activates_default">False</property>
|
<property name="activates_default">False</property>
|
||||||
|
@ -2279,7 +2073,7 @@ you can use the usual format of the environment variables:
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkLabel" id="episode_title">
|
<widget class="GtkLabel" id="episode_title">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="label" translatable="yes"><b><big>The gPodder Episode Title</big></b></property>
|
<property name="label"><b><big>The gPodder Episode Title</big></b></property>
|
||||||
<property name="use_underline">False</property>
|
<property name="use_underline">False</property>
|
||||||
<property name="use_markup">True</property>
|
<property name="use_markup">True</property>
|
||||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||||
|
@ -2326,7 +2120,7 @@ you can use the usual format of the environment variables:
|
||||||
<property name="left_margin">5</property>
|
<property name="left_margin">5</property>
|
||||||
<property name="right_margin">5</property>
|
<property name="right_margin">5</property>
|
||||||
<property name="indent">0</property>
|
<property name="indent">0</property>
|
||||||
<property name="text" translatable="yes">Description of the episode currently selected in gPodder</property>
|
<property name="text">Description of the episode currently selected in gPodder</property>
|
||||||
</widget>
|
</widget>
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -8,12 +8,12 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gPodder 0.7-svn\n"
|
"Project-Id-Version: gPodder 0.7-svn\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2006-03-30 23:18+0200\n"
|
"POT-Creation-Date: 2006-03-31 18:11+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=iso-8859-1\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/gpodder/console.py:65
|
#: src/gpodder/console.py:65
|
||||||
|
@ -26,36 +26,40 @@ msgstr ""
|
||||||
msgid "%s is not a valid id"
|
msgid "%s is not a valid id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:110 src/gpodder/gpodder.py:125
|
#: src/gpodder/gpodder.py:54
|
||||||
#: src/gpodder/gpodder.py:131
|
msgid "Contributors / patch writers:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:58
|
||||||
|
msgid "See the AUTHORS file for all contributors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:113 src/gpodder/gpodder.py:128
|
||||||
|
#: src/gpodder/gpodder.py:134
|
||||||
msgid "Episode"
|
msgid "Episode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:115
|
#: src/gpodder/gpodder.py:118
|
||||||
msgid "Size"
|
msgid "Size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:134
|
#: src/gpodder/gpodder.py:137
|
||||||
msgid "Speed"
|
msgid "Speed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:137
|
#: src/gpodder/gpodder.py:140
|
||||||
msgid "Progress"
|
msgid "Progress"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:166
|
#: src/gpodder/gpodder.py:164
|
||||||
msgid "Channel Info"
|
msgid "Channel Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:186
|
#: src/gpodder/gpodder.py:199
|
||||||
msgid "probably no channels found"
|
msgid "No downloaded podcasts found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:201
|
#: src/gpodder/gpodder.py:209
|
||||||
msgid "no downloaded podcasts found.."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:211
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"<b>No channels found</b>\n"
|
"<b>No channels found</b>\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -63,52 +67,35 @@ msgid ""
|
||||||
"new channel."
|
"new channel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:212
|
#: src/gpodder/gpodder.py:211
|
||||||
msgid "probably no feeds or channels found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:214
|
|
||||||
msgid "some unknown function"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:214
|
|
||||||
msgid "gPodder message"
|
msgid "gPodder message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:222
|
#: src/gpodder/gpodder.py:219
|
||||||
msgid "Do you really want to do this?"
|
msgid "Do you really want to do this?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:222
|
#: src/gpodder/gpodder.py:219
|
||||||
msgid "gPodder confirmation"
|
msgid "gPodder confirmation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:233
|
#: src/gpodder/gpodder.py:284
|
||||||
#, python-format
|
msgid ""
|
||||||
msgid "I Asked: %s"
|
"There has been an error adding the channel.\n"
|
||||||
|
"Maybe the URL is wrong?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:234
|
#: src/gpodder/gpodder.py:290 src/gpodder/gpodder.py:377
|
||||||
#, python-format
|
|
||||||
msgid "User answered: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:274
|
|
||||||
#, python-format
|
|
||||||
msgid "Adding channel: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:275 src/gpodder/gpodder.py:345
|
|
||||||
#: src/gpodder/gpodder.py:388
|
|
||||||
msgid "Fetching channel index..."
|
msgid "Fetching channel index..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:293
|
#: src/gpodder/gpodder.py:303
|
||||||
#, python-format
|
msgid ""
|
||||||
msgid "unkonwn link format: %s"
|
"Could not add new channel.\n"
|
||||||
|
"Only <b>http://</b> and <b>ftp://</b> URLs supported at the moment."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:320
|
#: src/gpodder/gpodder.py:333
|
||||||
msgid ""
|
msgid ""
|
||||||
"<big><b>Updating feed cache</b></big>\n"
|
"<big><b>Updating feed cache</b></big>\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -116,26 +103,14 @@ msgid ""
|
||||||
"updating the feed cache..."
|
"updating the feed cache..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:361
|
#: src/gpodder/gpodder.py:370
|
||||||
msgid ""
|
|
||||||
"There has been an error adding the channel.\n"
|
|
||||||
"Maybe the URL is wrong?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:367
|
|
||||||
msgid ""
|
|
||||||
"Could not add new channel.\n"
|
|
||||||
"Only <b>http://</b> and <b>ftp://</b> URLs supported at the moment."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:381
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Cannot edit this channel.\n"
|
"Cannot edit this channel.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"No channel found."
|
"No channel found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:419
|
#: src/gpodder/gpodder.py:400
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Do you really want to remove this channel?\n"
|
"Do you really want to remove this channel?\n"
|
||||||
|
@ -143,43 +118,31 @@ msgid ""
|
||||||
" %s"
|
" %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:426
|
#: src/gpodder/gpodder.py:407
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not delete channel.\n"
|
"Could not delete channel.\n"
|
||||||
"Probably no channel is selected."
|
"Probably no channel is selected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:434
|
#: src/gpodder/gpodder.py:415
|
||||||
|
msgid "Your channel list is empty. Nothing to export."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:417
|
||||||
|
msgid "Export to OPML"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:485
|
||||||
|
msgid "You have not selected an episode to download."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:500
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your channel list is empty. Nothing to export.\n"
|
"You have already downloaded this episode\n"
|
||||||
"\n"
|
"or you are currently downloading it."
|
||||||
"Go add some fancy channels! :)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:436
|
|
||||||
msgid "Export to OPML..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:445
|
|
||||||
msgid "=> WILL WRITE OPML TO: "
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:504
|
|
||||||
msgid ""
|
|
||||||
"You have not selected an episode to download.\n"
|
|
||||||
"\n"
|
|
||||||
"Please select one, and I'll download it for you."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:519
|
#: src/gpodder/gpodder.py:519
|
||||||
msgid ""
|
|
||||||
"<big><b>Already downloaded</b></big>\n"
|
|
||||||
"\n"
|
|
||||||
"You have already downloaded this episode.\n"
|
|
||||||
"Or you are currently downloading it."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:538
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Do you really want to cancel this download?\n"
|
"Do you really want to cancel this download?\n"
|
||||||
|
@ -187,18 +150,11 @@ msgid ""
|
||||||
"%s"
|
"%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:541
|
#: src/gpodder/gpodder.py:522 src/gpodder/gpodder.py:559
|
||||||
msgid "No episode selected - nothing cancelled."
|
msgid "No episode selected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:583
|
#: src/gpodder/gpodder.py:585
|
||||||
msgid ""
|
|
||||||
"Could not open this episode.\n"
|
|
||||||
"\n"
|
|
||||||
"Have you even selected one?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:610
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Do you really want to remove this episode?\n"
|
"Do you really want to remove this episode?\n"
|
||||||
|
@ -206,23 +162,30 @@ msgid ""
|
||||||
"%s"
|
"%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:620
|
#: src/gpodder/gpodder.py:595
|
||||||
|
msgid "Could not delete downloaded podcast."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:631 src/gpodder/gpodder.py:632
|
||||||
|
#: data/gpodder.glade.h:1
|
||||||
|
msgid "(unknown)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:829
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not delete selected item.\n"
|
"Please do not call gpodder.py directly. Instead, call the gpodder binary."
|
||||||
"Have you selected an episode to delete?"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:914 src/gpodder/gpodder.py:915
|
#: src/gpodder/libgpodder.py:64
|
||||||
msgid "please run the gpodder binary, not this file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libgpodder.py:137 src/gpodder/libgpodder.py:146
|
|
||||||
#: src/gpodder/libgpodder.py:152
|
|
||||||
msgid "gPodder downloads"
|
msgid "gPodder downloads"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/libgpodder.py:167
|
#: src/gpodder/libgpodder.py:160
|
||||||
msgid "automatically generated, will be overwritten on next gpodder shutdown."
|
msgid "Downloading channel cover..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/gpodder/libgpodder.py:211
|
||||||
|
msgid "gPodder channel list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/liblocdbwriter.py:33
|
#: src/gpodder/liblocdbwriter.py:33
|
||||||
|
@ -233,24 +196,8 @@ msgstr ""
|
||||||
msgid "gPodder subscription list (exported)"
|
msgid "gPodder subscription list (exported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:207
|
#: src/gpodder/libpodcasts.py:214
|
||||||
msgid "no local db found or local db error"
|
msgid "No LocalDB found or error in existing LocalDB."
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:242
|
|
||||||
msgid "GB"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:244
|
|
||||||
msgid "MB"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:246
|
|
||||||
msgid "KB"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:248
|
|
||||||
msgid "Bytes"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:39 src/gpodder/libwget.py:57
|
#: src/gpodder/libwget.py:39 src/gpodder/libwget.py:57
|
||||||
|
@ -258,25 +205,13 @@ msgstr ""
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:272
|
|
||||||
msgid "initializing download..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:298
|
#: src/gpodder/libwget.py:298
|
||||||
msgid "Download has been cancelled."
|
msgid "Download has been cancelled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:300
|
#: src/gpodder/libwget.py:300
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "wget exited with status: %s"
|
msgid "Download error. Wget exit code was: %d"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:301
|
|
||||||
msgid "*** THERE HAS BEEN AN ERROR WHILE DOWNLOADING **"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:1
|
|
||||||
msgid "(unknown)"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:2
|
#: data/gpodder.glade.h:2
|
||||||
|
@ -284,106 +219,82 @@ msgid "<b>(unknown)</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:3
|
#: data/gpodder.glade.h:3
|
||||||
msgid "<b><big>The gPodder Episode Title</big></b>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:4
|
|
||||||
msgid "<b>labelFilename</b>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:5
|
|
||||||
msgid "<b>labelFrom</b>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:6
|
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:7
|
#: data/gpodder.glade.h:4
|
||||||
msgid "Available Podcasts"
|
msgid "Available Podcasts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:8
|
#: data/gpodder.glade.h:5
|
||||||
msgid "Channel:"
|
msgid "Channel:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:9
|
#: data/gpodder.glade.h:6
|
||||||
msgid "Command:"
|
msgid "Command:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:10
|
#: data/gpodder.glade.h:7
|
||||||
msgid "Current speed:"
|
msgid "Cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:11
|
#: data/gpodder.glade.h:8
|
||||||
msgid "Delete selected item"
|
msgid "Delete selected item"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:12
|
#: data/gpodder.glade.h:9
|
||||||
msgid "Description of the episode currently selected in gPodder"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:13
|
|
||||||
msgid "Description:"
|
msgid "Description:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:14
|
#: data/gpodder.glade.h:10
|
||||||
msgid "Desktop:"
|
msgid "Desktop:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:15
|
#: data/gpodder.glade.h:11
|
||||||
msgid "Download Pod_cast"
|
msgid "Download Pod_cast"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:16
|
#: data/gpodder.glade.h:12
|
||||||
msgid "Download Status"
|
msgid "Download Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:17
|
#: data/gpodder.glade.h:13
|
||||||
msgid "Download to:"
|
msgid "Download to:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:18
|
#: data/gpodder.glade.h:14
|
||||||
msgid "Downloaded Podcasts"
|
msgid "Downloaded Podcasts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:19
|
#: data/gpodder.glade.h:15
|
||||||
msgid "Downloading from:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:20
|
|
||||||
msgid "Downloads"
|
msgid "Downloads"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:21
|
#: data/gpodder.glade.h:16
|
||||||
msgid "E_xport list..."
|
msgid "E_xport list..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:22
|
#: data/gpodder.glade.h:17
|
||||||
msgid "Episode Information"
|
msgid "Episode Information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:23
|
#: data/gpodder.glade.h:18
|
||||||
msgid "Episode:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:24
|
|
||||||
msgid "FTP Proxy:"
|
msgid "FTP Proxy:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:25
|
#: data/gpodder.glade.h:19
|
||||||
msgid "Feed URL:"
|
msgid "Feed URL:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:26
|
#: data/gpodder.glade.h:20
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:27
|
#: data/gpodder.glade.h:21
|
||||||
msgid "HTTP Proxy:"
|
msgid "HTTP Proxy:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:28
|
#: data/gpodder.glade.h:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you have to use a HTTP or FTP proxy server,\n"
|
"If you have to use a HTTP or FTP proxy server,\n"
|
||||||
"you can use the usual format of the environment variables:\n"
|
"you can use the usual format of the environment variables:\n"
|
||||||
|
@ -391,135 +302,118 @@ msgid ""
|
||||||
"<b>http://username:password@proxy_host:proxy_port/</b>"
|
"<b>http://username:password@proxy_host:proxy_port/</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:32
|
#: data/gpodder.glade.h:26
|
||||||
|
msgid "No cover available."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: data/gpodder.glade.h:27
|
||||||
msgid "Play selected item"
|
msgid "Play selected item"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:33
|
#: data/gpodder.glade.h:28
|
||||||
msgid "Player application:"
|
msgid "Player application:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:34
|
#: data/gpodder.glade.h:29
|
||||||
msgid "Progress:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:35
|
|
||||||
msgid "Proxy"
|
msgid "Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:36
|
#: data/gpodder.glade.h:30
|
||||||
msgid "Save downloads in:"
|
msgid "Save downloads in:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:37
|
#: data/gpodder.glade.h:31
|
||||||
msgid "Show \"gPodder downloads\" link"
|
msgid "Show \"gPodder downloads\" link"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:38
|
#: data/gpodder.glade.h:32
|
||||||
msgid "Title:"
|
msgid "Title:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:39
|
#: data/gpodder.glade.h:33
|
||||||
msgid "_About gPodder..."
|
msgid "_About gPodder..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:40
|
#: data/gpodder.glade.h:34
|
||||||
msgid "_Add channel..."
|
msgid "_Add channel..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:41
|
#: data/gpodder.glade.h:35
|
||||||
msgid "_Channels"
|
msgid "_Channels"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:42
|
#: data/gpodder.glade.h:36
|
||||||
msgid "_Check for Updates"
|
msgid "_Check for Updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:43
|
#: data/gpodder.glade.h:37
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:44
|
#: data/gpodder.glade.h:38
|
||||||
msgid "_Edit channel..."
|
msgid "_Edit channel..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:45
|
#: data/gpodder.glade.h:39
|
||||||
msgid "_Help"
|
msgid "_Help"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:46
|
#: data/gpodder.glade.h:40
|
||||||
msgid "_Podcasts"
|
msgid "_Podcasts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:47
|
#: data/gpodder.glade.h:41
|
||||||
msgid "_Preferences..."
|
msgid "_Preferences..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:48
|
#: data/gpodder.glade.h:42
|
||||||
msgid "_Remove channel"
|
msgid "_Remove channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:49
|
#: data/gpodder.glade.h:43
|
||||||
msgid "gPodder - your podcast catcher."
|
msgid "gPodder - your podcast catcher."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:50
|
#: data/gpodder.glade.h:44
|
||||||
msgid "gPodder Channel Editor"
|
msgid "gPodder Channel Editor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:51
|
#: data/gpodder.glade.h:45
|
||||||
msgid "gPodder Download Status"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:52
|
|
||||||
msgid "gPodder properties"
|
msgid "gPodder properties"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: data/gpodder.glade.h:53
|
|
||||||
msgid "labelSpeed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:54
|
|
||||||
msgid "~/.config/gpodder/downloads/"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bin/gpodder:39
|
#: bin/gpodder:39
|
||||||
msgid "print extra information"
|
msgid "Be more verbose"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:43
|
#: bin/gpodder:43
|
||||||
msgid "run local version for debugging"
|
msgid "Run local version in current directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:47
|
#: bin/gpodder:47
|
||||||
msgid "list all channel subscriptions"
|
msgid "List all channel subscriptions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:51
|
#: bin/gpodder:51
|
||||||
msgid "update channels and download new podcasts"
|
msgid "Update channel list, download new podcasts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:55
|
#: bin/gpodder:55
|
||||||
msgid "update channels"
|
msgid "Update channel list and exit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:58
|
#: bin/gpodder:58
|
||||||
msgid "add FEEDURL to channel subscriptions"
|
msgid "Subscribe to channel from FEEDURL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:61
|
#: bin/gpodder:61
|
||||||
msgid "delete channel n"
|
msgid "Delete channel with ID n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:79
|
#: bin/gpodder:79
|
||||||
msgid "ERROR: You do not seem to have a usable \"wget\" binary in your path."
|
msgid "Error: cannot find wget."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bin/gpodder:82
|
#: bin/gpodder:102
|
||||||
#, c-format
|
msgid "Channel IDs may have changed, list before deleting again."
|
||||||
msgid "Found wget: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bin/gpodder:104
|
|
||||||
msgid "channel IDs may have changed, list before deleting again"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Put your translated *.po files here, then execute "make" to generate
|
Put your translated *.po files here, then execute "make" to generate
|
||||||
machine-readable *.mo files in the locale directory.
|
machine-readable *.mo files in the locale directory.
|
||||||
|
|
||||||
|
If you want to edit your *.po file with a GUI, try www.poedit.org.
|
||||||
|
|
449
data/po/de.po
449
data/po/de.po
|
@ -3,228 +3,220 @@
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gPodder 0.7-svn\n"
|
"Project-Id-Version: gPodder 0.7-svn\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2006-03-30 23:05+0200\n"
|
"POT-Creation-Date: 2006-03-31 18:11+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: 2006-03-31 18:04+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: Thomas Perl <thp@perli.net>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: gPodder Team <thp@perli.net>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=iso-8859-1\n"
|
"Content-Type: text/plain; charset=iso-8859-1\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Poedit-Language: German\n"
|
||||||
|
|
||||||
#: src/gpodder/console.py:65
|
#: src/gpodder/console.py:65
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "delete channel: %s"
|
msgid "delete channel: %s"
|
||||||
msgstr "channel entfernen: %s"
|
msgstr "Channel entfernen: %s"
|
||||||
|
|
||||||
#: src/gpodder/console.py:68
|
#: src/gpodder/console.py:68
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s is not a valid id"
|
msgid "%s is not a valid id"
|
||||||
msgstr "%s is keine gültige ID"
|
msgstr "%s is keine gültige ID"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:110 src/gpodder/gpodder.py:125
|
#: src/gpodder/gpodder.py:54
|
||||||
#: src/gpodder/gpodder.py:131
|
msgid "Contributors / patch writers:"
|
||||||
|
msgstr "Helfer und Patchschreiber:"
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:58
|
||||||
|
msgid "See the AUTHORS file for all contributors"
|
||||||
|
msgstr "Eine Liste aller Helfer finden Sie in der AUTHORS-Datei"
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:113 src/gpodder/gpodder.py:128
|
||||||
|
#: src/gpodder/gpodder.py:134
|
||||||
msgid "Episode"
|
msgid "Episode"
|
||||||
msgstr "Episode"
|
msgstr "Episode"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:115
|
#: src/gpodder/gpodder.py:118
|
||||||
msgid "Size"
|
msgid "Size"
|
||||||
msgstr "Größe"
|
msgstr "Größe"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:134
|
#: src/gpodder/gpodder.py:137
|
||||||
msgid "Speed"
|
msgid "Speed"
|
||||||
msgstr "Geschwindigkeit"
|
msgstr "Geschwindigkeit"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:137
|
#: src/gpodder/gpodder.py:140
|
||||||
msgid "Progress"
|
msgid "Progress"
|
||||||
msgstr "Fortschritt"
|
msgstr "Fortschritt"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:166
|
#: src/gpodder/gpodder.py:164
|
||||||
msgid "Channel Info"
|
msgid "Channel Info"
|
||||||
msgstr "Channel-Informationen"
|
msgstr "Channel-Informationen"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:186
|
#: src/gpodder/gpodder.py:199
|
||||||
msgid "probably no channels found"
|
msgid "No downloaded podcasts found."
|
||||||
msgstr "wahrscheinlich keine channels gefunden"
|
msgstr "Keine heruntergeladenen Podcasts gefunden."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:201
|
#: src/gpodder/gpodder.py:209
|
||||||
msgid "no downloaded podcasts found.."
|
|
||||||
msgstr "keine heruntergeladenen podcasts gefunden.."
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:211
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"<b>No channels found</b>\n"
|
"<b>No channels found</b>\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Click on <b><i>Channels</i></b> > <b><i>Add channel..</i></b> to add a "
|
"Click on <b><i>Channels</i></b> > <b><i>Add channel..</i></b> to add a "
|
||||||
"new channel."
|
"new channel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"<b>Keine Channels gefunden</b>\n"
|
||||||
|
"\n"
|
||||||
|
"Klicken Sie auf <b><i>Channels</i></b> > <b><i>Abbonieren...</i></b>, um "
|
||||||
|
"einen neuen Channel zu abbonieren."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:212
|
#: src/gpodder/gpodder.py:211
|
||||||
msgid "probably no feeds or channels found"
|
|
||||||
msgstr "wahrscheinlich keine feeds oder channels gefunden"
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:214
|
|
||||||
msgid "some unknown function"
|
|
||||||
msgstr "eine unbekannte Funktion"
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:214
|
|
||||||
msgid "gPodder message"
|
msgid "gPodder message"
|
||||||
msgstr "gPodder Nachricht"
|
msgstr "gPodder Nachricht"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:222
|
#: src/gpodder/gpodder.py:219
|
||||||
msgid "Do you really want to do this?"
|
msgid "Do you really want to do this?"
|
||||||
msgstr "Willst du das wirklich machen?"
|
msgstr "Willst du das wirklich machen?"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:222
|
#: src/gpodder/gpodder.py:219
|
||||||
msgid "gPodder confirmation"
|
msgid "gPodder confirmation"
|
||||||
msgstr "gPodder Bestätigung"
|
msgstr "gPodder Bestätigung"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:233
|
#: src/gpodder/gpodder.py:284
|
||||||
#, python-format
|
msgid ""
|
||||||
msgid "I Asked: %s"
|
"There has been an error adding the channel.\n"
|
||||||
msgstr "Ich fragte: %s"
|
"Maybe the URL is wrong?"
|
||||||
|
msgstr ""
|
||||||
|
"Ein Fehler trat beim Hinzufügen des Channels auf.\n"
|
||||||
|
"Vielleicht ist die URL falsch?"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:234
|
#: src/gpodder/gpodder.py:290 src/gpodder/gpodder.py:377
|
||||||
#, python-format
|
|
||||||
msgid "User answered: %s"
|
|
||||||
msgstr "Benutzer antwortete mit: %s"
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:274
|
|
||||||
#, python-format
|
|
||||||
msgid "Adding channel: %s"
|
|
||||||
msgstr "Channel wird hinzugefügt: %s"
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:275 src/gpodder/gpodder.py:345
|
|
||||||
#: src/gpodder/gpodder.py:388
|
|
||||||
msgid "Fetching channel index..."
|
msgid "Fetching channel index..."
|
||||||
msgstr "Channel-Index wird heruntergeladen..."
|
msgstr "Channel-Index wird heruntergeladen..."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:293
|
#: src/gpodder/gpodder.py:303
|
||||||
#, python-format
|
msgid ""
|
||||||
msgid "unkonwn link format: %s"
|
"Could not add new channel.\n"
|
||||||
msgstr "Unbekanntes Link-Format: %s"
|
"Only <b>http://</b> and <b>ftp://</b> URLs supported at the moment."
|
||||||
|
msgstr ""
|
||||||
|
"Konnte neuen Channel nicht abbonieren.\n"
|
||||||
|
"Derzeit werden nur <b>http://</b> und <b>ftp://</b>-URLs unterstützt."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:320
|
#: src/gpodder/gpodder.py:333
|
||||||
msgid ""
|
msgid ""
|
||||||
"<big><b>Updating feed cache</b></big>\n"
|
"<big><b>Updating feed cache</b></big>\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Please wait while gPodder is\n"
|
"Please wait while gPodder is\n"
|
||||||
"updating the feed cache..."
|
"updating the feed cache..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"<big><b>Abonnements werden geprüft</b></big>\n"
|
||||||
|
"\n"
|
||||||
|
"Bitte warten Sie, während gPodder Ihre\n"
|
||||||
|
"Channel-Abonnements aktualisiert..."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:361
|
#: src/gpodder/gpodder.py:370
|
||||||
msgid ""
|
|
||||||
"There has been an error adding the channel.\n"
|
|
||||||
"Maybe the URL is wrong?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:367
|
|
||||||
msgid ""
|
|
||||||
"Could not add new channel.\n"
|
|
||||||
"Only <b>http://</b> and <b>ftp://</b> URLs supported at the moment."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:381
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Cannot edit this channel.\n"
|
"Cannot edit this channel.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"No channel found."
|
"No channel found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Kann diesen Channel nicht editieren.\n"
|
||||||
|
"\n"
|
||||||
|
"Kein Channel gefunden."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:419
|
#: src/gpodder/gpodder.py:400
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Do you really want to remove this channel?\n"
|
"Do you really want to remove this channel?\n"
|
||||||
"\n"
|
"\n"
|
||||||
" %s"
|
" %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wollen Sie diesen Channel wirklich entfernen?\n"
|
||||||
|
"\n"
|
||||||
|
"%s"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:426
|
#: src/gpodder/gpodder.py:407
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not delete channel.\n"
|
"Could not delete channel.\n"
|
||||||
"Probably no channel is selected."
|
"Probably no channel is selected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Konnte Channel nicht entfernen.\n"
|
||||||
|
"Wahrscheinlich ist keiner ausgewählt."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:434
|
#: src/gpodder/gpodder.py:415
|
||||||
|
msgid "Your channel list is empty. Nothing to export."
|
||||||
|
msgstr "Nichts zu exportieren: Sie haben keine Abonnements."
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:417
|
||||||
|
msgid "Export to OPML"
|
||||||
|
msgstr "Als OPML-Datei exportieren"
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:485
|
||||||
|
msgid "You have not selected an episode to download."
|
||||||
|
msgstr "Sie haben keine Episode für den Download ausgewählt."
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:500
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your channel list is empty. Nothing to export.\n"
|
"You have already downloaded this episode\n"
|
||||||
"\n"
|
"or you are currently downloading it."
|
||||||
"Go add some fancy channels! :)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:436
|
|
||||||
msgid "Export to OPML..."
|
|
||||||
msgstr "Exportieren als OPML..."
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:445
|
|
||||||
msgid "=> WILL WRITE OPML TO: "
|
|
||||||
msgstr "=> WERDE OPML SCHREIBEN: "
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:504
|
|
||||||
msgid ""
|
|
||||||
"You have not selected an episode to download.\n"
|
|
||||||
"\n"
|
|
||||||
"Please select one, and I'll download it for you."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Sie haben diese Episode bereits heruntergeladen\n"
|
||||||
|
"oder Sie laden sie jetzt gerade herunter."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:519
|
#: src/gpodder/gpodder.py:519
|
||||||
msgid ""
|
|
||||||
"<big><b>Already downloaded</b></big>\n"
|
|
||||||
"\n"
|
|
||||||
"You have already downloaded this episode.\n"
|
|
||||||
"Or you are currently downloading it."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:538
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Do you really want to cancel this download?\n"
|
"Do you really want to cancel this download?\n"
|
||||||
"\n"
|
"\n"
|
||||||
"%s"
|
"%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wollen Sie diesen Download wirklich abbrechen?\n"
|
||||||
#: src/gpodder/gpodder.py:541
|
|
||||||
msgid "No episode selected - nothing cancelled."
|
|
||||||
msgstr "Keine Episode ausgewählt - nichts abgebrochen."
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:583
|
|
||||||
msgid ""
|
|
||||||
"Could not open this episode.\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
"Have you even selected one?"
|
"%s"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:610
|
#: src/gpodder/gpodder.py:522 src/gpodder/gpodder.py:559
|
||||||
|
msgid "No episode selected."
|
||||||
|
msgstr "Keine Episode ausgewählt."
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:585
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Do you really want to remove this episode?\n"
|
"Do you really want to remove this episode?\n"
|
||||||
"\n"
|
"\n"
|
||||||
"%s"
|
"%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wollen Sie diese Episode wirklich entfernen?\n"
|
||||||
|
"\n"
|
||||||
|
"%s"
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:620
|
#: src/gpodder/gpodder.py:595
|
||||||
|
msgid "Could not delete downloaded podcast."
|
||||||
|
msgstr "Konnte den ausgewählten Podcast nicht entfernen."
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:631 src/gpodder/gpodder.py:632
|
||||||
|
#: data/gpodder.glade.h:1
|
||||||
|
msgid "(unknown)"
|
||||||
|
msgstr "(unbekannt)"
|
||||||
|
|
||||||
|
#: src/gpodder/gpodder.py:829
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not delete selected item.\n"
|
"Please do not call gpodder.py directly. Instead, call the gpodder binary."
|
||||||
"Have you selected an episode to delete?"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Bitte starten Sie gPodder nie direkt über gpodder.py. Rufen Sie stattdessen "
|
||||||
|
"das \"gpodder\" Programm auf."
|
||||||
|
|
||||||
#: src/gpodder/gpodder.py:914 src/gpodder/gpodder.py:915
|
#: src/gpodder/libgpodder.py:64
|
||||||
msgid "please run the gpodder binary, not this file"
|
|
||||||
msgstr "Bitte starten Sie die gpodder-Applikation, nicht diese Datei"
|
|
||||||
|
|
||||||
#: src/gpodder/libgpodder.py:137 src/gpodder/libgpodder.py:146
|
|
||||||
#: src/gpodder/libgpodder.py:152
|
|
||||||
msgid "gPodder downloads"
|
msgid "gPodder downloads"
|
||||||
msgstr "gPodder-Downloads"
|
msgstr "gPodder Downloads"
|
||||||
|
|
||||||
#: src/gpodder/libgpodder.py:167
|
#: src/gpodder/libgpodder.py:160
|
||||||
msgid "automatically generated, will be overwritten on next gpodder shutdown."
|
msgid "Downloading channel cover..."
|
||||||
msgstr ""
|
msgstr "Bild wird heruntergeladen..."
|
||||||
"Automatisch generiert, wird beim nächsten Beenden von gPodder überschrieben."
|
|
||||||
|
#: src/gpodder/libgpodder.py:211
|
||||||
|
msgid "gPodder channel list"
|
||||||
|
msgstr "gPodder Channel-Editor"
|
||||||
|
|
||||||
#: src/gpodder/liblocdbwriter.py:33
|
#: src/gpodder/liblocdbwriter.py:33
|
||||||
msgid "local download database, generated by gPodder"
|
msgid "local download database, generated by gPodder"
|
||||||
|
@ -234,296 +226,231 @@ msgstr "lokale Download-Datenbank, generiert von gPodder"
|
||||||
msgid "gPodder subscription list (exported)"
|
msgid "gPodder subscription list (exported)"
|
||||||
msgstr "gPodder Abonnement-Liste (exportiert)"
|
msgstr "gPodder Abonnement-Liste (exportiert)"
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:207
|
#: src/gpodder/libpodcasts.py:214
|
||||||
msgid "no local db found or local db error"
|
msgid "No LocalDB found or error in existing LocalDB."
|
||||||
msgstr "keine local DB gefunden, oder Fehler in lokaler DB"
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:242
|
|
||||||
msgid "GB"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:244
|
|
||||||
msgid "MB"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:246
|
|
||||||
msgid "KB"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/gpodder/libpodcasts.py:248
|
|
||||||
msgid "Bytes"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Keine Lokale Datenbank gefunden (oder Fehler in existierender Datenbank)."
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:39 src/gpodder/libwget.py:57
|
#: src/gpodder/libwget.py:39 src/gpodder/libwget.py:57
|
||||||
#: src/gpodder/libwget.py:66
|
#: src/gpodder/libwget.py:66
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr "unbekannt"
|
msgstr "unbekannt"
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:272
|
|
||||||
msgid "initializing download..."
|
|
||||||
msgstr "initialisiere download..."
|
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:298
|
#: src/gpodder/libwget.py:298
|
||||||
msgid "Download has been cancelled."
|
msgid "Download has been cancelled."
|
||||||
msgstr "Der Download wurde abgebrochen."
|
msgstr "Der Download wurde abgebrochen."
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:300
|
#: src/gpodder/libwget.py:300
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "wget exited with status: %s"
|
msgid "Download error. Wget exit code was: %d"
|
||||||
msgstr "wget beendete mit status: %s"
|
msgstr "Fehler beim Download. Wget's Exit-Status ist: %d"
|
||||||
|
|
||||||
#: src/gpodder/libwget.py:301
|
|
||||||
msgid "*** THERE HAS BEEN AN ERROR WHILE DOWNLOADING **"
|
|
||||||
msgstr "*** FEHLER IST WÄHREND DES DOWNLOADS AUFGETRETEN **"
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:1
|
|
||||||
msgid "(unknown)"
|
|
||||||
msgstr "(unbekannt)"
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:2
|
#: data/gpodder.glade.h:2
|
||||||
msgid "<b>(unknown)</b>"
|
msgid "<b>(unknown)</b>"
|
||||||
msgstr ""
|
msgstr "<b>(unbekannt)</b>"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:3
|
#: data/gpodder.glade.h:3
|
||||||
msgid "<b><big>The gPodder Episode Title</big></b>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:4
|
|
||||||
msgid "<b>labelFilename</b>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:5
|
|
||||||
msgid "<b>labelFrom</b>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:6
|
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr "Erweitert"
|
msgstr "Erweitert"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:7
|
#: data/gpodder.glade.h:4
|
||||||
msgid "Available Podcasts"
|
msgid "Available Podcasts"
|
||||||
msgstr "Verfügbare Podcasts"
|
msgstr "Verfügbare Podcasts"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:8
|
#: data/gpodder.glade.h:5
|
||||||
msgid "Channel:"
|
msgid "Channel:"
|
||||||
msgstr "Channel:"
|
msgstr "Channel:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:9
|
#: data/gpodder.glade.h:6
|
||||||
msgid "Command:"
|
msgid "Command:"
|
||||||
msgstr "Befehl:"
|
msgstr "Befehl:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:10
|
#: data/gpodder.glade.h:7
|
||||||
msgid "Current speed:"
|
msgid "Cover"
|
||||||
msgstr "Derzeitige Geschwindigkeit:"
|
msgstr "Bild"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:11
|
#: data/gpodder.glade.h:8
|
||||||
msgid "Delete selected item"
|
msgid "Delete selected item"
|
||||||
msgstr "Ausgewähltes Element löschen"
|
msgstr "Ausgewähltes Element löschen"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:12
|
#: data/gpodder.glade.h:9
|
||||||
msgid "Description of the episode currently selected in gPodder"
|
|
||||||
msgstr "Beschreibung der Episode, die momentan ausgewählt ist"
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:13
|
|
||||||
msgid "Description:"
|
msgid "Description:"
|
||||||
msgstr "Beschreibung:"
|
msgstr "Beschreibung:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:14
|
#: data/gpodder.glade.h:10
|
||||||
msgid "Desktop:"
|
msgid "Desktop:"
|
||||||
msgstr "Desktop:"
|
msgstr "Desktop:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:15
|
#: data/gpodder.glade.h:11
|
||||||
msgid "Download Pod_cast"
|
msgid "Download Pod_cast"
|
||||||
msgstr "Pod_cast herunterladen"
|
msgstr "Pod_cast herunterladen"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:16
|
#: data/gpodder.glade.h:12
|
||||||
msgid "Download Status"
|
msgid "Download Status"
|
||||||
msgstr "Download-Status"
|
msgstr "Download-Status"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:17
|
#: data/gpodder.glade.h:13
|
||||||
msgid "Download to:"
|
msgid "Download to:"
|
||||||
msgstr "Herunterladen nach:"
|
msgstr "Herunterladen nach:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:18
|
#: data/gpodder.glade.h:14
|
||||||
msgid "Downloaded Podcasts"
|
msgid "Downloaded Podcasts"
|
||||||
msgstr "Heruntergeladene Podcasts"
|
msgstr "Heruntergeladene Podcasts"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:19
|
#: data/gpodder.glade.h:15
|
||||||
msgid "Downloading from:"
|
|
||||||
msgstr "Herunterladen von:"
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:20
|
|
||||||
msgid "Downloads"
|
msgid "Downloads"
|
||||||
msgstr "Downloads"
|
msgstr "Downloads"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:21
|
#: data/gpodder.glade.h:16
|
||||||
msgid "E_xport list..."
|
msgid "E_xport list..."
|
||||||
msgstr "Liste e_xportieren..."
|
msgstr "Liste e_xportieren..."
|
||||||
|
|
||||||
#: data/gpodder.glade.h:22
|
#: data/gpodder.glade.h:17
|
||||||
msgid "Episode Information"
|
msgid "Episode Information"
|
||||||
msgstr "Informationen zur Episode"
|
msgstr "Informationen zur Episode"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:23
|
#: data/gpodder.glade.h:18
|
||||||
msgid "Episode:"
|
|
||||||
msgstr "Episode:"
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:24
|
|
||||||
msgid "FTP Proxy:"
|
msgid "FTP Proxy:"
|
||||||
msgstr "FTP-Proxy:"
|
msgstr "FTP-Proxy:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:25
|
#: data/gpodder.glade.h:19
|
||||||
msgid "Feed URL:"
|
msgid "Feed URL:"
|
||||||
msgstr "Feed-Adresse:"
|
msgstr "Feed-Adresse:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:26
|
#: data/gpodder.glade.h:20
|
||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Allgemeines"
|
msgstr "Allgemeines"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:27
|
#: data/gpodder.glade.h:21
|
||||||
msgid "HTTP Proxy:"
|
msgid "HTTP Proxy:"
|
||||||
msgstr "HTTP-Proxy:"
|
msgstr "HTTP-Proxy:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:28
|
#: data/gpodder.glade.h:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you have to use a HTTP or FTP proxy server,\n"
|
"If you have to use a HTTP or FTP proxy server,\n"
|
||||||
"you can use the usual format of the environment variables:\n"
|
"you can use the usual format of the environment variables:\n"
|
||||||
"\n"
|
"\n"
|
||||||
"<b>http://username:password@proxy_host:proxy_port/</b>"
|
"<b>http://username:password@proxy_host:proxy_port/</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wenn Sie einen HTTP oder FTP Proxy Server nutzen,\n"
|
||||||
|
"benutzen Sie bitte das übliche Format der Umgebungsvariablen:\n"
|
||||||
|
"\n"
|
||||||
|
"<b>http://benutzer:passwort@proxy_host:proxy_port/</b>"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:32
|
#: data/gpodder.glade.h:26
|
||||||
|
msgid "No cover available."
|
||||||
|
msgstr "Kein Cover verfügbar."
|
||||||
|
|
||||||
|
#: data/gpodder.glade.h:27
|
||||||
msgid "Play selected item"
|
msgid "Play selected item"
|
||||||
msgstr "Ausgewähltes Element abspielen"
|
msgstr "Ausgewähltes Element abspielen"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:33
|
#: data/gpodder.glade.h:28
|
||||||
msgid "Player application:"
|
msgid "Player application:"
|
||||||
msgstr "Abspielprogramm:"
|
msgstr "Abspielprogramm:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:34
|
#: data/gpodder.glade.h:29
|
||||||
msgid "Progress:"
|
|
||||||
msgstr "Fortschritt:"
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:35
|
|
||||||
msgid "Proxy"
|
msgid "Proxy"
|
||||||
msgstr "Proxy"
|
msgstr "Proxy"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:36
|
#: data/gpodder.glade.h:30
|
||||||
msgid "Save downloads in:"
|
msgid "Save downloads in:"
|
||||||
msgstr "Downloads speichern in:"
|
msgstr "Downloads speichern in:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:37
|
#: data/gpodder.glade.h:31
|
||||||
msgid "Show \"gPodder downloads\" link"
|
msgid "Show \"gPodder downloads\" link"
|
||||||
msgstr "\"gPodder-Downloads\"-Verknüpfung anzeigen"
|
msgstr "\"gPodder Downloads\"-Verknüpfung anzeigen"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:38
|
#: data/gpodder.glade.h:32
|
||||||
msgid "Title:"
|
msgid "Title:"
|
||||||
msgstr "Titel:"
|
msgstr "Titel:"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:39
|
#: data/gpodder.glade.h:33
|
||||||
msgid "_About gPodder..."
|
msgid "_About gPodder..."
|
||||||
msgstr "Üb_er gPodder..."
|
msgstr "Üb_er gPodder..."
|
||||||
|
|
||||||
#: data/gpodder.glade.h:40
|
#: data/gpodder.glade.h:34
|
||||||
msgid "_Add channel..."
|
msgid "_Add channel..."
|
||||||
msgstr "Ch_annel hinzufügen..."
|
msgstr "Ch_annel abbonieren..."
|
||||||
|
|
||||||
#: data/gpodder.glade.h:41
|
#: data/gpodder.glade.h:35
|
||||||
msgid "_Channels"
|
msgid "_Channels"
|
||||||
msgstr "_Channels"
|
msgstr "_Channels"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:42
|
#: data/gpodder.glade.h:36
|
||||||
msgid "_Check for Updates"
|
msgid "_Check for Updates"
|
||||||
msgstr "Na_ch Aktualisierungen suchen"
|
msgstr "Na_ch Aktualisierungen suchen"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:43
|
#: data/gpodder.glade.h:37
|
||||||
msgid "_Close"
|
msgid "_Close"
|
||||||
msgstr "S_chließen"
|
msgstr "S_chließen"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:44
|
#: data/gpodder.glade.h:38
|
||||||
msgid "_Edit channel..."
|
msgid "_Edit channel..."
|
||||||
msgstr "_Editiere Channel..."
|
msgstr "_Editiere Channel..."
|
||||||
|
|
||||||
#: data/gpodder.glade.h:45
|
#: data/gpodder.glade.h:39
|
||||||
msgid "_Help"
|
msgid "_Help"
|
||||||
msgstr "_Hilfe"
|
msgstr "_Hilfe"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:46
|
#: data/gpodder.glade.h:40
|
||||||
msgid "_Podcasts"
|
msgid "_Podcasts"
|
||||||
msgstr "_Podcasts"
|
msgstr "_Podcasts"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:47
|
#: data/gpodder.glade.h:41
|
||||||
msgid "_Preferences..."
|
msgid "_Preferences..."
|
||||||
msgstr "Ein_s_tellungen..."
|
msgstr "Ein_s_tellungen..."
|
||||||
|
|
||||||
#: data/gpodder.glade.h:48
|
#: data/gpodder.glade.h:42
|
||||||
msgid "_Remove channel"
|
msgid "_Remove channel"
|
||||||
msgstr "Entfe_rne Channel"
|
msgstr "Entfe_rne Channel"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:49
|
#: data/gpodder.glade.h:43
|
||||||
msgid "gPodder - your podcast catcher."
|
msgid "gPodder - your podcast catcher."
|
||||||
msgstr "gPodder - dein podcast catcher."
|
msgstr "gPodder - dein podcast catcher."
|
||||||
|
|
||||||
#: data/gpodder.glade.h:50
|
#: data/gpodder.glade.h:44
|
||||||
msgid "gPodder Channel Editor"
|
msgid "gPodder Channel Editor"
|
||||||
msgstr "gPodder Channel-Editor"
|
msgstr "gPodder Channel-Editor"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:51
|
#: data/gpodder.glade.h:45
|
||||||
msgid "gPodder Download Status"
|
|
||||||
msgstr "gPodder Downloadstatus"
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:52
|
|
||||||
msgid "gPodder properties"
|
msgid "gPodder properties"
|
||||||
msgstr "gPodder Einstellungen"
|
msgstr "gPodder Einstellungen"
|
||||||
|
|
||||||
#: data/gpodder.glade.h:53
|
|
||||||
msgid "labelSpeed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: data/gpodder.glade.h:54
|
|
||||||
msgid "~/.config/gpodder/downloads/"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bin/gpodder:39
|
#: bin/gpodder:39
|
||||||
#, fuzzy
|
msgid "Be more verbose"
|
||||||
msgid "print extra information"
|
msgstr "Detailliertere Ausgabe"
|
||||||
msgstr "Informationen zur Episode"
|
|
||||||
|
|
||||||
#: bin/gpodder:43
|
#: bin/gpodder:43
|
||||||
msgid "run local version for debugging"
|
msgid "Run local version in current directory"
|
||||||
msgstr "lokale Version zu Debugging-Zwecken starten"
|
msgstr "Lokale Version im Arbeitsverzeichnis starten"
|
||||||
|
|
||||||
#: bin/gpodder:47
|
#: bin/gpodder:47
|
||||||
msgid "list all channel subscriptions"
|
msgid "List all channel subscriptions"
|
||||||
msgstr "Alle Abonnements anzeigen"
|
msgstr "Alle Channel-Abonnements anzeigen"
|
||||||
|
|
||||||
#: bin/gpodder:51
|
#: bin/gpodder:51
|
||||||
msgid "update channels and download new podcasts"
|
msgid "Update channel list, download new podcasts"
|
||||||
msgstr "Channels aktualisieren und neue Podcasts herunterladen"
|
msgstr "Channel-Liste aktualisieren und neue Podcasts herunterladen"
|
||||||
|
|
||||||
#: bin/gpodder:55
|
#: bin/gpodder:55
|
||||||
#, fuzzy
|
msgid "Update channel list and exit"
|
||||||
msgid "update channels"
|
msgstr "nur Channel-Liste aktualisieren"
|
||||||
msgstr "channel aktualisieren: %s"
|
|
||||||
|
|
||||||
#: bin/gpodder:58
|
#: bin/gpodder:58
|
||||||
msgid "add FEEDURL to channel subscriptions"
|
msgid "Subscribe to channel from FEEDURL"
|
||||||
msgstr "füge FEEDURL zu den Channel-Abonnements hinzu"
|
msgstr "Channel auf FEEDURL abonnieren"
|
||||||
|
|
||||||
#: bin/gpodder:61
|
#: bin/gpodder:61
|
||||||
#, fuzzy
|
msgid "Delete channel with ID n"
|
||||||
msgid "delete channel n"
|
msgstr "Channel mit der ID n entfernen"
|
||||||
msgstr "channel entfernen: %s"
|
|
||||||
|
|
||||||
#: bin/gpodder:79
|
#: bin/gpodder:79
|
||||||
msgid "ERROR: You do not seem to have a usable \"wget\" binary in your path."
|
msgid "Error: cannot find wget."
|
||||||
msgstr "FEHLER: Sie haben anscheinend kein benutzbares \"wget\"-Programm in ihrem Pfad."
|
msgstr "Fehler: kann wget nicht finden."
|
||||||
|
|
||||||
#: bin/gpodder:82
|
#: bin/gpodder:102
|
||||||
#, c-format
|
msgid "Channel IDs may have changed, list before deleting again."
|
||||||
msgid "Found wget: %s"
|
msgstr ""
|
||||||
msgstr "Wget gefunden: %s"
|
"Channel IDs könnten sich verändert haben. Bitte vor dem nächsten Löschen "
|
||||||
|
"zuerst Channel-Liste anzeigen lassen."
|
||||||
#: bin/gpodder:104
|
|
||||||
msgid "channel IDs may have changed, list before deleting again"
|
|
||||||
msgstr "IDs könnten sich verändert haben. Bitte neue Liste anzeigen lassen vor dem nächsten Delete!!"
|
|
||||||
|
|
|
@ -18,11 +18,10 @@
|
||||||
KNOWN BUGS:
|
KNOWN BUGS:
|
||||||
*) installation of locale files when doing
|
*) installation of locale files when doing
|
||||||
a "make install" not working
|
a "make install" not working
|
||||||
*) should re-think the original strings in
|
|
||||||
source files, so this is likely to change in the future
|
|
||||||
*) has had only minimal testing - there might be bugs..
|
*) has had only minimal testing - there might be bugs..
|
||||||
|
|
||||||
|
|
||||||
-- thp <thp@perli.net>, Thu, 30 Mar 2006 23:16:20 +0200
|
-- thp <thp@perli.net>, Thu, 30 Mar 2006 23:16:20 +0200
|
||||||
|
Updated: Fri, 31 Mar 2006 18:11:41 +0200
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,22 +15,22 @@ show program's version number and exit
|
||||||
show this help message and exit
|
show this help message and exit
|
||||||
.TP
|
.TP
|
||||||
\fB\-v\fR, \fB\-\-verbose\fR
|
\fB\-v\fR, \fB\-\-verbose\fR
|
||||||
print extra information
|
Be more verbose
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-debug\fR
|
\fB\-\-debug\fR
|
||||||
run local version for debugging
|
Run local version in current directory
|
||||||
.TP
|
.TP
|
||||||
\fB\-l\fR, \fB\-\-list\fR
|
\fB\-l\fR, \fB\-\-list\fR
|
||||||
list all channel subscriptions
|
List all channel subscriptions
|
||||||
.TP
|
.TP
|
||||||
\fB\-r\fR, \fB\-\-run\fR
|
\fB\-r\fR, \fB\-\-run\fR
|
||||||
update channels and download new podcasts
|
Update channel list, download new podcasts
|
||||||
.TP
|
.TP
|
||||||
\fB\-u\fR, \fB\-\-update\fR
|
\fB\-u\fR, \fB\-\-update\fR
|
||||||
update channels
|
Update channel list and exit
|
||||||
.TP
|
.TP
|
||||||
\fB\-aFEEDURL\fR, \fB\-\-add\fR=\fIFEEDURL\fR
|
\fB\-aFEEDURL\fR, \fB\-\-add\fR=\fIFEEDURL\fR
|
||||||
add FEEDURL to channel subscriptions
|
Subscribe to channel from FEEDURL
|
||||||
.TP
|
.TP
|
||||||
\fB\-dn\fR, \fB\-\-delete\fR=\fIn\fR
|
\fB\-dn\fR, \fB\-\-delete\fR=\fIn\fR
|
||||||
delete channel n
|
Delete channel with ID n
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
# Python module src/gpodder/gpodder.py
|
# Python module src/gpodder/gpodder.py
|
||||||
# Autogenerated from gpodder.glade
|
# Autogenerated from gpodder.glade
|
||||||
# Generated on Thu Mar 30 23:18:13 2006
|
# Generated on Fri Mar 31 18:11:13 2006
|
||||||
|
|
||||||
# Warning: Do not modify any context comment such as #--
|
# Warning: Do not modify any context comment such as #--
|
||||||
# They are required to keep user's code
|
# They are required to keep user's code
|
||||||
|
@ -50,19 +50,19 @@ import libgpodder
|
||||||
app_name = "gpodder"
|
app_name = "gpodder"
|
||||||
app_version = "unknown" # will be set in main() call
|
app_version = "unknown" # will be set in main() call
|
||||||
app_authors = [
|
app_authors = [
|
||||||
"Thomas Perl <thp@perli.net>",
|
'Thomas Perl <thp@perli.net>', '',
|
||||||
"", "Contributors / patch writers:",
|
_('Contributors / patch writers:'),
|
||||||
"Peter Hoffmann <tosh@cs.tu-berlin.de>",
|
'Peter Hoffmann <tosh@cs.tu-berlin.de>',
|
||||||
"Adrien Beaucreux <informancer@web.de>",
|
'Adrien Beaucreux <informancer@web.de>',
|
||||||
"Alain Tauch <contrib@maisondubonheur.com>",
|
'Alain Tauch <contrib@maisondubonheur.com>', '',
|
||||||
"", "For a complete list of contributors, see AUTHORS file"
|
_('See the AUTHORS file for all contributors')
|
||||||
]
|
]
|
||||||
app_copyright = "Copyright (c) 2005-2006 Thomas Perl"
|
app_copyright = 'Copyright (c) 2005-2006 Thomas Perl'
|
||||||
app_website = "http://perli.net/projekte/gpodder/"
|
app_website = 'http://perli.net/projekte/gpodder/'
|
||||||
|
|
||||||
glade_dir = "/usr/share/gpodder/"
|
glade_dir = '/usr/share/gpodder/'
|
||||||
icon_dir = "/usr/share/gpodder/images/gpodder.png"
|
icon_dir = '/usr/share/gpodder/images/gpodder.png'
|
||||||
locale_dir = "/usr/share/locale/"
|
locale_dir = '/usr/share/locale/'
|
||||||
|
|
||||||
class Gpodder(SimpleGladeApp):
|
class Gpodder(SimpleGladeApp):
|
||||||
channels = []
|
channels = []
|
||||||
|
@ -81,6 +81,9 @@ class Gpodder(SimpleGladeApp):
|
||||||
# Local DB
|
# Local DB
|
||||||
ldb = None
|
ldb = None
|
||||||
|
|
||||||
|
# User Apps Reader
|
||||||
|
uar = None
|
||||||
|
|
||||||
def __init__(self, path="gpodder.glade",
|
def __init__(self, path="gpodder.glade",
|
||||||
root="gPodder",
|
root="gPodder",
|
||||||
domain=app_name, **kwargs):
|
domain=app_name, **kwargs):
|
||||||
|
@ -143,12 +146,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
self.download_status_manager = downloadStatusManager()
|
self.download_status_manager = downloadStatusManager()
|
||||||
self.treeDownloads.set_model( self.download_status_manager.getModel())
|
self.treeDownloads.set_model( self.download_status_manager.getModel())
|
||||||
|
|
||||||
# xml test
|
# read and display subscribed channels
|
||||||
#reader = rssReader()
|
|
||||||
#reader.parseXML( "http://www.perli.net", "test.xml")
|
|
||||||
#self.channels.append( reader.channel)
|
|
||||||
#reader.parseXML( "http://www.lugradio.org/episodes.rss", "episodes.rss")
|
|
||||||
#self.channels.append( reader.channel)
|
|
||||||
reader = gPodderChannelReader()
|
reader = gPodderChannelReader()
|
||||||
self.channels = reader.read( False)
|
self.channels = reader.read( False)
|
||||||
self.channels_loaded = True
|
self.channels_loaded = True
|
||||||
|
@ -183,7 +181,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
try:
|
try:
|
||||||
self.comboAvailable.set_active( 0)
|
self.comboAvailable.set_active( 0)
|
||||||
except:
|
except:
|
||||||
print _("probably no channels found")
|
pass
|
||||||
#self.updateTreeView()
|
#self.updateTreeView()
|
||||||
|
|
||||||
def updateDownloadedComboBox( self):
|
def updateDownloadedComboBox( self):
|
||||||
|
@ -198,7 +196,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
except:
|
except:
|
||||||
self.active_downloaded_channels = 0
|
self.active_downloaded_channels = 0
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print _("no downloaded podcasts found..")
|
print _('No downloaded podcasts found.')
|
||||||
# end of self.updateDownloadedComboBox()
|
# end of self.updateDownloadedComboBox()
|
||||||
|
|
||||||
def updateTreeView( self):
|
def updateTreeView( self):
|
||||||
|
@ -209,9 +207,8 @@ class Gpodder(SimpleGladeApp):
|
||||||
if self.items_model != None:
|
if self.items_model != None:
|
||||||
self.items_model.clear()
|
self.items_model.clear()
|
||||||
self.showMessage( _("<b>No channels found</b>\n\nClick on <b><i>Channels</i></b> > <b><i>Add channel..</i></b> to add a new channel."))
|
self.showMessage( _("<b>No channels found</b>\n\nClick on <b><i>Channels</i></b> > <b><i>Add channel..</i></b> to add a new channel."))
|
||||||
print _("probably no feeds or channels found")
|
|
||||||
|
|
||||||
def showMessage( self, message = _("some unknown function"), title = _("gPodder message")):
|
def showMessage( self, message, title = _('gPodder message')):
|
||||||
dlg = gtk.MessageDialog( self.gPodder, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK)
|
dlg = gtk.MessageDialog( self.gPodder, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK)
|
||||||
dlg.set_title( title)
|
dlg.set_title( title)
|
||||||
dlg.set_markup( message)
|
dlg.set_markup( message)
|
||||||
|
@ -219,7 +216,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
dlg.run()
|
dlg.run()
|
||||||
dlg.destroy()
|
dlg.destroy()
|
||||||
|
|
||||||
def showConfirmation( self, message = _("Do you really want to do this?"), title = _("gPodder confirmation")):
|
def showConfirmation( self, message = _('Do you really want to do this?'), title = _('gPodder confirmation')):
|
||||||
myresult = False
|
myresult = False
|
||||||
dlg = gtk.MessageDialog( self.gPodder, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO)
|
dlg = gtk.MessageDialog( self.gPodder, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO)
|
||||||
dlg.set_title( title)
|
dlg.set_title( title)
|
||||||
|
@ -230,8 +227,8 @@ class Gpodder(SimpleGladeApp):
|
||||||
|
|
||||||
dlg.destroy()
|
dlg.destroy()
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print _("I Asked: %s") % message
|
print "I Asked: %s" % message
|
||||||
print _("User answered: %s") % str(myresult)
|
print "User answered: %s" % str(myresult)
|
||||||
return myresult
|
return myresult
|
||||||
|
|
||||||
def set_icon(self):
|
def set_icon(self):
|
||||||
|
@ -240,7 +237,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
|
|
||||||
def get_icon(self, entry, size=24):
|
def get_icon(self, entry, size=24):
|
||||||
#path = self.custom_handler.getIconPath(entry, size)
|
#path = self.custom_handler.getIconPath(entry, size)
|
||||||
path = '/usr/share/gpodder/images/gpodder.png'
|
path = icon_dir
|
||||||
if path == None:
|
if path == None:
|
||||||
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, size, size)
|
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, size, size)
|
||||||
pb.fill(0x00000000)
|
pb.fill(0x00000000)
|
||||||
|
@ -268,30 +265,46 @@ class Gpodder(SimpleGladeApp):
|
||||||
self.updateDownloadedComboBox()
|
self.updateDownloadedComboBox()
|
||||||
|
|
||||||
def drag_data_received(self, widget, context, x, y, sel, ttype, time):
|
def drag_data_received(self, widget, context, x, y, sel, ttype, time):
|
||||||
#TODO following code is copied from on_itemAddChannel_activate refactor both to new method
|
|
||||||
result = sel.data
|
result = sel.data
|
||||||
|
self.add_new_channel( result)
|
||||||
|
|
||||||
|
def refetch_channel_list( self):
|
||||||
|
channels_should_be = len( self.channels)
|
||||||
|
|
||||||
|
# fetch metadata for that channel
|
||||||
|
gPodderChannelWriter().write( self.channels)
|
||||||
|
self.channels = gPodderChannelReader().read( False)
|
||||||
|
|
||||||
|
# fetch feed for that channel
|
||||||
|
gPodderChannelWriter().write( self.channels)
|
||||||
|
self.channels = gPodderChannelReader().read( False)
|
||||||
|
|
||||||
|
# check if gPodderChannelReader has successfully added the channel
|
||||||
|
if channels_should_be > len( self.channels):
|
||||||
|
self.showMessage( _("There has been an error adding the channel.\nMaybe the URL is wrong?"))
|
||||||
|
|
||||||
|
def add_new_channel( self, result = None):
|
||||||
if result != None and result != "" and (result[:4] == "http" or result[:3] == "ftp"):
|
if result != None and result != "" and (result[:4] == "http" or result[:3] == "ftp"):
|
||||||
print _("Adding channel: %s") % result
|
if libgpodder.isDebugging():
|
||||||
|
print ("Will add channel :%s") % result
|
||||||
self.statusLabel.set_text( _("Fetching channel index..."))
|
self.statusLabel.set_text( _("Fetching channel index..."))
|
||||||
channel_new = podcastChannel( result)
|
channel_new = podcastChannel( result)
|
||||||
channel_new.shortname = "__unknown__"
|
channel_new.shortname = "__unknown__"
|
||||||
self.channels.append( channel_new)
|
self.channels.append( channel_new)
|
||||||
|
|
||||||
# fetch metadata for that channel
|
# download changed channels
|
||||||
gPodderChannelWriter().write( self.channels)
|
self.refetch_channel_list()
|
||||||
self.channels = gPodderChannelReader().read( False)
|
|
||||||
|
# try to update combo box
|
||||||
# fetch feed for that channel
|
|
||||||
gPodderChannelWriter().write( self.channels)
|
|
||||||
self.channels = gPodderChannelReader().read( False)
|
|
||||||
|
|
||||||
#TODO maybe change to new channel
|
|
||||||
self.updateComboBox()
|
self.updateComboBox()
|
||||||
self.statusLabel.set_text( "")
|
self.statusLabel.set_text( "")
|
||||||
else:
|
else:
|
||||||
#TODO graphical reaction
|
if result != None and result != "":
|
||||||
print _("unkonwn link format: %s") %result
|
self.showMessage( _("Could not add new channel.\nOnly <b>http://</b> and <b>ftp://</b> URLs supported at the moment."))
|
||||||
|
|
||||||
|
def get_current_channel_downloaded( self):
|
||||||
|
iter = self.comboDownloaded.get_active_iter()
|
||||||
|
return self.comboDownloaded.get_model().get_value( iter, 0)
|
||||||
#-- Gpodder custom methods }
|
#-- Gpodder custom methods }
|
||||||
|
|
||||||
#-- Gpodder.close_gpodder {
|
#-- Gpodder.close_gpodder {
|
||||||
|
@ -329,7 +342,11 @@ class Gpodder(SimpleGladeApp):
|
||||||
def on_itemPreferences_activate(self, widget, *args):
|
def on_itemPreferences_activate(self, widget, *args):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "on_itemPreferences_activate called with self.%s" % widget.get_name()
|
print "on_itemPreferences_activate called with self.%s" % widget.get_name()
|
||||||
|
if self.uar == None:
|
||||||
|
self.uar = UserAppsReader()
|
||||||
|
self.uar.read()
|
||||||
prop = Gpodderproperties()
|
prop = Gpodderproperties()
|
||||||
|
prop.set_uar( self.uar)
|
||||||
#-- Gpodder.on_itemPreferences_activate }
|
#-- Gpodder.on_itemPreferences_activate }
|
||||||
|
|
||||||
#-- Gpodder.on_itemAddChannel_activate {
|
#-- Gpodder.on_itemAddChannel_activate {
|
||||||
|
@ -339,52 +356,24 @@ class Gpodder(SimpleGladeApp):
|
||||||
ch = Gpodderchannel()
|
ch = Gpodderchannel()
|
||||||
ch.entryURL.set_text( "http://")
|
ch.entryURL.set_text( "http://")
|
||||||
result = ch.requestURL()
|
result = ch.requestURL()
|
||||||
if result != None and result != "" and (result[:4] == "http" or result[:3] == "ftp"):
|
self.add_new_channel( result)
|
||||||
if libgpodder.isDebugging():
|
|
||||||
print ("Will add channel :%s") % result
|
|
||||||
self.statusLabel.set_text( _("Fetching channel index..."))
|
|
||||||
channel_new = podcastChannel( result)
|
|
||||||
channel_new.shortname = "__unknown__"
|
|
||||||
self.channels.append( channel_new)
|
|
||||||
channels_should_be = len( self.channels)
|
|
||||||
|
|
||||||
# fetch metadata for that channel
|
|
||||||
gPodderChannelWriter().write( self.channels)
|
|
||||||
self.channels = gPodderChannelReader().read( False)
|
|
||||||
|
|
||||||
# fetch feed for that channel
|
|
||||||
gPodderChannelWriter().write( self.channels)
|
|
||||||
self.channels = gPodderChannelReader().read( False)
|
|
||||||
|
|
||||||
# check if gPodderChannelReader has successfully added the channel
|
|
||||||
if channels_should_be > len( self.channels):
|
|
||||||
self.showMessage( _("There has been an error adding the channel.\nMaybe the URL is wrong?"))
|
|
||||||
|
|
||||||
self.updateComboBox()
|
|
||||||
self.statusLabel.set_text( "")
|
|
||||||
else:
|
|
||||||
if result != None and result != "":
|
|
||||||
self.showMessage( _("Could not add new channel.\nOnly <b>http://</b> and <b>ftp://</b> URLs supported at the moment."))
|
|
||||||
#-- Gpodder.on_itemAddChannel_activate }
|
#-- Gpodder.on_itemAddChannel_activate }
|
||||||
|
|
||||||
#-- Gpodder.on_itemEditChannel_activate {
|
#-- Gpodder.on_itemEditChannel_activate {
|
||||||
def on_itemEditChannel_activate(self, widget, *args):
|
def on_itemEditChannel_activate(self, widget, *args):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "on_itemEditChannel_activate called with self.%s" % widget.get_name()
|
print "on_itemEditChannel_activate called with self.%s" % widget.get_name()
|
||||||
active = self.active_channel
|
channel = None
|
||||||
try:
|
try:
|
||||||
url_old = self.channels[active].url
|
channel = self.channels[self.active_channel]
|
||||||
title_old = self.channels[active].title
|
|
||||||
desc_old = self.channels[active].description
|
|
||||||
downloaddir_old = self.channels[active].save_dir # FIXME: should be download dir, but save_dir is more descriptive for now
|
|
||||||
except:
|
except:
|
||||||
self.showMessage( _("Cannot edit this channel.\n\nNo channel found."))
|
self.showMessage( _("Cannot edit this channel.\n\nNo channel found."))
|
||||||
return
|
return
|
||||||
|
|
||||||
result = Gpodderchannel().requestURL( preset = url_old, title = title_old, description = desc_old, downloaddir = downloaddir_old)
|
result = Gpodderchannel().requestURL( channel)
|
||||||
if result != None and result != "" and (result[:4] == "http" or result[:3] == "ftp"):
|
if result != channel.url and result != None and result != "" and (result[:4] == "http" or result[:3] == "ftp"):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "will EDIT ID " + str(active) + " FROM " + url_old + " TO " + result
|
print 'Changing ID %d from "%s" to "%s"' % (active, channel.url, result)
|
||||||
self.statusLabel.set_text( _("Fetching channel index..."))
|
self.statusLabel.set_text( _("Fetching channel index..."))
|
||||||
channel_new = podcastChannel( result)
|
channel_new = podcastChannel( result)
|
||||||
channel_new.shortname = "__unknown__"
|
channel_new.shortname = "__unknown__"
|
||||||
|
@ -392,18 +381,10 @@ class Gpodder(SimpleGladeApp):
|
||||||
new_channels.append( channel_new)
|
new_channels.append( channel_new)
|
||||||
new_channels.extend( self.channels[active+1:])
|
new_channels.extend( self.channels[active+1:])
|
||||||
self.channels = new_channels
|
self.channels = new_channels
|
||||||
|
|
||||||
# TODO: REFACTOR THE NEXT TWO CODEBLOCKS INTO
|
# fetch new channels
|
||||||
# A SINGLE FUNCTION (SAME BLOCKS ARE USED IN "ADD FEED")
|
self.refetch_channel_list()
|
||||||
|
|
||||||
# fetch metadata for that channel
|
|
||||||
gPodderChannelWriter().write( self.channels)
|
|
||||||
self.channels = gPodderChannelReader().read( False)
|
|
||||||
|
|
||||||
# fetch feed for that channel
|
|
||||||
gPodderChannelWriter().write( self.channels)
|
|
||||||
self.channels = gPodderChannelReader().read( False)
|
|
||||||
|
|
||||||
self.updateComboBox()
|
self.updateComboBox()
|
||||||
self.statusLabel.set_text( "")
|
self.statusLabel.set_text( "")
|
||||||
# end if result != None etc etc
|
# end if result != None etc etc
|
||||||
|
@ -431,9 +412,9 @@ class Gpodder(SimpleGladeApp):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "on_itemExportChannels_activate called with self.%s" % widget.get_name()
|
print "on_itemExportChannels_activate called with self.%s" % widget.get_name()
|
||||||
if len( self.channels) == 0:
|
if len( self.channels) == 0:
|
||||||
self.showMessage( _("Your channel list is empty. Nothing to export.\n\nGo add some fancy channels! :)"))
|
self.showMessage( _("Your channel list is empty. Nothing to export."))
|
||||||
return
|
return
|
||||||
dlg = gtk.FileChooserDialog( title=_("Export to OPML..."), parent = None, action = gtk.FILE_CHOOSER_ACTION_SAVE)
|
dlg = gtk.FileChooserDialog( title=_("Export to OPML"), parent = None, action = gtk.FILE_CHOOSER_ACTION_SAVE)
|
||||||
dlg.add_button( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
|
dlg.add_button( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
|
||||||
dlg.add_button( gtk.STOCK_SAVE, gtk.RESPONSE_OK)
|
dlg.add_button( gtk.STOCK_SAVE, gtk.RESPONSE_OK)
|
||||||
response = dlg.run()
|
response = dlg.run()
|
||||||
|
@ -442,7 +423,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
if foutname[-5:] != ".opml" and foutname[-4:] != ".xml":
|
if foutname[-5:] != ".opml" and foutname[-4:] != ".xml":
|
||||||
foutname = foutname + ".opml"
|
foutname = foutname + ".opml"
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print _("=> WILL WRITE OPML TO: ") + foutname
|
print 'Exporting channels list to: %s' % foutname
|
||||||
w = opmlWriter( foutname)
|
w = opmlWriter( foutname)
|
||||||
for ch in self.channels:
|
for ch in self.channels:
|
||||||
w.addChannel( ch)
|
w.addChannel( ch)
|
||||||
|
@ -501,7 +482,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
selection_iter = selection_tuple[1]
|
selection_iter = selection_tuple[1]
|
||||||
url = self.items_model.get_value( selection_iter, 0)
|
url = self.items_model.get_value( selection_iter, 0)
|
||||||
except:
|
except:
|
||||||
self.showMessage( _("You have not selected an episode to download.\n\nPlease select one, and I'll download it for you."))
|
self.showMessage( _("You have not selected an episode to download."))
|
||||||
return
|
return
|
||||||
|
|
||||||
self.active_item = self.channels[self.active_channel].getActiveByUrl( url)
|
self.active_item = self.channels[self.active_channel].getActiveByUrl( url)
|
||||||
|
@ -510,13 +491,13 @@ class Gpodder(SimpleGladeApp):
|
||||||
current_podcast = current_channel.items[self.active_item]
|
current_podcast = current_channel.items[self.active_item]
|
||||||
filename = current_channel.getPodcastFilename( current_podcast.url)
|
filename = current_channel.getPodcastFilename( current_podcast.url)
|
||||||
if widget.get_name() == "treeAvailable":
|
if widget.get_name() == "treeAvailable":
|
||||||
Gpodderepisode().set_episode( current_podcast)
|
Gpodderepisode().set_episode( current_podcast)
|
||||||
return
|
return
|
||||||
|
|
||||||
if os.path.exists( filename) == False and self.download_status_manager.is_download_in_progress( current_podcast.url) == False:
|
if os.path.exists( filename) == False and self.download_status_manager.is_download_in_progress( current_podcast.url) == False:
|
||||||
downloadThread( current_podcast.url, filename, None, self.download_status_manager, current_podcast.title, current_channel, current_podcast, self.ldb).download()
|
downloadThread( current_podcast.url, filename, None, self.download_status_manager, current_podcast.title, current_channel, current_podcast, self.ldb).download()
|
||||||
else:
|
else:
|
||||||
self.showMessage( _("<big><b>Already downloaded</b></big>\n\nYou have already downloaded this episode.\nOr you are currently downloading it."))
|
self.showMessage( _("You have already downloaded this episode\nor you are currently downloading it."))
|
||||||
#-- Gpodder.on_treeAvailable_row_activated }
|
#-- Gpodder.on_treeAvailable_row_activated }
|
||||||
|
|
||||||
#-- Gpodder.on_btnDownload_clicked {
|
#-- Gpodder.on_btnDownload_clicked {
|
||||||
|
@ -538,7 +519,7 @@ class Gpodder(SimpleGladeApp):
|
||||||
if self.showConfirmation( _("Do you really want to cancel this download?\n\n%s") % title):
|
if self.showConfirmation( _("Do you really want to cancel this download?\n\n%s") % title):
|
||||||
self.download_status_manager.cancel_by_url( url)
|
self.download_status_manager.cancel_by_url( url)
|
||||||
else:
|
else:
|
||||||
self.showMessage( _("No episode selected - nothing cancelled."))
|
self.showMessage( _("No episode selected."))
|
||||||
#-- Gpodder.on_treeDownloads_row_activated }
|
#-- Gpodder.on_treeDownloads_row_activated }
|
||||||
|
|
||||||
#-- Gpodder.on_btnCancelDownloadStatus_clicked {
|
#-- Gpodder.on_btnCancelDownloadStatus_clicked {
|
||||||
|
@ -554,11 +535,8 @@ class Gpodder(SimpleGladeApp):
|
||||||
print "on_comboDownloaded_changed called with self.%s" % widget.get_name()
|
print "on_comboDownloaded_changed called with self.%s" % widget.get_name()
|
||||||
self.active_downloaded_channels = self.comboDownloaded.get_active()
|
self.active_downloaded_channels = self.comboDownloaded.get_active()
|
||||||
try:
|
try:
|
||||||
selection_iter = self.comboDownloaded.get_active_iter()
|
filename = self.get_current_channel_downloaded()
|
||||||
selected_value = self.comboDownloaded.get_model().get_value( selection_iter, 0)
|
new_model = self.ldb.getDownloadedEpisodesModelByFilename( filename)
|
||||||
if libgpodder.isDebugging():
|
|
||||||
print "comboDownloaded_changed with: " + selected_value
|
|
||||||
new_model = self.ldb.getDownloadedEpisodesModelByFilename( selected_value)
|
|
||||||
self.treeDownloaded.set_model( new_model)
|
self.treeDownloaded.set_model( new_model)
|
||||||
except:
|
except:
|
||||||
# silently ignore the fact that we do not have any downloads
|
# silently ignore the fact that we do not have any downloads
|
||||||
|
@ -569,18 +547,16 @@ class Gpodder(SimpleGladeApp):
|
||||||
def on_treeDownloaded_row_activated(self, widget, *args):
|
def on_treeDownloaded_row_activated(self, widget, *args):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "on_treeDownloaded_row_activated called with self.%s" % widget.get_name()
|
print "on_treeDownloaded_row_activated called with self.%s" % widget.get_name()
|
||||||
# TODO: refactor with above "on_comboDownloaded_changed" into one method (next three lines)
|
|
||||||
try:
|
try:
|
||||||
selection_iter = self.comboDownloaded.get_active_iter()
|
channel_filename = self.get_current_channel_downloaded()
|
||||||
channel_filename = self.comboDownloaded.get_model().get_value( selection_iter, 0)
|
|
||||||
|
|
||||||
selection_tuple = self.treeDownloaded.get_selection().get_selected()
|
selection_tuple = self.treeDownloaded.get_selection().get_selected()
|
||||||
selection_iter = selection_tuple[1]
|
selection_iter = selection_tuple[1]
|
||||||
url = self.treeDownloaded.get_model().get_value( selection_iter, 0)
|
url = self.treeDownloaded.get_model().get_value( selection_iter, 0)
|
||||||
filename_final = localDB().getLocalFilenameByPodcastURL( channel_filename, url)
|
filename_final = self.ldb.getLocalFilenameByPodcastURL( channel_filename, url)
|
||||||
gPodderLib().openFilename( filename_final)
|
gPodderLib().openFilename( filename_final)
|
||||||
except:
|
except:
|
||||||
self.showMessage( _("Could not open this episode.\n\nHave you even selected one?"))
|
self.showMessage( _("No episode selected."))
|
||||||
#-- Gpodder.on_treeDownloaded_row_activated }
|
#-- Gpodder.on_treeDownloaded_row_activated }
|
||||||
|
|
||||||
#-- Gpodder.on_btnDownloadedExecute_clicked {
|
#-- Gpodder.on_btnDownloadedExecute_clicked {
|
||||||
|
@ -595,17 +571,16 @@ class Gpodder(SimpleGladeApp):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "on_btnDownloadedDelete_clicked called with self.%s" % widget.get_name()
|
print "on_btnDownloadedDelete_clicked called with self.%s" % widget.get_name()
|
||||||
|
|
||||||
# Note: same code as in on_treeDownloaded_row_activated()
|
# Note: same code as in on_treeDownloaded_row_activated() TODO: refactor!
|
||||||
try:
|
try:
|
||||||
selection_iter = self.comboDownloaded.get_active_iter()
|
channel_filename = self.get_current_channel_downloaded()
|
||||||
channel_filename = self.comboDownloaded.get_model().get_value( selection_iter, 0)
|
|
||||||
|
|
||||||
selection_tuple = self.treeDownloaded.get_selection().get_selected()
|
selection_tuple = self.treeDownloaded.get_selection().get_selected()
|
||||||
selection_iter = selection_tuple[1]
|
selection_iter = selection_tuple[1]
|
||||||
|
|
||||||
url = self.treeDownloaded.get_model().get_value( selection_iter, 0)
|
url = self.treeDownloaded.get_model().get_value( selection_iter, 0)
|
||||||
title = self.treeDownloaded.get_model().get_value( selection_iter, 1)
|
title = self.treeDownloaded.get_model().get_value( selection_iter, 1)
|
||||||
filename_final = localDB().getLocalFilenameByPodcastURL( channel_filename, url)
|
filename_final = self.ldb.getLocalFilenameByPodcastURL( channel_filename, url)
|
||||||
current_channel = self.downloaded_channels[self.comboDownloaded.get_active()]
|
current_channel = self.downloaded_channels[self.comboDownloaded.get_active()]
|
||||||
if self.showConfirmation( _("Do you really want to remove this episode?\n\n%s") % title) == False:
|
if self.showConfirmation( _("Do you really want to remove this episode?\n\n%s") % title) == False:
|
||||||
return
|
return
|
||||||
|
@ -617,78 +592,16 @@ class Gpodder(SimpleGladeApp):
|
||||||
self.updateComboBox()
|
self.updateComboBox()
|
||||||
self.updateDownloadedComboBox()
|
self.updateDownloadedComboBox()
|
||||||
except:
|
except:
|
||||||
self.showMessage( _("Could not delete selected item.\nHave you selected an episode to delete?"))
|
self.showMessage( _("Could not delete downloaded podcast."))
|
||||||
#-- Gpodder.on_btnDownloadedDelete_clicked }
|
#-- Gpodder.on_btnDownloadedDelete_clicked }
|
||||||
|
|
||||||
|
|
||||||
class Gpodderstatus(SimpleGladeApp):
|
class Gpodderchannel(SimpleGladeApp):
|
||||||
event = None
|
event = None
|
||||||
channel = None
|
channel = None
|
||||||
podcast = None
|
podcast = None
|
||||||
thread = None
|
thread = None
|
||||||
|
|
||||||
def __init__(self, path="gpodder.glade",
|
|
||||||
root="gPodderStatus",
|
|
||||||
domain=app_name, **kwargs):
|
|
||||||
path = os.path.join(glade_dir, path)
|
|
||||||
SimpleGladeApp.__init__(self, path, root, domain, **kwargs)
|
|
||||||
|
|
||||||
#-- Gpodderstatus.new {
|
|
||||||
def new(self, download_status_manager = None):
|
|
||||||
if libgpodder.isDebugging():
|
|
||||||
print "A new %s has been created" % self.__class__.__name__
|
|
||||||
#-- Gpodderstatus.new }
|
|
||||||
|
|
||||||
#-- Gpodderstatus custom methods {
|
|
||||||
# Write your own methods here
|
|
||||||
def setup( self, channel, podcast, download_status_manager):
|
|
||||||
self.channel = channel
|
|
||||||
self.podcast = podcast
|
|
||||||
|
|
||||||
self.labelFrom.set_markup( "<b>" + self.channel.title + "</b>")
|
|
||||||
self.labelFilename.set_markup( "<b>" + self.podcast.title + "</b>")
|
|
||||||
|
|
||||||
|
|
||||||
def download( self):
|
|
||||||
self.thread.download()
|
|
||||||
|
|
||||||
while self.event.isSet() == False:
|
|
||||||
self.event.wait( 0.1)
|
|
||||||
|
|
||||||
self.labelSpeed.set_text( self.thread.speed)
|
|
||||||
self.progressBar.set_fraction( float(self.thread.percentage))
|
|
||||||
|
|
||||||
while gtk.events_pending():
|
|
||||||
gtk.main_iteration( False)
|
|
||||||
|
|
||||||
self.gPodderStatus.destroy()
|
|
||||||
|
|
||||||
def cancel( self):
|
|
||||||
self.on_btnCancel_clicked( self.btnCancel, None)
|
|
||||||
#-- Gpodderstatus custom methods }
|
|
||||||
|
|
||||||
#-- Gpodderstatus.on_gPodderStatus_destroy {
|
|
||||||
def on_gPodderStatus_destroy(self, widget, *args):
|
|
||||||
if libgpodder.isDebugging():
|
|
||||||
print "on_gPodderStatus_destroy called with self.%s" % widget.get_name()
|
|
||||||
#-- Gpodderstatus.on_gPodderStatus_destroy }
|
|
||||||
|
|
||||||
#-- Gpodderstatus.on_btnCancel_clicked {
|
|
||||||
def on_btnCancel_clicked(self, widget, *args):
|
|
||||||
if libgpodder.isDebugging():
|
|
||||||
print "on_btnCancel_clicked called with self.%s" % widget.get_name()
|
|
||||||
|
|
||||||
if self.thread != None:
|
|
||||||
self.thread.cancel()
|
|
||||||
|
|
||||||
while self.event != None and self.event.isSet() == False:
|
|
||||||
None
|
|
||||||
|
|
||||||
self.gPodderStatus.destroy()
|
|
||||||
#-- Gpodderstatus.on_btnCancel_clicked }
|
|
||||||
|
|
||||||
|
|
||||||
class Gpodderchannel(SimpleGladeApp):
|
|
||||||
def __init__(self, path="gpodder.glade",
|
def __init__(self, path="gpodder.glade",
|
||||||
root="gPodderChannel",
|
root="gPodderChannel",
|
||||||
domain=app_name, **kwargs):
|
domain=app_name, **kwargs):
|
||||||
|
@ -705,15 +618,19 @@ class Gpodderchannel(SimpleGladeApp):
|
||||||
#-- Gpodderchannel.new }
|
#-- Gpodderchannel.new }
|
||||||
|
|
||||||
#-- Gpodderchannel custom methods {
|
#-- Gpodderchannel custom methods {
|
||||||
# Write your own methods here
|
def requestURL( self, channel = None):
|
||||||
def requestURL( self, preset = None, title = "(unknown)", description = "(unknown)", downloaddir = None):
|
if channel != None:
|
||||||
if preset != None:
|
self.entryURL.set_text( channel.url)
|
||||||
self.entryURL.set_text( preset)
|
self.downloadTo.set_text( channel.save_dir)
|
||||||
|
self.channel_title.set_markup( "<b>%s</b>" % channel.title)
|
||||||
if downloaddir != None:
|
description = channel.description
|
||||||
self.downloadTo.set_text( downloaddir)
|
if channel.image != None:
|
||||||
|
# load image in background
|
||||||
self.channel_title.set_markup( "<b>%s</b>" % title)
|
gPodderLib().get_image_from_url( channel.image, self.imgCover.set_from_pixbuf, self.labelCoverStatus.set_text, self.labelCoverStatus.hide, channel.cover_file)
|
||||||
|
else:
|
||||||
|
self.channel_title.set_markup( "<b>%s</b>" % _("(unknown)"))
|
||||||
|
description = _("(unknown)")
|
||||||
|
|
||||||
b = gtk.TextBuffer()
|
b = gtk.TextBuffer()
|
||||||
b.set_text( description)
|
b.set_text( description)
|
||||||
self.channel_description.set_buffer( b)
|
self.channel_description.set_buffer( b)
|
||||||
|
@ -778,9 +695,6 @@ class Gpodderproperties(SimpleGladeApp):
|
||||||
self.openApp.set_text( gl.open_app)
|
self.openApp.set_text( gl.open_app)
|
||||||
# if the symlink exists, set the checkbox active
|
# if the symlink exists, set the checkbox active
|
||||||
self.cbDesktopSymlink.set_active( gPodderLib().getDesktopSymlink())
|
self.cbDesktopSymlink.set_active( gPodderLib().getDesktopSymlink())
|
||||||
# fill players box with values
|
|
||||||
uar = UserAppsReader()
|
|
||||||
uar.read()
|
|
||||||
# setup cell renderers
|
# setup cell renderers
|
||||||
cellrenderer = gtk.CellRendererPixbuf()
|
cellrenderer = gtk.CellRendererPixbuf()
|
||||||
self.comboPlayerApp.pack_start( cellrenderer, False)
|
self.comboPlayerApp.pack_start( cellrenderer, False)
|
||||||
|
@ -789,14 +703,16 @@ class Gpodderproperties(SimpleGladeApp):
|
||||||
self.comboPlayerApp.pack_start( cellrenderer, True)
|
self.comboPlayerApp.pack_start( cellrenderer, True)
|
||||||
self.comboPlayerApp.add_attribute( cellrenderer, 'markup', 0)
|
self.comboPlayerApp.add_attribute( cellrenderer, 'markup', 0)
|
||||||
# end setup cell renderers
|
# end setup cell renderers
|
||||||
|
#-- Gpodderproperties.new }
|
||||||
|
|
||||||
|
#-- Gpodderproperties custom methods {
|
||||||
|
def set_uar( self, uar):
|
||||||
self.comboPlayerApp.set_model( uar.get_applications_as_model())
|
self.comboPlayerApp.set_model( uar.get_applications_as_model())
|
||||||
# try to activate an item
|
# try to activate an item
|
||||||
index = self.find_active()
|
index = self.find_active()
|
||||||
self.comboPlayerApp.set_active( index)
|
self.comboPlayerApp.set_active( index)
|
||||||
#-- Gpodderproperties.new }
|
# end set_uar
|
||||||
|
|
||||||
#-- Gpodderproperties custom methods {
|
|
||||||
# Write your own methods here
|
|
||||||
def find_active( self):
|
def find_active( self):
|
||||||
model = self.comboPlayerApp.get_model()
|
model = self.comboPlayerApp.get_model()
|
||||||
iter = model.get_iter_first()
|
iter = model.get_iter_first()
|
||||||
|
@ -821,8 +737,8 @@ class Gpodderproperties(SimpleGladeApp):
|
||||||
#-- Gpodderproperties.on_comboPlayerApp_changed {
|
#-- Gpodderproperties.on_comboPlayerApp_changed {
|
||||||
def on_comboPlayerApp_changed(self, widget, *args):
|
def on_comboPlayerApp_changed(self, widget, *args):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "on_comboPlayerApp_changed called with self.%s" % widget.get_name()
|
print "on_comboPlayerApp_changed called with self.%s" % widget.get_name()
|
||||||
|
|
||||||
# find out which one
|
# find out which one
|
||||||
iter = self.comboPlayerApp.get_active_iter()
|
iter = self.comboPlayerApp.get_active_iter()
|
||||||
model = self.comboPlayerApp.get_model()
|
model = self.comboPlayerApp.get_model()
|
||||||
|
@ -864,7 +780,6 @@ class Gpodderproperties(SimpleGladeApp):
|
||||||
|
|
||||||
|
|
||||||
class Gpodderepisode(SimpleGladeApp):
|
class Gpodderepisode(SimpleGladeApp):
|
||||||
|
|
||||||
def __init__(self, path="gpodder.glade",
|
def __init__(self, path="gpodder.glade",
|
||||||
root="gPodderEpisode",
|
root="gPodderEpisode",
|
||||||
domain=app_name, **kwargs):
|
domain=app_name, **kwargs):
|
||||||
|
@ -872,7 +787,7 @@ class Gpodderepisode(SimpleGladeApp):
|
||||||
SimpleGladeApp.__init__(self, path, root, domain, **kwargs)
|
SimpleGladeApp.__init__(self, path, root, domain, **kwargs)
|
||||||
|
|
||||||
#-- Gpodderepisode.new {
|
#-- Gpodderepisode.new {
|
||||||
def new( self):
|
def new(self):
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print "A new %s has been created" % self.__class__.__name__
|
print "A new %s has been created" % self.__class__.__name__
|
||||||
#-- Gpodderepisode.new }
|
#-- Gpodderepisode.new }
|
||||||
|
@ -903,7 +818,6 @@ def main( __version__ = None):
|
||||||
bindtextdomain( app_name, locale_dir)
|
bindtextdomain( app_name, locale_dir)
|
||||||
app_version = __version__
|
app_version = __version__
|
||||||
g_podder = Gpodder()
|
g_podder = Gpodder()
|
||||||
#g_podder_status = Gpodderstatus()
|
|
||||||
#g_podder_channel = Gpodderchannel()
|
#g_podder_channel = Gpodderchannel()
|
||||||
#g_podder_properties = Gpodderproperties()
|
#g_podder_properties = Gpodderproperties()
|
||||||
#g_podder_episode = Gpodderepisode()
|
#g_podder_episode = Gpodderepisode()
|
||||||
|
@ -912,7 +826,7 @@ def main( __version__ = None):
|
||||||
g_podder.run()
|
g_podder.run()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print _("please run the gpodder binary, not this file")
|
print _("Please do not call gpodder.py directly. Instead, call the gpodder binary.")
|
||||||
sys.exit( -1)
|
sys.exit( -1)
|
||||||
|
|
||||||
#-- main }
|
#-- main }
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
# Python module src/gpodder/gpodder.py
|
# Python module src/gpodder/gpodder.py
|
||||||
# Autogenerated from gpodder.glade
|
# Autogenerated from gpodder.glade
|
||||||
# Generated on Thu Mar 30 23:18:13 2006
|
# Generated on Fri Mar 31 18:11:13 2006
|
||||||
|
|
||||||
# Warning: Do not modify any context comment such as #--
|
# Warning: Do not modify any context comment such as #--
|
||||||
# They are required to keep user's code
|
# They are required to keep user's code
|
||||||
|
@ -137,34 +137,6 @@ class Gpodder(SimpleGladeApp):
|
||||||
#-- Gpodder.on_btnDownloadedDelete_clicked }
|
#-- Gpodder.on_btnDownloadedDelete_clicked }
|
||||||
|
|
||||||
|
|
||||||
class Gpodderstatus(SimpleGladeApp):
|
|
||||||
|
|
||||||
def __init__(self, path="gpodder.glade",
|
|
||||||
root="gPodderStatus",
|
|
||||||
domain=app_name, **kwargs):
|
|
||||||
path = os.path.join(glade_dir, path)
|
|
||||||
SimpleGladeApp.__init__(self, path, root, domain, **kwargs)
|
|
||||||
|
|
||||||
#-- Gpodderstatus.new {
|
|
||||||
def new(self):
|
|
||||||
print "A new %s has been created" % self.__class__.__name__
|
|
||||||
#-- Gpodderstatus.new }
|
|
||||||
|
|
||||||
#-- Gpodderstatus custom methods {
|
|
||||||
# Write your own methods here
|
|
||||||
#-- Gpodderstatus custom methods }
|
|
||||||
|
|
||||||
#-- Gpodderstatus.on_gPodderStatus_destroy {
|
|
||||||
def on_gPodderStatus_destroy(self, widget, *args):
|
|
||||||
print "on_gPodderStatus_destroy called with self.%s" % widget.get_name()
|
|
||||||
#-- Gpodderstatus.on_gPodderStatus_destroy }
|
|
||||||
|
|
||||||
#-- Gpodderstatus.on_btnCancel_clicked {
|
|
||||||
def on_btnCancel_clicked(self, widget, *args):
|
|
||||||
print "on_btnCancel_clicked called with self.%s" % widget.get_name()
|
|
||||||
#-- Gpodderstatus.on_btnCancel_clicked }
|
|
||||||
|
|
||||||
|
|
||||||
class Gpodderchannel(SimpleGladeApp):
|
class Gpodderchannel(SimpleGladeApp):
|
||||||
|
|
||||||
def __init__(self, path="gpodder.glade",
|
def __init__(self, path="gpodder.glade",
|
||||||
|
@ -263,7 +235,6 @@ class Gpodderepisode(SimpleGladeApp):
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
g_podder = Gpodder()
|
g_podder = Gpodder()
|
||||||
g_podder_status = Gpodderstatus()
|
|
||||||
g_podder_channel = Gpodderchannel()
|
g_podder_channel = Gpodderchannel()
|
||||||
g_podder_properties = Gpodderproperties()
|
g_podder_properties = Gpodderproperties()
|
||||||
g_podder_episode = Gpodderepisode()
|
g_podder_episode = Gpodderepisode()
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
import gtk
|
import gtk
|
||||||
import thread
|
import thread
|
||||||
import threading
|
import threading
|
||||||
|
import urllib
|
||||||
|
|
||||||
from xml.sax.saxutils import DefaultHandler
|
from xml.sax.saxutils import DefaultHandler
|
||||||
from xml.sax import make_parser
|
from xml.sax import make_parser
|
||||||
|
@ -35,6 +36,8 @@ from stat import ST_MODE
|
||||||
from librssreader import rssReader
|
from librssreader import rssReader
|
||||||
from libpodcasts import podcastChannel
|
from libpodcasts import podcastChannel
|
||||||
|
|
||||||
|
from gtk.gdk import PixbufLoader
|
||||||
|
|
||||||
# global debugging variable, set to False on release
|
# global debugging variable, set to False on release
|
||||||
# TODO: while developing a new version, set this to "True"
|
# TODO: while developing a new version, set this to "True"
|
||||||
debugging = True
|
debugging = True
|
||||||
|
@ -58,6 +61,7 @@ class gPodderLib( object):
|
||||||
http_proxy = ""
|
http_proxy = ""
|
||||||
ftp_proxy = ""
|
ftp_proxy = ""
|
||||||
open_app = ""
|
open_app = ""
|
||||||
|
desktop_link = _("gPodder downloads")
|
||||||
|
|
||||||
def __init__( self):
|
def __init__( self):
|
||||||
self.gpodderdir = expanduser( "~/.config/gpodder/")
|
self.gpodderdir = expanduser( "~/.config/gpodder/")
|
||||||
|
@ -134,7 +138,7 @@ class gPodderLib( object):
|
||||||
system( self.open_app + " " + filename + " &")
|
system( self.open_app + " " + filename + " &")
|
||||||
|
|
||||||
def getDesktopSymlink( self):
|
def getDesktopSymlink( self):
|
||||||
symlink_path = expanduser( "~/Desktop/"+_("gPodder downloads"))
|
symlink_path = expanduser( "~/Desktop/%s" % self.desktop_link)
|
||||||
return exists( symlink_path)
|
return exists( symlink_path)
|
||||||
|
|
||||||
def createDesktopSymlink( self):
|
def createDesktopSymlink( self):
|
||||||
|
@ -143,13 +147,53 @@ class gPodderLib( object):
|
||||||
if not self.getDesktopSymlink():
|
if not self.getDesktopSymlink():
|
||||||
downloads_path = expanduser( "~/Desktop/")
|
downloads_path = expanduser( "~/Desktop/")
|
||||||
self.createIfNecessary( downloads_path)
|
self.createIfNecessary( downloads_path)
|
||||||
symlink( self.downloaddir, downloads_path + _("gPodder downloads"))
|
symlink( self.downloaddir, "%s%s" % (downloads_path, self.desktop_link))
|
||||||
|
|
||||||
def removeDesktopSymlink( self):
|
def removeDesktopSymlink( self):
|
||||||
if isDebugging():
|
if isDebugging():
|
||||||
print "removeDesktopSymlink requested"
|
print "removeDesktopSymlink requested"
|
||||||
if self.getDesktopSymlink():
|
if self.getDesktopSymlink():
|
||||||
unlink( expanduser( "~/Desktop/"+_("gPodder downloads")))
|
unlink( expanduser( "~/Desktop/%s" % self.desktop_link))
|
||||||
|
|
||||||
|
def image_download_thread( self, url, callback_pixbuf = None, callback_status = None, callback_finished = None, cover_file = None):
|
||||||
|
if callback_status != None:
|
||||||
|
callback_status( _('Downloading channel cover...'))
|
||||||
|
pixbuf = PixbufLoader()
|
||||||
|
|
||||||
|
if cover_file == None:
|
||||||
|
if isDebugging():
|
||||||
|
print "directly downloading %s" % url
|
||||||
|
pixbuf.write( urllib.urlopen(url).read())
|
||||||
|
|
||||||
|
if cover_file != None and not exists( cover_file):
|
||||||
|
if isDebugging():
|
||||||
|
print "downloading cover to %s" % cover_file
|
||||||
|
cachefile = open( cover_file, "w")
|
||||||
|
cachefile.write( urllib.urlopen(url).read())
|
||||||
|
cachefile.close()
|
||||||
|
|
||||||
|
if cover_file != None:
|
||||||
|
if isDebugging():
|
||||||
|
print "reading cover from %s" % cover_file
|
||||||
|
pixbuf.write( open( cover_file, "r").read())
|
||||||
|
|
||||||
|
try:
|
||||||
|
pixbuf.close()
|
||||||
|
except:
|
||||||
|
# data error, delete temp file
|
||||||
|
self.deleteFilename( cover_file)
|
||||||
|
|
||||||
|
if callback_pixbuf != None:
|
||||||
|
callback_pixbuf( pixbuf.get_pixbuf())
|
||||||
|
if callback_status != None:
|
||||||
|
callback_status( '')
|
||||||
|
if callback_finished != None:
|
||||||
|
callback_finished()
|
||||||
|
|
||||||
|
def get_image_from_url( self, url, callback_pixbuf = None, callback_status = None, callback_finished = None, cover_file = None):
|
||||||
|
args = ( url, callback_pixbuf, callback_status, callback_finished, cover_file )
|
||||||
|
thread = threading.Thread( target = self.image_download_thread, args = args)
|
||||||
|
thread.start()
|
||||||
|
|
||||||
def deleteFilename( self, filename):
|
def deleteFilename( self, filename):
|
||||||
if isDebugging():
|
if isDebugging():
|
||||||
|
@ -164,12 +208,12 @@ class gPodderChannelWriter( object):
|
||||||
def write( self, channels):
|
def write( self, channels):
|
||||||
filename = gPodderLib().getChannelsFilename()
|
filename = gPodderLib().getChannelsFilename()
|
||||||
fd = open( filename, "w")
|
fd = open( filename, "w")
|
||||||
print >> fd, '<!-- '+_('automatically generated, will be overwritten on next gpodder shutdown.')+' -->'
|
print >> fd, '<!-- '+_('gPodder channel list')+' -->'
|
||||||
print >> fd, '<channels>'
|
print >> fd, '<channels>'
|
||||||
for chan in channels:
|
for chan in channels:
|
||||||
print >> fd, ' <channel name="%s">' %chan.filename
|
print >> fd, ' <channel name="%s">' % chan.filename
|
||||||
print >> fd, ' <url>%s</url>' %chan.url
|
print >> fd, ' <url>%s</url>' % chan.url
|
||||||
print >> fd, ' <download_dir>%s</download_dir>' %chan.save_dir
|
print >> fd, ' <download_dir>%s</download_dir>' % chan.save_dir
|
||||||
print >> fd, ' </channel>'
|
print >> fd, ' </channel>'
|
||||||
print >> fd, '</channels>'
|
print >> fd, '</channels>'
|
||||||
fd.close()
|
fd.close()
|
||||||
|
|
|
@ -94,7 +94,7 @@ class localDB( object):
|
||||||
rdb.parseXML( filename)
|
rdb.parseXML( filename)
|
||||||
self.localdbs[filename] = rdb
|
self.localdbs[filename] = rdb
|
||||||
|
|
||||||
return rdb.channel.getItemsModel()
|
return rdb.channel.getItemsModel( False)
|
||||||
|
|
||||||
def getLocalFilenameByPodcastURL( self, channel_filename, url):
|
def getLocalFilenameByPodcastURL( self, channel_filename, url):
|
||||||
if channel_filename in self.localdbs:
|
if channel_filename in self.localdbs:
|
||||||
|
|
|
@ -76,7 +76,8 @@ class podcastChannel(object):
|
||||||
locdb_reader.parseXML( localdb)
|
locdb_reader.parseXML( localdb)
|
||||||
self.downloaded = locdb_reader.channel
|
self.downloaded = locdb_reader.channel
|
||||||
except:
|
except:
|
||||||
print "no local db found or local db error: creating new.."
|
if libgpodder.isDebugging():
|
||||||
|
print "no local db found or local db error: creating new.."
|
||||||
self.downloaded = podcastChannel( self.url, self.title, self.link, self.description)
|
self.downloaded = podcastChannel( self.url, self.title, self.link, self.description)
|
||||||
|
|
||||||
self.downloaded.items.append( item)
|
self.downloaded.items.append( item)
|
||||||
|
@ -91,13 +92,13 @@ class podcastChannel(object):
|
||||||
def isDownloaded( self, item):
|
def isDownloaded( self, item):
|
||||||
return self.podcastFilenameExists( item.url)
|
return self.podcastFilenameExists( item.url)
|
||||||
|
|
||||||
def getItemsModel( self):
|
def getItemsModel( self, want_color = True):
|
||||||
new_model = gtk.ListStore( gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_STRING)
|
new_model = gtk.ListStore( gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_STRING)
|
||||||
|
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
# Skip items with no download url
|
# Skip items with no download url
|
||||||
if item.url != "":
|
if item.url != "":
|
||||||
if self.isDownloaded(item):
|
if self.isDownloaded(item) and want_color:
|
||||||
background_color = "#eeeeee"
|
background_color = "#eeeeee"
|
||||||
else:
|
else:
|
||||||
background_color = "white"
|
background_color = "white"
|
||||||
|
@ -173,6 +174,12 @@ class podcastChannel(object):
|
||||||
|
|
||||||
index_file = property(fget=get_index_file)
|
index_file = property(fget=get_index_file)
|
||||||
|
|
||||||
|
def get_cover_file( self):
|
||||||
|
# gets cover filename for cover download cache
|
||||||
|
return self.save_dir + "cover"
|
||||||
|
|
||||||
|
cover_file = property(fget=get_cover_file)
|
||||||
|
|
||||||
def getPodcastFilename( self, url):
|
def getPodcastFilename( self, url):
|
||||||
# strip question mark (and everything behind it), fix %20 errors
|
# strip question mark (and everything behind it), fix %20 errors
|
||||||
filename = basename( url).replace( "%20", " ")
|
filename = basename( url).replace( "%20", " ")
|
||||||
|
@ -204,7 +211,7 @@ class podcastChannel(object):
|
||||||
nr_items += 1
|
nr_items += 1
|
||||||
self.downloaded.items.remove(item)
|
self.downloaded.items.remove(item)
|
||||||
except:
|
except:
|
||||||
print _("no local db found or local db error")
|
print _("No LocalDB found or error in existing LocalDB.")
|
||||||
if libgpodder.isDebugging():
|
if libgpodder.isDebugging():
|
||||||
print " found", nr_items, "matching item(s)"
|
print " found", nr_items, "matching item(s)"
|
||||||
if nr_items > 0:
|
if nr_items > 0:
|
||||||
|
@ -239,13 +246,14 @@ class podcastItem(object):
|
||||||
|
|
||||||
size = int( self.length)
|
size = int( self.length)
|
||||||
if size > gigabyte:
|
if size > gigabyte:
|
||||||
return str( size / gigabyte) + " " + _("GB")
|
# Might be a bit big, but who cares...
|
||||||
|
return '%d GB' % str(size / gigabyte)
|
||||||
if size > megabyte:
|
if size > megabyte:
|
||||||
return str( size / megabyte) + " " + _("MB")
|
return '%d MB' % int(size / megabyte)
|
||||||
if size > kilobyte:
|
if size > kilobyte:
|
||||||
return str( size / kilobyte) + " " + _("KB")
|
return '%d KB' % int(size / kilobyte)
|
||||||
|
|
||||||
return str( size) + " "+_("Bytes")
|
return '%d Bytes' % size
|
||||||
|
|
||||||
def channelsToModel( channels):
|
def channelsToModel( channels):
|
||||||
new_model = gtk.ListStore( gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_OBJECT)
|
new_model = gtk.ListStore( gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_OBJECT)
|
||||||
|
|
|
@ -269,7 +269,7 @@ def downloadProcedure( url, filename, force_update):
|
||||||
|
|
||||||
url = url.replace( "%20", " ")
|
url = url.replace( "%20", " ")
|
||||||
|
|
||||||
dlinfo_speed = _("initializing download...")
|
dlinfo_speed = '...'
|
||||||
dlinfo_percentage = "0"
|
dlinfo_percentage = "0"
|
||||||
dlinfo_result = -1
|
dlinfo_result = -1
|
||||||
|
|
||||||
|
@ -297,8 +297,7 @@ def downloadProcedure( url, filename, force_update):
|
||||||
if dlinfo_result == 9:
|
if dlinfo_result == 9:
|
||||||
showMessage( _("Download has been cancelled."))
|
showMessage( _("Download has been cancelled."))
|
||||||
else:
|
else:
|
||||||
showMessage( _("wget exited with status: %s") % str( dlinfo_result))
|
showMessage( _("Download error. Wget exit code was: %d") % dlinfo_result)
|
||||||
print _("*** THERE HAS BEEN AN ERROR WHILE DOWNLOADING **")
|
|
||||||
# end if
|
# end if
|
||||||
# end if
|
# end if
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue