21
21
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22
22
# Boston, MA 02111-1307, USA.
24
from gi.repository import Gtk
27
27
from spectlib.gtkconfig import create_menu_item
43
43
self.ICON_PATH = os.path.join(self.specto.PATH, "icons/specto_tray_1.svg")
44
44
self.ICON2_PATH = os.path.join(self.specto.PATH, "icons/specto_tray_2.svg")
45
45
# Create the tray icon object
46
self.tray = gtk.StatusIcon()
46
self.tray = Gtk.StatusIcon()
47
47
self.tray.set_from_file(self.ICON_PATH)
48
48
self.tray.connect("activate", self.show_notifier)
49
49
self.tray.connect("popup-menu", self.show_popup)
57
57
self.notifier.restore_size_and_position()
58
58
self.notifier.notifier.show()
60
while gtk.events_pending():
61
gtk.main_iteration(True)
60
while Gtk.events_pending():
61
Gtk.main_iteration(True)
63
63
def set_icon_state_excited(self):
64
64
""" Change the tray icon to "changed". """
141
141
self.item_show = create_menu_item(_("Show window"), self.show_notifier, None)
143
self.item_pref = create_menu_item(gtk.STOCK_PREFERENCES, self.show_preferences, gtk.STOCK_PREFERENCES)
144
self.item_help = create_menu_item(gtk.STOCK_HELP, self.show_help, gtk.STOCK_HELP)
145
self.item_about = create_menu_item(gtk.STOCK_ABOUT, self.show_about, gtk.STOCK_ABOUT)
146
self.item_quit = create_menu_item(gtk.STOCK_QUIT, self.quit, gtk.STOCK_QUIT)
143
self.item_pref = create_menu_item(Gtk.STOCK_PREFERENCES, self.show_preferences, Gtk.STOCK_PREFERENCES)
144
self.item_help = create_menu_item(Gtk.STOCK_HELP, self.show_help, Gtk.STOCK_HELP)
145
self.item_about = create_menu_item(Gtk.STOCK_ABOUT, self.show_about, Gtk.STOCK_ABOUT)
146
self.item_quit = create_menu_item(Gtk.STOCK_QUIT, self.quit, Gtk.STOCK_QUIT)
147
147
self.item_clear = create_menu_item(_("Mark as read"), None, None)
148
self.item_refresh = create_menu_item(_("Refresh All"), self.refresh, gtk.STOCK_REFRESH)
148
self.item_refresh = create_menu_item(_("Refresh All"), self.refresh, Gtk.STOCK_REFRESH)
150
150
#create submenu for changed watches
151
self.sub_menu = gtk.Menu()
151
self.sub_menu = Gtk.Menu()
153
153
self.sub_item_clear = create_menu_item(_("_Mark all read"),
154
self.specto.notifier.mark_all_as_read, gtk.STOCK_CLEAR)
154
self.specto.notifier.mark_all_as_read, Gtk.STOCK_CLEAR)
155
155
self.sub_menu.append(self.sub_item_clear)
157
self.sub_menu.append(gtk.SeparatorMenuItem())
157
self.sub_menu.append(Gtk.SeparatorMenuItem())
159
159
for watch in self.specto.watch_db:
160
160
if watch.changed == True:
161
image = gtk.image_new_from_pixbuf(self.notifier.get_icon(watch.icon, 0, False))
161
image = Gtk.image_new_from_pixbuf(self.notifier.get_icon(watch.icon, 0, False))
162
162
self.sub_item_clear = create_menu_item(watch.name, None, image)
163
163
self.sub_item_clear.connect('activate', self.specto.notifier.mark_watch_as_read, watch.id)
164
164
self.sub_menu.append(self.sub_item_clear)
167
167
self.item_clear.set_submenu(self.sub_menu)
169
169
# Create the menu
170
self.menu = gtk.Menu()
170
self.menu = Gtk.Menu()
172
172
# Append menu items to the menu
173
173
self.menu.append(self.item_show)
174
self.menu.append(gtk.SeparatorMenuItem())
174
self.menu.append(Gtk.SeparatorMenuItem())
175
175
self.menu.append(self.item_refresh)
176
176
self.menu.append(self.item_clear)
177
self.menu.append(gtk.SeparatorMenuItem())
177
self.menu.append(Gtk.SeparatorMenuItem())
178
178
self.menu.append(self.item_pref)
179
179
self.menu.append(self.item_help)
180
180
self.menu.append(self.item_about)
181
self.menu.append(gtk.SeparatorMenuItem())
181
self.menu.append(Gtk.SeparatorMenuItem())
182
182
self.menu.append(self.item_quit)
183
183
self.menu.show_all()
184
self.menu.popup(None, None, gtk.status_icon_position_menu, button, activate_time, self.tray)#the last argument is to tell gtk.status_icon_position_menu where to grab the coordinates to position the popup menu correctly
184
self.menu.popup(None, None, Gtk.status_icon_position_menu, button, activate_time, self.tray)#the last argument is to tell Gtk.status_icon_position_menu where to grab the coordinates to position the popup menu correctly
187
187
if self.tray.get_visible()==True: