1
# -*- coding: utf-8 -*-
3
# This file is part of emesene.
5
# Emesene is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 2 of the License, or
8
# (at your option) any later version.
10
# emesene is distributed in the hope that it will be useful,
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
15
# You should have received a copy of the GNU General Public License
16
# along with emesene; if not, write to the Free Software
17
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
import emesenelib.common
23
class StatusMenu(gtk.Menu):
24
'''This class represents the status menu where you can select a given
25
status and it will be changed. This is a standalone class because
26
it is used in two classes (MainMenu and TrayIcon)'''
28
def __init__(self, controller):
30
gtk.Menu.__init__(self)
32
self.controller = controller
33
self.theme = self.controller.theme
36
for i in self.controller.status_ordered[0]:
37
if i not in self.controller.bad_statuses:
38
menuItem = self.newImageMenuItem (
39
self.controller.status_ordered[3][j], None,
40
self.controller.theme.statusToPixbuf(i))
43
menuItem.connect("button-release-event", self.activateNT, i)
45
menuItem.connect("activate", self.activate, i)
48
def newImageMenuItem(self, label, stock = None, img = None):
49
mi = gtk.ImageMenuItem(_(label))
52
mi.set_image(gtk.image_new_from_stock(stock, gtk.ICON_SIZE_MENU))
55
image.set_from_pixbuf(img.scale_simple(16,16,gtk.gdk.INTERP_BILINEAR))
59
def newCheckMenuItem(self, label, checked):
60
mi = gtk.CheckMenuItem(_(label))
61
mi.set_active(checked)
64
def activate(self, menuitem, status):
65
'''change the status with the userparam'''
66
self.controller.msn.changeStatus(status)
68
def activateNT(self, menuitem, event, status):
69
'''change the status with the userparam, ugly windows hack'''
70
self.controller.msn.changeStatus(status)