Commits

Damián Nohales committed c2849ab Merge

Merge vkolev changes.

Comments (0)

Files changed (3)

 webaddress: `groove-dl@github <https://github.com/jacktheripper51/groove-dl>`_
 
 Special thanks to Damián Nohales for his commits.
+Special thanks to speps for the patches
+Special thanks to Ragi for the patch fixing multiple download crash
 
 Any comments and help are welcome

data/main_window.ui

-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
 <interface>
   <requires lib="gtk+" version="2.18"/>
   <!-- interface-naming-policy project-wide -->
-  <object class="GtkMenu" id="downloadmenu">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <child>
-      <object class="GtkImageMenuItem" id="menuitem2">
-        <property name="label">gtk-cancel</property>
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="use_action_appearance">False</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-        <signal name="activate" handler="on_cancel_download" swapped="no"/>
-      </object>
-    </child>
-  </object>
   <object class="GtkImage" id="image1">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
     <property name="icon_name">system-software-update</property>
   </object>
-  <object class="GtkImage" id="image_add">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-add</property>
-  </object>
-  <object class="GtkImage" id="image_clear">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-clear</property>
-  </object>
-  <object class="GtkImage" id="image_delete">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-delete</property>
-  </object>
-  <object class="GtkImage" id="image_download">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="xpad">4</property>
-    <property name="icon_name">go-down</property>
-  </object>
-  <object class="GtkImage" id="image_information">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">dialog-information</property>
-  </object>
-  <object class="GtkImage" id="image_open">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-open</property>
-  </object>
-  <object class="GtkImage" id="image_playlist_repeat">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">media-playlist-repeat</property>
-  </object>
-  <object class="GtkImage" id="image_playlist_shuffle">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">media-playlist-shuffle</property>
-  </object>
-  <object class="GtkImage" id="image_resume">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">document-revert</property>
-  </object>
-  <object class="GtkImage" id="image_save_as">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-save-as</property>
-  </object>
   <object class="GtkImage" id="image_volume_high">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
     <property name="pixel_size">25</property>
     <property name="icon_name">audio-volume-high</property>
   </object>
   <object class="GtkMenu" id="mainmenu">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
     <child>
       <object class="GtkImageMenuItem" id="perfsmenuitem">
         <property name="label">gtk-preferences</property>
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <property name="tooltip_text" translatable="yes">Edit Preferences</property>
-        <property name="use_action_appearance">False</property>
         <property name="use_underline">True</property>
         <property name="use_stock">True</property>
-        <signal name="activate" handler="edit_preferences" swapped="no"/>
+        <signal name="activate" handler="edit_preferences"/>
       </object>
     </child>
     <child>
       <object class="GtkImageMenuItem" id="chekupdatemenuitem">
         <property name="label" translatable="yes">Check for Updates</property>
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <property name="tooltip_text" translatable="yes">Check for Updates</property>
-        <property name="use_action_appearance">False</property>
         <property name="image">image1</property>
         <property name="use_stock">False</property>
-        <signal name="activate" handler="check_for_update" swapped="no"/>
+        <signal name="activate" handler="check_for_update"/>
       </object>
     </child>
     <child>
       <object class="GtkImageMenuItem" id="aboutmenuitem">
         <property name="label">gtk-about</property>
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <property name="tooltip_text" translatable="yes">Show About dialog</property>
-        <property name="use_action_appearance">False</property>
         <property name="use_underline">True</property>
         <property name="use_stock">True</property>
-        <signal name="activate" handler="show_about" swapped="no"/>
+        <signal name="activate" handler="show_about"/>
       </object>
     </child>
     <child>
       <object class="GtkSeparatorMenuItem" id="menuitem1">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
       </object>
     </child>
     <child>
       <object class="GtkImageMenuItem" id="quitmenuitem">
         <property name="label">gtk-quit</property>
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <property name="tooltip_text" translatable="yes">Quit the application</property>
-        <property name="use_action_appearance">False</property>
         <property name="use_underline">True</property>
         <property name="use_stock">True</property>
-        <signal name="activate" handler="quit_app" swapped="no"/>
+        <signal name="activate" handler="quit_app"/>
       </object>
     </child>
   </object>
   <object class="GtkWindow" id="mainwindow">
     <property name="height_request">560</property>
