initial commit
Signed-off-by: Peter Siegmund <mars3142@noreply.mars3142.dev>
This commit is contained in:
140
libs/wxWidgets-3.3.1/include/wx/private/uilocale.h
Normal file
140
libs/wxWidgets-3.3.1/include/wx/private/uilocale.h
Normal file
@@ -0,0 +1,140 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/uilocale.h
|
||||
// Purpose: wxUILocaleImpl class declaration
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2021-08-01
|
||||
// Copyright: (c) 2021 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_UILOCALE_H_
|
||||
#define _WX_PRIVATE_UILOCALE_H_
|
||||
|
||||
#include "wx/localedefs.h"
|
||||
#include "wx/object.h"
|
||||
#include "wx/string.h"
|
||||
#include "wx/vector.h"
|
||||
|
||||
typedef wxVector<wxLanguageInfo> wxLanguageInfos;
|
||||
|
||||
// Return the vector of all languages known to wx.
|
||||
const wxLanguageInfos& wxGetLanguageInfos();
|
||||
|
||||
// Function returning hard-coded values for the "C" locale.
|
||||
wxString wxGetStdCLocaleInfo(wxLocaleInfo index, wxLocaleCategory cat);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxUILocaleImpl provides the implementation of public wxUILocale functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxUILocaleImpl : public wxRefCounter
|
||||
{
|
||||
public:
|
||||
// This function is implemented in platform-specific code and returns the
|
||||
// object used by default, i.e. if wxUILocale::UseDefault() is not called.
|
||||
// This object corresponds to the traditional "C" locale.
|
||||
//
|
||||
// It should never return nullptr.
|
||||
static wxUILocaleImpl* CreateStdC();
|
||||
|
||||
// Similarly, this one returns the object corresponding to the default user
|
||||
// locale settings which is used if wxUILocale::UseDefault() was called.
|
||||
//
|
||||
// It may return nullptr in case of failure.
|
||||
static wxUILocaleImpl* CreateUserDefault();
|
||||
|
||||
// Create locale object for the given locale.
|
||||
//
|
||||
// It may return nullptr in case of failure.
|
||||
static wxUILocaleImpl* CreateForLocale(const wxLocaleIdent& locId);
|
||||
|
||||
// This function exists only for wxLocale compatibility and creates the
|
||||
// locale corresponding to the given language. It shouldn't be used
|
||||
// anywhere else.
|
||||
//
|
||||
// It is implemented in terms of CreateForLocale() for non-MSW platforms,
|
||||
// but under MSW it is different for compatibility reasons.
|
||||
//
|
||||
// The language passed to this function is a valid language, i.e. neither
|
||||
// wxLANGUAGE_UNKNOWN nor wxLANGUAGE_DEFAULT.
|
||||
//
|
||||
// It may return nullptr in case of failure, but never does so for English
|
||||
// languages because wxLocale(wxLANGUAGE_ENGLISH) is always supposed to
|
||||
// work, so it just falls back on CreateStdC() if it fails to create it.
|
||||
static wxUILocaleImpl* CreateForLanguage(const wxLanguageInfo& info);
|
||||
|
||||
// This function retrieves a list of preferred UI languages.
|
||||
// The list is in the order of preference, if it has more than one entry.
|
||||
// The entries contain platform-dependent identifiers.
|
||||
static wxVector<wxString> GetPreferredUILanguages();
|
||||
|
||||
#if wxUSE_DATETIME
|
||||
// Helper function used by GetMonthName/GetWeekDayName(): returns 0 if flags is
|
||||
// wxDateTime::Name_Full, 1 if it is wxDateTime::Name_Abbr, and 2 if it is
|
||||
// wxDateTime::Name_Shortest or -1 if the flags is incorrect (and asserts in this case)
|
||||
//
|
||||
// the return value of this function is used as an index into 2D array
|
||||
// containing full names in its first row and abbreviated ones in the 2nd one
|
||||
static int ArrayIndexFromFlag(wxDateTime::NameFlags flags);
|
||||
#endif // wxUSE_DATETIME
|
||||
|
||||
// Use this locale in the UI.
|
||||
//
|
||||
// This is not implemented for all platforms, notably not for Mac where the
|
||||
// UI locale is determined at application startup, but we can't do anything
|
||||
// about it anyhow, so we don't even bother returning an error code from it.
|
||||
virtual void Use() = 0;
|
||||
|
||||
// Functions corresponding to wxUILocale ones.
|
||||
virtual wxString GetName() const = 0;
|
||||
virtual wxLocaleIdent GetLocaleId() const = 0;
|
||||
virtual wxString GetInfo(wxLocaleInfo index, wxLocaleCategory cat) const = 0;
|
||||
virtual wxString GetLocalizedName(wxLocaleName name, wxLocaleForm form) const = 0;
|
||||
#if wxUSE_DATETIME
|
||||
virtual wxString GetMonthName(wxDateTime::Month month, wxDateTime::NameForm form) const = 0;
|
||||
virtual wxString GetWeekDayName(wxDateTime::WeekDay weekday, wxDateTime::NameForm form) const = 0;
|
||||
#endif // wxUSE_DATETIME
|
||||
|
||||
virtual wxLayoutDirection GetLayoutDirection() const = 0;
|
||||
virtual int CompareStrings(const wxString& lhs, const wxString& rhs,
|
||||
int flags) const = 0;
|
||||
|
||||
virtual ~wxUILocaleImpl() = default;
|
||||
|
||||
// These two methods are for internal use only. First one creates the
|
||||
// global language database if it doesn't already exist, second one destroys
|
||||
// it.
|
||||
static void CreateLanguagesDB();
|
||||
static void DestroyLanguagesDB();
|
||||
|
||||
// Creates the global tables of languages and scripts called by CreateLanguagesDB
|
||||
static void InitLanguagesDB();
|
||||
|
||||
// These two methods are for internal use only.
|
||||
// wxLocaleIdent expects script identifiers as listed in ISO 15924.
|
||||
// However, directory names for translation catalogs follow the
|
||||
// Unix convention, using script aliases as listed in ISO 15924.
|
||||
// First one converts a script name to its alias, second converts
|
||||
// a script alias to its corresponding script name.
|
||||
// Both methods return empty strings, if the script name or alias
|
||||
// couldn't be found.
|
||||
static wxString GetScriptAliasFromName(const wxString& scriptName);
|
||||
static wxString GetScriptNameFromAlias(const wxString& scriptAlias);
|
||||
|
||||
// These three methods are for internal use only.
|
||||
// The new algorithm for determine the best translation language
|
||||
// uses them.
|
||||
// First one expands a locale tag using most likely subtags for script
|
||||
// and region. The method returns an empty string, if a matching tag
|
||||
// couldn't be found.
|
||||
// Second one determines the matching distance between locale tags.
|
||||
// The method returns -1, if no match was found.
|
||||
// Third one determines whether 2 regions belong to the same region
|
||||
// group of the given language. The method returns false, if no
|
||||
// region group is defined for the given language.
|
||||
static wxString GetLikelySubtags(const wxString & fromTag);
|
||||
static int GetMatchDistance(const wxString& desired, const wxString& supported);
|
||||
static bool SameRegionGroup(const wxString& language, const wxString& desiredRegion, const wxString& supportedRegion);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_UILOCALE_H_
|
||||
Reference in New Issue
Block a user