Commits

Damián Nohales  committed cca0619

Some esthetics improvements.

- The icons for the "Search results" and "Playlist" titles was removed since overloads the GUI.
- A label is showed when the playlist is empty.
- The playlist text is smaller.
- Tried to configure the icons size in the playlist.
- I guess the borders on the download view buttons looks better... do you?
- Format changed in song info label.

  • Participants
  • Parent commits ad4cc11

Comments (0)

Files changed (4)

File data/corners.png

Old
Old image
New
New image

File data/main_window.ui

-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <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"/>
+        <signal name="activate" handler="on_cancel_download" swapped="no"/>
       </object>
     </child>
     <child>
       <object class="GtkImageMenuItem" id="menuitem3">
         <property name="label">gtk-media-stop</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_stop_download"/>
+        <signal name="activate" handler="on_stop_download" swapped="no"/>
       </object>
     </child>
     <child>
       <object class="GtkImageMenuItem" id="menuitem4">
         <property name="label" translatable="yes">Resume</property>
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="use_action_appearance">False</property>
         <property name="image">image4</property>
         <property name="use_stock">False</property>
-        <signal name="activate" handler="on_resume_download"/>
+        <signal name="activate" handler="on_resume_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="image4">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-refresh</property>
   </object>
+  <object class="GtkImage" id="image9">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-clear</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_cancel_download">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-stop</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_back">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="pixel_size">23</property>
+    <property name="icon_name">media-skip-backward</property>
+  </object>
+  <object class="GtkImage" id="image_playlist_lyrics">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-italic</property>
+  </object>
+  <object class="GtkImage" id="image_playlist_next">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="pixel_size">23</property>
+    <property name="icon_name">media-skip-forward</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_stop_download">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-media-stop</property>
   </object>
+  <object class="GtkImage" id="image_toolbar_playlist">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="pixel_size">22</property>
+    <property name="icon_name">preferences-desktop-multimedia</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="on_open_preferences"/>
+        <signal name="activate" handler="on_open_preferences" swapped="no"/>
       </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="on_check_for_updates"/>
+        <signal name="activate" handler="on_check_for_updates" swapped="no"/>
       </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="on_show_about"/>
+        <signal name="activate" handler="on_show_about" swapped="no"/>
       </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="on_quit_app"/>
+        <signal name="activate" handler="on_quit_app" swapped="no"/>
       </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="toolbar_style">both-horiz</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">&#x2022;</property>
+                    <property name="invisible_char"></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="on_search_grooveshark"/>
+                    <signal name="activate" handler="on_search_grooveshark" swapped="no"/>
                   </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="GtkToolItem" id="toolbutton3">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
                 <child>
                   <object class="GtkToggleButton" id="togglebutton1">
                     <property name="label" translatable="yes">Playlist</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="tooltip_text" translatable="yes">Switsch to playlist</property>
-                    <property name="image">image12</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="image">image_toolbar_playlist</property>
                     <property name="relief">none</property>
                     <property name="active">True</property>
-                    <signal name="toggled" handler="on_show_playview"/>
+                    <signal name="toggled" handler="on_show_playview" swapped="no"/>
                   </object>
                 </child>
               </object>
             <child>
               <object class="GtkToolItem" id="toolbutton4">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
                 <child>
                   <object class="GtkToggleButton" id="togglebutton2">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="tooltip_text" translatable="yes">Switch to downloads list</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="relief">none</property>
-                    <signal name="toggled" handler="on_show_downloadsview"/>
+                    <signal name="toggled" handler="on_show_downloadsview" swapped="no"/>
                     <child>
                       <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="pixel_size">22</property>
                             <property name="icon_name">go-down</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 class="GtkToolItem" id="toolbutton_volume">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
                 <child>
                   <placeholder/>
                 </child>
             <child>
               <object class="GtkToggleToolButton" id="fullscreen_button">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">Fullscreen</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-fullscreen</property>
-                <signal name="toggled" handler="on_toggle_fullscreen"/>
+                <signal name="toggled" handler="on_toggle_fullscreen" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</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"/>
+                <signal name="clicked" handler="show_prefs_menu" swapped="no"/>
               </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="GtkHBox" id="hbox9">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkHBox" id="hbox10">
+                      <object class="GtkLabel" id="label4">
                         <property name="visible">True</property>