-    <property name="can_focus">False</property>
     <property name="title" translatable="yes">gSharkDown</property>
     <property name="window_position">center</property>
     <property name="default_width">700</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
         <child>
           <object class="GtkToolbar" id="toolbar1">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
             <property name="icon_size_set">True</property>
             <child>
               <object class="GtkToolItem" id="toolbutton1">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <child>
                   <object class="GtkEntry" id="toolentry_search">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="tooltip_text" translatable="yes">Search the grooveshark</property>
-                    <property name="invisible_char"></property>
+                    <property name="invisible_char">&#x2022;</property>
                     <property name="xalign">0.039999999105930328</property>
                     <property name="primary_icon_stock">gtk-find</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>
-                    <signal name="activate" handler="search_grooveshark" swapped="no"/>
+                    <signal name="activate" handler="search_grooveshark"/>
                   </object>
                 </child>
               </object>
             <child>
               <object class="GtkSeparatorToolItem" id="toolbutton12">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
               </object>
               <packing>
                 <property name="expand">False</property>
             <child>
               <object class="GtkToolButton" id="toolbutton_play_previous">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Previous</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">Previous</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-media-previous</property>
-                <signal name="clicked" handler="play_previous" swapped="no"/>
+                <signal name="clicked" handler="play_previous"/>
               </object>
               <packing>
                 <property name="expand">False</property>
             <child>
               <object class="GtkToolButton" id="toolbutton_play">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Play/Stop</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">Play/Stop</property>
                 <property name="use_underline">True</property>
                 <property name="icon_name">media-playback-start</property>
-                <signal name="clicked" handler="play_selected" swapped="no"/>
+                <signal name="clicked" handler="play_selected"/>
               </object>
               <packing>
                 <property name="expand">False</property>
             <child>
               <object class="GtkToolButton" id="toolbutton_play_next">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Next</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">Next</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-media-next</property>
-                <signal name="clicked" handler="play_next" swapped="no"/>
+                <signal name="clicked" handler="play_next"/>
               </object>
               <packing>
                 <property name="expand">False</property>
             <child>
               <object class="GtkToolItem" id="toolbutton_volume">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <child>
                   <object class="GtkVolumeButton" id="volumebutton1">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="has_tooltip">True</property>
-                    <property name="use_action_appearance">False</property>
                     <property name="relief">none</property>
                     <property name="focus_on_click">False</property>
                     <property name="orientation">vertical</property>
 audio-volume-high
 audio-volume-low
 audio-volume-medium</property>
-                    <signal name="value-changed" handler="on_volume_change" swapped="no"/>
+                    <signal name="value_changed" handler="on_volume_change"/>
                   </object>
                 </child>
               </object>
             <child>
               <object class="GtkToolButton" id="toolbutton_lyrics">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="is_important">True</property>
                 <property name="label" translatable="yes">Lyrics</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-italic</property>
-                <signal name="clicked" handler="get_lyrics" swapped="no"/>
+                <signal name="clicked" handler="get_lyrics"/>
               </object>
               <packing>
                 <property name="expand">False</property>
             <child>
               <object class="GtkToolItem" id="aligment">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <child>
                   <object class="GtkLabel" id="songinfo">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                     <property name="selectable">True</property>
                     <property name="ellipsize">end</property>
                     <property name="single_line_mode">True</property>
             <child>
               <object class="GtkToolButton" id="toolbutton2">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Menu</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">Settings</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-properties</property>
-                <signal name="clicked" handler="show_prefs_menu" swapped="no"/>
+                <signal name="clicked" handler="show_prefs_menu"/>
               </object>
               <packing>
                 <property name="expand">False</property>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
             <property name="padding">1</property>
             <property name="position">0</property>
           </packing>
               <object class="GtkVBox" id="vbox2">
                 <property name="height_request">400</property>
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <child>
                   <object class="GtkHPaned" id="hpaned1">
                     <property name="visible">True</property>
                       <object class="GtkFrame" id="frame1">
                         <property name="width_request">250</property>
                         <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">8</property>
                             <property name="right_padding">8</property>
                             <child>
                               <object class="GtkVBox" id="vbox4">
                                 <property name="visible">True</property>
-                                <property name="can_focus">False</property>
                                 <child>
                                   <object class="GtkScrolledWindow" id="scrolledwindow1">
                                     <property name="visible">True</property>
                                     </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="hbox4">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
                                     <child>
                                       <object class="GtkButton" id="button_songinfo">
                                         <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="image">image_information</property>
-                                        <signal name="clicked" handler="show_info" swapped="no"/>
+                                        <signal name="clicked" handler="show_info"/>
                                       </object>
                                       <packing>
                                         <property name="expand">False</property>
-                                        <property name="fill">True</property>
                                         <property name="position">0</property>
                                       </packing>
                                     </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="image">image_download</property>
-                                        <signal name="clicked" handler="download_selected" swapped="no"/>
+                                        <signal name="clicked" handler="download_selected"/>
                                       </object>
                                       <packing>
                                         <property name="expand">False</property>
-                                        <property name="fill">True</property>
                                         <property name="position">1</property>
                                       </packing>
                                     </child>
                                     <child>
                                       <object class="GtkAlignment" id="alignment4">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
                                         <child>
                                           <placeholder/>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
                                         <property name="position">2</property>
                                       </packing>
                                     </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="image">image_add</property>
-                                        <signal name="clicked" handler="add_to_playlist" swapped="no"/>
+                                        <signal name="clicked" handler="add_to_playlist"/>
                                       </object>
                                       <packing>
                                         <property name="expand">False</property>
-                                        <property name="fill">True</property>
                                         <property name="position">3</property>
                                       </packing>
                                     </child>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
                                     <property name="position">1</property>
                                   </packing>
                                 </child>
                         <child type="label">
                           <object class="GtkAlignment" id="alignment5">
                             <property name="visible">True</property>
-                            <property name="can_focus">False</property>
                             <property name="left_padding">7</property>
                             <child>
                               <object class="GtkHBox" id="hbox3">
                                 <property name="visible">True</property>
-                                <property name="can_focus">False</property>
                                 <child>
                                   <object class="GtkImage" id="image7">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
                                     <property name="stock">gtk-find</property>
                                   </object>
                                   <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
                                     <property name="position">0</property>
                                   </packing>
                                 </child>
                                 <child>
                                   <object class="GtkLabel" id="label4">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
                                     <property name="label" translatable="yes">&lt;b&gt;Search Results&lt;/b&gt;</property>
                                     <property name="use_markup">True</property>
                                   </object>
                                   <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
                                     <property name="position">1</property>
                                   </packing>
                                 </child>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
                     <property name="padding">3</property>
                     <property name="position">0</property>
                   </packing>
                   <object class="GtkFrame" id="frame2">
                     <property name="width_request">300</property>
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                     <property name="label_xalign">0.0099999997764825821</property>
                     <property name="shadow_type">none</property>
                     <child>
                       <object class="GtkAlignment" id="alignment2">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
                         <property name="left_padding">8</property>
                         <property name="right_padding">8</property>
                         <child>
                           <object class="GtkVBox" id="vbox3">
                             <property name="visible">True</property>
-                            <property name="can_focus">False</property>
                             <child>
                               <object class="GtkScrolledWindow" id="scrolledwindow2">
                                 <property name="visible">True</property>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
-                                <property name="fill">True</property>
                                 <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
                               <object class="GtkHBox" id="hbox1">
                                 <property name="visible">True</property>
-                                <property name="can_focus">False</property>
                                 <child>
                                   <object class="GtkButton" id="button_delete">
                                     <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="image">image_delete</property>
-                                    <signal name="clicked" handler="remove_from_playlist" swapped="no"/>
+                                    <signal name="clicked" handler="remove_from_playlist"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
                                     <property name="position">0</property>
                                   </packing>
                                 </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="image">image_clear</property>
-                                    <signal name="clicked" handler="clear_playlist" swapped="no"/>
+                                    <signal name="clicked" handler="clear_playlist"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</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">True</property>
-                                    <property name="use_action_appearance">False</property>
                                     <property name="image">image_playlist_repeat</property>
-                                    <signal name="toggled" handler="toggle_repeat" swapped="no"/>
+                                    <signal name="toggled" handler="toggle_repeat"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
                                     <property name="position">2</property>
                                   </packing>
                                 </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="image">image_playlist_shuffle</property>
