Commits

Vladimir Kolev committed a6bdf74

All gtk2 dependancies are gone,but still gSharkDown doesn't start - pygobject_register_sinkfunc is deprecated and core dump as result

Comments (0)

Files changed (9)

data/main_window.ui

 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy project-wide -->
+  <!-- interface-requires gtk+ 3.0 -->
   <object class="GtkMenu" id="downloadmenu">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
         <property name="label">gtk-media-pause</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_pause_download" swapped="no"/>
         <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" swapped="no"/>
         <property name="label">gtk-delete</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"/>
     <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>
         <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" swapped="no"/>
         <property name="label">gtk-fullscreen</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_toggle_fullscreen" swapped="no"/>
         <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" swapped="no"/>
         <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" swapped="no"/>
         <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" swapped="no"/>
             <property name="can_focus">False</property>
             <property name="toolbar_style">both-horiz</property>
             <property name="show_arrow">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="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="changed" handler="on_search_text_changed" swapped="no"/>
                     <signal name="activate" handler="on_search_grooveshark" swapped="no"/>
                   </object>
               <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="togglebutton_playlist">
                     <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">Switch to playlist</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>
               <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="togglebutton_downloads">
                     <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" swapped="no"/>
                     <child>
                 </child>
               </object>
               <packing>
-                <property name="expand">False</property>
+                <property name="expand">True</property>
                 <property name="homogeneous">True</property>
               </packing>
             </child>
               <object class="GtkToolItem" id="toolbutton5">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <child>
-                  <placeholder/>
+                  <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="relief">none</property>
+                    <property name="focus_on_click">False</property>
+                    <property name="orientation">vertical</property>
+                    <property name="icons">audio-volume-muted
+audio-volume-high
+audio-volume-low
+audio-volume-medium</property>
+                    <property name="use_symbolic">True</property>
+                  </object>
                 </child>
               </object>
               <packing>
-                <property name="expand">True</property>
+                <property name="expand">False</property>
               </packing>
             </child>
             <child>
                 <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="is_important">True</property>
                 <property name="label" translatable="yes">Menu</property>
                 <property name="use_underline">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="homogeneous">True</property>
               </packing>
             </child>
           </object>
                             <property name="invisible_char">•</property>
                             <property name="secondary_icon_stock">gtk-clear</property>
                             <property name="primary_icon_activatable">False</property>
-                            <property name="secondary_icon_activatable">True</property>
-                            <property name="primary_icon_sensitive">True</property>
-                            <property name="secondary_icon_sensitive">True</property>
                             <signal name="changed" handler="on_filter_changed" swapped="no"/>
                             <signal name="icon-release" handler="on_filter_entry_icon_press" swapped="no"/>
                           </object>
                           <object class="GtkScrolledWindow" id="scrolledwindow1">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">automatic</property>
-                            <property name="vscrollbar_policy">automatic</property>
                             <property name="shadow_type">in</property>
                             <child>
                               <object class="GtkTreeView" id="list_results">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="rules_hint">True</property>
+                                <child internal-child="selection">
+                                  <object class="GtkTreeSelection" id="treeview-selection1"/>
+                                </child>
                               </object>
                             </child>
                           </object>
                                 <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" swapped="no"/>
                               </object>
                                 <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" swapped="no"/>
                               </object>
                             <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>
                             <property name="focus_on_click">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_clear</property>
                             <property name="relief">none</property>
                             <property name="focus_on_click">False</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">True</property>
                             <property name="tooltip_text" translatable="yes">Save playlist to file</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" swapped="no"/>
                             <property name="can_focus">True</property>
                             <property name="receives_default">True</property>
                             <property name="tooltip_text" translatable="yes">Load playlist from file</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" swapped="no"/>
                                 <property name="selection_mode">multiple</property>
                                 <property name="row_spacing">0</property>
                                 <property name="column_spacing">3</property>
