diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index e69de29..0000000 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..02023e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +grnotify_1.1.2.tar.gz diff --git a/Makefile b/Makefile deleted file mode 100644 index 8633755..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: grnotify -# $Id$ -NAME := grnotify -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/grnotify-1.1.2-fixurl.patch b/grnotify-1.1.2-fixurl.patch new file mode 100644 index 0000000..d40f5c7 --- /dev/null +++ b/grnotify-1.1.2-fixurl.patch @@ -0,0 +1,596 @@ +diff -up grnotify-1.1.2/grnotify.patch grnotify-1.1.2/grnotify +--- grnotify-1.1.2/grnotify.patch 2009-01-31 22:32:30.000000000 +0100 ++++ grnotify-1.1.2/grnotify 2009-04-09 08:07:18.420146374 +0200 +@@ -37,13 +37,13 @@ VERSION = '1.1.2' + + ######### + #Main class: the tray icon +-# ++# + class grnotify(Thread): +- ++ + #-------------------------------------------- + # initialization + #-------------------------------------------- +- ++ + #configuration options if there is no config file + def initialConfig(self): + if not (os.path.exists(os.path.join(os.environ['HOME'], '.grnotify/'))): +@@ -65,8 +65,8 @@ class grnotify(Thread): + self.autoHide = False + self.useKeyRing = True + self.ok = False +- +- ++ ++ + def saveConfig(self): + CONFIGFILE = os.path.join(os.environ['HOME'], '.grnotify/config') + config = ConfigParser.ConfigParser() +@@ -87,7 +87,7 @@ class grnotify(Thread): + config.set("Icons", "New items icon", self.iconNew) + config.set("Icons", "No new items icon", self.iconNoNew) + config.set("Icons", "Broken icon", self.iconBroken) +- ++ + config.write(open(CONFIGFILE, 'w')) + + def readConfig(self): +@@ -109,7 +109,7 @@ class grnotify(Thread): + self.openReader = config.get("User settings", "open reader").lower() != "false" + self.autoHide = config.get("User settings", "autohide").lower() != "false" + self.useKeyRing = config.get("User settings", "useKeyRing").lower() != "false" +- ++ + self.iconNew = config.get("Icons", "New items icon") + self.iconNoNew = config.get("Icons", "No new items icon") + self.iconBroken = config.get("Icons", "Broken icon") +@@ -119,17 +119,17 @@ class grnotify(Thread): + os.remove(CONFIGFILE) + else: + self.newUser = True +- ++ + def saveKeyRing(self, passwd): + keyring = "login" + try: +- ++ + import gnomekeyring + import gconf + gnomekeyring.create_sync(keyring, None) + except gnomekeyring.AlreadyExistsError: + pass +- ++ + try: + auth_token = gnomekeyring.item_create_sync( + keyring, +@@ -146,16 +146,16 @@ class grnotify(Thread): + keyring = "login" + password = '' + try: +- ++ + import gnomekeyring + import gconf +- gnomekeyring.create_sync(keyring, None) +- except gnomekeyring.AlreadyExistsError: +- pass ++ gnomekeyring.create_sync(keyring, None) ++ except gnomekeyring.AlreadyExistsError: ++ pass + auth_token = gconf.client_get_default().get_int("/apps/grnotify/keyring_auth_token") + if auth_token > 0: + try: +- password = gnomekeyring.item_get_info_sync(keyring, ++ password = gnomekeyring.item_get_info_sync(keyring, + auth_token).get_secret() + except: + pass +@@ -165,8 +165,7 @@ class grnotify(Thread): + url = "https://www.google.com/accounts/ServiceLoginAuth?" + \ + urllib.urlencode({'Email':grnotify_app.greader.email}) + "&" + \ + urllib.urlencode({'Passwd':grnotify_app.greader.passwd}) + \ +- "&service=reader&continue=" + \ +- "https://www.google.com/reader&nui=1" ++ "&continue=https://www.google.com/reader&nui=1" + webbrowser.open_new_tab(url) + + def __init__(self): +@@ -182,46 +181,46 @@ class grnotify(Thread): + self.tray_icon = egg.trayicon.TrayIcon("grnotify") + + # create a eventbox object which is going to be added to the trayicon object +- self.grnotify_eventbox = gtk.EventBox() ++ self.grnotify_eventbox = gtk.EventBox() + + # add the eventbox object to the trayicon object for event handling (click, scroll) + self.tray_icon.add(self.grnotify_eventbox) +- ++ + # connect "click" event to their handlers + self.grnotify_eventbox.connect("button_press_event", self.clicked) +- +- ++ ++ + # create container + self.traycontainer = gtk.HBox() +- ++ + # create the image object + self.icon = gtk.Image() + # and the unread label + self.unread_label = gtk.Label('? ') +- ++ + # set the image pixmap + self.icon.set_from_file(self.iconBroken) + # add the image object to the tray container + self.traycontainer.pack_start(self.icon, False, False, padding = 0) + self.traycontainer.pack_start(self.unread_label, False, False, padding = 0) + self.grnotify_eventbox.add(self.traycontainer) +- +- ++ ++ + # create the tooltip, pass it the actual information and add it to the grnotify_eventbox + self.tooltip = gtk.Tooltips() + self.tooltip_message = "Getting feed info" + self.tooltip.set_tip(self.grnotify_eventbox,self.tooltip_message) + self.tooltip.enable() +- ++ + # show the trayicon (+ etc.) +- self.tray_icon.show_all() ++ self.tray_icon.show_all() + # self.properties = properties_dialog() + self.menu = tray_menu(self) + self.about = about_dialog() + + # + #---- clicked :the eventbox (from the trayicon) click event handler +- # ++ # + def clicked(self,widget,event): + # right click + if event.button == 3: +@@ -231,31 +230,31 @@ class grnotify(Thread): + if event.button == 1: + if self.ok and self.openReader: + self.openGoogleReader() +- else: ++ else: + self.getUnreadFeeds() +- ++ + def run(self): + if self.newUser: + configure_window() + while not self.ok: + self.refresh() + time.sleep(30) +- while (1): ++ while (1): + time.sleep(self.waitTime) + self.refresh() +- ++ + def refresh(self, forced = False): +- if self.broken: ++ if self.broken: + self.notification('Please fill in your info in preferences') + self.broken = False + self.refresher = updater(forced) + self.refresher.start() +- ++ + def updateToolTip(self): + gtk.gdk.threads_enter() + if self.ok: + message = str(self.greader.totalUnread) + ' unread item' +- if self.greader.totalUnread != 1: ++ if self.greader.totalUnread != 1: + message += 's' + i = 0 + for feed in self.feeds: +@@ -266,7 +265,7 @@ class grnotify(Thread): + message = 'Something went wrong.\nPlease check your internet connection and settings.' + self.tooltip.set_tip(self.grnotify_eventbox, message) + gtk.gdk.threads_leave() +- ++ + def updateIcon(self): + gtk.gdk.threads_enter() + if not self.ok: +@@ -280,13 +279,13 @@ class grnotify(Thread): + grnotify_app.unread_label.set_text(str(self.greader.totalUnread)+ ' ') + grnotify_app.icon.show_all() + grnotify_app.unread_label.show_all() +- ++ + if not self.showCounter or self.greader.totalUnread == 0: + grnotify_app.unread_label.hide() + if self.autoHide and self.greader.totalUnread == 0: + grnotify_app.icon.hide() + gtk.gdk.threads_leave() +- ++ + #shows the notification + def notify(self, current, previous): + try: +@@ -297,7 +296,7 @@ class grnotify(Thread): + self.notification("You have " + str(current-previous) + " new unread items") + except: + pass +- ++ + def notification(self, message): + if self.showNotification: + #try: +@@ -308,7 +307,7 @@ class grnotify(Thread): + bubble.show() + #except: + # pass +- ++ + ######################### BEGIN CLASS TRAY MENU ########################## + #Create the configure window + #Written by Kristof Bamps @ Feb 5 2008 +@@ -323,10 +322,10 @@ class tray_menu: + # create the menu separator menu item object + menu_item_refresh = gtk.ImageMenuItem('gtk-refresh',None) + menu_item_refresh.connect('activate',self.refresh_clicked) +- ++ + menu_google_reader = gtk.ImageMenuItem ('Open Google Reader', None) + menu_google_reader.connect ('activate', self.openGoogleReader) +- ++ + menu_mark_read = gtk.ImageMenuItem ('Mark all as read', None) + menu_mark_read.connect('activate', self.markAllRead) + if (self.parent.greader.totalUnread == 0 ): +@@ -354,71 +353,71 @@ class tray_menu: + self.window.add(menu_item_feed) + self.window.add(menu_item_preferences) + self.window.add (gtk.SeparatorMenuItem()) +- ++ + view_item = gtk.Menu() +- menu_view_item = gtk.MenuItem ('View Items', None) ++ menu_view_item = gtk.MenuItem ('View Items', None) + menu_view_item.set_submenu (view_item) + self.setTitels(view_item) + if (self.parent.greader.totalUnread == 0 or self.parent.numberTitles == 0): + menu_view_item.set_sensitive (0) + self.window.add (menu_view_item) +- ++ + self.window.add (gtk.SeparatorMenuItem()) + # add the about menu item to the menu object + self.window.add(menu_item_about) +- ++ + # create the quit menu item object with it's icon + menu_item_quit = gtk.ImageMenuItem('gtk-quit',None) + + # connect a handler to it + menu_item_quit.connect('activate',self.exit) + +- # add the quit menu item to the menu object ++ # add the quit menu item to the menu object + self.window.add(menu_item_quit) +- ++ + # show the menu +- self.window.show_all() ++ self.window.show_all() + def exit(self,widget): +- # quit menu item handler -> quit the application ++ # quit menu item handler -> quit the application + os.system("kill " + str (os.getpid())) +- ++ + def feed_clicked (self, widget): + popup = feedPopup() +- ++ + def markAllRead (self, widget): + self.parent.greader.markAllRead() + self.parent.refresh() +- ++ + def refresh_clicked (self, widget): + self.parent.refresh() +- ++ + def preferences_clicked (self, widget): + configureWindow = configure_window() +- ++ + def about_clicked(self,widget): + # about menu item handler -> create the about window + grnotify_app.about.create() +- ++ + def popup(self,event): + # popup-show the menu +- self.window.popup( None, None, None, 0, event.time); +- ++ self.window.popup( None, None, None, 0, event.time); ++ + def close(self,widget): + # the warning close button has been clicked (or the window was closed else way) + grnotify_app.warning_close_button = True +- ++ + # the window isn't opened + grnotify_app.warning_window_opened = False + self.window.destroy() +- ++ + def openGoogleReader(self, widget = None): + url = "https://www.google.com/accounts/ServiceLoginAuth?" + \ + urllib.urlencode({'Email':grnotify_app.greader.email}) + "&" + \ + urllib.urlencode({'Passwd':grnotify_app.greader.passwd}) + \ + "&service=reader&continue=" + \ +- "https://www.google.com/reader&nui=1" ++ "https://www.google.com/reader&nui=1" + webbrowser.open_new_tab(url) +- ++ + def openlink(self, item): + i = 0 + for item2 in self.items: +@@ -427,18 +426,18 @@ class tray_menu: + self.markRead(self.titles[i].id, self.titles[i].feed) + self.parent.refresh(forced=True) + i = i+1 +- ++ + def markRead(self, id, feed): + req = urllib2.Request ('http://www.google.com/reader/api/0/token') + f = urllib2.urlopen (req) + token = f.read() +- ++ + data = { 'i' : id, 's' : feed, 'T' : token, 'ac' : 'edit-tags' , 'a' : 'user/-/state/com.google/read' } + data = urllib.urlencode (data) + url = 'http://www.google.com/reader/api/0/edit-tag' + req = urllib2.Request (url, data) + f = urllib2.urlopen (req) +- ++ + def setTitels(self, menu) : + self.items = [] + self.titles = [] +@@ -449,7 +448,7 @@ class tray_menu: + self.items.append(gtk.MenuItem (title.title, None)) + self.items[-1].connect ('activate', self.openlink) + menu.add (self.items[-1]) +- ++ + else: + self.menus = [] + self.feedMenus = [] +@@ -469,14 +468,14 @@ class tray_menu: + menu.add(self.menus[-1]) + else: + del self.menus[-1] +- ++ + class about_dialog: + def create(self): + CONFIG = '/usr/share/grnotify/' + # set the glade file +- self.gladefile = CONFIG + "about.glade" ++ self.gladefile = CONFIG + "about.glade" + +- # create the widget three ++ # create the widget three + self.wTree = gtk.glade.XML(self.gladefile, "window_about") + self.wTree.signal_autoconnect(self) + +@@ -495,7 +494,7 @@ class about_dialog: + def on_close_button_clicked(self, button=None, data=None): + #Close the dialog + self.window.destroy() +- ++ + class updater (Thread): + def __init__(self, forced = False): + Thread.__init__(self) +@@ -506,8 +505,8 @@ class updater (Thread): + grnotify_app.greader.login(grnotify_app.user, grnotify_app.passwd) + grnotify_app.feeds = grnotify_app.greader.getUnreadFeeds() + grnotify_app.ok = True +- +- ++ ++ + grnotify_app.updateToolTip() + grnotify_app.updateIcon() + if grnotify_app.unread != grnotify_app.greader.totalUnread or self.forced: +@@ -519,31 +518,31 @@ class updater (Thread): + grnotify_app.updateToolTip() + grnotify_app.updateIcon() + pass +- +- ++ ++ + class feedPopup: + def __init__(self): + CONFIG = '/usr/share/grnotify/' + + #Create the dialog + self.gladefile = CONFIG + "feed.glade" +- self.xml = gtk.glade.XML(self.gladefile) ++ self.xml = gtk.glade.XML(self.gladefile) + self.xml.signal_autoconnect(self) + self.window = self.xml.get_widget('main_window') + self.window.set_title('GrNotify: Add feed') + def on_close_button_clicked(self, button=None, data=None): + #Close the dialog + self.window.destroy() +- ++ + def on_save_button_clicked(self, button=None, data=None): + # try: +- ++ + feed = self.xml.get_widget('entry1').get_text() + self.window.destroy() + addFeed(feed).start() +- ++ + class addFeed(Thread): +- def __init__(self, feed): ++ def __init__(self, feed): + self.feed = feed + Thread.__init__(self) + def run(self): +@@ -551,7 +550,7 @@ class addFeed(Thread): + req = urllib2.Request ('http://www.google.com/reader/api/0/token') + f = urllib2.urlopen (req) + token = f.read() +- ++ + data = { 's' : 'feed/' + self.feed, 'T' : token, 'ac' : 'subscribe'} + data = urllib.urlencode (data) + url = 'http://www.google.com/reader/api/0/subscription/edit?client=contact:' + grnotify_app.user +@@ -560,16 +559,16 @@ class addFeed(Thread): + grnotify_app.refresh() + except: + pass +- ++ + class DBusReader(dbus.service.Object): +- @dbus.service.method("org.gnome.feed.Reader", ++ @dbus.service.method("org.gnome.feed.Reader", + in_signature="s", out_signature="b") + def Subscribe(self, url): + try: + req = urllib2.Request('http://www.google.com/reader/api/0/token') + f = urllib2.urlopen(req) + token = f.read() +- ++ + data = {'s': 'feed/' + url, 'T': token, 'ac': 'subscribe'} + data = urllib.urlencode(data) + req = urllib2.Request('http://www.google.com/reader/api/0/subscription/edit?client=contact:' + grnotify_app.user, data) +@@ -580,7 +579,7 @@ class DBusReader(dbus.service.Object): + return True + except: + return False +- ++ + class configure_window: + def __init__(self): + #Set variables +@@ -588,7 +587,7 @@ class configure_window: + + #Create the dialog + self.gladefile = CONFIG + "config.glade" +- self.xml = gtk.glade.XML(self.gladefile) ++ self.xml = gtk.glade.XML(self.gladefile) + self.xml.signal_autoconnect(self) + self.window = self.xml.get_widget('main_window') + +@@ -602,11 +601,11 @@ class configure_window: + self.xml.get_widget('spinbutton1').set_text( str( ( grnotify_app.waitTime - grnotify_app.waitTime % 60 ) / 60) ) + self.xml.get_widget('spinbutton2').set_text( str( grnotify_app.waitTime % 60 ) ) + self.xml.get_widget('spinbutton3').set_text( str( grnotify_app.numberFeeds ) ) +- if( grnotify_app.showCounter == True ): ++ if( grnotify_app.showCounter == True ): + self.xml.get_widget('showcounter1').set_active(1) + if grnotify_app.showNotification == True: + self.xml.get_widget('showpopups1').set_active(1) +- #Set the appropriate images to the icon chosers!!! ++ #Set the appropriate images to the icon chosers!!! + self.xml.get_widget('imagechooseiconnew2').set_from_file(grnotify_app.iconNew) + self.xml.get_widget('buttonchooseiconnew2').connect("clicked", self.iconclicked, "new") + self.xml.get_widget('imagechooseiconnonew2').set_from_file(grnotify_app.iconNoNew) +@@ -647,22 +646,22 @@ class configure_window: + self.fileselect.add_filter(filter) + + response = self.fileselect.run() +- ++ + if response == gtk.RESPONSE_OK: + self.iconget(widget,data) + elif response == gtk.RESPONSE_CANCEL: + self.fileselect.destroy() +- ++ + def iconget(self, widget, data=None): + filename = self.fileselect.get_filename() + self.fileselect.destroy() +- ++ + if(not filename.endswith('.gif') and not filename.endswith('.png') and not filename.endswith('.xpm')): + return +- ++ + if(not os.stat(filename).st_size > 0): + return +- ++ + if ( data == 'new' ): + gtk.gdk.pixbuf_new_from_file(filename).scale_simple(24, 24, gtk.gdk.INTERP_NEAREST).save(os.path.join(os.environ['HOME'], '.grnotify/newtemp.png'), "png", {}) + self.fileiconnew = 'changed' +@@ -674,7 +673,7 @@ class configure_window: + self.fileiconbroken = 'changed' + self.xml.get_widget('imagechooseicon' + data + '2').set_from_file(os.path.join(os.environ['HOME'], '.grnotify/' + data + 'temp.png')) + +- def get_info(self): ++ def get_info(self): + grnotify_app.user = self.xml.get_widget('username_entry2').get_text() + grnotify_app.passwd = self.xml.get_widget('password_entry2').get_text() + grnotify_app.waitTime =int( self.xml.get_widget('spinbutton1').get_text()) * 60 +@@ -695,8 +694,8 @@ class configure_window: + grnotify_app.iconNoNew = '/usr/share/pixmaps/grnotify/nonew.gif' + grnotify_app.iconBroken = '/usr/share/pixmaps/grnotify/broken.gif' + grnotify_app.numberFeeds = int (self.xml.get_widget('spinbutton3').get_text()) +- grnotify_app.showCounter = self.xml.get_widget('showcounter1').get_active() +- grnotify_app.showNotification = self.xml.get_widget('showpopups1').get_active() ++ grnotify_app.showCounter = self.xml.get_widget('showcounter1').get_active() ++ grnotify_app.showNotification = self.xml.get_widget('showpopups1').get_active() + grnotify_app.openReader = not self.xml.get_widget('combobox2').get_active() + grnotify_app.autoHide = self.xml.get_widget('autohide').get_active() + grnotify_app.useKeyRing = self.xml.get_widget('gnomekeyring').get_active() +@@ -705,7 +704,7 @@ class configure_window: + def on_save_button_clicked(self, button=None, data=None): + #Get global access to the config_changed variable + #Aquire the new data +- self.get_info() ++ self.get_info() + + #Save the new data to the config file + grnotify_app.saveConfig() +@@ -717,12 +716,12 @@ class configure_window: + def on_close_button_clicked(self, button=None, data=None): + #Close the dialog + self.window.destroy() +- ++ + if __name__ == "__main__" : + gtk.gdk.threads_init() +- ++ + # create the grnotify object (and icon) +- ++ + #readConfig() # fix by Eric Lembregts -> needed to know where the icon's are located!! + grnotify_app = grnotify() + grnotify_app.start() +@@ -734,5 +733,5 @@ if __name__ == "__main__" : + name = dbus.service.BusName("org.gnome.feed.Reader", session_bus) + reader = DBusReader(session_bus, '/org/gnome/feed/Reader') + mainloop = gobject.MainLoop() +- ++ + gtk.main() diff --git a/grnotify-setup.py b/grnotify-setup.py new file mode 100644 index 0000000..bb3b42a --- /dev/null +++ b/grnotify-setup.py @@ -0,0 +1,46 @@ +#/usr/bin/python +"""Copyright (C) 2009 Kristof Bamps + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +""" +from distutils.core import setup +from os import path +import sys + +DATA_DIR = path.join('share') +PIXMAPS_DIR = path.join(DATA_DIR , 'pixmaps') +APP_DIR = path.join(DATA_DIR , 'applications') + +setup( + name='grnotify', + version='1.1.2', + author='Kristof Bamps', + author_email='bamps DOT kristof AT gmail.com', + url='https://sourceforge.net/projects/grnotify/', + license='GPLv2+', + description='A Google Reader in python', + platforms='Any', + py_modules=['GoogleReader'], + scripts=['grnotify'], + data_files=[ + (PIXMAPS_DIR + "/grnotify", + ['pixmaps/broken.gif', 'pixmaps/new.gif', 'pixmaps/nonew.gif']), + (PIXMAPS_DIR, + ['pixmaps/grnotify.xpm']), + (DATA_DIR + "/grnotify", + ['share/about.glade', 'share/config.glade', 'share/feed.glade']), + (APP_DIR, + ['share/grnotify.desktop']) + ] +) diff --git a/grnotify.desktop b/grnotify.desktop new file mode 100644 index 0000000..660be63 --- /dev/null +++ b/grnotify.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Terminal=false +Name[en_US]=GrNotify +Name[fr_FR]=GrNotify +Exec=grnotify +Comment[en_US]=A Google Reader Notifier +Comment[fr_FR]=Un notificateur pour Google Reader +Name=GrNotify +Comment=A Google Reader Notifier +Icon=grnotify +Categories=Network; +GenericName=GrNotify diff --git a/grnotify.spec b/grnotify.spec new file mode 100644 index 0000000..0d17062 --- /dev/null +++ b/grnotify.spec @@ -0,0 +1,110 @@ +%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} + +Name: grnotify +Version: 1.1.2 +Release: 6%{?dist} +Summary: Google Reader Notifier + +Group: Applications/Internet +License: GPLv2+ +URL: http://grnotify.sourceforge.net +Source0: http://downloads.sourceforge.net/%{name}/%{name}_%{version}.tar.gz +Source1: %{name}.desktop +Source2: %{name}-setup.py +Patch0: %{name}-%{version}-fixurl.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildArch: noarch + +BuildRequires: python +BuildRequires: python-devel +BuildRequires: desktop-file-utils + +Requires: gtk2 > 2.0 +Requires: python >= 2.2 +Requires: pygtk2 >= 2.0 +Requires: PyXML >= 0.8.3 +Requires: gnome-python2-extras +Requires: notify-python >= 0.1 +Requires: pygtk2-libglade + + +%description +GrNotify is a simple Python written tray application that will allow you to +know when there are new items in the Google Reader. + + +%prep +%setup -q +%patch0 -p1 -b .fixurl +cp -p %{SOURCE2} ./setup.py + +# rpmlint : "grnotify.noarch: E: non-executable-script /usr/lib/python2.5/site-packages/grnotify/GoogleReader.py 0644" +sed -i -e "s@#!/usr/bin/python@@" GoogleReader.py + + +%build +%{__python} setup.py build + + +%install +rm -rf %{buildroot} + +%{__python} setup.py install -O1 --skip-build --root %{buildroot} +rm %{buildroot}%{_datadir}/applications/*.desktop + +install -d %{buildroot}%{_datadir}/applications +desktop-file-install \ + --dir %{buildroot}%{_datadir}/applications \ + %{SOURCE1} +desktop-file-install \ + --dir %{buildroot}%{_sysconfdir}/xdg/autostart \ + %{buildroot}%{_datadir}/applications/%{name}.desktop + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%doc AUTHORS CREDITS LICENSE README +%{_bindir}/%{name} +%{python_sitelib}/GoogleReader.py +%{python_sitelib}/GoogleReader.pyc +%{python_sitelib}/GoogleReader.pyo +%{python_sitelib}/%{name}-%{version}-*.egg-info +%{_datadir}/%{name}/*.glade +%{_datadir}/pixmaps/%{name}.xpm +%{_datadir}/pixmaps/%{name}/* +%{_datadir}/applications/%{name}.desktop +%config(noreplace) %{_sysconfdir}/xdg/autostart/%{name}.desktop + + +%changelog +* Thu Apr 09 2009 Guillaume Kulakowski - 1.1.2-6 +- Add patch for fix GReader URL + +* Sat Feb 22 2009 Guillaume Kulakowski - 1.1.2-5 +- Rename setup.py in grnotify-setup.py + +* Sat Feb 22 2009 Guillaume Kulakowski - 1.1.2-4 +- Fix vendor tag in desktop file + +* Wed Feb 18 2009 Guillaume Kulakowski - 1.1.2-3 +- New setup.py (Source2) proposed to the author + +* Sat Feb 07 2009 Guillaume Kulakowski - 1.1.2-2 +- Fix in install.py + +* Thu Feb 03 2009 Guillaume Kulakowski - 1.1.2-1 +- Update to 1.1.2 +- Use install.py + +* Thu Jan 29 2009 Guillaume Kulakowski - 1.1.1-1 +- Update to 1.1.1 + +* Wed Jan 21 2009 Guillaume Kulakowski - 1.0.2-2 +- Add an autostart + +* Sun Jan 18 2009 Guillaume Kulakowski - 1.0.2-1 +- Initial package diff --git a/sources b/sources index e69de29..714f783 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +1c3d4900dacc87c6e0c23edb515d0852 grnotify_1.1.2.tar.gz