void MapDisplayConfigPanel::OnModified(DataField &df) { if (IsDataField(OrientationCruise, df) || IsDataField(OrientationCircling, df) || IsDataField(MapShiftBias, df)) { UpdateVisibilities(); } }
void DeviceEditWidget::OnModified(DataField &df) { if (IsDataField(Port, df) || IsDataField(Driver, df) || IsDataField(K6Bt, df)) UpdateVisibilities(); if (listener != NULL) listener->OnModified(*this); }
void MapDisplayConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { RowFormWidget::Prepare(parent, rc); const MapSettings &settings_map = CommonInterface::GetMapSettings(); const PageSettings &page_settings = CommonInterface::GetUISettings().pages; AddEnum(_("Cruise orientation"), _("Determines how the screen is rotated with the glider"), orientation_list, (unsigned)settings_map.cruise_orientation, this); AddEnum(_("Circling orientation"), _("Determines how the screen is rotated with the glider while circling"), orientation_list, (unsigned)settings_map.circling_orientation, this); AddBoolean(_("Circling zoom"), _("If enabled, then the map will zoom in automatically when entering circling mode and zoom out automatically when leaving circling mode."), settings_map.circle_zoom_enabled); AddEnum(_("Map shift reference"), _("Determines what is used to shift the glider from the map center"), shift_bias_list, (unsigned)settings_map.map_shift_bias, this); SetExpertRow(MAP_SHIFT_BIAS); AddInteger(_("Glider position offset"), _("Defines the location of the glider drawn on the screen in percent from the screen edge."), _T("%d %%"), _T("%d"), 10, 50, 5, settings_map.glider_screen_position); SetExpertRow(GliderScreenPosition); AddFloat(_("Max. auto zoom distance"), _("The upper limit for auto zoom distance."), _T("%.0f %s"), _T("%.0f"), fixed(20), fixed(250), fixed(10), false, UnitGroup::DISTANCE, settings_map.max_auto_zoom_distance); SetExpertRow(MaxAutoZoomDistance); AddBoolean(_("Distinct page zoom"), _("Maintain one map zoom level on each page."), page_settings.distinct_zoom); SetExpertRow(PAGES_DISTINCT_ZOOM); UpdateVisibilities(); }
void WaypointDisplayConfigPanel::OnRenderingTypeData(DataField *Sender, DataField::DataAccessKind_t Mode) { switch (Mode) { case DataField::daInc: case DataField::daDec: case DataField::daChange: { UpdateVisibilities(); break; } case DataField::daSpecial: return; } }
void DeviceEditWidget::Prepare(ContainerWindow &parent, const PixelRect &rc) { instance = this; RowFormWidget::Prepare(parent, rc); DataFieldEnum *port_df = new DataFieldEnum(OnDataField); port_df->SetDetachGUI(true); FillPorts(*port_df, config); Add(_("Port"), NULL, port_df); DataFieldEnum *baud_rate_df = new DataFieldEnum(NULL); FillBaudRates(*baud_rate_df); baud_rate_df->Set(config.baud_rate); Add(_("Baudrate"), NULL, baud_rate_df); DataFieldEnum *bulk_baud_rate_df = new DataFieldEnum(NULL); bulk_baud_rate_df->addEnumText(_T("Default"), 0u); FillBaudRates(*bulk_baud_rate_df); bulk_baud_rate_df->Set(config.bulk_baud_rate); Add(_("Bulk baud rate"), _("The baud rate used for bulk transfers, such as task declaration or flight download."), bulk_baud_rate_df); DataFieldEnum *tcp_port_df = new DataFieldEnum(NULL); FillTCPPorts(*tcp_port_df); tcp_port_df->Set(config.tcp_port); Add(_("TCP Port"), NULL, tcp_port_df); DataFieldEnum *driver_df = new DataFieldEnum(OnDataField); driver_df->SetDetachGUI(true); const TCHAR *driver_name; for (unsigned i = 0; (driver_name = GetDriverNameByIndex(i)) != NULL; i++) driver_df->addEnumText(driver_name, GetDriverDisplayNameByIndex(i)); driver_df->Sort(1); driver_df->SetAsString(config.driver_name); Add(_("Driver"), NULL, driver_df); port_df->SetDetachGUI(false); driver_df->SetDetachGUI(false); UpdateVisibilities(); }
void MapDisplayConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { instance = this; RowFormWidget::Prepare(parent, rc); const MapSettings &settings_map = CommonInterface::GetMapSettings(); AddEnum(_("Cruise orientation"), _("Determines how the screen is rotated with the glider"), orientation_list, settings_map.cruise_orientation, OnShiftTypeData); AddEnum(_("Circling orientation"), _("Determines how the screen is rotated with the glider while circling"), orientation_list, settings_map.cruise_orientation, OnShiftTypeData); AddBoolean(_("Circling zoom"), _("If enabled, then the map will zoom in automatically when entering circling mode and zoom out automatically when leaving circling mode."), settings_map.circle_zoom_enabled); AddEnum(_("Map shift reference"), _("Determines what is used to shift the glider from the map center"), shift_bias_list, settings_map.map_shift_bias, OnShiftTypeData); AddInteger(_("Glider position offset"), _("Defines the location of the glider drawn on the screen in percent from the screen edge."), _T("%d %%"), _T("%d"), 10, 50, 5, settings_map.glider_screen_position); AddFloat(_("Max. auto zoom distance"), _("The upper limit for auto zoom distance."), _T("%.0f %s"), _T("%.0f"), fixed(20), fixed(250), fixed(10), false, ugDistance, settings_map.max_auto_zoom_distance); UpdateVisibilities(); }
void DeviceEditWidget::Prepare(ContainerWindow &parent, const PixelRect &rc) { RowFormWidget::Prepare(parent, rc); DataFieldEnum *port_df = new DataFieldEnum(this); FillPorts(*port_df, config); auto *port_control = Add(_("Port"), NULL, port_df); port_control->SetEditCallback(EditPortCallback); DataFieldEnum *baud_rate_df = new DataFieldEnum(this); FillBaudRates(*baud_rate_df); baud_rate_df->Set(config.baud_rate); Add(_("Baud rate"), NULL, baud_rate_df); DataFieldEnum *bulk_baud_rate_df = new DataFieldEnum(this); bulk_baud_rate_df->addEnumText(_T("Default"), 0u); FillBaudRates(*bulk_baud_rate_df); bulk_baud_rate_df->Set(config.bulk_baud_rate); Add(_("Bulk baud rate"), _("The baud rate used for bulk transfers, such as task declaration or flight download."), bulk_baud_rate_df); DataFieldString *ip_address_df = new DataFieldString(_T(""), this); ip_address_df->Set(config.ip_address); Add(_("IP Address"), NULL, ip_address_df); DataFieldEnum *tcp_port_df = new DataFieldEnum(this); FillTCPPorts(*tcp_port_df); tcp_port_df->Set(config.tcp_port); Add(_("TCP Port"), NULL, tcp_port_df); DataFieldEnum *i2c_bus_df = new DataFieldEnum(this); FillI2CBus(*i2c_bus_df); i2c_bus_df->Set(config.i2c_bus); Add(_("I2C Bus"), _("Select the description or bus number that matches your configuration."), i2c_bus_df); DataFieldEnum *i2c_addr_df = new DataFieldEnum(this); FillI2CAddr(*i2c_addr_df); i2c_addr_df->Set(config.i2c_addr); Add(_("I2C Addr"), _("The i2c address that matches your configuration." "This field is not used when your selection in the I2C Bus field is not an i2c bus number. " "In case you do not understand the previous sentence you may assume that this field is not used."), i2c_addr_df); DataFieldEnum *press_df = new DataFieldEnum(this); FillPress(*press_df); press_df->Set((unsigned)config.press_use); Add(_("Pressure use"), _("Select the purpose of this pressure sensor. " "This sensor measures some pressure. Here you tell the system " "what pressure this is and what its should be used for."), press_df); DataFieldEnum *driver_df = new DataFieldEnum(this); const struct DeviceRegister *driver; for (unsigned i = 0; (driver = GetDriverByIndex(i)) != NULL; i++) driver_df->addEnumText(driver->name, driver->display_name); driver_df->Sort(1); driver_df->Set(config.driver_name); Add(_("Driver"), NULL, driver_df); AddBoolean(_("Sync. from device"), _("This option lets you configure if XCSoar should use settings " "like the MacCready value, bugs and ballast from the device."), config.sync_from_device, this); SetExpertRow(SyncFromDevice); AddBoolean(_("Sync. to device"), _("This option lets you configure if XCSoar should send settings " "like the MacCready value, bugs and ballast to the device."), config.sync_to_device, this); SetExpertRow(SyncToDevice); AddBoolean(_T("K6Bt"), _("Enable this if you use a K6Bt to connect the device."), config.k6bt, this); SetExpertRow(K6Bt); UpdateVisibilities(); }
void DeviceEditWidget::SetConfig(const DeviceConfig &_config) { config = _config; if (config.port_type == DeviceConfig::PortType::DISABLED) /* if the user configures a new device, forget the old "enabled" flag and re-enable the device */ config.enabled = true; WndProperty &port_control = GetControl(Port); DataFieldEnum &port_df = *(DataFieldEnum *)port_control.GetDataField(); SetPort(port_df, config); port_control.RefreshDisplay(); WndProperty &baud_control = GetControl(BaudRate); DataFieldEnum &baud_df = *(DataFieldEnum *)baud_control.GetDataField(); baud_df.Set(config.baud_rate); baud_control.RefreshDisplay(); WndProperty &bulk_baud_control = GetControl(BulkBaudRate); DataFieldEnum &bulk_baud_df = *(DataFieldEnum *) bulk_baud_control.GetDataField(); bulk_baud_df.Set(config.bulk_baud_rate); bulk_baud_control.RefreshDisplay(); WndProperty &ip_address_control = GetControl(IP_ADDRESS); DataFieldEnum &ip_address_df = *(DataFieldEnum *) ip_address_control.GetDataField(); ip_address_df.Set(config.ip_address); ip_address_control.RefreshDisplay(); WndProperty &tcp_port_control = GetControl(TCPPort); DataFieldEnum &tcp_port_df = *(DataFieldEnum *) tcp_port_control.GetDataField(); tcp_port_df.Set(config.tcp_port); tcp_port_control.RefreshDisplay(); WndProperty &i2c_bus_control = GetControl(I2CBus); DataFieldEnum &i2c_bus_df = *(DataFieldEnum *) i2c_bus_control.GetDataField(); i2c_bus_df.Set(config.i2c_bus); i2c_bus_control.RefreshDisplay(); WndProperty &i2c_addr_control = GetControl(I2CAddr); DataFieldEnum &i2c_addr_df = *(DataFieldEnum *) i2c_addr_control.GetDataField(); i2c_addr_df.Set(config.i2c_addr); i2c_addr_control.RefreshDisplay(); WndProperty &press_control = GetControl(PressureUsage); DataFieldEnum &press_df = *(DataFieldEnum *) press_control.GetDataField(); press_df.Set((unsigned)config.press_use); press_control.RefreshDisplay(); WndProperty &driver_control = GetControl(Driver); DataFieldEnum &driver_df = *(DataFieldEnum *)driver_control.GetDataField(); driver_df.Set(config.driver_name); driver_control.RefreshDisplay(); WndProperty &sync_from_control = GetControl(SyncFromDevice); DataFieldBoolean &sync_from_df = *(DataFieldBoolean *)sync_from_control.GetDataField(); sync_from_df.Set(config.sync_from_device); sync_from_control.RefreshDisplay(); WndProperty &sync_to_control = GetControl(SyncToDevice); DataFieldBoolean &sync_to_df = *(DataFieldBoolean *)sync_to_control.GetDataField(); sync_to_df.Set(config.sync_to_device); sync_to_control.RefreshDisplay(); WndProperty &k6bt_control = GetControl(K6Bt); DataFieldBoolean &k6bt_df = *(DataFieldBoolean *)k6bt_control.GetDataField(); k6bt_df.Set(config.k6bt); k6bt_control.RefreshDisplay(); UpdateVisibilities(); }
void DeviceEditWidget::SetConfig(const DeviceConfig &_config) { config = _config; WndProperty &port_control = GetControl(Port); DataFieldEnum &port_df = *(DataFieldEnum *)port_control.GetDataField(); SetPort(port_df, config); port_control.RefreshDisplay(); WndProperty &baud_control = GetControl(BaudRate); DataFieldEnum &baud_df = *(DataFieldEnum *)baud_control.GetDataField(); baud_df.Set(config.baud_rate); baud_control.RefreshDisplay(); WndProperty &bulk_baud_control = GetControl(BulkBaudRate); DataFieldEnum &bulk_baud_df = *(DataFieldEnum *) bulk_baud_control.GetDataField(); bulk_baud_df.Set(config.bulk_baud_rate); bulk_baud_control.RefreshDisplay(); WndProperty &tcp_port_control = GetControl(TCPPort); DataFieldEnum &tcp_port_df = *(DataFieldEnum *) tcp_port_control.GetDataField(); tcp_port_df.Set(config.tcp_port); tcp_port_control.RefreshDisplay(); WndProperty &i2c_bus_control = GetControl(I2CBus); DataFieldEnum &i2c_bus_df = *(DataFieldEnum *) i2c_bus_control.GetDataField(); i2c_bus_df.Set(config.i2c_bus); i2c_bus_control.RefreshDisplay(); WndProperty &i2c_addr_control = GetControl(I2CAddr); DataFieldEnum &i2c_addr_df = *(DataFieldEnum *) i2c_addr_control.GetDataField(); i2c_addr_df.Set(config.i2c_addr); i2c_addr_control.RefreshDisplay(); WndProperty &press_control = GetControl(PressureUsage); DataFieldEnum &press_df = *(DataFieldEnum *) press_control.GetDataField(); press_df.Set((unsigned)config.press_use); press_control.RefreshDisplay(); WndProperty &driver_control = GetControl(Driver); DataFieldEnum &driver_df = *(DataFieldEnum *)driver_control.GetDataField(); driver_df.Set(config.driver_name); driver_control.RefreshDisplay(); WndProperty &sync_from_control = GetControl(SyncFromDevice); DataFieldBoolean &sync_from_df = *(DataFieldBoolean *)sync_from_control.GetDataField(); sync_from_df.Set(config.sync_from_device); sync_from_control.RefreshDisplay(); WndProperty &sync_to_control = GetControl(SyncToDevice); DataFieldBoolean &sync_to_df = *(DataFieldBoolean *)sync_to_control.GetDataField(); sync_to_df.Set(config.sync_to_device); sync_to_control.RefreshDisplay(); WndProperty &k6bt_control = GetControl(K6Bt); DataFieldBoolean &k6bt_df = *(DataFieldBoolean *)k6bt_control.GetDataField(); k6bt_df.Set(config.k6bt); k6bt_control.RefreshDisplay(); #ifndef NDEBUG WndProperty &dump_port_control = GetControl(DumpPort); DataFieldBoolean &dump_port_df = *(DataFieldBoolean *)dump_port_control.GetDataField(); dump_port_df.Set(config.dump_port); dump_port_control.RefreshDisplay(); #endif WndProperty &ignore_checksum_control = GetControl(IgnoreCheckSum); DataFieldBoolean &ignore_checksum_df = *(DataFieldBoolean *)ignore_checksum_control.GetDataField(); ignore_checksum_df.Set(config.ignore_checksum); ignore_checksum_control.RefreshDisplay(); UpdateVisibilities(); }
void DeviceEditWidget::Prepare(ContainerWindow &parent, const PixelRect &rc) { instance = this; RowFormWidget::Prepare(parent, rc); DataFieldEnum *port_df = new DataFieldEnum(OnDataField); port_df->SetDetachGUI(true); FillPorts(*port_df, config); Add(_("Port"), NULL, port_df); DataFieldEnum *baud_rate_df = new DataFieldEnum(NULL); FillBaudRates(*baud_rate_df); baud_rate_df->Set(config.baud_rate); Add(_("Baudrate"), NULL, baud_rate_df); DataFieldEnum *bulk_baud_rate_df = new DataFieldEnum(NULL); bulk_baud_rate_df->addEnumText(_T("Default"), 0u); FillBaudRates(*bulk_baud_rate_df); bulk_baud_rate_df->Set(config.bulk_baud_rate); Add(_("Bulk baud rate"), _("The baud rate used for bulk transfers, such as task declaration or flight download."), bulk_baud_rate_df); DataFieldEnum *tcp_port_df = new DataFieldEnum(NULL); FillTCPPorts(*tcp_port_df); tcp_port_df->Set(config.tcp_port); Add(_("TCP Port"), NULL, tcp_port_df); DataFieldEnum *driver_df = new DataFieldEnum(OnDataField); driver_df->SetDetachGUI(true); const TCHAR *driver_name; for (unsigned i = 0; (driver_name = GetDriverNameByIndex(i)) != NULL; i++) driver_df->addEnumText(driver_name, GetDriverDisplayNameByIndex(i)); driver_df->Sort(1); driver_df->SetAsString(config.driver_name); Add(_("Driver"), NULL, driver_df); AddBoolean(_("Sync. from device"), _("This option lets you configure if XCSoar should use settings " "like the MacCready value, bugs and ballast from the device."), config.sync_from_device); SetExpertRow(SyncFromDevice); AddBoolean(_("Sync. to device"), _("This option lets you configure if XCSoar should send settings " "like the MacCready value, bugs and ballast to the device."), config.sync_to_device); SetExpertRow(SyncToDevice); AddBoolean(_("Ignore checksum"), _("If your GPS device outputs invalid NMEA checksums, this will " "allow it's data to be used anyway."), config.ignore_checksum); SetExpertRow(IgnoreCheckSum); port_df->SetDetachGUI(false); driver_df->SetDetachGUI(false); UpdateVisibilities(); }
void WaypointDisplayConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { const WaypointRendererSettings &settings = CommonInterface::GetMapSettings().waypoint; RowFormWidget::Prepare(parent, rc); static constexpr StaticEnumChoice wp_labels_list[] = { { (unsigned)WaypointRendererSettings::DisplayTextType::NAME, N_("Full name"), N_("The full name of each waypoint is displayed.") }, { (unsigned)WaypointRendererSettings::DisplayTextType::FIRST_WORD, N_("First word of name"), N_("The first word of the waypoint name is displayed.") }, { (unsigned)WaypointRendererSettings::DisplayTextType::FIRST_THREE, N_("First 3 letters"), N_("The first 3 letters of the waypoint name are displayed.") }, { (unsigned)WaypointRendererSettings::DisplayTextType::FIRST_FIVE, N_("First 5 letters"), N_("The first 5 letters of the waypoint name are displayed.") }, { (unsigned)WaypointRendererSettings::DisplayTextType::NONE, N_("None"), N_("No waypoint name is displayed.") }, { 0 } }; AddEnum(_("Label format"), _("Determines how labels are displayed with each waypoint"), wp_labels_list, (unsigned)settings.display_text_type); static constexpr StaticEnumChoice wp_arrival_list[] = { { (unsigned)WaypointRendererSettings::ArrivalHeightDisplay::NONE, N_("None"), N_("No arrival height is displayed.") }, { (unsigned)WaypointRendererSettings::ArrivalHeightDisplay::GLIDE, N_("Straight glide"), N_("Straight glide arrival height (no terrain is considered).") }, { (unsigned)WaypointRendererSettings::ArrivalHeightDisplay::TERRAIN, N_("Terrain avoidance glide"), N_("Arrival height considering terrain avoidance. " "Requires \"Reach mode: Turning\" in \"Glide Computer > Route\" settings.") }, { (unsigned)WaypointRendererSettings::ArrivalHeightDisplay::GLIDE_AND_TERRAIN, N_("Straight & terrain glide"), N_("Both arrival heights are displayed. " "Requires \"Reach mode: Turning\" in \"Glide Computer > Route\" settings.") }, { (unsigned)WaypointRendererSettings::ArrivalHeightDisplay::REQUIRED_GR, N_("Required glide ratio") }, { 0 } }; AddEnum(_("Arrival height"), _("Determines how arrival height is displayed in waypoint labels"), wp_arrival_list, (unsigned)settings.arrival_height_display); SetExpertRow(WaypointArrivalHeightDisplay); static constexpr StaticEnumChoice wp_label_list[] = { { (unsigned)LabelShape::ROUNDED_BLACK, N_("Rounded rectangle"), nullptr }, { (unsigned)LabelShape::OUTLINED_INVERTED, N_("Outlined"), nullptr }, { 0 } }; AddEnum(_("Label style"), nullptr, wp_label_list, (unsigned)settings.landable_render_mode); SetExpertRow(WaypointLabelStyle); static constexpr StaticEnumChoice wp_selection_list[] = { { (unsigned)WaypointRendererSettings::LabelSelection::ALL, N_("All"), N_("All labels will be displayed.") }, { (unsigned)WaypointRendererSettings::LabelSelection::TASK_AND_AIRFIELD, N_("Task waypoints & airfields"), N_("All waypoints part of a task and all airfields will be displayed.") }, { (unsigned)WaypointRendererSettings::LabelSelection::TASK_AND_LANDABLE, N_("Task waypoints & landables"), N_("All waypoints part of a task and all landables will be displayed.") }, { (unsigned)WaypointRendererSettings::LabelSelection::TASK, N_("Task waypoints"), N_("All waypoints part of a task will be displayed.") }, { (unsigned)WaypointRendererSettings::LabelSelection::NONE, N_("None"), N_("No labels will be displayed.") }, { 0 } }; AddEnum(_("Label visibility"), _("Determines what labels are displayed."), wp_selection_list, (unsigned)settings.label_selection); SetExpertRow(WaypointLabelSelection); static constexpr StaticEnumChoice wp_style_list[] = { { (unsigned)WaypointRendererSettings::LandableStyle::PURPLE_CIRCLE, N_("Purple circle"), N_("Airports and outlanding fields are displayed as purple circles. If the waypoint is " "reachable a bigger green circle is added behind the purple one. If the waypoint is " "blocked by a mountain the green circle will be red instead.") }, { (unsigned)WaypointRendererSettings::LandableStyle::BW, N_("B/W"), N_("Airports and outlanding fields are displayed in white/grey. If the waypoint is " "reachable the color is changed to green. If the waypoint is blocked by a mountain " "the color is changed to red instead.") }, { (unsigned)WaypointRendererSettings::LandableStyle::TRAFFIC_LIGHTS, N_("Traffic lights"), N_("Airports and outlanding fields are displayed in the colors of a traffic light. " "Green if reachable, Orange if blocked by mountain and red if not reachable at all.") }, { 0 } }; AddEnum(_("Landable symbols"), _("Three styles are available: Purple circles (WinPilot style), a high " "contrast (monochrome) style, or orange. The rendering differs for landable " "field and airport. All styles mark the waypoints within reach green."), wp_style_list, (unsigned)settings.landable_style); AddBoolean(_("Detailed landables"), _("[Off] Display fixed icons for landables.\n" "[On] Show landables with variable information like runway length and heading."), settings.vector_landable_rendering, this); SetExpertRow(AppUseSWLandablesRendering); AddInteger(_("Landable size"), _("A percentage to select the size landables are displayed on the map."), _T("%u %%"), _T("%u"), 50, 200, 10, settings.landable_rendering_scale); SetExpertRow(AppLandableRenderingScale); AddBoolean(_("Scale runway length"), _("[Off] Display fixed length for runways.\n" "[On] Scale displayed runway length based on real length."), settings.scale_runway_length); SetExpertRow(AppScaleRunwayLength); UpdateVisibilities(); }
void WaypointDisplayConfigPanel::OnModified(DataField &df) { if (IsDataField(AppUseSWLandablesRendering, df)) UpdateVisibilities(); }
void Map::Del(size_t x, size_t y, size_t z) { m_data.erase(MapCoords(x,y,z)); m_refresh = true; UpdateVisibilities(x,y,z,false); }
void Map::Set(size_t x, size_t y, size_t z, Cube* cube) { m_data[MapCoords(x,y,z)] = std::make_tuple(cube,true); m_refresh = true; UpdateVisibilities(x,y,z,true); }
void WaypointDisplayConfigPanel::Init(WndForm *_wf) { assert(_wf != NULL); wf = _wf; WndProperty *wp; const WaypointRendererSettings &settings = CommonInterface::SettingsMap().waypoint; wp = (WndProperty*)wf->FindByName(_T("prpWaypointLabels")); if (wp) { DataFieldEnum* dfe; dfe = (DataFieldEnum*)wp->GetDataField(); dfe->EnableItemHelp(true); dfe->addEnumText(_("Full name"), DISPLAYNAME, _("The full name of each waypoint is displayed.")); dfe->addEnumText(_("First word of name"), DISPLAYUNTILSPACE, _("The first word of the waypoint name is displayed.")); dfe->addEnumText(_("First 3 letters"), DISPLAYFIRSTTHREE, _("The first 3 letters of the waypoint name are displayed.")); dfe->addEnumText(_("First 5 letters"), DISPLAYFIRSTFIVE, _("The first 5 letters of the waypoint name are displayed.")); dfe->addEnumText(_("None"), DISPLAYNONE, _("No waypoint name is displayed.")); dfe->Set(settings.display_text_type); wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(_T("prpWaypointArrivalHeightDisplay")); if (wp) { DataFieldEnum* dfe; dfe = (DataFieldEnum*)wp->GetDataField(); dfe->EnableItemHelp(true); dfe->addEnumText(_("None"), WP_ARRIVAL_HEIGHT_NONE, _("No arrival height is displayed.")); dfe->addEnumText(_("Straight glide"), WP_ARRIVAL_HEIGHT_GLIDE, _("Straight glide arrival height (no terrain is considered).")); dfe->addEnumText(_("Terrain avoidance glide"), WP_ARRIVAL_HEIGHT_TERRAIN, _("Arrival height considering terrain avoidance")); dfe->addEnumText(_("Straight & terrain glide"), WP_ARRIVAL_HEIGHT_GLIDE_AND_TERRAIN, _("Both arrival heights are displayed.")); dfe->Set(settings.arrival_height_display); wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(_T("prpWaypointLabelStyle")); if (wp) { DataFieldEnum* dfe; dfe = (DataFieldEnum*)wp->GetDataField(); dfe->addEnumText(_("Rounded rectangle"), RoundedBlack); dfe->addEnumText(_("Outlined"), OutlinedInverted); dfe->Set(settings.landable_render_mode); wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(_T("prpWaypointLabelSelection")); if (wp) { //Determines what waypoint labels are displayed for each waypoint (space permitting): DataFieldEnum* dfe; dfe = (DataFieldEnum*)wp->GetDataField(); dfe->EnableItemHelp(true); dfe->addEnumText(_("All"), wlsAllWaypoints, _("All waypoint labels will be displayed.")); dfe->addEnumText(_("Task waypoints & landables"), wlsTaskAndLandableWaypoints, _("All waypoints part of a task and all landables will be displayed.")); dfe->addEnumText(_("Task waypoints"), wlsTaskWaypoints, _("All waypoints part of a task will be displayed.")); dfe->addEnumText(_("None"), wlsNoWaypoints, _("No waypoint labels will be displayed.")); dfe->Set(settings.label_selection); wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(_T("prpAppIndLandable")); if (wp) { DataFieldEnum* dfe; dfe = (DataFieldEnum*)wp->GetDataField(); dfe->EnableItemHelp(true); dfe->addEnumText(_("Purple circle"), wpLandableWinPilot, _("Airports and outlanding fields are displayed as purple circles. If the waypoint is reachable a bigger green circle is added behind the purple one. If the waypoint is blocked by a mountain the green circle will be red instead.")); dfe->addEnumText(_("B/W"), wpLandableAltA, _("Airports and outlanding fields are displayed in white/grey. If the waypoint is reachable the color is changed to green. If the waypoint is blocked by a mountain the color is changed to red instead.")); dfe->addEnumText(_("Traffic lights"), wpLandableAltB, _("Airports and outlanding fields are displayed in the colors of a traffic light. Green if reachable, Orange if blocked by mountain and red if not reachable at all.")); dfe->Set(settings.landable_style); wp->RefreshDisplay(); } LoadFormProperty(*wf, _T("prpAppUseSWLandablesRendering"), settings.vector_landable_rendering); LoadFormProperty(*wf, _T("prpAppLandableRenderingScale"), settings.landable_rendering_scale); LoadFormProperty(*wf, _T("prpAppScaleRunwayLength"), settings.scale_runway_length); UpdateVisibilities(); }