Ignore:
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • .hgtags

    r495 r511  
    12125758776ce06206050a8c93cf36d15f8ccfb05097 version_0.17.1
    1313d83a928b8161308064c2521f70fea23ea4cf8cd6 version_0.18
     148590198176ae8b5ca5f20dfd71537c7a91016c0c version_0.19
  • locale/en/mlx.po

    r509 r513  
    795795msgstr "Der_ated thrust:"
    796796
     797msgid "takeoff_derate_boeing_tooltip"
     798msgstr "Enter the percentage of the takeoff power."
     799
     800msgid "takeoff_derate_epr_tooltip"
     801msgstr "Enter the EPR value used for takeoff."
     802
    797803msgid "takeoff_derate_tupolev"
    798 msgstr "N_ominal/takeoff:"
     804msgstr "Thrust setting:"
     805
     806msgid "takeoff_derate_tupolev_nominal"
     807msgstr "_nominal"
     808
     809msgid "takeoff_derate_tupolev_nominal_tooltip"
     810msgstr "Select this if the takeoff thrust setting is nominal."
     811
     812msgid "takeoff_derate_tupolev_takeoff"
     813msgstr "_takeoff"
     814
     815msgid "takeoff_derate_tupolev_takeoff_tooltip"
     816msgstr "Select this if the takeoff thrust setting is takeoff."
    799817
    800818msgid "takeoff_derate_b462"
    801 msgstr "Der_ate (yes/no):"
    802 
    803 msgid "takeoff_derate_tooltip"
    804 msgstr "Enter the takeoff derate parameter."
     819msgstr "Der_ate enabled"
     820
     821msgid "takeoff_derate_b462_tooltip"
     822msgstr "Check this if derate is enabled for takeoff."
    805823
    806824msgid "takeoff_antiice"
  • locale/hu/mlx.po

    r509 r513  
    791791
    792792msgid "takeoff_derate"
    793 msgstr "Teljesítménycsökkentés:"
     793msgstr "Teljesítmény:"
    794794
    795795msgid "takeoff_derate_boeing"
    796 msgstr "Csökkentett teljesítmény:"
     796msgstr "_Teljesítmény:"
     797
     798msgid "takeoff_derate_boeing_tooltip"
     799msgstr "Írd be, hogy hány százalék a felszállási teljesítmény."
     800
     801msgid "takeoff_derate_epr_tooltip"
     802msgstr "Írd be a felszálláskor használt EPR értéket."
    797803
    798804msgid "takeoff_derate_tupolev"
    799 msgstr "Névleges/felszállási:"
     805msgstr "Üzemmód:"
     806
     807msgid "takeoff_derate_tupolev_nominal"
     808msgstr "n_ominális"
     809
     810msgid "takeoff_derate_tupolev_nominal_tooltip"
     811msgstr "Ha a felszálláshoz használt üzemmód beállítása nominális, válaszd ezt."
     812
     813msgid "takeoff_derate_tupolev_takeoff"
     814msgstr "f_elszállási"
     815
     816msgid "takeoff_derate_tupolev_takeoff_tooltip"
     817msgstr "Ha a felszálláshoz használt üzemmód beállítása felszállási, válaszd ezt."
    800818
    801819msgid "takeoff_derate_b462"
    802 msgstr "Teljesítménycsökkentés (yes/no):"
    803 
    804 msgid "takeoff_derate_tooltip"
    805 msgstr "Írd be a felszállási teljesítménycsökkentés értékét."
     820msgstr "_Csökkentett teljesítmény"
     821
     822msgid "takeoff_derate_b462_tooltip"
     823msgstr "Jelöld ezt be, ha a felszállás csökkentett teljesítménnyel történik."
    806824
    807825msgid "takeoff_antiice"
  • src/mlx/acft.py

    r447 r512  
    3232#---------------------------------------------------------------------------------------
    3333
     34# Derate type: no derate possible
     35DERATE_NONE = 0
     36
     37# Derate type: Boeing, i.e. a percentage value.
     38# For logging, the percentage value is expected as a string (i.e. whatever the
     39# pilot enters into the text field).
     40DERATE_BOEING = 1
     41
     42# Derate type: EPR, i.e. an EPR value.
     43# For logging, the EPR value is expected as a string (i.e. whatever the pilot
     44# enters into the text field).
     45DERATE_EPR = 2
     46
     47# Derate type: Tupolev, i.e. nominal or takeoff
     48# For logging, one of the DERATE_TUPOLEV_xxx values are expected.
     49DERATE_TUPOLEV = 3
     50
     51# Tupolev derate value: nominal
     52DERATE_TUPOLEV_NOMINAL = 1
     53
     54# Tupolev derate value: takeoff
     55DERATE_TUPOLEV_TAKEOFF = 2
     56
     57# Derate type: BAe-146, i.e. enabled or not
     58# For logging, a boolean is expected.
     59DERATE_B462 = 4
     60
     61#---------------------------------------------------------------------------------------
     62
    3463class SmoothedValue(object):
    3564    """A smoothed value."""
     
    203232
    204233    @property
    205     def derateLabels(self):
    206         """Get the strings related to the derate entry.
    207 
    208         It returns a tuple of two items:
    209         - the label before the entry field,
    210         - the label after the entry field, which can be None.
    211 
    212         If both labels are None, the derate value will not be logged or
    213         queried. This is the default."""
    214         return (None, None)
    215 
    216     @property
    217     def derateTemplate(self):
    218         """Get the template for logging the derate value.
    219 
    220         If it returns None (which is the default), no derate value will be
    221         logged."""
     234    def derateType(self):
     235        """Get the derate type for this aircraft.
     236
     237        This default implementation returns DERATE_NONE."""
     238        return DERATE_NONE
     239
     240    def getDerateLine(self, value):
     241        """Get the log line for the given derate value.
     242
     243        It uses the the derate type and produces the standard message for
     244        each. This children need not override it, although they can."""
     245        dt = self.derateType
     246
     247        if dt==DERATE_BOEING:
     248            return "Derate calculated by the pilot: %s %%" % \
     249              ("-" if value is None else value,)
     250        elif dt==DERATE_EPR:
     251            return "EPR calculated by the pilot: %s" % \
     252              ("-" if value is None else value,)
     253        elif dt==DERATE_TUPOLEV:
     254            return "Thrust setting calculated by the pilot: %s" % \
     255              ("-" if value is None else
     256               "nominal" if value==DERATE_TUPOLEV_NOMINAL else "takeoff",)
     257        elif dt==DERATE_B462:
     258            return "Derate setting: %s" % \
     259              ("-" if value is None else "enabled" if value else "disabled",)
     260        elif dt!=DERATE_NONE:
     261            print "mlx.acft.getDerateLine: invalid derate type: " + dt
     262
    222263        return None
    223264
     
    472513        """Log the derate values either newly or by updating the corresponding
    473514        line."""
    474         derateTemplate = self.derateTemplate
    475         if derateTemplate is None:
     515        dt = self.derateType
     516        if dt==DERATE_NONE:
    476517            return
    477518
    478         derate = self._flight.derate
    479         message = derateTemplate % ("-" if derate is None else derate)
    480         if self._derateLineID is None:
    481             if state is None:
    482                 state = self._aircraftState
    483             self._derateLineID = \
    484                 self.logger.message(state.timestamp, message)
    485         else:
    486             self.logger.updateLine(self._derateLineID, message)
     519        message = self.getDerateLine(self._flight.derate)
     520        if message is not None:
     521            if self._derateLineID is None:
     522                if state is None:
     523                    state = self._aircraftState
     524                self._derateLineID = \
     525                  self.logger.message(state.timestamp, message)
     526            else:
     527                self.logger.updateLine(self._derateLineID, message)
    487528
    488529    def _logTakeoffAntiIce(self, state = None):
     
    607648
    608649    @property
    609     def derateLabels(self):
    610         """Get the derate strings for this type."""
    611         return (xstr("takeoff_derate_boeing"), "%")
    612 
    613     @property
    614     def derateTemplate(self):
    615         """Get the derate template for this aicraft type."""
    616         return "Derate calculated by the pilot: %s %%"
     650    def derateType(self):
     651        """Get the derate type for this type."""
     652        return DERATE_BOEING
    617653
    618654    # def _appendSpeedChecker(self):
     
    741777
    742778    @property
    743     def derateLabels(self):
    744         """Get the derate strings for this type."""
    745         return (xstr("takeoff_derate_boeing"), "%")
    746 
    747     @property
    748     def derateTemplate(self):
    749         """Get the derate template for this aicraft type."""
    750         return "Derate calculated by the pilot: %s %%"
     779    def derateType(self):
     780        """Get the derate type for this type."""
     781        return DERATE_BOEING
    751782
    752783#---------------------------------------------------------------------------------------
     
    819850
    820851    @property
    821     def derateLabels(self):
    822         """Get the derate strings for this type."""
    823         return ("EPR", None)
    824 
    825     @property
    826     def derateTemplate(self):
    827         """Get the derate template for this aicraft type."""
    828         return "EPR calculated by the pilot: %s"
     852    def derateType(self):
     853        """Get the derate type for this type."""
     854        return DERATE_EPR
    829855
    830856#---------------------------------------------------------------------------------------
     
    881907
    882908    @property
    883     def derateLabels(self):
    884         """Get the derate strings for this type."""
    885         return (xstr("takeoff_derate_tupolev"), None)
    886 
    887     @property
    888     def derateTemplate(self):
    889         """Get the derate template for this aicraft type."""
    890         return "Nominal/takeoff power calculated by the pilot: %s"
     909    def derateType(self):
     910        """Get the derate type for this type."""
     911        return DERATE_TUPOLEV
    891912
    892913    @property
     
    939960
    940961    @property
    941     def derateLabels(self):
    942         """Get the derate strings for this type."""
    943         return (xstr("takeoff_derate_tupolev"), None)
    944 
    945     @property
    946     def derateTemplate(self):
    947         """Get the derate template for this aicraft type."""
    948         return "Nominal/takeoff power calculated by the pilot: %s"
     962    def derateType(self):
     963        """Get the derate type for this type."""
     964        return DERATE_TUPOLEV
    949965
    950966    def _appendLightsLoggers(self):
     
    9901006
    9911007    @property
    992     def derateLabels(self):
    993         """Get the derate strings for this type."""
    994         return (xstr("takeoff_derate_tupolev"), None)
    995 
    996     @property
    997     def derateTemplate(self):
    998         """Get the derate template for this aicraft type."""
    999         return "Nominal/takeoff power calculated by the pilot: %s"
     1008    def derateType(self):
     1009        """Get the derate type for this type."""
     1010        return DERATE_TUPOLEV
    10001011
    10011012    def _appendLightsLoggers(self):
     
    10381049
    10391050    @property
    1040     def derateLabels(self):
    1041         """Get the derate strings for this type."""
    1042         return (xstr("takeoff_derate_b462"), None)
    1043 
    1044     @property
    1045     def derateTemplate(self):
    1046         """Get the derate template for this aicraft type."""
    1047         return "Derate enabled: %s"
     1051    def derateType(self):
     1052        """Get the derate type for this type."""
     1053        return DERATE_B462
    10481054
    10491055#---------------------------------------------------------------------------------------
  • src/mlx/gui/flight.py

    r503 r513  
    21412141        table.attach(self._v2Unit, 3, 4, 4, 5)
    21422142
    2143         self._hasDerate = False
     2143        self._derateType = acft.DERATE_NONE
    21442144
    21452145        self._derateLabel = gtk.Label()
     
    21492149        table.attach(self._derateLabel, 0, 1, 5, 6)
    21502150
    2151         self._derate = gtk.Entry()
    2152         self._derate.set_width_chars(10)
    2153         self._derate.set_tooltip_text(xstr("takeoff_derate_tooltip"))
    2154         self._derate.set_alignment(1.0)
    2155         self._derate.connect("changed", self._derateChanged)
    2156         table.attach(self._derate, 1, 3, 5, 6)
    2157         self._derateLabel.set_mnemonic_widget(self._derate)
    2158 
    2159         self._derateUnit = gtk.Label("")
    2160         self._derateUnit.set_use_markup(True)
    2161         self._derateUnit.set_alignment(0.0, 0.5)
    2162         table.attach(self._derateUnit, 3, 4, 5, 6)
     2151        self._derate = gtk.Alignment()
     2152        table.attach(self._derate, 2, 4, 5, 6)
     2153        self._derateWidget = None
     2154        self._derateEntry = None
     2155        self._derateUnit = None
     2156        self._derateButtons = None
    21632157
    21642158        self._antiIceOn = gtk.CheckButton(xstr("takeoff_antiice"))
     
    22072201    def derate(self):
    22082202        """Get the derate value, if any."""
    2209         if self._hasDerate:
    2210             derate = self._derate.get_text()
     2203        if self._derateWidget is None:
     2204            return None
     2205        if self._derateType==acft.DERATE_BOEING:
     2206            derate = self._derateEntry.get_text()
    22112207            return derate if derate else None
     2208        elif self._derateType==acft.DERATE_EPR:
     2209            derate = self._derateWidget.get_text()
     2210            return derate if derate else None
     2211        elif self._derateType==acft.DERATE_TUPOLEV:
     2212            return acft.DERATE_TUPOLEV_NOMINAL \
     2213                   if self._derateButtons[0].get_active() \
     2214                   else acft.DERATE_TUPOLEV_TAKEOFF
     2215        elif self._derateType==acft.DERATE_B462:
     2216            return self._derateWidget.get_active()
    22122217        else:
    22132218            return None
     
    22512256        self._v2.set_tooltip_markup(xstr("takeoff_v2_tooltip" + i18nSpeedUnit))
    22522257
    2253         (derateLabel, derateUnit) = \
    2254              self._wizard.gui.flight.aircraft.derateLabels
    2255 
    2256         self._hasDerate = derateLabel is not None
    2257 
    2258         if self._hasDerate:
    2259             self._derateLabel.set_markup(derateLabel)
    2260             self._derateLabel.set_use_underline(True)
    2261             self._derateUnit.set_markup("" if derateUnit is None
    2262                                         else derateUnit)
    2263         else:
    2264             self._derateLabel.set_markup(xstr("takeoff_derate"))
    2265             self._derateUnit.set_text("")
    2266 
    2267         self._derate.set_text("")
    2268 
    2269         self._derateLabel.set_sensitive(self._hasDerate)
    2270         self._derate.set_sensitive(self._hasDerate)
    2271         self._derateUnit.set_sensitive(self._hasDerate)
     2258        self._derateType = self._wizard.gui.flight.aircraft.derateType
     2259
     2260        self._setupDerateWidget()
    22722261
    22732262        self._rto.set_active(False)
     
    23072296                    self.v1 <= self.vr and \
    23082297                    self.vr <= self.v2 and \
    2309                     (not self._hasDerate or self._derate.get_text()!="")
     2298                    (self._derateType==acft.DERATE_NONE or
     2299                     self.derate is not None)
    23102300        self._button.set_sensitive(sensitive)
    23112301
     
    23362326        aircraft = self._wizard.gui.flight.aircraft
    23372327        aircraft.updateV1R2()
    2338         if self._hasDerate:
     2328        if self.derate is not None:
    23392329            aircraft.updateDerate()
    23402330        aircraft.updateTakeoffAntiIce()
    23412331        self._wizard.nextPage()
     2332
     2333    def _setupDerateWidget(self):
     2334        """Setup the derate widget."""
     2335        if self._derateWidget is not None:
     2336            self._derate.remove(self._derateWidget)
     2337
     2338        if self._derateType==acft.DERATE_BOEING:
     2339            self._derateLabel.set_text(xstr("takeoff_derate_boeing"))
     2340            self._derateLabel.set_use_underline(True)
     2341            self._derateLabel.set_sensitive(True)
     2342
     2343            self._derateEntry = gtk.Entry()
     2344            self._derateEntry.set_width_chars(7)
     2345            self._derateEntry.set_tooltip_text(xstr("takeoff_derate_boeing_tooltip"))
     2346            self._derateEntry.set_alignment(1.0)
     2347            self._derateEntry.connect("changed", self._derateChanged)
     2348            self._derateLabel.set_mnemonic_widget(self._derateEntry)
     2349
     2350            self._derateUnit = gtk.Label("%")
     2351            self._derateUnit.set_alignment(0.0, 0.5)
     2352
     2353            self._derateWidget = gtk.Table(3, 1)
     2354            self._derateWidget.set_row_spacings(4)
     2355            self._derateWidget.set_col_spacings(16)
     2356            self._derateWidget.set_homogeneous(False)
     2357
     2358            self._derateWidget.attach(self._derateEntry, 0, 2, 0, 1)
     2359            self._derateWidget.attach(self._derateUnit, 2, 3, 0, 1)
     2360
     2361            self._derate.add(self._derateWidget)
     2362        elif self._derateType==acft.DERATE_EPR:
     2363            self._derateLabel.set_text("_EPR:")
     2364            self._derateLabel.set_use_underline(True)
     2365            self._derateLabel.set_sensitive(True)
     2366
     2367            self._derateWidget = gtk.Entry()
     2368            self._derateWidget.set_width_chars(7)
     2369            self._derateWidget.set_tooltip_text(xstr("takeoff_derate_epr_tooltip"))
     2370            self._derateWidget.set_alignment(1.0)
     2371            self._derateWidget.connect("changed", self._derateChanged)
     2372            self._derateLabel.set_mnemonic_widget(self._derateWidget)
     2373
     2374            self._derate.add(self._derateWidget)
     2375        elif self._derateType==acft.DERATE_TUPOLEV:
     2376            self._derateLabel.set_text(xstr("takeoff_derate_tupolev"))
     2377            self._derateLabel.set_use_underline(True)
     2378            self._derateLabel.set_sensitive(True)
     2379
     2380            if pygobject:
     2381                nominal = gtk.RadioButton.\
     2382                  new_with_label_from_widget(None,
     2383                                             xstr("takeoff_derate_tupolev_nominal"))
     2384            else:
     2385                nominal = gtk.RadioButton(None,
     2386                                          xstr("takeoff_derate_tupolev_nominal"))
     2387            nominal.set_use_underline(True)
     2388            nominal.set_tooltip_text(xstr("takeoff_derate_tupolev_nominal_tooltip"))
     2389            nominal.connect("toggled", self._derateChanged)
     2390
     2391            if pygobject:
     2392                takeoff = gtk.RadioButton.\
     2393                  new_with_label_from_widget(nominal,
     2394                                             xstr("takeoff_derate_tupolev_takeoff"))
     2395            else:
     2396                takeoff = gtk.RadioButton(nominal,
     2397                                          xstr("takeoff_derate_tupolev_takeoff"))
     2398
     2399            takeoff.set_use_underline(True)
     2400            takeoff.set_tooltip_text(xstr("takeoff_derate_tupolev_takeoff_tooltip"))
     2401            takeoff.connect("toggled", self._derateChanged)
     2402
     2403            self._derateButtons = [nominal, takeoff]
     2404
     2405            self._derateWidget = gtk.HBox()
     2406            self._derateWidget.pack_start(nominal, False, False, 4)
     2407            self._derateWidget.pack_start(takeoff, False, False, 4)
     2408
     2409            self._derate.add(self._derateWidget)
     2410        elif self._derateType==acft.DERATE_B462:
     2411            self._derateLabel.set_text("")
     2412
     2413            self._derateWidget = gtk.CheckButton(xstr("takeoff_derate_b462"))
     2414            self._derateWidget.set_tooltip_text(xstr("takeoff_derate_b462_tooltip"))
     2415            self._derateWidget.set_use_underline(True)
     2416            self._derate.add(self._derateWidget)
     2417        else:
     2418            self._derateWidget = None
     2419            self._derateLabel.set_text("")
     2420            self._derateLabel.set_sensitive(False)
    23422421
    23432422#-----------------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.