Ignore:
Timestamp:
04/15/12 11:03:59 (12 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
default
Phase:
public
Message:

Created an integer entry widget and made use of it for entering the cargo weight and the takeoff speeds.

File:
1 edited

Legend:

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

    r76 r84  
    7878
    7979#------------------------------------------------------------------------------
     80
     81class IntegerEntry(gtk.Entry):
     82    """An entry that allows only either an empty value, or an integer."""
     83    def __init__(self, defaultValue = None):
     84        """Construct the entry."""
     85        gtk.Entry.__init__(self)
     86
     87        self._defaultValue = defaultValue
     88        self._currentInteger = defaultValue
     89        self._selfSetting = False
     90        self._set_text()
     91
     92        self.connect("changed", self._handle_changed)
     93
     94    def get_int(self):
     95        """Get the integer."""
     96        return self._currentInteger
     97
     98    def set_int(self, value):
     99        """Set the integer."""
     100        if value!=self._currentInteger:
     101            self._currentInteger = value
     102            self.emit("integer-changed", self._currentInteger)
     103        self._set_text()
     104   
     105    def _handle_changed(self, widget):
     106        """Handle the changed signal."""
     107        if self._selfSetting:
     108            return
     109        text = self.get_text()
     110        if text=="":
     111            self.set_int(self._defaultValue)
     112        else:
     113            try:
     114                self.set_int(int(text))
     115            except:
     116                self._set_text()
     117
     118    def _set_text(self):
     119        """Set the text value from the current integer."""
     120        self._selfSetting = True
     121        self.set_text("" if self._currentInteger is None
     122                      else str(self._currentInteger))
     123        self._selfSetting = False
     124               
     125#------------------------------------------------------------------------------
     126
     127gobject.signal_new("integer-changed", IntegerEntry, gobject.SIGNAL_RUN_FIRST,
     128                   None, (object,))
     129
     130#------------------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.