Commits

Vladimir Kolev  committed a4e863d

A lot of changes:
- Added option in the preferences dialog to check for updates on startup
- Fixed the translations .pot file (a lot of strings were missing)
- Check for updates is now in separate thread.

  • Participants
  • Parent commits bbfd93e

Comments (0)

Files changed (9)

File data/preferenes_dialog.ui

-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
 <interface>
   <requires lib="gtk+" version="2.16"/>
   <!-- interface-naming-policy project-wide -->
   <object class="GtkFileChooserDialog" id="filechooserdialog1">
-    <property name="can_focus">False</property>
     <property name="border_width">5</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <property name="spacing">2</property>
+        <child>
+          <placeholder/>
+        </child>
         <child internal-child="action_area">
           <object class="GtkHButtonBox" id="dialog-action_area1">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
             <property name="layout_style">end</property>
             <child>
               <placeholder/>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
             <property name="pack_type">end</property>
             <property name="position">0</property>
           </packing>
         </child>
-        <child>
-          <placeholder/>
-        </child>
       </object>
     </child>
   </object>
   <object class="GtkWindow" id="window1">
-    <property name="can_focus">False</property>
     <property name="title" translatable="yes">Preferences</property>
     <property name="type_hint">dialog</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <property name="spacing">2</property>
         <child>
           <object class="GtkHBox" id="hbox1">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
             <child>
               <object class="GtkLabel" id="label1">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">Download Directory:</property>
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="fill">True</property>
                 <property name="padding">5</property>
                 <property name="position">0</property>
               </packing>
             <child>
               <object class="GtkFileChooserButton" id="filechooserbutton1">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="action">select-folder</property>
                 <property name="preview_widget_active">False</property>
                 <property name="title" translatable="yes">Select the download directory</property>
               </object>
               <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
                 <property name="padding">5</property>
                 <property name="position">1</property>
               </packing>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
             <property name="padding">14</property>
             <property name="position">0</property>
           </packing>
         <child>
           <object class="GtkHBox" id="hbox2">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
             <child>
               <object class="GtkCheckButton" id="checkbutton1">
                 <property name="label" translatable="yes">Quit application without confirmation</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="draw_indicator">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="fill">True</property>
                 <property name="padding">15</property>
                 <property name="position">0</property>
               </packing>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
             <property name="padding">6</property>
             <property name="position">1</property>
           </packing>
         <child>
           <object class="GtkHBox" id="hbox3">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
             <child>
               <object class="GtkCheckButton" id="checkbutton2">
                 <property name="label" translatable="yes">Show notifications on track change</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="draw_indicator">True</property>
               </object>
               <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
                 <property name="padding">15</property>
                 <property name="position">0</property>
               </packing>
           </packing>
         </child>
         <child>
+          <object class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkCheckButton" id="checkbutton4">
+                <property name="label" translatable="yes">Check for updates on startup</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="padding">15</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">1</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
           <object class="GtkFrame" id="frame1">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
             <property name="label_xalign">0</property>
             <property name="shadow_type">none</property>
             <child>
               <object class="GtkAlignment" id="alignment1">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="left_padding">12</property>
                 <child>
                   <object class="GtkVBox" id="vbox2">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                     <child>
                       <object class="GtkHBox" id="hbox4">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
                         <child>
                           <object class="GtkLabel" id="label3">
                             <property name="visible">True</property>
-                            <property name="can_focus">False</property>
                             <property name="label" translatable="yes">Username:</property>
                           </object>
                           <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                           <object class="GtkEntry" id="entry2">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char"></property>
+                            <property name="invisible_char">&#x2022;</property>
                             <property name="primary_icon_name">face-monkey</property>
-                            <property name="primary_icon_activatable">False</property>
-                            <property name="secondary_icon_activatable">False</property>
                             <property name="primary_icon_sensitive">True</property>
                             <property name="secondary_icon_sensitive">True</property>
                           </object>
                           <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
                       </object>
                       <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkHBox" id="hbox5">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
                         <child>
                           <object class="GtkLabel" id="label4">
                             <property name="visible">True</property>
-                            <property name="can_focus">False</property>
                             <property name="label" translatable="yes">Password:  </property>
                           </object>
                           <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                             <property name="can_focus">True</property>
                             <property name="invisible_char_set">True</property>
                             <property name="primary_icon_name">dialog-password</property>
-                            <property name="primary_icon_activatable">False</property>
-                            <property name="secondary_icon_activatable">False</property>
                             <property name="primary_icon_sensitive">True</property>
                             <property name="secondary_icon_sensitive">True</property>
                           </object>
                           <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
                       </object>
                       <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="draw_indicator">True</property>
-                        <signal name="toggled" handler="on_scrobble_toggle" swapped="no"/>
+                        <signal name="toggled" handler="on_scrobble_toggle"/>
                       </object>
                       <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
                         <property name="position">2</property>
                       </packing>
                     </child>
             <child type="label">
               <object class="GtkLabel" id="label2">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">&lt;b&gt;Last.fm Scrobbling&lt;/b&gt;</property>
                 <property name="use_markup">True</property>
               </object>
             </child>
           </object>
           <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">3</property>
+            <property name="position">4</property>
           </packing>
         </child>
         <child>
           <object class="GtkHSeparator" id="hseparator1">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
+            <property name="position">5</property>
           </packing>
         </child>
         <child>
           <object class="GtkHButtonBox" id="hbuttonbox1">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
             <property name="spacing">12</property>
             <property name="layout_style">end</property>
             <child>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
                 <property name="use_stock">True</property>
-                <signal name="clicked" handler="close_preferences" swapped="no"/>
+                <signal name="clicked" handler="close_preferences"/>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
                 <property name="use_stock">True</property>
-                <signal name="clicked" handler="save_preferences" swapped="no"/>
+                <signal name="clicked" handler="save_preferences"/>
               </object>
               <packing>
                 <property name="expand">False</property>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
             <property name="padding">5</property>
-            <property name="position">5</property>
+            <property name="position">6</property>
           </packing>
         </child>
       </object>

File gsharkdown.pot

 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-06 15:21+0200\n"
+"POT-Creation-Date: 2011-09-06 17:26+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: gsharkdown.py:219
+#: gsharkdown.py:226
 msgid "gSharkDown : Download from Grooveshark"
 msgstr ""
 
-#: gsharkdown.py:295
+#: gsharkdown.py:306
 msgid "Error saving the playlist"
 msgstr ""
 
-#: gsharkdown.py:304 data/main_window.ui.h:22
+#: gsharkdown.py:315 data/main_window.ui.h:16
 msgid "Save playlist to file"
 msgstr ""
 
-#: gsharkdown.py:322
+#: gsharkdown.py:333
 msgid "Select Playlist to open"
 msgstr ""
 
-#: gsharkdown.py:328
+#: gsharkdown.py:339
 msgid "Playlist files"
 msgstr ""
 
-#: gsharkdown.py:370 data/about_dialog.ui.h:7
+#: gsharkdown.py:381 data/about_dialog.ui.h:8
 msgid "Check for update"
 msgstr ""
 
 #: gsharkdown.py:407
-msgid "New update"
+msgid "To update to the latest version "
 msgstr ""
 
 #: gsharkdown.py:408
-msgid "To update to the latest version click on the button "
+msgid ""
+"you can visit the <a href=\"http://https://bitbucket.org/vkolev/gsharkdown/"
+"downloads\"> "
 msgstr ""
 
 #: gsharkdown.py:409
-msgid ""
-"'Update'\n"
-"and download it. After that you can "
+msgid "download site</a>. If you are using the latest version and whant to be"
 msgstr ""
 
 #: gsharkdown.py:410
