void SiteConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { buttonWaypoints = ((WndButton *)ConfigPanel::GetForm().FindByName(_T("cmdWaypoints"))); assert (buttonWaypoints); buttonWaypoints->SetOnClickNotify(dlgConfigWaypointsShowModal); WndProperty *wp = Add(_T(""), 0, true); wp->SetText(GetPrimaryDataPath()); wp->SetEnabled(false); AddFileReader(_("Map database"), _("The name of the file (.xcm) containing terrain, topography, and optionally " "waypoints, their details and airspaces."), ProfileKeys::MapFile, _T("*.xcm\0*.lkm\0")); AddFileReader(_("Waypoints"), _("Primary waypoints file. Supported file types are Cambridge/WinPilot files (.dat), " "Zander files (.wpz) or SeeYou files (.cup)."), ProfileKeys::WaypointFile, _T("*.dat\0*.xcw\0*.cup\0*.wpz\0*.wpt\0")); AddFileReader(_("More waypoints"), _("Secondary waypoints file. This may be used to add waypoints for a competition."), ProfileKeys::AdditionalWaypointFile, _T("*.dat\0*.xcw\0*.cup\0*.wpz\0*.wpt\0")); SetExpertRow(AdditionalWaypointFile); AddFileReader(_("Watched waypoints"), _("Waypoint file containing special waypoints for which additional computations like " "calculation of arrival height in map display always takes place. Useful for " "waypoints like known reliable thermal sources (e.g. powerplants) or mountain passes."), ProfileKeys::WatchedWaypointFile, _T("*.dat\0*.xcw\0*.cup\0*.wpz\0*.wpt\0")); SetExpertRow(WatchedWaypointFile); AddFileReader(_("Airspaces"), _("The file name of the primary airspace file."), ProfileKeys::AirspaceFile, _T("*.txt\0*.air\0*.sua\0")); AddFileReader(_("More airspaces"), _("The file name of the secondary airspace file."), ProfileKeys::AdditionalAirspaceFile, _T("*.txt\0*.air\0*.sua\0")); SetExpertRow(AdditionalAirspaceFile); AddFileReader(_("Waypoint details"), _("The file may contain extracts from enroute supplements or other contributed " "information about individual waypoints and airfields."), ProfileKeys::AirfieldFile, _T("*.txt\0")); SetExpertRow(AirfieldFile); }
void InterfaceConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { const UISettings &settings = CommonInterface::GetUISettings(); RowFormWidget::Prepare(parent, rc); buttonFonts = ConfigPanel::GetExtraButton(1); assert(buttonFonts); #ifdef HAVE_BLANK AddBoolean(_("Auto. blank"), _("This determines whether to blank the display after a long period of inactivity " "when operating on internal battery power."), settings.display.enable_auto_blank); #endif AddFileReader(_("Events"), _("The Input Events file defines the menu system and how XCSoar responds to " "button presses and events from external devices."), ProfileKeys::InputFile, _T("*.xci\0")); SetExpertRow(InputFile); #ifndef HAVE_NATIVE_GETTEXT WndProperty *wp; wp = AddEnum(_("Language"), _("The language options selects translations for English texts to other " "languages. Select English for a native interface or Automatic to localise " "XCSoar according to the system settings.")); if (wp != NULL) { DataFieldEnum &df = *(DataFieldEnum *)wp->GetDataField(); df.addEnumText(_("Automatic")); df.addEnumText(_T("English")); #ifdef HAVE_BUILTIN_LANGUAGES for (const BuiltinLanguage *l = language_table; l->resource != NULL; ++l) { StaticString<100> display_string; display_string.Format(_T("%s (%s)"), l->name, l->resource); df.addEnumText(l->resource, display_string); } #endif LanguageFileVisitor lfv(df); VisitDataFiles(_T("*.mo"), lfv); df.Sort(2); TCHAR value[MAX_PATH]; if (!Profile::GetPath(ProfileKeys::LanguageFile, value)) value[0] = _T('\0'); if (StringIsEqual(value, _T("none"))) df.Set(1); else if (!StringIsEmpty(value) && !StringIsEqual(value, _T("auto"))) { const TCHAR *base = BaseName(value); if (base != NULL) df.Set(base); } wp->RefreshDisplay(); } #endif /* !HAVE_NATIVE_GETTEXT */ AddFileReader(_("Status message"), _("The status file can be used to define sounds to be played when certain " "events occur, and how long various status messages will appear on screen."), ProfileKeys::StatusFile, _T("*.xcs\0")); SetExpertRow(StatusFile); AddTime(_("Menu timeout"), _("This determines how long menus will appear on screen if the user does not make any button " "presses or interacts with the computer."), 1, 60, 1, settings.menu_timeout / 2); SetExpertRow(MenuTimeout); #ifdef HAVE_VIBRATOR static constexpr StaticEnumChoice haptic_feedback_list[] = { { (unsigned)UISettings::HapticFeedback::DEFAULT, N_("OS settings") }, { (unsigned)UISettings::HapticFeedback::OFF, N_("Off") }, { (unsigned)UISettings::HapticFeedback::ON, N_("On") }, { 0 } }; wp = AddEnum(_("Haptic feedback"), _("Determines if haptic feedback like vibration is used."), haptic_feedback_list, (unsigned)settings.haptic_feedback); SetExpertRow(HapticFeedback); #endif /* HAVE_VIBRATOR */ }
void InterfaceConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { const UISettings &settings = CommonInterface::GetUISettings(); RowFormWidget::Prepare(parent, rc); buttonFonts = ConfigPanel::GetExtraButton(1); assert(buttonFonts); #ifdef HAVE_BLANK AddBoolean(_("Auto. blank"), _("This determines whether to blank the display after a long period of inactivity " "when operating on internal battery power."), settings.display.enable_auto_blank); #endif AddFileReader(_("Events"), _("The Input Events file defines the menu system and how XCSoar responds to " "button presses and events from external devices."), szProfileInputFile, _T("*.xci\0")); SetExpertRow(InputFile); #ifndef HAVE_NATIVE_GETTEXT WndProperty *wp; wp = AddEnum(_("Language"), _("The language options selects translations for English texts to other " "languages. Select English for a native interface or Automatic to localise " "XCSoar according to the system settings.")); if (wp != NULL) { DataFieldEnum &df = *(DataFieldEnum *)wp->GetDataField(); df.addEnumText(_("Automatic")); df.addEnumText(_("English")); #ifdef HAVE_BUILTIN_LANGUAGES for (const struct builtin_language *l = language_table; l->resource != NULL; ++l) df.addEnumText(l->resource); #endif LanguageFileVisitor lfv(df); VisitDataFiles(_T("*.mo"), lfv); df.Sort(2); TCHAR value[MAX_PATH]; if (!Profile::GetPath(szProfileLanguageFile, value)) value[0] = _T('\0'); if (_tcscmp(value, _T("none")) == 0) df.Set(1); else if (!StringIsEmpty(value) && _tcscmp(value, _T("auto")) != 0) { const TCHAR *base = BaseName(value); if (base != NULL) df.SetAsString(base); } wp->RefreshDisplay(); } #endif /* !HAVE_NATIVE_GETTEXT */ AddFileReader(_("Status message"), _("The status file can be used to define sounds to be played when certain " "events occur, and how long various status messages will appear on screen."), szProfileStatusFile, _T("*.xcs\0")); SetExpertRow(StatusFile); AddTime(_("Menu timeout"), _("This determines how long menus will appear on screen if the user does not make any button " "presses or interacts with the computer."), 1, 60, 1, settings.menu_timeout / 2); SetExpertRow(MenuTimeout); static gcc_constexpr_data StaticEnumChoice text_input_list[] = { { (unsigned)DialogSettings::TextInputStyle::Default, N_("Default") }, { (unsigned)DialogSettings::TextInputStyle::Keyboard, N_("Keyboard") }, { (unsigned)DialogSettings::TextInputStyle::HighScore, N_("HighScore Style") }, { 0 } }; AddEnum(_("Text input style"), _("Determines how the user is prompted for text input (filename, teamcode etc.)"), text_input_list, (unsigned)settings.dialog.text_input_style); SetExpertRow(TextInput); /* on-screen keyboard doesn't work without a pointing device (mouse or touch screen), hide the option on Altair */ SetRowVisible(TextInput, HasPointer()); #ifdef HAVE_VIBRATOR static gcc_constexpr_data StaticEnumChoice haptic_feedback_list[] = { { (unsigned) UISettings::HapticFeedback::Default, N_("OS settings") }, { (unsigned) UISettings::HapticFeedback::Off, N_("Off") }, { (unsigned) UISettings::HapticFeedback::On, N_("On") }, { 0 } }; wp = AddEnum(_("Haptic feedback"), _("Determines if haptic feedback like vibration is used."), haptic_feedback_list, (unsigned)settings.haptic_feedback); SetExpertRow(HapticFeedback); #endif /* HAVE_VIBRATOR */ }