-                                <property name="margin">0</property>
                                 <property name="reorderable">True</property>
                                 <property name="item_padding">5</property>
                                 <signal name="selection-changed" handler="on_playlist_view_selection_changed" swapped="no"/>
                       <object class="GtkScrolledWindow" id="scrolledwindow3">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
                         <property name="shadow_type">in</property>
                         <child>
                           <object class="GtkTreeView" id="list_downloads">
                             <property name="can_focus">True</property>
                             <property name="reorderable">True</property>
                             <signal name="button-press-event" handler="right_click_download" swapped="no"/>
+                            <child internal-child="selection">
+                              <object class="GtkTreeSelection" id="treeview-selection2"/>
+                            </child>
                           </object>
                         </child>
                       </object>
                             <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_delete_download</property>
                             <signal name="clicked" handler="on_cancel_all_downloads" swapped="no"/>
                           </object>
                             <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_pause_download</property>
                             <signal name="clicked" handler="on_stop_all_downloads" swapped="no"/>
                           </object>
                             <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>
                             <signal name="clicked" handler="on_resume_all_downloads" swapped="no"/>
                           </object>
                             <property name="can_focus">True</property>
                             <property name="receives_default">True</property>
                             <property name="tooltip_text" translatable="yes">Clear completed downloads</property>
-                            <property name="use_action_appearance">False</property>
                             <property name="image">image9</property>
                             <signal name="clicked" handler="on_clear_downloadlist" swapped="no"/>
                           </object>
                         <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_back</property>
                         <signal name="clicked" handler="on_play_previous" swapped="no"/>
                       </object>
                         <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">widget_image_play</property>
                         <signal name="clicked" handler="on_play_selected" swapped="no"/>
                       </object>
                         <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_pause</property>
                         <signal name="clicked" handler="on_pause_toggled" swapped="no"/>
                       </object>
                         <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_next</property>
                         <signal name="clicked" handler="on_play_next" swapped="no"/>
                       </object>
                         <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>
                         <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" swapped="no"/>
                         <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" swapped="no"/>
                         <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" swapped="no"/>
                         <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" swapped="no"/>
                         <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_lyrics</property>
                         <property name="relief">none</property>
                         <signal name="clicked" handler="on_show_lyrics" swapped="no"/>
 
 # Imports GStreamer
 try:
-    import pygst
-    pygst.require('0.10')
-    import gst
+    from gi.repository import Gst as gst
 except ImportError:
     print "You don't have python-gstreamer installed!"
     sys.exit(1)
     sys.exit(1)
 
 # Imports pynotify
-try:
-    import pynotify
+#try:
+    #import pynotify
     HAVE_NOTIFY = True
-except ImportError:
-    print "You don't have pynotify installed!"
-    HAVE_NOTIFY = False
+#except ImportError:
+#    print "You don't have pynotify installed!"
+#    HAVE_NOTIFY = False
 
 # Imports PyLast for scrobbling with Last.fm
 try:
 from lib.SharkDown import SharkDown
 
 # Enviroment Initialization
-env().HAVE_NOTIFY = HAVE_NOTIFY
 env().HAVE_PYLAST = HAVE_PYLAST
 env().HAVE_INDICATOR = HAVE_INDICATOR
 env().BASEPATH = os.path.abspath(os.path.dirname(sys.argv[0]))
         app = SharkDown()
         env().set_app(app)
         service = SingleService(app)
-        gtk.main()
+        gtk.Main()
+        #gtk.main()
 from AbstractSongList import AbstractSongList
 from enviroment import env, config