-msgid "remove the old one and install the new gSharkDown"
+msgid ""
+"informed about new versions, just enable the option in the <b>Preferences</"
+"b> dialog."
 msgstr ""
 
 #: gsharkdown.py:411
 #, python-format
-msgid "<b>New version <i>%s</i> is available</b>"
+msgid "<b>New version <span fgcolor=\"red\"><i>%s</i></span> is available</b>"
 msgstr ""
 
-#: gsharkdown.py:427
-msgid "No updates"
-msgstr ""
-
-#: gsharkdown.py:428
-msgid "Congratulations!\n"
-msgstr ""
-
-#: gsharkdown.py:429
+#: gsharkdown.py:412
 msgid "<b>You are using the latest version!</b>"
 msgstr ""
 
-#: gsharkdown.py:457 gsharkdown.py:483
+#: gsharkdown.py:436 gsharkdown.py:462
 msgid "Title"
 msgstr ""
 
-#: gsharkdown.py:462 gsharkdown.py:488
+#: gsharkdown.py:441 gsharkdown.py:467
 msgid "Artist"
 msgstr ""
 
-#: gsharkdown.py:467
+#: gsharkdown.py:446
 msgid "Album"
 msgstr ""
 
-#: gsharkdown.py:472 gsharkdown.py:493 gsharkdown.py:509
+#: gsharkdown.py:451 gsharkdown.py:472 gsharkdown.py:488
 msgid "SongID"
 msgstr ""
 
-#: gsharkdown.py:504
+#: gsharkdown.py:483
 msgid "File name"
 msgstr ""
 
-#: gsharkdown.py:514
+#: gsharkdown.py:493
 msgid "Download progress"
 msgstr ""
 
-#: gsharkdown.py:519
+#: gsharkdown.py:498
 msgid "Size"
 msgstr ""
 
-#: gsharkdown.py:531
+#: gsharkdown.py:510
 msgid "Are you sure to quit?"
 msgstr ""
 
-#: gsharkdown.py:532
+#: gsharkdown.py:511
 msgid "Quit?"
 msgstr ""
 
-#: gsharkdown.py:705
+#: gsharkdown.py:684
 msgid "Song Information - {songid}"
 msgstr ""
 
-#: gsharkdown.py:706
+#: gsharkdown.py:685
 msgid "<b>Filename:</b> {artist} - {title}.mp3\n"
 msgstr ""
 
-#: gsharkdown.py:708
+#: gsharkdown.py:687
 msgid "<b>Artist:</b> {artist}\n"
 msgstr ""
 
-#: gsharkdown.py:709
+#: gsharkdown.py:688
 msgid "<b>Title:</b> {title}\n"
 msgstr ""
 
-#: gsharkdown.py:711
+#: gsharkdown.py:690
 msgid "<b>Duration:</b> {mins}:{secs} min\n"
 msgstr ""
 
-#: gsharkdown.py:713
+#: gsharkdown.py:692
 msgid "<b>Album:</b> {album}\n"
 msgstr ""
 
-#: gsharkdown.py:714
+#: gsharkdown.py:693
 msgid "<b>Year:</b> {year}\n"
 msgstr ""
 
-#: gsharkdown.py:877
+#: gsharkdown.py:863
 msgid "Playing: {artist} - {title}"
 msgstr ""
 
-#: gsharkdown.py:881
+#: gsharkdown.py:867
 msgid "<b>Playing:</b> {artist} - {title}"
 msgstr ""
 
-#: gsharkdown.py:885
+#: gsharkdown.py:871
 msgid "Now playing"
 msgstr ""
 
-#: gsharkdown.py:893
+#: gsharkdown.py:879
 msgid "gSharkDown: GrooveShark Downloader"
 msgstr ""
 
-#: gsharkdown.py:905
+#: gsharkdown.py:891
 msgid "Overwrite downloaded file?"
 msgstr ""
 
-#: gsharkdown.py:908
+#: gsharkdown.py:894
 msgid "Cancel download"
 msgstr ""
 
-#: gsharkdown.py:909
+#: gsharkdown.py:895
 msgid "Download and overwrite"
 msgstr ""
 
-#: gsharkdown.py:910
+#: gsharkdown.py:896
 msgid "Download renamed"
 msgstr ""
 
-#: gsharkdown.py:912
+#: gsharkdown.py:898
 #, python-format
 msgid ""
 "The file '%s' already exists, maybe you are downloading a file that you "
 "What do you want to do?"
 msgstr ""
 
-#: gsharkdown.py:965
+#: gsharkdown.py:951
 #, python-format
 msgid "Downloading %d file"
 msgid_plural "Downloading %d files"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/tfuncs.py:66
+#: lib/tfuncs.py:67
 #, python-format
 msgid "Failed to create '%s' for writing."
 msgstr ""
 
-#: lib/tfuncs.py:273
+#: lib/tfuncs.py:308
 msgid "Loading lyrics..."
 msgstr ""
 
-#: lib/tfuncs.py:276
+#: lib/tfuncs.py:311 data/main_window.ui.h:8
 msgid "Lyrics"
 msgstr ""
 
 msgstr ""
 
 #: data/main_window.ui.h:3
-msgid "About"
+msgid "Add >"
 msgstr ""
 
 #: data/main_window.ui.h:4
-msgid "Add item from search results"
+msgid "Add to playlist"
 msgstr ""
 
 #: data/main_window.ui.h:5
+msgid "Check for Updates"
+msgstr ""
+
+#: data/main_window.ui.h:6
 msgid "Clear the playlist"
 msgstr ""
 
-#: data/main_window.ui.h:6
-msgid "Copy song name to clipboard"
-msgstr ""
-
 #: data/main_window.ui.h:7
-msgid "Copyto Clipboard"
-msgstr ""
-
-#: data/main_window.ui.h:8
-msgid "Download"
+msgid "Edit Preferences"
 msgstr ""
 
 #: data/main_window.ui.h:9
-msgid "Download selected"
+msgid "Menu"
 msgstr ""
 
 #: data/main_window.ui.h:10
-msgid "Exit gSharkDown"
+msgid "Next"
 msgstr ""
 
 #: data/main_window.ui.h:11
-msgid "Get Lyrics"
+msgid "Open saved playlist"
 msgstr ""
 
 #: data/main_window.ui.h:12
-msgid "Info"
+msgid "Play/Stop"
 msgstr ""
 
 #: data/main_window.ui.h:13
-msgid "Information about the application"
+msgid "Previous"
 msgstr ""
 
 #: data/main_window.ui.h:14
-msgid "Next"
+msgid "Quit the application"
 msgstr ""
 
 #: data/main_window.ui.h:15
-msgid "Open Prefrences"
-msgstr ""
-
-#: data/main_window.ui.h:16
-msgid "Open saved playlist"
+msgid "Remove item from playlist"
 msgstr ""
 
 #: data/main_window.ui.h:17
-msgid "Play/Stop"
+msgid "Search the grooveshark"
 msgstr ""
 
-#: data/main_window.ui.h:18 data/preferenes_dialog.ui.h:5
-msgid "Preferences"
+#: data/main_window.ui.h:18
+msgid "Settings"
 msgstr ""
 
 #: data/main_window.ui.h:19
-msgid "Previous"
+msgid "Show About dialog"
 msgstr ""
 
 #: data/main_window.ui.h:20
-msgid "Quit"
+msgid "Toggle Repeat all"
 msgstr ""
 
 #: data/main_window.ui.h:21
-msgid "Remove item from playlist"
-msgstr ""
-
-#: data/main_window.ui.h:23
-msgid "Search a lyrics for selected song from the playlist"
-msgstr ""
-
-#: data/main_window.ui.h:24
-msgid "Search the grooveshark"
-msgstr ""
-
-#: data/main_window.ui.h:25
-msgid "Show selection info"
-msgstr ""
-
-#: data/main_window.ui.h:26
-msgid "Toggle Repeat all"
-msgstr ""
-
-#: data/main_window.ui.h:27
 msgid "Toggle Shuffle"
 msgstr ""
 
