This finally seems better than always creating some kind of impl object, even if the locale isn't supported at all and makes all ports behave consistently, as previously CreateForLocale() only returned NULL in wxOSX implementation if the locale was unrecognized, but now all ports do this (at least when locale_t and related functions are available under Unix). Also stop returning bool from Use(), as this resulted in initializing wxLocale with any non-default language to fail under Mac: just ignore the error here, as we always did it until now, because there is nothing we can do about it anyhow.
73 lines
2.8 KiB
C++
73 lines
2.8 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// 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/string.h"
|
|
|
|
// 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:
|
|
// 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 NULL.
|
|
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 NULL in case of failure.
|
|
static wxUILocaleImpl* CreateUserDefault();
|
|
|
|
// Create locale object for the given locale.
|
|
//
|
|
// It may return NULL 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 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 NULL in case of failure.
|
|
static wxUILocaleImpl* CreateForLanguage(const wxLanguageInfo& info);
|
|
|
|
// 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 wxString GetInfo(wxLocaleInfo index, wxLocaleCategory cat) const = 0;
|
|
virtual int CompareStrings(const wxString& lhs, const wxString& rhs,
|
|
int flags) const = 0;
|
|
|
|
virtual ~wxUILocaleImpl() { }
|
|
};
|
|
|
|
#endif // _WX_PRIVATE_UILOCALE_H_
|