-import gtk
-import glib
+from gi.repository import Gtk as gtk
+from gi.repository import GLib as glib
 
 class PlayList (AbstractSongList):
     """
         self.set_style(config()["playlist_style"])
 
     def on_mouse_wheel_scroll(self, widget, event):
-        # We need to assume that the IconView has a ScrolledWindow as parent 
+        # We need to assume that the IconView has a ScrolledWindow as parent
         adjustment = self.get_view().get_parent().get_hadjustment()
         if event.direction == gtk.gdk.SCROLL_UP:
             newvalue = adjustment.get_value() - adjustment.get_step_increment()

lib/PlayListStyleWidget.py

-import gtk
-import gobject
+from gi.repository import Gtk as gtk
+from gi.repository import GObject as gobject
 from enviroment import config, env
 from PlayList import PlayList
 
         gtk.Button.__init__(self)
 
         self.menu = gtk.Menu()
-
+        group = []
         menu_items = [
             (PlayList.TEXT_BELOW_ICONS, _("Text below icons"),),
             (PlayList.TEXT_BESIDE_ICONS, _("Text beside icons"),),
         first_item_widget = None
 
         for item in menu_items:
-            item_widget = gtk.RadioMenuItem(None, item[1])
+            item_widget = gtk.RadioMenuItem.new_with_label(group, item[1])
             if first_item_widget == None:
                 first_item_widget = item_widget
             else:
-                item_widget.set_group(first_item_widget)
+                item_widget.set_group(group)
             self.menu.append(item_widget)
 
             if item[0] == str(config()["playlist_style"]):
             item_widget.connect("activate", self.on_item_activate, item[0])
 
         self.menu.show_all()
-        self.set_image(gtk.image_new_from_file("%s/data/playlist_style.png" % env().BASEPATH))
-        self.set_relief(gtk.RELIEF_NONE)
+        self.set_image(gtk.Image.new_from_file("%s/data/playlist_style.png" % env().BASEPATH))
+        self.set_relief(gtk.ReliefStyle.NONE)
         self.set_focus_on_click(False)
 
-        if env().have_playlist_style() == True:
-            self.connect("clicked", self.on_clicked)
-            self.set_tooltip_text(_("Change the playlist style"))
-        else:
-            self.set_sensitive(False)
-            self.set_tooltip_text(_("Please update your version of PyGtk\nto change the playlist style"))
+#         if env().have_playlist_style() == True:
+#             self.connect("clicked", self.on_clicked)
+#             self.set_tooltip_text(_("Change the playlist style"))
+#         else:
+        self.set_sensitive(False)
+        self.set_tooltip_text(_("Please update your version of PyGtk\nto change the playlist style"))
 
     def on_clicked(self, button):
         self.menu.popup(None, None, self.menu_reposition_callback, 0, 0)

lib/SearchResultList.py

 from AbstractSongList import AbstractSongList
-import gtk
-import glib
+from gi.repository import Gtk as gtk
+from gi.repository import GLib as glib
 
 class SearchResultList(AbstractSongList):
     """
 import guihelpers
 import pickle
 from gi.repository import Gtk as gtk
-import gst
+from gi.repository import Gst as gst
 from gi.repository import GLib as glib
 from gi.repository import GObject as gobject
 import locale
 from gettext import gettext as _
 from gettext import ngettext as ngettext
 
-try:
-    import pynotify
-except:
-    pass
+#try:
+#    import pynotify
+#except:
+#    pass
 
 try:
     import pylast
         self.play_thread = None
         self.player_state_timeout_id = None
         self.is_buffering = False
-        self.pynotify_object = None
+        #self.pynotify_object = None
 
         # GtkBuilder initialization
         builder = gtk.Builder()
         self.entry_filter = builder.get_object('entry_filter')
 
         # GStreamer player initialization
-        self.player = gst.element_factory_make("playbin2", "player")
+        gst.init_check(None)
+        self.player = gst.ElementFactory.make("playbin", "player")
         self.player.connect("notify::source", self.on_player_source_setup)
 
         # Completition configuration
             config()['down_path'] = env().get_default_down_path()
 
         # Pynotify initialization
-        if env().HAVE_NOTIFY:
-            pynotify.init("gSharkDown")
-            self.pynotify_object = pynotify.Notification("dummy", "dummy", "dummy")
+        #if env().HAVE_NOTIFY:
+        #    pynotify.init("gSharkDown")
+        #    self.pynotify_object = pynotify.Notification("dummy", "dummy", "dummy")
 
         # Scrobbling initialization
         self.lastfm = None
                 guihelpers.ErrorMessage(self.window,
                             _("Please check your username and password for Last.fm"))
 