-#: data/main_window.ui.h:28
+#: data/main_window.ui.h:22
 msgid "gSharkDown"
 msgstr ""
 
-#: data/main_window.ui.h:29
-msgid "label"
-msgstr ""
-
 #: data/preferenes_dialog.ui.h:1
 msgid "<b>Last.fm Scrobbling</b>"
 msgstr ""
 
 #: data/preferenes_dialog.ui.h:2
+msgid "Check for updates on startup"
+msgstr ""
+
+#: data/preferenes_dialog.ui.h:3
 msgid "Download Directory:"
 msgstr ""
 
-#: data/preferenes_dialog.ui.h:3
+#: data/preferenes_dialog.ui.h:4
 msgid "Enable Last.fm Scrobbling"
 msgstr ""
 
-#: data/preferenes_dialog.ui.h:4
+#: data/preferenes_dialog.ui.h:5
 msgid "Password:  "
 msgstr ""
 
 #: data/preferenes_dialog.ui.h:6
-msgid "Quit application on close without confirmation"
+msgid "Preferences"
 msgstr ""
 
 #: data/preferenes_dialog.ui.h:7
+msgid "Quit application without confirmation"
+msgstr ""
+
+#: data/preferenes_dialog.ui.h:8
+msgid "Select the download directory"
+msgstr ""
+
+#: data/preferenes_dialog.ui.h:9
 msgid "Show notifications on track change"
 msgstr ""
 
-#: data/preferenes_dialog.ui.h:8
+#: data/preferenes_dialog.ui.h:10
 msgid "Username:"
 msgstr ""
 
 msgid ""
 "Bulgarian - Vladimir Kolev\n"
 "German - Vladimir Kolev\n"
-"Italian -  Andrea Sciucca"
+"Italian -  Andrea Sciucca\n"
+"Spanish - Damián Nohales"
 msgstr ""
 
-#: data/about_dialog.ui.h:8
+#: data/about_dialog.ui.h:9
 msgid "Flattr gSharkDow"
 msgstr ""
 
-#: data/about_dialog.ui.h:9
+#: data/about_dialog.ui.h:10
 msgid ""
 "Gnome-toolkit based desktop application for downloading music files from "
 "Grooveshark.com"
 msgstr ""
 
-#: data/about_dialog.ui.h:10
+#: data/about_dialog.ui.h:11
 msgid ""
 "gSharkDown is licensed under the GNU GPL v3 License\n"
 "\n"
 "github)\n"
 "Link to the sources: https://github.com/jacktheripper51/groove-dl"
 msgstr ""
+
+#: data/lyrics_dialog.ui.h:1
+msgid "<b>Lyrics for:</b>"
+msgstr ""
+
+#: data/lyrics_dialog.ui.h:2
+msgid "Lyrics viewer"
+msgstr ""
+
+#: data/lyrics_dialog.ui.h:3
+msgid "label"
+msgstr ""

File gsharkdown.py

 from lib.tfuncs import t_search
 from lib.tfuncs import t_key_listener
 from lib.tfuncs import t_lyrics
+from lib.tfuncs import t_update
 import lib.guihelpers
 import locale
 import gettext
         test = CONFIG['quit_without_confirmation']
     except KeyError:
         CONFIG['quit_without_confirmation'] = 1
+        
+    try:
+        test = CONFIG['startup_update_check']
+    except KeyError:
+        CONFIG['startup_update_check'] = 1
     CONFIG.write()
 
 else:
     CONFIG['scrobbling'] = 0
     CONFIG['lastuser'] = ""
     CONFIG['lastpass'] = ""
+    CONFIG['startup_update_check'] = 1
     CONFIG['quit_without_confirmation'] = 1
     CONFIG.write()
 
         builder.connect_signals(self)
         self.tlisten = t_key_listener(self)
         self.tlisten.start()
-        #self.check_for_update(None)
+        if CONFIG['update_checked'] == 0:
+            self.check_for_update(None)
+        else:
+            if CONFIG['startup_update_check'] == 1:
+                self.check_for_update(None)
         self.window.show_all()
         self.hide_download_list()
         
         on the application website. NEVER change the VERSION file
         manually!
         """
-        local = open('%s/VERSION' % BASEPATH, 'r')
-        localversion = local.read().replace("\n", "")
-        checkurl = 'http://bitbucket.org/vkolev/gsharkdown/raw/tip/VERSION'
-        remote = urllib2.urlopen(checkurl)
-        remoteversion = remote.read().replace("\n", "")
-        if remoteversion > localversion:
-            CONFIG['update_checked'] = 0
-            CONFIG.write()
-            upddiag = gtk.MessageDialog(None,
-                                       gtk.DIALOG_DESTROY_WITH_PARENT,
-                                       gtk.MESSAGE_INFO)
-            upddiag.set_title(_("New update"))
-            othertext = _("To update to the latest version click on the button ")
-            othertext += _("'Update'\nand download it. After that you can ")
-            othertext += _("remove the old one and install the new gSharkDown")
-            markup = _("<b>New version <i>%s</i> is available</b>")
-            upddiag.set_markup(markup % remoteversion)
-            upddiag.format_secondary_text(othertext)
-            upddiag.add_buttons(gtk.STOCK_CLOSE, gtk.RESPONSE_CANCEL,
-                                gtk.STOCK_EXECUTE, gtk.RESPONSE_OK)
-            if upddiag.run() == gtk.RESPONSE_OK:
-                downurl = "http://bitbucket.org/vkolev/gsharkdown/downloads"
-                webbrowser.open(downurl)
-            upddiag.destroy()
-        else:
-            if int(CONFIG['update_checked']) == 1:
-                pass
-            else:
-                upddiag = gtk.MessageDialog(None,
-                                       gtk.DIALOG_DESTROY_WITH_PARENT,
-                                       gtk.MESSAGE_INFO)
-                upddiag.set_title(_("No updates"))
-                othertext = _("Congratulations!\n")
-                markup = _("<b>You are using the latest version!</b>")
-                upddiag.set_markup(markup)
-                upddiag.format_secondary_text(othertext)
-                upddiag.add_buttons(gtk.STOCK_CLOSE, gtk.RESPONSE_CANCEL,
-                               gtk.STOCK_OK, gtk.RESPONSE_OK)
-                CONFIG['update_checked'] = 1
-                CONFIG.write()
-                upddiag.run()
-                upddiag.destroy()
+        othertext = _("To update to the latest version ")
+        othertext += _("you can visit the <a href=\"http://https://bitbucket.org/vkolev/gsharkdown/downloads\"> ")
+        othertext += _("download site</a>. If you are using the latest version and whant to be")
+        othertext += _("informed about new versions, just enable the option in the <b>Preferences</b> dialog.")
+        markup = _("<b>New version <span fgcolor=\"red\"><i>%s</i></span> is available</b>")
+        nmarkup = _("<b>You are using the latest version!</b>")
+        CONFIG['update_checked'] = 1
+        CONFIG.write()
+        t = t_update(BASEPATH, markup, nmarkup, othertext)
+        t.start()
 
     def icon_clicked(self, widget, data=None):
         """
         self.quit_without_confirmation = builder.get_object("checkbutton1")
         self.quit_without_confirmation.set_active(int(CONFIG['quit_without_confirmation']))
         self.bubble = builder.get_object("checkbutton2")
+        self.startup_check = builder.get_object("checkbutton4")
+        self.startup_check.set_active(int(CONFIG['startup_update_check']))
         if HAVE_NOTIFY:
             self.bubble.set_active(int(CONFIG['show_notification']))
         else:
             CONFIG['show_notification'] = 1
         else:
             CONFIG['show_notification'] = 0