-                        <child>
-                          <object class="GtkImage" id="image7">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-find</property>
-                          </object>
-                          <packing>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label4">
-                            <property name="visible">True</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="position">1</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0.079999998211860657</property>
+                        <property name="yalign">0.72000002861022949</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">False</property>
-                        <property name="padding">10</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkAspectFrame" id="aspectframe1">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label_xalign">0</property>
                         <property name="shadow_type">none</property>
                         <child>
                         </child>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkHBox" id="hbox11">
                         <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">Filter: </property>
                           </object>
                           <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                           <object class="GtkEntry" id="filter_entry">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char">&#x2022;</property>
-                            <signal name="changed" handler="on_filter_changed"/>
+                            <property name="invisible_char">•</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="changed" handler="on_filter_changed" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
+                            <property name="fill">True</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="padding">10</property>
                         <property name="position">2</property>
                       </packing>
                   </object>
                   <packing>
                     <property name="expand">False</property>
+                    <property name="fill">True</property>
                     <property name="padding">3</property>
                     <property name="position">0</property>
                   </packing>
                 <child>
                   <object class="GtkAlignment" id="alignment1">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="bottom_padding">8</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_download_selected">
                                 <property name="label" translatable="yes">Download selected</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_download</property>
-                                <signal name="clicked" handler="on_download_selected"/>
+                                <signal name="clicked" handler="on_download_selected" swapped="no"/>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
+                                <property name="fill">True</property>
                                 <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
-                              <placeholder/>
-                            </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="position">2</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                             <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="on_add_to_playlist"/>
+                                <signal name="clicked" handler="on_add_to_playlist" swapped="no"/>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
-                                <property name="position">3</property>
+                                <property name="fill">True</property>
+                                <property name="position">2</property>
                               </packing>
                             </child>
                           </object>
                           <packing>
                             <property name="expand">False</property>
+                            <property name="fill">True</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
                     </child>
                   </object>
                   <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkHBox" id="hbox3">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkHBox" id="hbox12">
+                      <object class="GtkLabel" id="label5">
                         <property name="visible">True</property>
-                        <child>
-                          <object class="GtkImage" id="image6">
-                            <property name="visible">True</property>
-                            <property name="icon_name">audio-x-generic</property>
-                          </object>
-                          <packing>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label5">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Playlist&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </object>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0.059999998658895493</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">False</property>
-                        <property name="padding">10</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkAspectFrame" id="aspectframe2">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label_xalign">0</property>
                         <property name="shadow_type">none</property>
                         <child>
                         </child>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkHBox" id="hbox13">
                         <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>
                             <property name="relief">none</property>
-                            <signal name="clicked" handler="on_remove_from_playlist"/>
+                            <signal name="clicked" handler="on_remove_from_playlist" swapped="no"/>
                           </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>
                             <property name="relief">none</property>
-                            <signal name="clicked" handler="on_clear_playlist"/>
+                            <signal name="clicked" handler="on_clear_playlist" swapped="no"/>
                           </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_save_as</property>
                             <property name="relief">none</property>
-                            <signal name="clicked" handler="on_playlist_save_as"/>
+                            <signal name="clicked" handler="on_playlist_save_as" swapped="no"/>
                           </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_open</property>
                             <property name="relief">none</property>
-                            <signal name="clicked" handler="on_playlist_open"/>
+                            <signal name="clicked" handler="on_playlist_open" swapped="no"/>
                           </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="padding">10</property>
                         <property name="position">2</property>
                       </packing>
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="padding">5</property>
+                    <property name="fill">True</property>
                     <property name="position">2</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkAlignment" id="alignment2">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="bottom_padding">8</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">
+                          <object class="GtkScrolledWindow" id="playlist_sw">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="vscrollbar_policy">never</property>
                             <property name="shadow_type">in</property>
                             <child>
-                              <placeholder/>
+                              <object class="GtkIconView" id="playlist_view">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="selection_mode">multiple</property>
+                                <property name="reorderable">True</property>
+                              </object>
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkHBox" id="hbox1">
+                          <object class="GtkViewport" id="playlist_empty">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <object class="GtkAlignment" id="alignment3">
+                              <object class="GtkLabel" id="label6">
+                                <property name="height_request">69</property>
                                 <property name="visible">True</property>
