Ignore:
Timestamp:
02/25/12 15:49:27 (12 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
default
Phase:
public
Message:

Implemented the status bar.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/mlx/gui/statusicon.py

    r31 r32  
    99#-------------------------------------------------------------------------------
    1010
    11 class StatusIcon(object):
     11class StatusIcon(FlightStatusHandler):
    1212    """The class handling the status icon."""
    1313    def __init__(self, iconDirectory, gui):
    1414        """Construct the status icon."""
     15        super(StatusIcon, self).__init__()
     16
    1517        self._gui = gui
    1618
    17         self._stage = None
    18         self._rating = 100
    19         self._noGoReason = None
    20        
    2119        menu = gtk.Menu()
    2220
    2321        if appIndicator:
    2422            self._stageMenuItem = gtk.MenuItem()
    25             self._stageMenuItem.set_label("Stage: -")
    2623            self._stageMenuItem.show()
    2724            menu.append(self._stageMenuItem)
    2825
    2926            self._ratingMenuItem = gtk.MenuItem()
    30             self._ratingMenuItem.set_label("Rating: 100%")
    3127            self._ratingMenuItem.show()
    3228            menu.append(self._ratingMenuItem)
     
    7167                               lambda status: self._gui.toggleMainWindow())
    7268            self._statusIcon = statusIcon
    73             self._setTooltip()
     69
     70        self._updateFlightStatus()
    7471
    7572    def mainWindowHidden(self):
     
    8178        self._showHideMenuItem.set_active(True)
    8279
    83     def resetFlightStatus(self):
    84         """Reset the status of the flight."""
    85         if not appIndicator:
    86             self._statusIcon.set_blinking(False)
    87         self._noGoReason = None
    88         self.setStage(None)
    89         self.setRating(100)
    90        
    91     def setStage(self, stage):
    92         """Set the stage of the flight."""
    93         self._stage = stage
    94         if appIndicator:
    95             label = "Stage: %s" % ("-" if self._stage is None \
    96                                    else (const.stage2string(stage),))
    97             self._stageMenuItem.set_label(label)
    98         else:
    99             self._setTooltip()
    100 
    101     def setRating(self, rating):
    102         """Set the rating to the given value."""
    103         if rating==self._rating:
    104             return
    105         self._rating = rating
    106 
    107         if appIndicator:
    108             if self._noGoReason is None:
    109                 self._ratingMenuItem.set_label("Rating: %.0f%%" % (rating,))
    110             else:
    111                 self._setTooltip()
    112 
    113     def setNoGo(self, reason):
    114         """Set a No-Go condition with the given reason."""
    115         if self._noGoReason is not None:
    116             return
    117 
    118         self._noGoReason = reason
    119         if appIndicator:
    120             self._ratingMenuItem.set_label("Rating: %s" % (reason,))
    121         else:
    122             self._setTooltip()
    123             self._statusIcon.set_blinking(True)
    124 
    12580    def _showHideToggled(self, menuitem):
    12681        """Called when the show/hide menu item is toggled."""
     
    13085            self._gui.hideMainWindow()
    13186
    132     def _setTooltip(self):
    133         """Set the tooltip of the status icon."""
     87    def _updateFlightStatus(self):
     88        """Update the flight status."""
     89        stage = "-" if self._stage is None else const.stage2string(self._stage)
     90       
    13491        if self._noGoReason is None:
    13592            rating = "%.0f%%" % (self._rating,)
    13693        else:
    137             rating = '<span foreground="red">' + self._noGoReason + '</span>'
     94            rating = self._noGoReason
    13895
    139         markup = "MAVA Logger X %s\n\nStage: %s\nRating: %s" %\
    140                  (const.VERSION, ("-" if self._stage is None else
    141                                   const.stage2string(self._stage)),
    142                   rating)
    143        
    144         self._statusIcon.set_tooltip_markup(markup)
    145        
     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 TracChangeset for help on using the changeset viewer.