+            
+        if self.startup_check.get_active():
+            CONFIG['startup_update_check'] = 1
+        else:
+            CONFIG['startup_update_check'] = 0
 
         if self.scrobble.get_active():
             CONFIG['scrobbling'] = 1
         else:
             song = self.app.current_song
             info = "Artist: " + song['ArtistName'] + "\n"
-            info = info + "Song:" + song['SongName'] + "\n"
-            info = info + "Album:" + song['AlbumName'] + "\n"
-            info = info + "Year:" + song['Year'] + "\n"
+            info += "Song:" + song['SongName'] + "\n"
+            info += "Album:" + song['AlbumName'] + "\n"
+            info += "Year:" + song['Year'] + "\n"
             return info
         
     @dbus.service.method(dbus_interface='org.gsharkdown.Single')

File lib/guihelpers.py

         self.destroy()
 
 
+class UpdateDialog(gtk.MessageDialog):
+    """
+    Update dialog helper. Displays information when new version of
+    gSharkDown is available.
+    """
+    def __init__(self, title, message, secondary):
+        gtk.MessageDialog.__init__(self, None,
+                                   gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+                                   gtk.MESSAGE_INFO, gtk.BUTTONS_OK)
+        self.set_title(title)
+        self.set_markup(message)
+        self.format_secondary_markup(secondary)
+        self.set_default_response(gtk.RESPONSE_OK)
+        self.connect('response', self.handle_clicked)
+        
+    def handle_clicked(self, *args):
+        self.destroy()
+
+
 class LyricsDialog:
     """
     Lyrics Dialog to be shown in a Thread. requieres the

File lib/tfuncs.py

 import groove
 import lyrdblib
 import guihelpers
+import urllib2
 
 try:
     import pygst
                                     item['SongID'],
                                     item])
 
+
+class t_update(threading.Thread):
+    
+    def __init__(self, _basepath, _updatemsg, _noupdate, _secondary):
+        """
+        Thread for comparing the local version with the remote.
+        """
+        threading.Thread.__init__(self)
+        self.path = _basepath
+        self.updatemsg = _updatemsg
+        self.noupdate = _noupdate
+        self.secondary = _secondary
+        self.checkurl = 'http://bitbucket.org/vkolev/gsharkdown/raw/tip/VERSION'
+        
+    def run(self):
+        local = open("%s/VERSION" % self.path, 'r')
+        localversion = local.read().replace('\n', '')
+        remote = urllib2.urlopen(self.checkurl)
+        remoteversion = remote.read().replace('\n', '')
+        if remoteversion > localversion:
+            dialog = guihelpers.UpdateDialog('New version',
+                                             self.updatemsg % remoteversion,
+                                             self.secondary)
+            dialog.show_all()
+        else:
+            dialog = guihelpers.UpdateDialog('Latest version',
+                                             self.noupdate,
+                                             self.secondary)
+            dialog.show_all()
+
+
 class t_lyrics(threading.Thread):
 
     def __init__(self, _parent, _uifile, _artist, _song):
-
+        """
+        Thread for searching lyrics for a specified song with given
+        artist and songname.
+        """
         threading.Thread.__init__(self)
         self.parent = _parent
         self.ui = _uifile

File locale/bg_BG/LC_MESSAGES/gsharkdown.mo

Binary file modified.

File locale/bg_BG/LC_MESSAGES/gsharkdown.po

 msgstr ""
 "Project-Id-Version: gsharkdown\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-06 15:21+0200\n"
-"PO-Revision-Date: 2011-09-06 15:22+0100\n"
+"POT-Creation-Date: 2011-09-06 17:26+0200\n"
+"PO-Revision-Date: 2011-09-06 17:29+0100\n"
 "Last-Translator: Vladimir Kolev <vladi@vladimirkolev.com>\n"
 "Language-Team: Bulgarian\n"
 "MIME-Version: 1.0\n"
 "X-Poedit-SourceCharset: utf-8\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
-#: gsharkdown.py:219
+#: gsharkdown.py:226
 msgid "gSharkDown : Download from Grooveshark"
 msgstr "gSharkDown : Изтегляй от Grooveshark"
 
-#: gsharkdown.py:295
+#: gsharkdown.py:306
 msgid "Error saving the playlist"
 msgstr "Грешка при записването на списъка с песни"
 
-#: gsharkdown.py:304
-#: data/main_window.ui.h:22
+#: gsharkdown.py:315
+#: data/main_window.ui.h:16
 msgid "Save playlist to file"
 msgstr "Запиши списъка с песни във файл"
 
-#: gsharkdown.py:322
+#: gsharkdown.py:333
 msgid "Select Playlist to open"
 msgstr "Изберете списък с песни"
 
-#: gsharkdown.py:328
+#: gsharkdown.py:339
 msgid "Playlist files"
 msgstr "Списъци с песни"
 
-#: gsharkdown.py:370
-#: data/about_dialog.ui.h:7
+#: gsharkdown.py:381
+#: data/about_dialog.ui.h:8
 msgid "Check for update"
 msgstr "Провери за нова версия"
 
 #: gsharkdown.py:407
-msgid "New update"
-msgstr "Нова версия"
+msgid "To update to the latest version "
+msgstr "За да обновите до последната версия"
 
 #: gsharkdown.py:408
-msgid "To update to the latest version click on the button "
-msgstr "За да обновите до последната версия изберете бутона"
+msgid "you can visit the <a href=\"http://https://bitbucket.org/vkolev/gsharkdown/downloads\"> "
+msgstr "можете да посетите <a href=\"http://https://bitbucket.org/vkolev/gsharkdown/downloads\"> "
 
 #: gsharkdown.py:409
-msgid ""
-"'Update'\n"
-"and download it. After that you can "
-msgstr ""
-"'Изпълни'\n"
-"и я изтеглете. След това можете да"
+msgid "download site</a>. If you are using the latest version and whant to be"
+msgstr "сайта за изтегляне</a>. Ако използвате послдната версия и искате да сте"
 
 #: gsharkdown.py:410
-msgid "remove the old one and install the new gSharkDown"
-msgstr "премахнете старата версия и да инсталирате новия gSharkDown"
+msgid "informed about new versions, just enable the option in the <b>Preferences</b> dialog."
+msgstr "информирани за нови версии, просто разрешете опцията в диалога <b>Настройки</b>."
 
 #: gsharkdown.py:411
 #, python-format
-msgid "<b>New version <i>%s</i> is available</b>"
-msgstr "<b>Достъпна е нова версия <i>%s</i></b>"
+msgid "<b>New version <span fgcolor=\"red\"><i>%s</i></span> is available</b>"
+msgstr "<b>Достъпна е нова версия<span fgcolor=\"red\"><i>%s</i></span></b>"
 
-#: gsharkdown.py:427
-msgid "No updates"
-msgstr "Няма нови версии"
-
-#: gsharkdown.py:428
-msgid "Congratulations!\n"
-msgstr "Поздравления!\n"
-
-#: gsharkdown.py:429
+#: gsharkdown.py:412
 msgid "<b>You are using the latest version!</b>"
 msgstr "<b>Вие използвате последната версия!</b>"
 
-#: gsharkdown.py:457
-#: gsharkdown.py:483
+#: gsharkdown.py:436
+#: gsharkdown.py:462
 msgid "Title"
 msgstr "Заглавие"
 
-#: gsharkdown.py:462
-#: gsharkdown.py:488
+#: gsharkdown.py:441
+#: gsharkdown.py:467
 msgid "Artist"
 msgstr "Изпълнител"
 
-#: gsharkdown.py:467
+#: gsharkdown.py:446
 msgid "Album"
 msgstr "Албум"
 
+#: gsharkdown.py:451
 #: gsharkdown.py:472
-#: gsharkdown.py:493
-#: gsharkdown.py:509
+#: gsharkdown.py:488
 msgid "SongID"
 msgstr "SongID"
 
-#: gsharkdown.py:504
+#: gsharkdown.py:483
 msgid "File name"
 msgstr "Файл"
 
-#: gsharkdown.py:514
+#: gsharkdown.py:493
 msgid "Download progress"
 msgstr "Прогрес на изтегляне"
 
-#: gsharkdown.py:519
+#: gsharkdown.py:498
 msgid "Size"
 msgstr "Размер"
 
-#: gsharkdown.py:531
+#: gsharkdown.py:510
 msgid "Are you sure to quit?"
 msgstr "Наистина изключване на програмата?"
 
-#: gsharkdown.py:532
+#: gsharkdown.py:511
 msgid "Quit?"
 msgstr "Изход?"
 
-#: gsharkdown.py:705
+#: gsharkdown.py:684
 msgid "Song Information - {songid}"
 msgstr "Информация за песента - {songid}"
 
-#: gsharkdown.py:706
+#: gsharkdown.py:685
 msgid "<b>Filename:</b> {artist} - {title}.mp3\n"
 msgstr "<b>Име на файла:</b> {artist} - {title}.mp3\n"
 
-#: gsharkdown.py:708
+#: gsharkdown.py:687
 msgid "<b>Artist:</b> {artist}\n"
 msgstr "<b>Изпълнител:</b> {artist}\n"
 
-#: gsharkdown.py:709
+#: gsharkdown.py:688
 msgid "<b>Title:</b> {title}\n"
 msgstr "<b>Заглавие:</b> {title}\n"
 
-#: gsharkdown.py:711
+#: gsharkdown.py:690
 msgid "<b>Duration:</b> {mins}:{secs} min\n"
 msgstr "<b>Времетраене:</b> {mins}:{secs} min\n"
 
-#: gsharkdown.py:713
+#: gsharkdown.py:692
 msgid "<b>Album:</b> {album}\n"
 msgstr "<b>Албум:</b> {album}\n"
 
-#: gsharkdown.py:714
+#: gsharkdown.py:693
 msgid "<b>Year:</b> {year}\n"
 msgstr "<b>Година:</b> {year}\n"
 
-#: gsharkdown.py:877
+#: gsharkdown.py:863
 msgid "Playing: {artist} - {title}"
 msgstr "Свири: {artist} - {title}"
 
-#: gsharkdown.py:881
+#: gsharkdown.py:867
 msgid "<b>Playing:</b> {artist} - {title}"
 msgstr "<b>Свири:</b> {artist} - {title}"
 
-#: gsharkdown.py:885
+#: gsharkdown.py:871
 msgid "Now playing"
 msgstr "В момента свири"
 
-#: gsharkdown.py:893
+#: gsharkdown.py:879
 msgid "gSharkDown: GrooveShark Downloader"
 msgstr "gSharkDown: GrooveShark Downloader"
 
-#: gsharkdown.py:905
+#: gsharkdown.py:891
 msgid "Overwrite downloaded file?"
 msgstr "Презаписване на изтегления файл?"
 
-#: gsharkdown.py:908
+#: gsharkdown.py:894
 msgid "Cancel download"
 msgstr "Откажи изтегляне"
 
-#: gsharkdown.py:909
+#: gsharkdown.py:895
 msgid "Download and overwrite"
 msgstr "Изтегли и презапиши"
 
-#: gsharkdown.py:910
+#: gsharkdown.py:896
 msgid "Download renamed"
 msgstr "Изтегли преименуван"
 
-#: gsharkdown.py:912
+#: gsharkdown.py:898
 #, python-format
 msgid ""
 "The file '%s' already exists, maybe you are downloading a file that you downloaded before.\n"
 "\n"
 "Какво искате да направите?"
 
-#: gsharkdown.py:965
+#: gsharkdown.py:951
 #, python-format
 msgid "Downloading %d file"
 msgid_plural "Downloading %d files"
 msgstr[0] "Изтегляне: %d файл"
 msgstr[1] "Изтегляне: %d файла"
 
-#: lib/tfuncs.py:66
+#: lib/tfuncs.py:67
 #, python-format
 msgid "Failed to create '%s' for writing."
 msgstr "Неуспех при създаване на '%s' за записване."
 
-#: lib/tfuncs.py:273
+#: lib/tfuncs.py:308
 msgid "Loading lyrics..."
 msgstr "Зареждане на текста..."
 
-#: lib/tfuncs.py:276
+#: lib/tfuncs.py:311
+#: data/main_window.ui.h:8
 msgid "Lyrics"
 msgstr "Текст"
 
 msgstr "<b>Резултати от търсенето</b>"
 
 #: data/main_window.ui.h:3
-msgid "About"
-msgstr "Относно"
+msgid "Add >"
+msgstr "Добави >"
 
 #: data/main_window.ui.h:4
-msgid "Add item from search results"
-msgstr "Добави обект от резултатите"
+msgid "Add to playlist"
+msgstr "Добави в списъка за просвирване"
 
 #: data/main_window.ui.h:5
+msgid "Check for Updates"
+msgstr "Провери за нова версия"
+
+#: data/main_window.ui.h:6
 msgid "Clear the playlist"
 msgstr "Изчисти списъка за изпълнение"
 
-#: data/main_window.ui.h:6
-msgid "Copy song name to clipboard"
-msgstr "Копирай името на песента в буфера за обмен"
-
 #: data/main_window.ui.h:7
-msgid "Copyto Clipboard"
-msgstr "Копирай в буфера за обмен"
-
-#: data/main_window.ui.h:8
-msgid "Download"
-msgstr "Изтегляне"
+msgid "Edit Preferences"
+msgstr "Редактирай настройки"
 
 #: data/main_window.ui.h:9
-msgid "Download selected"
-msgstr "Изтегли избраните"
+msgid "Menu"
+msgstr "Меню"
 
 #: data/main_window.ui.h:10
-msgid "Exit gSharkDown"
-msgstr "Излез от gSharkDown"
-
-#: data/main_window.ui.h:11
-msgid "Get Lyrics"
-msgstr "Изтегли текст за песента"
-
-#: data/main_window.ui.h:12
-msgid "Info"
-msgstr "Информация"
-
-#: data/main_window.ui.h:13
-msgid "Information about the application"
-msgstr "Информация относно приложението"
-
-#: data/main_window.ui.h:14
 msgid "Next"
 msgstr "Следваща"
 
-#: data/main_window.ui.h:15
-msgid "Open Prefrences"
-msgstr "Отвори настройки"
-
-#: data/main_window.ui.h:16
+#: data/main_window.ui.h:11
 msgid "Open saved playlist"
 msgstr "Отвори запазен списък за изпълнение"
 
-#: data/main_window.ui.h:17
+#: data/main_window.ui.h:12
 msgid "Play/Stop"
 msgstr "Пускане/Спиране"
 
+#: data/main_window.ui.h:13
+msgid "Previous"
+msgstr "Предишна"
+
+#: data/main_window.ui.h:14
+msgid "Quit the application"
+msgstr "Излез от приложението"
+
+#: data/main_window.ui.h:15
+msgid "Remove item from playlist"
+msgstr "Премахни обект от списъка за изпълнение"
+
+#: data/main_window.ui.h:17
+msgid "Search the grooveshark"
+msgstr "Търси в grooveshark"
+
 #: data/main_window.ui.h:18
-#: data/preferenes_dialog.ui.h:5
-msgid "Preferences"
+msgid "Settings"
 msgstr "Настройки"
 
 #: data/main_window.ui.h:19
-msgid "Previous"
-msgstr "Предишна"
+msgid "Show About dialog"
+msgstr "Покажи диалог относно приложението"
 
 #: data/main_window.ui.h:20
-msgid "Quit"
-msgstr "Изход"
-
-#: data/main_window.ui.h:21
-msgid "Remove item from playlist"
-msgstr "Премахни обект от списъка за изпълнение"
-
-#: data/main_window.ui.h:23
-msgid "Search a lyrics for selected song from the playlist"
-msgstr "Търсене на текст за избрана песен от списъка за изпълнение"
-
-#: data/main_window.ui.h:24
-msgid "Search the grooveshark"
-msgstr "Търси в grooveshark"
-
-#: data/main_window.ui.h:25
-msgid "Show selection info"
-msgstr "Покажи информация за избраните"
-
-#: data/main_window.ui.h:26
 msgid "Toggle Repeat all"
 msgstr "Повтаряй всички"
 
-#: data/main_window.ui.h:27
+#: data/main_window.ui.h:21
 msgid "Toggle Shuffle"
 msgstr "Разбъркано просвирване"
 
-#: data/main_window.ui.h:28
+#: data/main_window.ui.h:22
 msgid "gSharkDown"
 msgstr "gSharkDown"
 
-#: data/main_window.ui.h:29
-msgid "label"
-msgstr "label"
-
 #: data/preferenes_dialog.ui.h:1
 msgid "<b>Last.fm Scrobbling</b>"
 msgstr "<b>Last.fm Scrobbling</b>"
 
 #: data/preferenes_dialog.ui.h:2
+msgid "Check for updates on startup"
+msgstr "Провери за обновления при стартиране"
+
+#: data/preferenes_dialog.ui.h:3
 msgid "Download Directory:"
 msgstr "Директория за изтегляне:"
 
-#: data/preferenes_dialog.ui.h:3
+#: data/preferenes_dialog.ui.h:4
 msgid "Enable Last.fm Scrobbling"
 msgstr "Разреши Last.fm Scrobbling"
 
-#: data/preferenes_dialog.ui.h:4
+#: data/preferenes_dialog.ui.h:5
 msgid "Password:  "
 msgstr "Парола:     "
 
 #: data/preferenes_dialog.ui.h:6
-msgid "Quit application on close without confirmation"
-msgstr "Изключи приложението без потвърждение"
+msgid "Preferences"
+msgstr "Настройки"
 
 #: data/preferenes_dialog.ui.h:7
+msgid "Quit application without confirmation"
+msgstr "Изход от приложението без потвърждение"
+
+#: data/preferenes_dialog.ui.h:8
+msgid "Select the download directory"
+msgstr "Изберете дестинация за записване"
+
+#: data/preferenes_dialog.ui.h:9
 msgid "Show notifications on track change"
 msgstr "Показвай информативен балон при смяна на песента"
 
-#: data/preferenes_dialog.ui.h:8
+#: data/preferenes_dialog.ui.h:10
 msgid "Username:"
 msgstr "Потребител:"
 
 msgid ""
 "Bulgarian - Vladimir Kolev\n"
 "German - Vladimir Kolev\n"
-"Italian -  Andrea Sciucca"
+"Italian -  Andrea Sciucca\n"
+"Spanish - Damián Nohales"
 msgstr ""
 "Bulgarian - Vladimir Kolev\n"
 "German - Vladimir Kolev\n"
-"Italian -  Andrea Sciucca"
+"Italian -  Andrea Sciucca\n"
+"Spanish - Damián Nohales"
 
-#: data/about_dialog.ui.h:8
+#: data/about_dialog.ui.h:9
 msgid "Flattr gSharkDow"
 msgstr "Flattr gSharkDow"
 
-#: data/about_dialog.ui.h:9
+#: data/about_dialog.ui.h:10
 msgid "Gnome-toolkit based desktop application for downloading music files from Grooveshark.com"
 msgstr "Gnome-toolkit базирано, десктоп приложение за изтегляне на файлове от Grooveshark.com"
 
-#: data/about_dialog.ui.h:10
+#: data/about_dialog.ui.h:11
 msgid ""
 "gSharkDown is licensed under the GNU GPL v3 License\n"
 "\n"
 "Библиотеката groove.py е разработена от George Stephanos (jacktheripper51 @ github)\n"
 "Вързка към изходния код: https://github.com/jacktheripper51/groove-dl"
 
+#: data/lyrics_dialog.ui.h:1
+msgid "<b>Lyrics for:</b>"
+msgstr "<b>Текст за:</b>"
+
+#: data/lyrics_dialog.ui.h:2
+msgid "Lyrics viewer"
+msgstr "Текст на песен"
+
+#: data/lyrics_dialog.ui.h:3
+msgid "label"
+msgstr "label"
+
+#~ msgid "About"
+#~ msgstr "Относно"
+#~ msgid "Add item from search results"
+#~ msgstr "Добави обект от резултатите"
+#~ msgid "Copy song name to clipboard"
+#~ msgstr "Копирай името на песента в буфера за обмен"
+#~ msgid "Copyto Clipboard"
+#~ msgstr "Копирай в буфера за обмен"
+#~ msgid "Download"
+#~ msgstr "Изтегляне"
+#~ msgid "Download selected"
+#~ msgstr "Изтегли избраните"
+#~ msgid "Exit gSharkDown"
+#~ msgstr "Излез от gSharkDown"
+#~ msgid "Get Lyrics"
+#~ msgstr "Изтегли текст за песента"
+#~ msgid "Info"
+#~ msgstr "Информация"
+#~ msgid "Open Prefrences"
+#~ msgstr "Отвори настройки"
+#~ msgid "Quit"
+#~ msgstr "Изход"
+#~ msgid "Search a lyrics for selected song from the playlist"
+#~ msgstr "Търсене на текст за избрана песен от списъка за изпълнение"
+#~ msgid "Show selection info"
+#~ msgstr "Покажи информация за избраните"
+#~ msgid "New update"
+#~ msgstr "Нова версия"
+#~ msgid ""
+#~ "'Update'\n"
+#~ "and download it. After that you can "
+#~ msgstr ""
+#~ "'Изпълни'\n"
+#~ "и я изтеглете. След това можете да"
+#~ msgid "remove the old one and install the new gSharkDown"
+#~ msgstr "премахнете старата версия и да инсталирате новия gSharkDown"
+#~ msgid "No updates"
+#~ msgstr "Няма нови версии"
+#~ msgid "Congratulations!\n"
+#~ msgstr "Поздравления!\n"
 #~ msgid "gSharkDown is already running!"
 #~ msgstr "gSharkDown е вече стартиран!"
 #~ msgid "gSharkDown Running"
 #~ msgstr "gSharkDown е стартиран"
 #~ msgid "gSharkDown : Grooveshark Downloader"
 #~ msgstr "gSharkDown : Grooveshark Downloader"
-#~ msgid "Select destination directory"
-#~ msgstr "Изберете дестинация за записване"
 #~ msgid "Ready"
 #~ msgstr "Готов"
-#~ msgid "<b>Lyrics for:</b>"
-#~ msgstr "<b>Текст за:</b>"
-#~ msgid "Lyrics viewer"
-#~ msgstr "Текст на песен"
 #~ msgid "ERROR: Cant't find lyrics for {artist} - {track}"
 #~ msgstr "ГРЕШКА: Не може да бъде намерен текст за {artist} - {track}"
 

File locale/de_DE/LC_MESSAGES/gsharkdown.mo

Binary file modified.

File locale/de_DE/LC_MESSAGES/gsharkdown.po

 msgstr ""
 "Project-Id-Version: gsharkdown\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-06 15:21+0200\n"
-"PO-Revision-Date: 2011-09-06 15:22+0100\n"
+"POT-Creation-Date: 2011-09-06 17:26+0200\n"
+"PO-Revision-Date: 2011-09-06 17:33+0100\n"
 "Last-Translator: Vladimir Kolev <vladi@vladimirkolev.com>\n"
 "Language-Team: German <de@li.org>\n"
 "MIME-Version: 1.0\n"
 "X-Generator: Launchpad (build 13604)\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
-#: gsharkdown.py:219
+#: gsharkdown.py:226
 msgid "gSharkDown : Download from Grooveshark"
 msgstr "gSharkDown : von Grooveshark herunterladen"
 
-#: gsharkdown.py:295
+#: gsharkdown.py:306
 msgid "Error saving the playlist"
 msgstr "Fehler beim Speicher der Wiedergabeliste"
 
-#: gsharkdown.py:304
-#: data/main_window.ui.h:22
+#: gsharkdown.py:315
+#: data/main_window.ui.h:16
 msgid "Save playlist to file"
 msgstr "Wiedergabeliste in Datei speichern"
 
-#: gsharkdown.py:322
+#: gsharkdown.py:333
 msgid "Select Playlist to open"
 msgstr "Wiedergabeliste auswählen"
 
-#: gsharkdown.py:328
+#: gsharkdown.py:339
 msgid "Playlist files"
 msgstr "Wiedergabeliste-Dateien"
 
-#: gsharkdown.py:370
-#: data/about_dialog.ui.h:7
+#: gsharkdown.py:381
+#: data/about_dialog.ui.h:8
 msgid "Check for update"
 msgstr "Nach Updates suchen"
 
 #: gsharkdown.py:407
-msgid "New update"
-msgstr "Neues Update"
+msgid "To update to the latest version "
+msgstr "Um auf die neueste Version zu upgraden"
 
 #: gsharkdown.py:408
-msgid "To update to the latest version click on the button "
-msgstr "Um auf die neueste Version zu upgraden klicken sie Bitte auf "
+msgid "you can visit the <a href=\"http://https://bitbucket.org/vkolev/gsharkdown/downloads\"> "
+msgstr "Sie können die <a href=\"http://https://bitbucket.org/vkolev/gsharkdown/downloads\"> "
 
 #: gsharkdown.py:409
-msgid ""
-"'Update'\n"
-"and download it. After that you can "
-msgstr "'Ausführen' button und laden Sie die runter. Danach können Sie "
+msgid "download site</a>. If you are using the latest version and whant to be"
+msgstr "Download seite</a> besuchen. Sollten Sie die neueste Version verwenden und möchten"
 
 #: gsharkdown.py:410
-msgid "remove the old one and install the new gSharkDown"
-msgstr "die alte Version löschen und den neuen gSharkDown installieren."
+msgid "informed about new versions, just enable the option in the <b>Preferences</b> dialog."
+msgstr "informiert werden über neue Versionen, dann können Sie das in den <b>Einstellungen</b> dialog erlauben."
 
 #: gsharkdown.py:411
 #, python-format
-msgid "<b>New version <i>%s</i> is available</b>"
-msgstr "<b>Version <i>%s</i> ist verfügbar</b>"
+msgid "<b>New version <span fgcolor=\"red\"><i>%s</i></span> is available</b>"
+msgstr "<b>Neue Version <span fgcolor=\"red\"><i>%s</i></span> ist verfügbar</b>"
 
-#: gsharkdown.py:427
-msgid "No updates"
-msgstr "Keine Aktualisierungen"
-
-#: gsharkdown.py:428
-msgid "Congratulations!\n"
-msgstr "Glückwunsch!\n"
-
-#: gsharkdown.py:429
+#: gsharkdown.py:412
 msgid "<b>You are using the latest version!</b>"
 msgstr "<b>Sie benutzen die neueste Version!</b>"
 
-#: gsharkdown.py:457
-#: gsharkdown.py:483
+#: gsharkdown.py:436
+#: gsharkdown.py:462
 msgid "Title"
 msgstr "Titel"
 
-#: gsharkdown.py:462
-#: gsharkdown.py:488
+#: gsharkdown.py:441
+#: gsharkdown.py:467
 msgid "Artist"
 msgstr "Künstler"
 
-#: gsharkdown.py:467
+#: gsharkdown.py:446
 msgid "Album"
 msgstr "Album"
 
+#: gsharkdown.py:451
 #: gsharkdown.py:472
-#: gsharkdown.py:493
-#: gsharkdown.py:509
+#: gsharkdown.py:488
 msgid "SongID"
 msgstr "SongID"
 
-#: gsharkdown.py:504
+#: gsharkdown.py:483
 msgid "File name"
 msgstr "Datei"
 
-#: gsharkdown.py:514
+#: gsharkdown.py:493
 msgid "Download progress"
 msgstr "Heruntergeladen"
 
-#: gsharkdown.py:519
+#: gsharkdown.py:498
 msgid "Size"
 msgstr "Größe"
 
-#: gsharkdown.py:531
+#: gsharkdown.py:510
 msgid "Are you sure to quit?"
 msgstr "Sind Sie Sicher zu beenden?"
 
-#: gsharkdown.py:532
+#: gsharkdown.py:511
 msgid "Quit?"
 msgstr "Beenden?"
 
-#: gsharkdown.py:705
+#: gsharkdown.py:684
 msgid "Song Information - {songid}"
 msgstr "Lied Information - {songid}"
 
-#: gsharkdown.py:706
+#: gsharkdown.py:685
 msgid "<b>Filename:</b> {artist} - {title}.mp3\n"
 msgstr "<b>Dateiname:</b> {artist} - {title}.mp3\n"
 
-#: gsharkdown.py:708
+#: gsharkdown.py:687
 msgid "<b>Artist:</b> {artist}\n"
 msgstr "<b>Künstler:</b> {artist}\n"
 
-#: gsharkdown.py:709
+#: gsharkdown.py:688
 msgid "<b>Title:</b> {title}\n"
 msgstr "<b>Titel:</b> {title}\n"
 
-#: gsharkdown.py:711
+#: gsharkdown.py:690
 msgid "<b>Duration:</b> {mins}:{secs} min\n"
 msgstr "<b>Länge:</b> {mins}:{secs} min\n"
 
-#: gsharkdown.py:713
+#: gsharkdown.py:692
 msgid "<b>Album:</b> {album}\n"
 msgstr "<b>Album:</b> {album}\n"
 
-#: gsharkdown.py:714
+#: gsharkdown.py:693
 msgid "<b>Year:</b> {year}\n"
 msgstr "<b>Jahr:</b> {year}\n"
 
-#: gsharkdown.py:877
+#: gsharkdown.py:863
 msgid "Playing: {artist} - {title}"
 msgstr "Abspielen: {artist} - {title}"
 
-#: gsharkdown.py:881
+#: gsharkdown.py:867
 msgid "<b>Playing:</b> {artist} - {title}"
 msgstr "<b>Abspielen:</b> {artist} - {title}"
 
-#: gsharkdown.py:885
+#: gsharkdown.py:871
 msgid "Now playing"
 msgstr "Wiedergabe von"
 
-#: gsharkdown.py:893
+#: gsharkdown.py:879
 msgid "gSharkDown: GrooveShark Downloader"
 msgstr "gSharkDown: GrooveShark Downloader"
 
-#: gsharkdown.py:905
+#: gsharkdown.py:891
 msgid "Overwrite downloaded file?"
 msgstr "Überschreibe die herunterladende Datei?"
 
-#: gsharkdown.py:908
+#: gsharkdown.py:894
 msgid "Cancel download"
 msgstr "Herunterladen abbrechen"
 
-#: gsharkdown.py:909
+#: gsharkdown.py:895
 msgid "Download and overwrite"
 msgstr "Herunterladen und Überschreiben"
 
-#: gsharkdown.py:910
+#: gsharkdown.py:896
 msgid "Download renamed"
 msgstr "Herunterlade mit andere name"
 
-#: gsharkdown.py:912
+#: gsharkdown.py:898
 #, python-format
 msgid ""
 "The file '%s' already exists, maybe you are downloading a file that you downloaded before.\n"
 "\n"
 "Was würden Sie tun?"
 
-#: gsharkdown.py:965
+#: gsharkdown.py:951
 #, python-format
 msgid "Downloading %d file"
 msgid_plural "Downloading %d files"
 msgstr[0] "Herunterlade %d Datei"
 msgstr[1] "Herunterlade %d Dateien"
 
-#: lib/tfuncs.py:66
+#: lib/tfuncs.py:67
 #, python-format
 msgid "Failed to create '%s' for writing."
 msgstr "Fehler beim erstellen von '%s' zum schreiben."
 
-#: lib/tfuncs.py:273
+#: lib/tfuncs.py:308
 msgid "Loading lyrics..."
 msgstr "Lade Songtext"
 
-#: lib/tfuncs.py:276
+#: lib/tfuncs.py:311
+#: data/main_window.ui.h:8
 msgid "Lyrics"
 msgstr "Songtext"
 
 msgstr "<b>Suchergebnisse</b>"
 
 #: data/main_window.ui.h:3
-msgid "About"
-msgstr "Über"
+msgid "Add >"
+msgstr "Einfügen >"
 
 #: data/main_window.ui.h:4
-msgid "Add item from search results"
-msgstr "Lied zur Wiederhabeliste einfügen"
+msgid "Add to playlist"
+msgstr "In Wiedergabeliste einfügen"
 
 #: data/main_window.ui.h:5
+msgid "Check for Updates"
+msgstr "Nach Updates suchen"
+
+#: data/main_window.ui.h:6
 msgid "Clear the playlist"
 msgstr "Wiedergabeliste leeren"
 
-#: data/main_window.ui.h:6
-msgid "Copy song name to clipboard"
-msgstr "Lied in Clipboard kopieren"
-
 #: data/main_window.ui.h:7
-msgid "Copyto Clipboard"
-msgstr "Kopiere in Clipboard"
-
-#: data/main_window.ui.h:8
-msgid "Download"
-msgstr "Herunterladen"
+msgid "Edit Preferences"
+msgstr "Einstelliungen bearbeiten"
 
 #: data/main_window.ui.h:9
-msgid "Download selected"
-msgstr "Ausgewählte herunterladen"
+msgid "Menu"
+msgstr "Menü"
 
 #: data/main_window.ui.h:10
-msgid "Exit gSharkDown"
-msgstr "gSharkDown beenden"
-
-#: data/main_window.ui.h:11
-msgid "Get Lyrics"
-msgstr "Songtexte herunterladen"
-
-#: data/main_window.ui.h:12
-msgid "Info"
-msgstr "Info"
-
-#: data/main_window.ui.h:13
-msgid "Information about the application"
-msgstr "Informationen über die Applikation"
-
-#: data/main_window.ui.h:14
 msgid "Next"
 msgstr "Nächster Titel"
 
-#: data/main_window.ui.h:15
-msgid "Open Prefrences"
-msgstr "Einstellungen öffnen"
-
-#: data/main_window.ui.h:16
+#: data/main_window.ui.h:11
 msgid "Open saved playlist"
 msgstr "Gespeicherte Wiedergabeliste öffnen"
 
-#: data/main_window.ui.h:17
+#: data/main_window.ui.h:12
 msgid "Play/Stop"
 msgstr "Abspielen/Anhalten"
 
-#: data/main_window.ui.h:18
-#: data/preferenes_dialog.ui.h:5
-msgid "Preferences"
-msgstr "Einstelliungen"
-
-#: data/main_window.ui.h:19
+#: data/main_window.ui.h:13
 msgid "Previous"
 msgstr "Vorheriger Titel"
 
-#: data/main_window.ui.h:20
-msgid "Quit"
-msgstr "Beenden"
+#: data/main_window.ui.h:14
+msgid "Quit the application"
+msgstr "Applikation beenden"
 
-#: data/main_window.ui.h:21
+#: data/main_window.ui.h:15
 msgid "Remove item from playlist"
 msgstr "Lied von der Wiedergabeliste löschen"
 
-#: data/main_window.ui.h:23
-msgid "Search a lyrics for selected song from the playlist"
-msgstr "Suche nach Songtexte von Lieder in der Wiedergabeliste"
-
-#: data/main_window.ui.h:24
+#: data/main_window.ui.h:17
 msgid "Search the grooveshark"
 msgstr "Suche in grooveshark"
 
-#: data/main_window.ui.h:25
-msgid "Show selection info"
-msgstr "Zeige Information über die Ausgewählte"
+#: data/main_window.ui.h:18
+msgid "Settings"
+msgstr "Einstellungen"
 
-#: data/main_window.ui.h:26
+#: data/main_window.ui.h:19
+msgid "Show About dialog"
+msgstr "About-Dialog ansehen"
+
+#: data/main_window.ui.h:20
 msgid "Toggle Repeat all"
 msgstr "Umschalten Alle wiederholen"
 
-#: data/main_window.ui.h:27
+#: data/main_window.ui.h:21
 msgid "Toggle Shuffle"
 msgstr "Umschalten Shuffle"
 
-#: data/main_window.ui.h:28
+#: data/main_window.ui.h:22
 msgid "gSharkDown"
 msgstr "gSharkDown"
 
-#: data/main_window.ui.h:29
-msgid "label"
-msgstr "label"
-
 #: data/preferenes_dialog.ui.h:1
 msgid "<b>Last.fm Scrobbling</b>"
 msgstr "<b>Last.fm Scrobbling</b>"
 
 #: data/preferenes_dialog.ui.h:2
+msgid "Check for updates on startup"
+msgstr "Nach Updates beim Start suchen"
+
+#: data/preferenes_dialog.ui.h:3
 msgid "Download Directory:"
 msgstr "Herunterlade-Verzeichniss"
 
-#: data/preferenes_dialog.ui.h:3
+#: data/preferenes_dialog.ui.h:4
 msgid "Enable Last.fm Scrobbling"
 msgstr "Last.fm Scrobbling erlauben"
 
-#: data/preferenes_dialog.ui.h:4
+#: data/preferenes_dialog.ui.h:5
 msgid "Password:  "
 msgstr "Passwort:  "
 
 #: data/preferenes_dialog.ui.h:6
-msgid "Quit application on close without confirmation"
+msgid "Preferences"
+msgstr "Einstelliungen"
+
+#: data/preferenes_dialog.ui.h:7
+msgid "Quit application without confirmation"
 msgstr "Programm beenden ohne Bestätigung"
 
-#: data/preferenes_dialog.ui.h:7
+#: data/preferenes_dialog.ui.h:8
+msgid "Select the download directory"
+msgstr "Zielverzeichniss auswählen"
+
+#: data/preferenes_dialog.ui.h:9
 msgid "Show notifications on track change"
 msgstr "Notifikation-balon anzeigen beim Liedwächsel"
 
-#: data/preferenes_dialog.ui.h:8
+#: data/preferenes_dialog.ui.h:10
 msgid "Username:"
 msgstr "Benutzername:"
 
 msgid ""
 "Bulgarian - Vladimir Kolev\n"
 "German - Vladimir Kolev\n"
-"Italian -  Andrea Sciucca"
+"Italian -  Andrea Sciucca\n"
+"Spanish - Damián Nohales"
 msgstr ""
 "Bulgarian - Vladimir Kolev\n"
 "German - Vladimir Kolev\n"
-"Italian -  Andrea Sciucca"
+"Italian -  Andrea Sciucca\n"
+"Spa