-                                <child>
-                                  <placeholder/>
-                                </child>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">There is no songs in the playlist.</property>
+                                <property name="justify">center</property>
+                                <attributes>
+                                  <attribute name="foreground" value="#555555555555"/>
+                                </attributes>
                               </object>
-                              <packing>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
+                            <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">3</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="GtkAlignment" id="alignment6">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="top_padding">9</property>
                     <property name="left_padding">10</property>
                     <property name="right_padding">10</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"/>
+                            <signal name="button-press-event" handler="right_click_download" swapped="no"/>
                           </object>
                         </child>
                       </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="bottom_padding">1</property>
-                    <property name="left_padding">2</property>
+                    <property name="can_focus">False</property>
+                    <property name="bottom_padding">3</property>
+                    <property name="left_padding">8</property>
                     <child>
                       <object class="GtkHButtonBox" id="hbuttonbox1">
                         <property name="visible">True</property>
-                        <property name="spacing">1</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">8</property>
                         <property name="layout_style">start</property>
                         <child>
                           <object class="GtkButton" id="button1">
                             <property name="can_focus">True</property>
                             <property name="receives_default">True</property>
                             <property name="tooltip_text" translatable="yes">Cancels all downloads</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="image">image_cancel_download</property>
-                            <property name="relief">none</property>
-                            <signal name="clicked" handler="on_cancel_all_downloads"/>
+                            <signal name="clicked" handler="on_cancel_all_downloads" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">True</property>
                             <property name="tooltip_text" translatable="yes">Stops all downloads</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="image">image_stop_download</property>
-                            <property name="relief">none</property>
-                            <signal name="clicked" handler="on_stop_all_downloads"/>
+                            <signal name="clicked" handler="on_stop_all_downloads" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">True</property>
                             <property name="tooltip_text" translatable="yes">Resumes all downloads</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="image">image_resume</property>
-                            <property name="relief">none</property>
-                            <signal name="clicked" handler="on_resume_all_downloads"/>
+                            <signal name="clicked" handler="on_resume_all_downloads" swapped="no"/>
                           </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="tooltip_text" translatable="yes">Clear the completed downloads</property>
+                            <property name="tooltip_text" translatable="yes">Clear completed downloads</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="image">image9</property>
-                            <property name="relief">none</property>
-                            <signal name="clicked" handler="on_clear_downloadlist"/>
+                            <signal name="clicked" handler="on_clear_downloadlist" swapped="no"/>
                           </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>
           </object>
           <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
             <property name="position">1</property>
           </packing>
         </child>
         <child>
           <object class="GtkVBox" id="vbox6">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
               <object class="GtkAlignment" id="alignment8">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="left_padding">5</property>
                 <property name="right_padding">5</property>
                 <child>
                   <object class="GtkHBox" id="hbox7">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkButton" id="button4">
+                      <object class="GtkButton" id="button_play_prev">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
-                        <property name="image">image8</property>
-                        <signal name="clicked" handler="on_play_previous"/>
+                        <property name="use_action_appearance">False</property>
+                        <property name="image">image_playlist_back</property>
+                        <signal name="clicked" handler="on_play_previous" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkButton" id="button5">
+                      <object class="GtkButton" id="button_play">
                         <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">toolbutton_play</property>
-                        <signal name="clicked" handler="on_play_selected"/>
+                        <signal name="clicked" handler="on_play_selected" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkButton" id="button6">
+                      <object class="GtkButton" id="button_play_next">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
-                        <property name="image">image10</property>
-                        <signal name="clicked" handler="on_play_next"/>
+                        <property name="use_action_appearance">False</property>
+                        <property name="image">image_playlist_next</property>
+                        <signal name="clicked" handler="on_play_next" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">2</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkVolumeButton" id="volumebutton1">
+                      <object class="GtkVolumeButton" id="volumebutton">
                         <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="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"/>
+                        <signal name="value-changed" handler="on_volume_change" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">3</property>
                       </packing>
                     </child>
                         <property name="draw_value">False</property>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">4</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkLabel" id="label2">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label" translatable="yes">{played} / {time}</property>
                         <attributes>
                           <attribute name="weight" value="bold"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="padding">2</property>
                         <property name="position">5</property>
                       </packing>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="padding">3</property>
                 <property name="position">0</property>
               </packing>
             <child>
               <object class="GtkAlignment" id="alignment9">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="left_padding">5</property>
                 <property name="right_padding">5</property>
                 <child>
                   <object class="GtkHBox" id="hbox8">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="spacing">1</property>
                     <child>
                       <object class="GtkToggleButton" id="togglebutton_repeat">
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
                         <property name="tooltip_text" translatable="yes">Toggle repeat all</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="image">image_playlist_repeat</property>
                         <property name="relief">none</property>
-                        <signal name="toggled" handler="on_toggle_repeat"/>
+                        <signal name="toggled" handler="on_toggle_repeat" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
                         <property name="tooltip_text" translatable="yes">Toggle shuffle all</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="image">image_playlist_shuffle</property>
                         <property name="relief">none</property>
-                        <signal name="toggled" handler="on_toggle_shuffle"/>
+                        <signal name="toggled" handler="on_toggle_shuffle" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
                         <property name="tooltip_text" translatable="yes">Show info for the song</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="image">image_information</property>
                         <property name="relief">none</property>
-                        <signal name="clicked" handler="on_show_info"/>
+                        <signal name="clicked" handler="on_show_info" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">2</property>
                       </packing>
                     </child>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
                         <property name="tooltip_text" translatable="yes">Love track on Last.fm</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="relief">none</property>
-                        <signal name="clicked" handler="on_love_song"/>
+                        <signal name="clicked" handler="on_love_song" swapped="no"/>
                         <child>
                           <object class="GtkImage" id="image5">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <property name="pixbuf">love_song.svg</property>
                           </object>
                         </child>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">3</property>
                       </packing>
                     </child>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">True</property>
-                        <property name="image">image11</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="image">image_playlist_lyrics</property>
                         <property name="relief">none</property>
-                        <signal name="clicked" handler="on_show_lyrics"/>
+                        <signal name="clicked" handler="on_show_lyrics" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">4</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkLabel" id="songinfo">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0.98000001907348633</property>
                         <property name="label" translatable="yes">label</property>
-                        <property name="justify">center</property>
+                        <property name="justify">right</property>
                         <property name="ellipsize">end</property>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">5</property>
                       </packing>
                     </child>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="padding">3</property>
                 <property name="position">1</property>
               </packing>
           </object>
           <packing>
             <property name="expand">False</property>
+            <property name="fill">True</property>
             <property name="position">2</property>
           </packing>
         </child>
       </object>
     </child>
   </object>
-  <object class="GtkImage" id="image12">
-    <property name="visible">True</property>
-    <property name="pixel_size">22</property>
-    <property name="icon_name">preferences-desktop-multimedia</property>
-  </object>
-  <object class="GtkImage" id="image8">
-    <property name="visible">True</property>
-    <property name="pixel_size">23</property>
-    <property name="icon_name">media-skip-backward</property>
-  </object>
-  <object class="GtkImage" id="image10">
-    <property name="visible">True</property>
-    <property name="pixel_size">23</property>
-    <property name="icon_name">media-skip-forward</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_information">
-    <property name="visible">True</property>
-    <property name="icon_name">dialog-information</property>
-  </object>
-  <object class="GtkImage" id="image11">
-    <property name="visible">True</property>
-    <property name="stock">gtk-italic</property>
-  </object>
   <object class="GtkImage" id="toolbutton_play">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="pixel_size">22</property>
     <property name="icon_name">media-playback-start</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_open">
-    <property name="visible">True</property>
-    <property name="stock">gtk-open</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_clear">
-    <property name="visible">True</property>
-    <property name="stock">gtk-clear</property>
-  </object>
-  <object class="GtkImage" id="image_delete">
-    <property name="visible">True</property>
-    <property name="stock">gtk-delete</property>
-  </object>
-  <object class="GtkImage" id="image9">
-    <property name="visible">True</property>
-    <property name="stock">gtk-clear</property>
-  </object>
 </interface>