+        # TODO: gi.repository doesn't support autoconnecting signals!
         builder.connect_signals(self)
         self.tlisten = KeyListenerThread(self)
         self.tlisten.start()
         savedlg = gtk.FileChooserDialog(_("Save playlist to file"),
                                        None,
                                        gtk.FILE_CHOOSER_ACTION_SAVE,
-                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
-                                       gtk.STOCK_SAVE, gtk.RESPONSE_OK))
+                                       (gtk.STOCK_CANCEL, gtk.ResponseType.REJECT,
+                                       gtk.STOCK_SAVE, gtk.ResponseType.OK))
         response = savedlg.run()
 
-        if response == gtk.RESPONSE_OK:
+        if response == gtk.ResponseType.OK:
             filename = savedlg.get_filename()
             if filename[-4:] != ".pkl":
                 filename += ".pkl"
         opendlg = gtk.FileChooserDialog(_("Select Playlist to open"),
                                        None,
                                        gtk.FILE_CHOOSER_ACTION_OPEN,
-                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
-                                       gtk.STOCK_OPEN, gtk.RESPONSE_OK))
+                                       (gtk.STOCK_CANCEL, gtk.ResponseType.REJECT,
+                                       gtk.STOCK_OPEN, gtk.ResponseType.OK))
         openfilter = gtk.FileFilter()
         openfilter.set_name(_('Playlist files'))
         openfilter.add_pattern("*.pkl")
 
         response = opendlg.run()
 
-        if response == gtk.RESPONSE_OK:
+        if response == gtk.ResponseType.OK:
             self.playlist.clear()
             self.stop_play()
             self.load_saved_playlist(opendlg.get_filename())
             response = dialog.run()
             dialog.destroy()
         else:
-            response = gtk.RESPONSE_YES
+            response = gtk.ResponseType.YES
 
-        if response == gtk.RESPONSE_YES:
+        if response == gtk.ResponseType.YES:
             covercache.analyze_cache_limit()
             self.save_playlist("%s/.gsharkdown/playlist.pkl" % os.environ.get("HOME"))
             self.save_downqueue("%s/.gsharkdown/downqueue.pkl" % os.environ.get("HOME"))
                 gobject.source_remove(self.player_state_timeout_id)
                 self.player_state_timeout_id = None
 
-            if env().have_notify():
-                self.pynotify_object.close()
+            #if env().have_notify():
+            #    self.pynotify_object.close()
 
             self.staticon.change_status_stopped()
             self.button_play.set_image(self.widget_image_play)
 
     def show_playing_song_notification(self):
         song = self.get_playing_song()
-        self.pynotify_object.update(_("Now playing"),
-            "%s - %s" % (glib.markup_escape_text(song.get_artist()),
-                         glib.markup_escape_text(song.get_title())),
-            "audio-x-generic")
-        self.pynotify_object.show()
+        #self.pynotify_object.update(_("Now playing"),
+        #    "%s - %s" % (glib.markup_escape_text(song.get_artist()),
+        #                 glib.markup_escape_text(song.get_title())),
+        #    "audio-x-generic")
+        #self.pynotify_object.show()
 
     def play_first_song(self):
         if len(self.playlist) > 0:

lib/covercache.py

 import os
-import gtk
+from gi.repository import Gtk as gtk
 from enviroment import env, config
 
 _missed_pixbuf = None

lib/enviroment.py

         self.BASEPATH = None
 
         # Dependencies information
-        self.HAVE_NOTIFY = None
+        self.HAVE_NOTIFY = False
         self.HAVE_PYLAST = None
         self.HAVE_INDICATOR = None
 

lib/guihelpers.py

 except:
     pass
 
-try:
-    import pynotify
-except:
-    pass
+#try:
+#    import pynotify
+#except:
+#    pass
 
 try:
     import pylast