-                                    <signal name="toggled" handler="toggle_shuffle" swapped="no"/>
+                                    <signal name="toggled" handler="toggle_shuffle"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
                                     <property name="position">3</property>
                                   </packing>
                                 </child>
                                 <child>
                                   <object class="GtkAlignment" id="alignment3">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
                                     <child>
                                       <placeholder/>
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
                                     <property name="position">4</property>
                                   </packing>
                                 </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="image">image_save_as</property>
-                                    <signal name="clicked" handler="save_as_playlist" swapped="no"/>
+                                    <signal name="clicked" handler="save_as_playlist"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
                                     <property name="position">5</property>
                                   </packing>
                                 </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="image">image_open</property>
-                                    <signal name="clicked" handler="open_saved_playlist" swapped="no"/>
+                                    <signal name="clicked" handler="open_saved_playlist"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
                                     <property name="position">6</property>
                                   </packing>
                                 </child>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
-                                <property name="fill">True</property>
                                 <property name="position">1</property>
                               </packing>
                             </child>
                     <child type="label">
                       <object class="GtkHBox" id="hbox2">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
                         <child>
                           <object class="GtkImage" id="image6">
                             <property name="visible">True</property>
-                            <property name="can_focus">False</property>
                             <property name="icon_name">audio-x-generic</property>
                           </object>
                           <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
                           <object class="GtkLabel" id="label5">
                             <property name="visible">True</property>
-                            <property name="can_focus">False</property>
                             <property name="label" translatable="yes">&lt;b&gt;Playlist&lt;/b&gt;</property>
                             <property name="use_markup">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">False</property>
-                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
             <child type="tab">
               <object class="GtkHBox" id="hbox5">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <child>
                   <object class="GtkImage" id="image3">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                     <property name="icon_name">media-playback-start</property>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
                     <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                     <property name="label" translatable="yes">&lt;b&gt;Player&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
             <child>
               <object class="GtkVBox" id="vbox5">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <child>
                   <object class="GtkScrolledWindow" id="scrolledwindow3">
                     <property name="visible">True</property>
                         <property name="height_request">100</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <signal name="button-press-event" handler="right_click_download" swapped="no"/>
+                        <signal name="button_press_event" handler="right_click_download"/>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
                     <property name="padding">3</property>
                     <property name="position">0</property>
                   </packing>
                 <child>
                   <object class="GtkAlignment" id="alignment7">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                     <property name="bottom_padding">8</property>
                     <property name="left_padding">9</property>
                     <child>
                       <object class="GtkHButtonBox" id="hbuttonbox1">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
                         <property name="spacing">3</property>
                         <property name="layout_style">start</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="activate" handler="on_cancel_download" swapped="no"/>
+                            <signal name="activate" handler="on_cancel_download"/>
                           </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="on_stop_download" swapped="no"/>
+                            <signal name="clicked" handler="on_stop_download"/>
                           </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="image">image_resume</property>
-                            <signal name="clicked" handler="on_resume_download" swapped="no"/>
+                            <signal name="clicked" handler="on_resume_download"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">True</property>
                     <property name="padding">4</property>
                     <property name="position">1</property>
                   </packing>
             <child type="tab">
               <object class="GtkHBox" id="hbox6">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
                 <child>
                   <object class="GtkImage" id="image2">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                     <property name="icon_name">document-save</property>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
                     <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkLabel" id="downloads_count">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
             </child>
           </object>
           <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
             <property name="position">1</property>
           </packing>
         </child>
       </object>
     </child>
   </object>
+  <object class="GtkMenu" id="downloadmenu">
+    <property name="visible">True</property>
+    <child>
+      <object class="GtkImageMenuItem" id="menuitem2">
+        <property name="label">gtk-cancel</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">True</property>
+        <signal name="activate" handler="on_cancel_download"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="menuitem3">
+        <property name="label">gtk-media-stop</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">True</property>
+        <signal name="activate" handler="on_stop_download"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="menuitem4">
+        <property name="label" translatable="yes">Resume</property>
+        <property name="visible">True</property>
+        <property name="image">image4</property>
+        <property name="use_stock">False</property>
+        <signal name="activate" handler="on_resume_download"/>
+      </object>
+    </child>
+  </object>
+  <object class="GtkImage" id="image_information">
+    <property name="visible">True</property>
+    <property name="icon_name">dialog-information</property>
+  </object>
+  <object class="GtkImage" id="image_download">
+    <property name="visible">True</property>
+    <property name="xpad">4</property>
+    <property name="icon_name">go-down</property>
+  </object>
+  <object class="GtkImage" id="image_add">
+    <property name="visible">True</property>
+    <property name="stock">gtk-add</property>
+  </object>
+  <object class="GtkImage" id="image_delete">
+    <property name="visible">True</property>
+    <property name="stock">gtk-delete</property>
+  </object>
+  <object class="GtkImage" id="image_clear">
+    <property name="visible">True</property>
+    <property name="stock">gtk-clear</property>
+  </object>
+  <object class="GtkImage" id="image_playlist_repeat">
+    <property name="visible">True</property>
+    <property name="icon_name">media-playlist-repeat</property>
+  </object>
+  <object class="GtkImage" id="image_playlist_shuffle">
+    <property name="visible">True</property>
+    <property name="icon_name">media-playlist-shuffle</property>
+  </object>
+  <object class="GtkImage" id="image_save_as">
+    <property name="visible">True</property>
+    <property name="stock">gtk-save-as</property>
+  </object>
+  <object class="GtkImage" id="image_open">
+    <property name="visible">True</property>
+    <property name="stock">gtk-open</property>
+  </object>
+  <object class="GtkImage" id="image_resume">
+    <property name="visible">True</property>
+    <property name="icon_name">document-revert</property>
+  </object>
+  <object class="GtkImage" id="image4">
+    <property name="visible">True</property>
+    <property name="stock">gtk-refresh</property>
+  </object>
 </interface>
     except:
         pass
     CONFIG = ConfigObj("%s/.gsharkdown/gsharkdown.ini" % os.environ.get("HOME"))
-    CONFIG['down_path'] = os.path.join(glib.get_user_special_dir(glib.USER_DIRECTORY_MUSIC), "Grooveshark")
+    MUSIC_DIR = glib.get_user_special_dir(glib.USER_DIRECTORY_MUSIC) or os.path.join(os.environ.get("HOME"), "Music")
+    CONFIG['down_path'] = os.path.join(MUSIC_DIR, "Grooveshark")
     if os.path.isdir(CONFIG['down_path']) == False:
         try:
             os.makedirs(CONFIG['down_path'])
         song_string = "<span>%s</span>\n<span fgcolor='#777777'>%s</span>" % (self.get_sliced_string(song['SongName'], 25), self.get_sliced_string(song['ArtistName'],20))
         #if len(song_string) > 14:
         #    song_string = song_string[:13] + "..."
+        tooltip = _("<b>Song:</b> {artist} - {title}\n").format(artist=song['ArtistName'], 
+                                                                title=song['SongName'])
+        tooltip += _("<b>Album:</b> {album}\n").format(album=song['AlbumName'])
+        tooltip += _("<b>Year:</b> {year}").format(year=song['Year'])  
         self.playlist.append([
             song_string,
             self.create_track_icon(song['CoverArtFilename']),
-            song['ArtistName'] + " - " + song['SongName'],
+            tooltip ,
             song['SongID'],
             song,
             400
             path = treeview.get_path_at_pos(int(event.x), int(event.y))
             selection = treeview.get_selection()
             rows = selection.get_selected_rows()
-
-            if path[0] not in rows[1]:
-                # Unselect if the user click the right button outside 
-                # the selected items - empty field.
-                selection.unselect_all()
-                selection.select_path(path[0])
+            try:
+                if path[0] not in rows[1]:
+                    # Unselect if the user click the right button outside 
+                    # the selected items - empty field.
+                    selection.unselect_all()
+                    selection.select_path(path[0])
+            except TypeError:
+                pass
 
             # still not sure about this. The point is that there are many rows selected
             # when you click the right mouse button, but then on_cancel_download still 
             # has no idea what is selected.
             if selection.count_selected_rows() > 1:
                 self.downmenu.popup(None, None, None, event.button, event.time)
-                print "Selected many rows"
             else:
                 self.downmenu.popup(None, None, None, event.button, event.time)
-                print "Selected one row!"
     
     def cancel_download(self, path):
         """