File lib/PlayList.py

     Represent the PlayList
     """
     
+    ICON_SIZE = 90
+    
     def __init__(self, view):
         AbstractSongList.__init__(self, view)
         self.playing_song = None
         # Change song local ID to fix the search by song
         song = song.clone()
         
-        song_string = "<span>%s</span>\n<span fgcolor='#777777'>%s</span>" % (self.get_sliced_string(glib.markup_escape_text(song.get_title()), 25),
+        song_string = "<span font_size='small'>%s</span>\n<span font_size='small' fgcolor='#555555'>%s</span>" % (self.get_sliced_string(glib.markup_escape_text(song.get_title()), 25),
                                                                               self.get_sliced_string(glib.markup_escape_text(song.get_artist()), 20))
         #if len(song_string) > 14:
         #    song_string = song_string[:13] + "..."
         
     def create_loading_track_icon(self):
         default = gtk.gdk.pixbuf_new_from_file("%s/data/loading.png" % env().BASEPATH)
-        return self.create_cornered_image(default)
+        return default
 
     def create_cornered_image(self, pixbuf):
-        corners = gtk.gdk.pixbuf_new_from_file("%s/data/corners.png" % env().BASEPATH)
-        corners.composite(pixbuf, 0, 0, pixbuf.props.width, pixbuf.props.height,
+        pixbuf = self.scale_pixbuf(pixbuf)
+        corners = self.scale_pixbuf(gtk.gdk.pixbuf_new_from_file("%s/data/corners.png" % env().BASEPATH))
+        corners.composite(self.scale_pixbuf(pixbuf), 0, 0, pixbuf.props.width, pixbuf.props.height,
                           0, 0, 1.0, 1.0, gtk.gdk.INTERP_HYPER, 255)
         return pixbuf
     
         Composite play.png with the pixbuf
         """
         pixbuf = pixbuf.copy()
-        play = gtk.gdk.pixbuf_new_from_file('%s/data/play.png' % env().BASEPATH)
+        play = self.scale_pixbuf(gtk.gdk.pixbuf_new_from_file('%s/data/play.png' % env().BASEPATH))
         play.composite(pixbuf, 0, 0, pixbuf.props.width, pixbuf.props.height,
                           0, 0, 1.0, 1.0, gtk.gdk.INTERP_HYPER, 255)
         return pixbuf
+    
+    def scale_pixbuf(self, pixbuf):
+        # I tried to use image scale to minimize the playlist size but not works well
+        #return pixbuf.scale_simple(PlayList.ICON_SIZE, PlayList.ICON_SIZE, gtk.gdk.INTERP_HYPER)
+        return pixbuf

File lib/SharkDown.py

         self.result.get_view().connect("row-activated", self.on_result_row_activated)
 
         # Play List definition
-        playlist_sw = builder.get_object('scrolledwindow2')
-        playlist_view = gtk.IconView()
-        playlist_sw.add(playlist_view)
+        self.playlist_sw = builder.get_object('playlist_sw')
+        self.playlist_empty = builder.get_object('playlist_empty')
+        playlist_view = builder.get_object('playlist_view')
         self.playlist = PlayList(playlist_view)
         self.playlist.get_view().connect('item-activated', self.on_playlist_double_click)
-        self.playlist.get_view().show()
+        self.playlist.get_model().connect('row-inserted', self.on_playlist_row_changed)
+        self.playlist.get_model().connect('row-deleted', self.on_playlist_row_changed)
 
         # Download list definition
         self.downloads = DownloadList(builder.get_object('list_downloads'))
 
         self.window.set_sensitive(False)
         self.window.show_all()
+        
+        self.on_playlist_row_changed(self.playlist.get_model())
 
 
     def on_init_thread_success(self):
             clipboard = gtk.clipboard_get()
             clipboard.set_text(copystring)
             clipboard.store()
-
+    
+    def on_playlist_row_changed(self, widget, path = None, iter = None):
+        if len(self.playlist.get_model()) > 0:
+            self.playlist_sw.show_all()
+            self.playlist_empty.hide_all()
+        else:
+            self.playlist_empty.show_all()
+            self.playlist_sw.hide_all()
+    
     def on_add_to_playlist(self, widget, data = None):
         """
         Adds selected item from the results to the playlist
             self.scrobbled = 0
 
             self.songinfo.set_markup(
-                _("<b>Playing:</b> {artist} - {title}").format(artist = glib.markup_escape_text(song.get_artist()),
+                _("<b>Playing:</b> <i>{title}</i> <span fgcolor='#777777'>by {artist}</span>").format(artist = glib.markup_escape_text(song.get_artist()),
                                          title = glib.markup_escape_text(song.get_title()))
             )
             if int(config()['show_notification']) == 1 and env().HAVE_NOTIFY: