Changeset 834:5651e303daa9 for src/mlx/gui/pirep.py
- Timestamp:
- 04/17/17 06:47:25 (7 years ago)
- Branch:
- default
- hg-Phase:
- (<MercurialRepository 1 'hg:/home/ivaradi/mlx/hg' '/'>, 'public')
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/mlx/gui/pirep.py
r833 r834 1 1 2 2 from common import * 3 from dcdata import getTable4 from info import FlightInfo5 from flight import comboModel6 3 7 4 from mlx.pirep import PIREP … … 9 6 10 7 import time 11 import re12 8 13 9 #------------------------------------------------------------------------------ … … 15 11 ## @package mlx.gui.pirep 16 12 # 17 # The detailed PIREP viewer and editor windows.13 # The detailed PIREP viewer. 18 14 # 19 15 # The \ref PIREPViewer class is a dialog displaying all information found in a … … 51 47 52 48 @staticmethod 53 def getLabel(text , extraText = ""):49 def getLabel(text): 54 50 """Get a bold label with the given text.""" 55 label = gtk.Label("<b>" + text + "</b>" + extraText)51 label = gtk.Label("<b>" + text + "</b>") 56 52 label.set_use_markup(True) 57 53 label.set_alignment(0.0, 0.5) … … 68 64 69 65 @staticmethod 70 def getTextWindow(heightRequest = 40 , editable = False):66 def getTextWindow(heightRequest = 40): 71 67 """Get a scrollable text window. 72 68 … … 80 76 textView = gtk.TextView() 81 77 textView.set_wrap_mode(WRAP_WORD) 82 textView.set_editable( editable)83 textView.set_cursor_visible( editable)78 textView.set_editable(False) 79 textView.set_cursor_visible(False) 84 80 textView.set_size_request(-1, heightRequest) 85 81 scrolledWindow.add(textView) … … 110 106 """Add a label and a data label to the given HBox. 111 107 112 Returns the data label."""108 Returnsd the data label.""" 113 109 label = PIREPViewer.getLabel(labelText) 114 110 hBox.pack_start(label, False, False, 0) … … 118 114 119 115 return dataLabel 120 121 @staticmethod122 def addHFiller(hBox, width = 8):123 """Add a filler to the given horizontal box."""124 filler = gtk.Alignment(xalign = 0.0, yalign = 0.0,125 xscale = 1.0, yscale = 1.0)126 filler.set_size_request(width, -1)127 hBox.pack_start(filler, False, False, 0)128 116 129 117 @staticmethod … … 627 615 628 616 #------------------------------------------------------------------------------ 629 630 class PIREPEditor(gtk.Dialog):631 """A PIREP editor dialog."""632 _delayCodeRE = re.compile("([0-9]{2,3})( \([^\)]*\))")633 634 @staticmethod635 def tableAttachWidget(table, column, row, labelText, widget):636 """Attach the given widget with the given label to the given table.637 638 The label will got to cell (column, row), the widget to cell639 (column+1, row)."""640 label = gtk.Label("<b>" + labelText + "</b>")641 label.set_use_markup(True)642 alignment = gtk.Alignment(xalign = 0.0, yalign = 0.5,643 xscale = 0.0, yscale = 0.0)644 alignment.add(label)645 table.attach(alignment, column, column + 1, row, row + 1)646 647 table.attach(widget, column + 1, column + 2, row, row + 1)648 649 @staticmethod650 def tableAttachSpinButton(table, column, row, labelText, maxValue,651 minValue = 0, stepIncrement = 1,652 pageIncrement = 10, numeric = True,653 width = 3):654 """Attach a spin button with the given label to the given table.655 656 The label will got to cell (column, row), the spin button to cell657 (column+1, row)."""658 button = gtk.SpinButton()659 button.set_range(min = minValue, max = maxValue)660 button.set_increments(step = stepIncrement, page = pageIncrement)661 button.set_numeric(True)662 button.set_width_chars(width)663 button.set_alignment(1.0)664 665 PIREPEditor.tableAttachWidget(table, column, row, labelText, button)666 667 return button668 669 @staticmethod670 def tableAttachTimeEntry(table, column, row, labelText):671 """Attach a time entry widget with the given label to the given table.672 673 The label will got to cell (column, row), the spin button to cell674 (column+1, row)."""675 entry = TimeEntry()676 entry.set_width_chars(5)677 entry.set_alignment(1.0)678 679 PIREPEditor.tableAttachWidget(table, column, row, labelText, entry)680 681 return entry682 683 def __init__(self, gui):684 """Construct the PIREP viewer."""685 super(PIREPEditor, self).__init__(title = WINDOW_TITLE_BASE +686 " - " +687 xstr("pirepEdit_title"),688 parent = gui.mainWindow)689 690 self.set_resizable(False)691 692 self._gui = gui693 694 contentArea = self.get_content_area()695 696 self._notebook = gtk.Notebook()697 contentArea.pack_start(self._notebook, False, False, 4)698 699 dataTab = self._buildDataTab()700 label = gtk.Label(xstr("pirepView_tab_data"))701 label.set_use_underline(True)702 label.set_tooltip_text(xstr("pirepView_tab_data_tooltip"))703 self._notebook.append_page(dataTab, label)704 705 self._flightInfo = self._buildCommentsTab()706 label = gtk.Label(xstr("pirepView_tab_comments"))707 label.set_use_underline(True)708 label.set_tooltip_text(xstr("pirepView_tab_comments_tooltip"))709 self._notebook.append_page(self._flightInfo, label)710 711 logTab = self._buildLogTab()712 label = gtk.Label(xstr("pirepView_tab_log"))713 label.set_use_underline(True)714 label.set_tooltip_text(xstr("pirepView_tab_log_tooltip"))715 self._notebook.append_page(logTab, label)716 717 self._okButton = self.add_button(xstr("button_ok"), RESPONSETYPE_OK)718 self._okButton.set_can_default(True)719 720 def setPIREP(self, pirep):721 """Setup the data in the dialog from the given PIREP."""722 bookedFlight = pirep.bookedFlight723 724 self._callsign.set_text(bookedFlight.callsign)725 self._tailNumber.set_text(bookedFlight.tailNumber)726 aircraftType = xstr("aircraft_" + icaoCodes[bookedFlight.aircraftType].lower())727 self._aircraftType.set_text(aircraftType)728 729 self._departureICAO.set_text(bookedFlight.departureICAO)730 self._departureTime.set_text("%02d:%02d" % \731 (bookedFlight.departureTime.hour,732 bookedFlight.departureTime.minute))733 734 self._arrivalICAO.set_text(bookedFlight.arrivalICAO)735 self._arrivalTime.set_text("%02d:%02d" % \736 (bookedFlight.arrivalTime.hour,737 bookedFlight.arrivalTime.minute))738 739 self._numPassengers.set_text(str(bookedFlight.numPassengers))740 self._numCrew.set_text(str(bookedFlight.numCrew))741 self._bagWeight.set_text(str(bookedFlight.bagWeight))742 self._cargoWeight.set_text(str(bookedFlight.cargoWeight))743 self._mailWeight.set_text(str(bookedFlight.mailWeight))744 745 self._route.get_buffer().set_text(bookedFlight.route)746 747 self._filedCruiseLevel.set_value(pirep.filedCruiseAltitude/100)748 self._modifiedCruiseLevel.set_value(pirep.cruiseAltitude/100)749 750 self._userRoute.get_buffer().set_text(pirep.route)751 752 self._departureMETAR.get_buffer().set_text(pirep.departureMETAR)753 754 self._arrivalMETAR.get_buffer().set_text(pirep.arrivalMETAR)755 self._departureRunway.set_text(pirep.departureRunway)756 self._sid.get_child().set_text(pirep.sid)757 758 if not pirep.star:759 self._star.set_active(0)760 else:761 self._star.get_child().set_text(pirep.star)762 763 if not pirep.transition:764 self._transition.set_active(0)765 else:766 self._transition.get_child().set_text(pirep.transition)767 self._approachType.set_text(pirep.approachType)768 self._arrivalRunway.set_text(pirep.arrivalRunway)769 770 self._blockTimeStart.setTimestamp(pirep.blockTimeStart)771 self._blockTimeEnd.setTimestamp(pirep.blockTimeEnd)772 self._flightTimeStart.setTimestamp(pirep.flightTimeStart)773 self._flightTimeEnd.setTimestamp(pirep.flightTimeEnd)774 775 self._flownDistance.set_text("%.1f" % (pirep.flownDistance,))776 self._fuelUsed.set_value(int(pirep.fuelUsed))777 778 rating = pirep.rating779 if rating<0:780 self._rating.set_markup('<b><span foreground="red">NO GO</span></b>')781 else:782 self._rating.set_text("%.1f %%" % (rating,))783 784 self._flownNumCrew.set_value(pirep.numCrew)785 self._flownNumPassengers.set_value(pirep.numPassengers)786 self._flownBagWeight.set_value(pirep.bagWeight)787 self._flownCargoWeight.set_value(pirep.cargoWeight)788 self._flownMailWeight.set_value(pirep.mailWeight)789 self._flightType.set_active(flightType2index(pirep.flightType))790 self._online.set_active(pirep.online)791 792 self._flightInfo.reset()793 self._flightInfo.enable(bookedFlight.aircraftType)794 795 delayCodes = ""796 for code in pirep.delayCodes:797 if delayCodes: delayCodes += ", "798 delayCodes += code799 m = PIREPEditor._delayCodeRE.match(code)800 if m:801 self._flightInfo.activateDelayCode(m.group(1))802 803 self._delayCodes.get_buffer().set_text(delayCodes)804 805 self._flightInfo.comments = pirep.comments806 if pirep.flightDefects.find("<br/></b>")!=-1:807 flightDefects = pirep.flightDefects.split("<br/></b>")808 caption = flightDefects[0]809 index = 0810 for defect in flightDefects[1:]:811 if defect.find("<b>")!=-1:812 (explanation, nextCaption) = defect.split("<b>")813 else:814 explanation = defect815 nextCaption = None816 self._flightInfo.addFault(index, caption)817 self._flightInfo.setExplanation(index, explanation)818 index += 1819 caption = nextCaption820 821 # self._comments.get_buffer().set_text(pirep.comments)822 # self._flightDefects.get_buffer().set_text(pirep.flightDefects)823 824 logBuffer = self._log.get_buffer()825 logBuffer.set_text("")826 lineIndex = 0827 for (timeStr, line) in pirep.logLines:828 isFault = lineIndex in pirep.faultLineIndexes829 appendTextBuffer(logBuffer,830 formatFlightLogLine(timeStr, line),831 isFault = isFault)832 lineIndex += 1833 834 self._notebook.set_current_page(0)835 self._okButton.grab_default()836 837 def _buildDataTab(self):838 """Build the data tab of the viewer."""839 table = gtk.Table(1, 2)840 table.set_row_spacings(4)841 table.set_col_spacings(16)842 table.set_homogeneous(True)843 844 box1 = gtk.VBox()845 table.attach(box1, 0, 1, 0, 1)846 847 box2 = gtk.VBox()848 table.attach(box2, 1, 2, 0, 1)849 850 flightFrame = self._buildFlightFrame()851 box1.pack_start(flightFrame, False, False, 4)852 853 routeFrame = self._buildRouteFrame()854 box1.pack_start(routeFrame, False, False, 4)855 856 departureFrame = self._buildDepartureFrame()857 box2.pack_start(departureFrame, True, True, 4)858 859 arrivalFrame = self._buildArrivalFrame()860 box2.pack_start(arrivalFrame, True, True, 4)861 862 statisticsFrame = self._buildStatisticsFrame()863 box2.pack_start(statisticsFrame, False, False, 4)864 865 miscellaneousFrame = self._buildMiscellaneousFrame()866 box1.pack_start(miscellaneousFrame, False, False, 4)867 868 return table869 870 def _buildFlightFrame(self):871 """Build the frame for the flight data."""872 873 (frame, mainBox) = PIREPViewer.createFrame(xstr("pirepView_frame_flight"))874 875 dataBox = gtk.HBox()876 mainBox.pack_start(dataBox, False, False, 0)877 878 self._callsign = \879 PIREPViewer.addLabeledData(dataBox,880 xstr("pirepView_callsign"),881 width = 8)882 883 self._tailNumber = \884 PIREPViewer.addLabeledData(dataBox,885 xstr("pirepView_tailNumber"),886 width = 7)887 888 PIREPViewer.addVFiller(mainBox)889 890 dataBox = gtk.HBox()891 mainBox.pack_start(dataBox, False, False, 0)892 893 self._aircraftType = \894 PIREPViewer.addLabeledData(dataBox,895 xstr("pirepView_aircraftType"),896 width = 25)897 898 PIREPViewer.addVFiller(mainBox)899 900 table = gtk.Table(3, 2)901 mainBox.pack_start(table, False, False, 0)902 table.set_row_spacings(4)903 table.set_col_spacings(8)904 905 self._departureICAO = \906 PIREPViewer.tableAttach(table, 0, 0,907 xstr("pirepView_departure"),908 width = 5)909 910 self._departureTime = \911 PIREPViewer.tableAttach(table, 1, 0,912 xstr("pirepView_departure_time"),913 width = 6)914 915 self._arrivalICAO = \916 PIREPViewer.tableAttach(table, 0, 1,917 xstr("pirepView_arrival"),918 width = 5)919 920 self._arrivalTime = \921 PIREPViewer.tableAttach(table, 1, 1,922 xstr("pirepView_arrival_time"),923 width = 6)924 925 table = gtk.Table(3, 2)926 mainBox.pack_start(table, False, False, 0)927 table.set_row_spacings(4)928 table.set_col_spacings(8)929 930 self._numPassengers = \931 PIREPViewer.tableAttach(table, 0, 0,932 xstr("pirepView_numPassengers"),933 width = 4)934 935 self._numCrew = \936 PIREPViewer.tableAttach(table, 1, 0,937 xstr("pirepView_numCrew"),938 width = 3)939 940 self._bagWeight = \941 PIREPViewer.tableAttach(table, 0, 1,942 xstr("pirepView_bagWeight"),943 width = 5)944 945 self._cargoWeight = \946 PIREPViewer.tableAttach(table, 1, 1,947 xstr("pirepView_cargoWeight"),948 width = 5)949 950 self._mailWeight = \951 PIREPViewer.tableAttach(table, 2, 1,952 xstr("pirepView_mailWeight"),953 width = 5)954 955 PIREPViewer.addVFiller(mainBox)956 957 mainBox.pack_start(PIREPViewer.getLabel(xstr("pirepView_route")),958 False, False, 0)959 960 (routeWindow, self._route) = PIREPViewer.getTextWindow()961 mainBox.pack_start(routeWindow, False, False, 0)962 963 return frame964 965 def _buildRouteFrame(self):966 """Build the frame for the user-specified route and flight967 level."""968 969 (frame, mainBox) = PIREPViewer.createFrame(xstr("pirepView_frame_route"))970 971 levelBox = gtk.HBox()972 mainBox.pack_start(levelBox, False, False, 0)973 974 label = PIREPViewer.getLabel(xstr("pirepView_filedCruiseLevel"),975 xstr("pirepEdit_FL"))976 levelBox.pack_start(label, False, False, 0)977 978 self._filedCruiseLevel = gtk.SpinButton()979 self._filedCruiseLevel.set_increments(step = 10, page = 100)980 self._filedCruiseLevel.set_range(min = 0, max = 500)981 #self._filedCruiseLevel.set_tooltip_text(xstr("route_level_tooltip"))982 self._filedCruiseLevel.set_numeric(True)983 984 levelBox.pack_start(self._filedCruiseLevel, False, False, 0)985 986 PIREPViewer.addHFiller(levelBox)987 988 label = PIREPViewer.getLabel(xstr("pirepView_modifiedCruiseLevel"),989 xstr("pirepEdit_FL"))990 levelBox.pack_start(label, False, False, 0)991 992 self._modifiedCruiseLevel = gtk.SpinButton()993 self._modifiedCruiseLevel.set_increments(step = 10, page = 100)994 self._modifiedCruiseLevel.set_range(min = 0, max = 500)995 #self._modifiedCruiseLevel.set_tooltip_text(xstr("route_level_tooltip"))996 self._modifiedCruiseLevel.set_numeric(True)997 998 levelBox.pack_start(self._modifiedCruiseLevel, False, False, 0)999 1000 PIREPViewer.addVFiller(mainBox)1001 1002 (routeWindow, self._userRoute) = \1003 PIREPViewer.getTextWindow(editable = True)1004 mainBox.pack_start(routeWindow, False, False, 0)1005 1006 return frame1007 1008 def _buildDepartureFrame(self):1009 """Build the frame for the departure data."""1010 (frame, mainBox) = PIREPViewer.createFrame(xstr("pirepView_frame_departure"))1011 1012 mainBox.pack_start(PIREPViewer.getLabel("METAR:"),1013 False, False, 0)1014 (metarWindow, self._departureMETAR) = \1015 PIREPViewer.getTextWindow(heightRequest = -1,1016 editable = True)1017 mainBox.pack_start(metarWindow, True, True, 0)1018 1019 PIREPViewer.addVFiller(mainBox)1020 1021 dataBox = gtk.HBox()1022 mainBox.pack_start(dataBox, False, False, 0)1023 1024 label = gtk.Label("<b>" + xstr("pirepView_runway") + "</b>")1025 label.set_use_markup(True)1026 dataBox.pack_start(label, False, False, 0)1027 1028 # FIXME: quite the same as the runway entry boxes in the wizard1029 self._departureRunway = gtk.Entry()1030 self._departureRunway.set_width_chars(5)1031 self._departureRunway.set_tooltip_text(xstr("takeoff_runway_tooltip"))1032 self._departureRunway.connect("changed", self._upperChanged)1033 dataBox.pack_start(self._departureRunway, False, False, 8)1034 1035 label = gtk.Label("<b>" + xstr("pirepView_sid") + "</b>")1036 label.set_use_markup(True)1037 dataBox.pack_start(label, False, False, 0)1038 1039 # FIXME: quite the same as the SID combo box in1040 # the flight wizard1041 if pygobject:1042 self._sid = gtk.ComboBox.new_with_model_and_entry(comboModel)1043 else:1044 self._sid = gtk.ComboBoxEntry(comboModel)1045 1046 self._sid.set_entry_text_column(0)1047 self._sid.get_child().set_width_chars(10)1048 self._sid.set_tooltip_text(xstr("takeoff_sid_tooltip"))1049 self._sid.connect("changed", self._upperChangedComboBox)1050 1051 dataBox.pack_start(self._sid, False, False, 8)1052 1053 return frame1054 1055 def _buildArrivalFrame(self):1056 """Build the frame for the arrival data."""1057 (frame, mainBox) = PIREPViewer.createFrame(xstr("pirepView_frame_arrival"))1058 1059 mainBox.pack_start(PIREPViewer.getLabel("METAR:"),1060 False, False, 0)1061 (metarWindow, self._arrivalMETAR) = \1062 PIREPViewer.getTextWindow(heightRequest = -1,1063 editable = True)1064 mainBox.pack_start(metarWindow, True, True, 0)1065 1066 PIREPViewer.addVFiller(mainBox)1067 1068 table = gtk.Table(2, 4)1069 mainBox.pack_start(table, False, False, 0)1070 table.set_row_spacings(4)1071 table.set_col_spacings(8)1072 1073 # FIXME: quite the same as in the wizard1074 if pygobject:1075 self._star = gtk.ComboBox.new_with_model_and_entry(comboModel)1076 else:1077 self._star = gtk.ComboBoxEntry(comboModel)1078 1079 self._star.set_entry_text_column(0)1080 self._star.get_child().set_width_chars(10)1081 self._star.set_tooltip_text(xstr("landing_star_tooltip"))1082 self._star.connect("changed", self._upperChangedComboBox)1083 1084 PIREPEditor.tableAttachWidget(table, 0, 0,1085 xstr("pirepView_star"),1086 self._star)1087 1088 # FIXME: quite the same as in the wizard1089 if pygobject:1090 self._transition = gtk.ComboBox.new_with_model_and_entry(comboModel)1091 else:1092 self._transition = gtk.ComboBoxEntry(comboModel)1093 1094 self._transition.set_entry_text_column(0)1095 self._transition.get_child().set_width_chars(10)1096 self._transition.set_tooltip_text(xstr("landing_transition_tooltip"))1097 self._transition.connect("changed", self._upperChangedComboBox)1098 1099 PIREPEditor.tableAttachWidget(table, 2, 0,1100 xstr("pirepView_transition"),1101 self._transition)1102 1103 1104 # FIXME: quite the same as in the wizard1105 self._approachType = gtk.Entry()1106 self._approachType.set_width_chars(10)1107 self._approachType.set_tooltip_text(xstr("landing_approach_tooltip"))1108 self._approachType.connect("changed", self._upperChanged)1109 1110 PIREPEditor.tableAttachWidget(table, 0, 1,1111 xstr("pirepView_approachType"),1112 self._approachType)1113 1114 # FIXME: quite the same as in the wizard1115 self._arrivalRunway = gtk.Entry()1116 self._arrivalRunway.set_width_chars(10)1117 self._arrivalRunway.set_tooltip_text(xstr("landing_runway_tooltip"))1118 self._arrivalRunway.connect("changed", self._upperChanged)1119 1120 PIREPEditor.tableAttachWidget(table, 2, 1,1121 xstr("pirepView_runway"),1122 self._arrivalRunway)1123 1124 return frame1125 1126 def _buildStatisticsFrame(self):1127 """Build the frame for the statistics data."""1128 (frame, mainBox) = PIREPViewer.createFrame(xstr("pirepView_frame_statistics"))1129 1130 table = gtk.Table(4, 4)1131 mainBox.pack_start(table, False, False, 0)1132 table.set_row_spacings(4)1133 table.set_col_spacings(8)1134 table.set_homogeneous(False)1135 1136 self._blockTimeStart = \1137 PIREPEditor.tableAttachTimeEntry(table, 0, 0,1138 xstr("pirepView_blockTimeStart"))1139 1140 self._blockTimeEnd = \1141 PIREPEditor.tableAttachTimeEntry(table, 2, 0,1142 xstr("pirepView_blockTimeEnd"))1143 1144 self._flightTimeStart = \1145 PIREPEditor.tableAttachTimeEntry(table, 0, 1,1146 xstr("pirepView_flightTimeStart"))1147 1148 self._flightTimeEnd = \1149 PIREPEditor.tableAttachTimeEntry(table, 2, 1,1150 xstr("pirepView_flightTimeEnd"))1151 1152 self._flownDistance = PIREPViewer.getDataLabel(width = 3)1153 PIREPEditor.tableAttachWidget(table, 0, 2,1154 xstr("pirepView_flownDistance"),1155 self._flownDistance)1156 1157 self._fuelUsed = \1158 PIREPEditor.tableAttachSpinButton(table, 2, 2,1159 xstr("pirepView_fuelUsed"),1160 1000000)1161 1162 1163 self._rating = PIREPViewer.getDataLabel(width = 3)1164 PIREPEditor.tableAttachWidget(table, 0, 3,1165 xstr("pirepView_rating"),1166 self._rating)1167 return frame1168 1169 def _buildMiscellaneousFrame(self):1170 """Build the frame for the miscellaneous data."""1171 (frame, mainBox) = PIREPViewer.createFrame(xstr("pirepView_frame_miscellaneous"))1172 1173 table = gtk.Table(6, 2)1174 mainBox.pack_start(table, False, False, 0)1175 table.set_row_spacings(4)1176 table.set_col_spacings(8)1177 table.set_homogeneous(False)1178 1179 self._flownNumPassengers = \1180 PIREPEditor.tableAttachSpinButton(table, 0, 0,1181 xstr("pirepView_numPassengers"),1182 300)1183 1184 self._flownNumCrew = \1185 PIREPEditor.tableAttachSpinButton(table, 2, 0,1186 xstr("pirepView_numCrew"),1187 10)1188 1189 self._flownBagWeight = \1190 PIREPEditor.tableAttachSpinButton(table, 0, 1,1191 xstr("pirepView_bagWeight"),1192 100000, width = 6)1193 1194 self._flownCargoWeight = \1195 PIREPEditor.tableAttachSpinButton(table, 2, 1,1196 xstr("pirepView_cargoWeight"),1197 100000, width = 6)1198 1199 self._flownMailWeight = \1200 PIREPEditor.tableAttachSpinButton(table, 4, 1,1201 xstr("pirepView_mailWeight"),1202 100000, width = 6)1203 1204 self._flightType = createFlightTypeComboBox()1205 PIREPEditor.tableAttachWidget(table, 0, 2,1206 xstr("pirepView_flightType"),1207 self._flightType)1208 1209 self._online = gtk.CheckButton(xstr("pirepView_online"))1210 table.attach(self._online, 2, 3, 2, 3)1211 1212 PIREPViewer.addVFiller(mainBox)1213 1214 mainBox.pack_start(PIREPViewer.getLabel(xstr("pirepView_delayCodes")),1215 False, False, 0)1216 1217 (textWindow, self._delayCodes) = PIREPViewer.getTextWindow()1218 mainBox.pack_start(textWindow, False, False, 0)1219 1220 return frame1221 1222 def _buildCommentsTab(self):1223 """Build the tab with the comments and flight defects."""1224 return FlightInfo(self._gui, mainInstance = False)1225 1226 def _buildLogTab(self):1227 """Build the log tab."""1228 mainBox = gtk.VBox()1229 1230 (logWindow, self._log) = PIREPViewer.getTextWindow(heightRequest = -1)1231 addFaultTag(self._log.get_buffer())1232 mainBox.pack_start(logWindow, True, True, 0)1233 1234 return mainBox1235 1236 def _upperChanged(self, entry, arg = None):1237 """Called when the value of some entry widget has changed and the value1238 should be converted to uppercase."""1239 entry.set_text(entry.get_text().upper())1240 #self._valueChanged(entry, arg)1241 1242 def _upperChangedComboBox(self, comboBox):1243 """Called for combo box widgets that must be converted to uppercase."""1244 entry = comboBox.get_child()1245 if comboBox.get_active()==-1:1246 entry.set_text(entry.get_text().upper())1247 #self._valueChanged(entry)1248 1249 #------------------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.