source: src/mlx/gui/statusicon.py@ 33:a9150c8d2767

Last change on this file since 33:a9150c8d2767 was 32:46c1a12f72d1, checked in by István Váradi <ivaradi@…>, 13 years ago

Implemented the status bar.

File size: 3.7 KB
Line 
1# Implementation of the status icon
2
3#-------------------------------------------------------------------------------
4
5from common import *
6
7import mlx.const as const
8
9#-------------------------------------------------------------------------------
10
11class StatusIcon(FlightStatusHandler):
12 """The class handling the status icon."""
13 def __init__(self, iconDirectory, gui):
14 """Construct the status icon."""
15 super(StatusIcon, self).__init__()
16
17 self._gui = gui
18
19 menu = gtk.Menu()
20
21 if appIndicator:
22 self._stageMenuItem = gtk.MenuItem()
23 self._stageMenuItem.show()
24 menu.append(self._stageMenuItem)
25
26 self._ratingMenuItem = gtk.MenuItem()
27 self._ratingMenuItem.show()
28 menu.append(self._ratingMenuItem)
29
30 separator = gtk.SeparatorMenuItem()
31 separator.show()
32 menu.append(separator)
33
34 self._showHideMenuItem = gtk.CheckMenuItem()
35 self._showHideMenuItem.set_label("Show main window")
36 self._showHideMenuItem.set_active(True)
37 self._showHideMenuItem.connect("toggled", self._showHideToggled)
38 self._showHideMenuItem.show()
39 menu.append(self._showHideMenuItem)
40
41 menu.show()
42
43 iconFile = os.path.join(iconDirectory, "logo.ico")
44
45 if appIndicator:
46 if pygobject:
47 indicator = appindicator.Indicator.new ("mava-logger-x", iconFile,
48 appindicator.IndicatorCategory.APPLICATION_STATUS)
49 indicator.set_status (appindicator.IndicatorStatus.ACTIVE)
50 else:
51 indicator = appindicator.Indicator ("mava-logger-x", iconFile,
52 appindicator.CATEGORY_APPLICATION_STATUS)
53 indicator.set_status (appindicator.STATUS_ACTIVE)
54
55 indicator.set_menu(menu)
56 self._indicator = indicator
57 else:
58 def popup_menu(status, button, time):
59 menu.popup(None, None, gtk.status_icon_position_menu,
60 button, time, status)
61
62 statusIcon = gtk.StatusIcon()
63 statusIcon.set_from_file(iconFile)
64 statusIcon.set_visible(True)
65 statusIcon.connect('popup-menu', popup_menu)
66 statusIcon.connect('activate',
67 lambda status: self._gui.toggleMainWindow())
68 self._statusIcon = statusIcon
69
70 self._updateFlightStatus()
71
72 def mainWindowHidden(self):
73 """Called when the main window is hidden."""
74 self._showHideMenuItem.set_active(False)
75
76 def mainWindowShown(self):
77 """Called when the main window is shown."""
78 self._showHideMenuItem.set_active(True)
79
80 def _showHideToggled(self, menuitem):
81 """Called when the show/hide menu item is toggled."""
82 if self._showHideMenuItem.get_active():
83 self._gui.showMainWindow()
84 else:
85 self._gui.hideMainWindow()
86
87 def _updateFlightStatus(self):
88 """Update the flight status."""
89 stage = "-" if self._stage is None else const.stage2string(self._stage)
90
91 if self._noGoReason is None:
92 rating = "%.0f%%" % (self._rating,)
93 else:
94 rating = self._noGoReason
95
96 if appIndicator:
97 self._stageMenuItem.set_label("Stage: %s" % (stage,))
98 self._ratingMenuItem.set_label("Rating: %s" % (rating,))
99 else:
100 if self._noGoReason is not None:
101 rating = '<span foreground="red">' + rating + '</span>'
102 markup = "MAVA Logger X %s\n\nStage: %s\nRating: %s" %\
103 (const.VERSION, stage, rating)
104 self._statusIcon.set_tooltip_markup(markup)
Note: See TracBrowser for help on using the repository browser.