initial commit
Signed-off-by: Peter Siegmund <mars3142@noreply.mars3142.dev>
This commit is contained in:
154
libs/wxWidgets-3.3.1/include/wx/private/addremovectrl.h
Normal file
154
libs/wxWidgets-3.3.1/include/wx/private/addremovectrl.h
Normal file
@@ -0,0 +1,154 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/addremovectrl.h
|
||||
// Purpose: wxAddRemoveImpl helper class declaration
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2015-02-04
|
||||
// Copyright: (c) 2015 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_ADDREMOVECTRL_H_
|
||||
#define _WX_PRIVATE_ADDREMOVECTRL_H_
|
||||
|
||||
#include "wx/button.h"
|
||||
#include "wx/sizer.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxAddRemoveImplBase: implementation-only part of wxAddRemoveCtrl, base part
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxAddRemoveImplBase
|
||||
{
|
||||
public:
|
||||
// Base class ctor just initializes the associated adaptor, the derived
|
||||
// class is supposed to create the buttons and layout everything.
|
||||
//
|
||||
// Takes ownership of the adaptor pointer.
|
||||
explicit wxAddRemoveImplBase(wxAddRemoveAdaptor* adaptor,
|
||||
wxAddRemoveCtrl* WXUNUSED(parent),
|
||||
wxWindow* ctrlItems)
|
||||
: m_adaptor(adaptor)
|
||||
{
|
||||
ctrlItems->Bind(wxEVT_CHAR, &wxAddRemoveImplBase::OnChar, this);
|
||||
}
|
||||
|
||||
// wxOSX implementation needs to override this as it doesn't use sizers,
|
||||
// for the others it is not necessary.
|
||||
virtual wxSize GetBestClientSize() const { return wxDefaultSize; }
|
||||
|
||||
virtual void SetButtonsToolTips(const wxString& addtip,
|
||||
const wxString& removetip) = 0;
|
||||
|
||||
virtual ~wxAddRemoveImplBase()
|
||||
{
|
||||
delete m_adaptor;
|
||||
}
|
||||
|
||||
// Event handlers which must be connected to the appropriate sources by the
|
||||
// derived classes.
|
||||
|
||||
void OnUpdateUIAdd(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Enable( m_adaptor->CanAdd() );
|
||||
}
|
||||
|
||||
void OnUpdateUIRemove(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Enable( m_adaptor->CanRemove() );
|
||||
}
|
||||
|
||||
void OnAdd(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
m_adaptor->OnAdd();
|
||||
}
|
||||
|
||||
void OnRemove(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
m_adaptor->OnRemove();
|
||||
}
|
||||
|
||||
private:
|
||||
// This event handler is connected by this class itself and doesn't need to
|
||||
// be accessible to the derived classes.
|
||||
|
||||
void OnChar(wxKeyEvent& event)
|
||||
{
|
||||
switch ( event.GetKeyCode() )
|
||||
{
|
||||
case '+':
|
||||
case WXK_INSERT:
|
||||
case WXK_NUMPAD_INSERT:
|
||||
if ( m_adaptor->CanAdd() )
|
||||
m_adaptor->OnAdd();
|
||||
return;
|
||||
|
||||
case '-':
|
||||
case WXK_DELETE:
|
||||
case WXK_NUMPAD_DELETE:
|
||||
if ( m_adaptor->CanRemove() )
|
||||
m_adaptor->OnRemove();
|
||||
return;
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
wxAddRemoveAdaptor* const m_adaptor;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxAddRemoveImplBase);
|
||||
};
|
||||
|
||||
// GTK+ uses a wxToolBar-based implementation and so doesn't need this class.
|
||||
#ifndef __WXGTK__
|
||||
|
||||
// Base class for the ports using actual wxButtons for the "+"/"-" buttons.
|
||||
class wxAddRemoveImplWithButtons : public wxAddRemoveImplBase
|
||||
{
|
||||
public:
|
||||
explicit wxAddRemoveImplWithButtons(wxAddRemoveAdaptor* adaptor,
|
||||
wxAddRemoveCtrl* parent,
|
||||
wxWindow* ctrlItems)
|
||||
: wxAddRemoveImplBase(adaptor, parent, ctrlItems)
|
||||
{
|
||||
m_btnAdd =
|
||||
m_btnRemove = nullptr;
|
||||
}
|
||||
|
||||
virtual void SetButtonsToolTips(const wxString& addtip,
|
||||
const wxString& removetip) override
|
||||
{
|
||||
m_btnAdd->SetToolTip(addtip);
|
||||
m_btnRemove->SetToolTip(removetip);
|
||||
}
|
||||
|
||||
protected:
|
||||
// Must be called by the derived class ctor after creating the buttons to
|
||||
// set up the event handlers.
|
||||
void SetUpEvents()
|
||||
{
|
||||
m_btnAdd->Bind(wxEVT_UPDATE_UI,
|
||||
&wxAddRemoveImplBase::OnUpdateUIAdd, this);
|
||||
m_btnRemove->Bind(wxEVT_UPDATE_UI,
|
||||
&wxAddRemoveImplBase::OnUpdateUIRemove, this);
|
||||
|
||||
m_btnAdd->Bind(wxEVT_BUTTON, &wxAddRemoveImplBase::OnAdd, this);
|
||||
m_btnRemove->Bind(wxEVT_BUTTON, &wxAddRemoveImplBase::OnRemove, this);
|
||||
}
|
||||
|
||||
wxButton *m_btnAdd,
|
||||
*m_btnRemove;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxAddRemoveImplWithButtons);
|
||||
};
|
||||
|
||||
#endif // !wxGTK
|
||||
|
||||
#ifdef __WXOSX__
|
||||
#include "wx/osx/private/addremovectrl.h"
|
||||
#elif defined(__WXGTK__)
|
||||
#include "wx/gtk/private/addremovectrl.h"
|
||||
#else
|
||||
#include "wx/generic/private/addremovectrl.h"
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_ADDREMOVECTRL_H_
|
||||
44
libs/wxWidgets-3.3.1/include/wx/private/animate.h
Normal file
44
libs/wxWidgets-3.3.1/include/wx/private/animate.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/animate.h
|
||||
// Purpose: wxAnimationImpl declaration
|
||||
// Author: Robin Dunn, Vadim Zeitlin
|
||||
// Created: 2020-04-06
|
||||
// Copyright: (c) 2020 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_ANIMATEH__
|
||||
#define _WX_PRIVATE_ANIMATEH__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxAnimationImpl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxAnimationImpl : public wxRefCounter
|
||||
{
|
||||
public:
|
||||
wxAnimationImpl() = default;
|
||||
virtual ~wxAnimationImpl() = default;
|
||||
|
||||
virtual bool IsOk() const = 0;
|
||||
virtual bool IsCompatibleWith(wxClassInfo* ci) const = 0;
|
||||
|
||||
// can be -1
|
||||
virtual int GetDelay(unsigned int frame) const = 0;
|
||||
|
||||
virtual unsigned int GetFrameCount() const = 0;
|
||||
virtual wxImage GetFrame(unsigned int frame) const = 0;
|
||||
virtual wxSize GetSize() const = 0;
|
||||
|
||||
virtual bool LoadFile(const wxString& name,
|
||||
wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
|
||||
virtual bool Load(wxInputStream& stream,
|
||||
wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
|
||||
|
||||
// This function creates the default implementation for this platform:
|
||||
// currently it's wxAnimationGTKImpl under wxGTK and wxAnimationGenericImpl
|
||||
// under all the other platforms.
|
||||
static wxAnimationImpl *CreateDefault();
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_ANIMATEH__
|
||||
37
libs/wxWidgets-3.3.1/include/wx/private/aui.h
Normal file
37
libs/wxWidgets-3.3.1/include/wx/private/aui.h
Normal file
@@ -0,0 +1,37 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/aui.h
|
||||
// Purpose: Private wxAUI declarations.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2025-03-13
|
||||
// Copyright: (c) 2025 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_AUI_H_
|
||||
#define _WX_PRIVATE_AUI_H_
|
||||
|
||||
#include "wx/bmpbndl.h"
|
||||
|
||||
// wxAuiCreateBitmap() is a utility function that creates a bitmap using the
|
||||
// given colour from monochrome image defined by either SVG (if supported in
|
||||
// this build) or XBM data.
|
||||
|
||||
#ifdef wxHAS_SVG
|
||||
// SVG data must start with a new line (this is convenient when embedding it as
|
||||
// a raw string) and use "currentColor" for the colour to be mapped to the
|
||||
// given colour.
|
||||
wxBitmapBundle wxAuiCreateBitmap(const char* svgData, int w, int h,
|
||||
const wxColour& color);
|
||||
#else // !wxHAS_SVG
|
||||
// When using XBM, the black bits of the given monochrome bitmap define the
|
||||
// mask of the returned bitmap and white bits are mapped to the given colour.
|
||||
wxBitmap wxAuiCreateBitmap(const unsigned char bits[], int w, int h,
|
||||
const wxColour& color);
|
||||
#endif // wxHAS_SVG/!wxHAS_SVG
|
||||
|
||||
// Define some specialized functions to create bitmaps used in both dockart.cpp
|
||||
// and tabart.cpp.
|
||||
wxBitmapBundle wxAuiCreateCloseButtonBitmap(const wxColour& color);
|
||||
wxBitmapBundle wxAuiCreatePinButtonBitmap(const wxColour& color);
|
||||
|
||||
#endif // _WX_PRIVATE_AUI_H_
|
||||
34
libs/wxWidgets-3.3.1/include/wx/private/bmpbndl.h
Normal file
34
libs/wxWidgets-3.3.1/include/wx/private/bmpbndl.h
Normal file
@@ -0,0 +1,34 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/bmpbndl.h
|
||||
// Purpose: wxBitmapBundleImpl declaration.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2021-09-22
|
||||
// Copyright: (c) 2021 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_BMPBNDL_H_
|
||||
#define _WX_PRIVATE_BMPBNDL_H_
|
||||
|
||||
#include "wx/bmpbndl.h"
|
||||
|
||||
#ifdef __WXOSX__
|
||||
|
||||
// this methods are wx-private, may change in the future
|
||||
|
||||
WXImage WXDLLIMPEXP_CORE wxOSXGetImageFromBundle(const wxBitmapBundle& bundle);
|
||||
wxBitmapBundle WXDLLIMPEXP_CORE wxOSXMakeBundleFromImage(WXImage image);
|
||||
WXImage WXDLLIMPEXP_CORE wxOSXImageFromBitmap(const wxBitmap& bmp);
|
||||
#if wxOSX_USE_COCOA
|
||||
void WXDLLIMPEXP_CORE wxOSXAddBitmapToImage(WXImage image, const wxBitmap& bmp);
|
||||
#endif
|
||||
|
||||
// for hiding the storage of the NSImage with wxBitmapBundleImpls from public API
|
||||
|
||||
WXImage WXDLLIMPEXP_CORE wxOSXGetImageFromBundleImpl(const wxBitmapBundleImpl* impl);
|
||||
void WXDLLIMPEXP_CORE wxOSXSetImageForBundleImpl(const wxBitmapBundleImpl* impl, WXImage image);
|
||||
void WXDLLIMPEXP_CORE wxOSXBundleImplDestroyed(const wxBitmapBundleImpl* impl);
|
||||
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_BMPBNDL_H_
|
||||
205
libs/wxWidgets-3.3.1/include/wx/private/display.h
Normal file
205
libs/wxWidgets-3.3.1/include/wx/private/display.h
Normal file
@@ -0,0 +1,205 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/display.h
|
||||
// Purpose: wxDisplayImpl class declaration
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2006-03-15
|
||||
// Copyright: (c) 2002-2006 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_DISPLAY_H_
|
||||
#define _WX_PRIVATE_DISPLAY_H_
|
||||
|
||||
#include "wx/display.h"
|
||||
#include "wx/gdicmn.h" // for wxRect
|
||||
#include "wx/vector.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDisplayFactory: allows to create wxDisplay objects
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxDisplayFactory
|
||||
{
|
||||
public:
|
||||
wxDisplayFactory() = default;
|
||||
virtual ~wxDisplayFactory() { ClearImpls(); }
|
||||
|
||||
// Create the display if necessary using CreateDisplay(), otherwise just
|
||||
// get it from cache.
|
||||
wxObjectDataPtr<wxDisplayImpl> GetDisplay(unsigned n);
|
||||
|
||||
// Return the primary display object, creating it if necessary.
|
||||
wxObjectDataPtr<wxDisplayImpl> GetPrimaryDisplay();
|
||||
|
||||
// get the total number of displays
|
||||
virtual unsigned GetCount() = 0;
|
||||
|
||||
// return the display for the given point or wxNOT_FOUND
|
||||
virtual int GetFromPoint(const wxPoint& pt) = 0;
|
||||
|
||||
// return the display with biggest intersection with the given rectangle or
|
||||
// wxNOT_FOUND
|
||||
virtual int GetFromRect(const wxRect& rect);
|
||||
|
||||
// return the display for the given window or wxNOT_FOUND
|
||||
//
|
||||
// the window pointer must not be null (i.e. caller should check it)
|
||||
virtual int GetFromWindow(const wxWindow *window);
|
||||
|
||||
// Trigger recreation of wxDisplayImpl when they're needed the next time.
|
||||
virtual void UpdateOnDisplayChange();
|
||||
|
||||
protected:
|
||||
// create a new display object
|
||||
//
|
||||
// it can return a null pointer if the display creation failed
|
||||
virtual wxDisplayImpl *CreateDisplay(unsigned n) = 0;
|
||||
|
||||
// check if the given display is still connected and update its properties
|
||||
// if this is the case (notably its index)
|
||||
//
|
||||
// mark display as disconnected and return false otherwise
|
||||
//
|
||||
// default implementation considers all displays as being not connected any
|
||||
// longer, port-specific implementations should override it to keep the
|
||||
// objects corresponding to the still connected displays valid
|
||||
virtual bool RefreshOnDisplayChange(wxDisplayImpl& impl) const;
|
||||
|
||||
private:
|
||||
// Delete all the elements of m_impls vector and clear it.
|
||||
void ClearImpls();
|
||||
|
||||
// On-demand populated vector of wxDisplayImpl objects.
|
||||
wxVector<wxObjectDataPtr<wxDisplayImpl>> m_impls;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxDisplayFactory);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDisplayImpl: base class for all wxDisplay implementations
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxDisplayImpl : public wxObjectRefData
|
||||
{
|
||||
public:
|
||||
// virtual dtor for this base class
|
||||
virtual ~wxDisplayImpl() = default;
|
||||
|
||||
|
||||
// return the full area of this display
|
||||
virtual wxRect GetGeometry() const = 0;
|
||||
|
||||
// return the area of the display available for normal windows
|
||||
virtual wxRect GetClientArea() const { return GetGeometry(); }
|
||||
|
||||
// return the depth or 0 if unknown
|
||||
virtual int GetDepth() const = 0;
|
||||
|
||||
// return the scale factor used to convert logical pixels to physical ones
|
||||
virtual double GetScaleFactor() const { return 1.0; }
|
||||
|
||||
// return the resolution of the display, by default uses GetScaleFactor(),
|
||||
// but can be also overridden directly, as is done in wxMSW
|
||||
virtual wxSize GetPPI() const { return wxDisplay::GetStdPPI()*GetScaleFactor(); }
|
||||
|
||||
// return the name (may be empty)
|
||||
virtual wxString GetName() const { return wxString(); }
|
||||
|
||||
// return the index of this display
|
||||
unsigned GetIndex() const { return m_index; }
|
||||
|
||||
// return true if this is the primary monitor (usually one with index 0)
|
||||
virtual bool IsPrimary() const { return GetIndex() == 0; }
|
||||
|
||||
|
||||
#if wxUSE_DISPLAY
|
||||
// implements wxDisplay::GetModes()
|
||||
virtual wxArrayVideoModes GetModes(const wxVideoMode& mode) const = 0;
|
||||
|
||||
// get current video mode
|
||||
virtual wxVideoMode GetCurrentMode() const = 0;
|
||||
|
||||
// change current mode, return true if succeeded, false otherwise
|
||||
virtual bool ChangeMode(const wxVideoMode& mode) = 0;
|
||||
#endif // wxUSE_DISPLAY
|
||||
|
||||
// return true, if this display is still connected physically to system
|
||||
bool IsConnected() const { return m_isConnected; }
|
||||
|
||||
// indicate that this display is not connected to system anymore
|
||||
void Disconnect() { m_isConnected = false; }
|
||||
|
||||
protected:
|
||||
// create the object providing access to the display with the given index
|
||||
wxDisplayImpl(unsigned n) : m_index(n) { }
|
||||
|
||||
|
||||
// the index of this display (0 is always the primary one)
|
||||
unsigned m_index;
|
||||
|
||||
// true, if this display is still connected physically to system
|
||||
bool m_isConnected = true;
|
||||
|
||||
friend class wxDisplayFactory;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxDisplayImpl);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDisplayImplSingle: the simplest possible impl for the main display only
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Note that this is still an ABC and GetGeometry() and GetClientArea() methods
|
||||
// must be implemented in the derived classes.
|
||||
|
||||
class WXDLLEXPORT wxDisplayImplSingle : public wxDisplayImpl
|
||||
{
|
||||
public:
|
||||
wxDisplayImplSingle() : wxDisplayImpl(0) { }
|
||||
|
||||
#if wxUSE_DISPLAY
|
||||
// no video modes support for us, provide just the stubs
|
||||
virtual wxArrayVideoModes
|
||||
GetModes(const wxVideoMode& WXUNUSED(mode)) const override
|
||||
{
|
||||
return wxArrayVideoModes();
|
||||
}
|
||||
|
||||
virtual wxVideoMode GetCurrentMode() const override
|
||||
{
|
||||
return wxVideoMode();
|
||||
}
|
||||
|
||||
virtual bool ChangeMode(const wxVideoMode& WXUNUSED(mode)) override
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif // wxUSE_DISPLAY
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxDisplayImplSingle);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDisplayFactorySingle
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This is the simplest implementation of wxDisplayFactory using single/main
|
||||
// display only. It is used when wxUSE_DISPLAY == 0 because getting the size of
|
||||
// the main display is always needed.
|
||||
//
|
||||
// Note that this is still an ABC and derived classes must implement
|
||||
// CreateSingleDisplay().
|
||||
|
||||
class wxDisplayFactorySingle : public wxDisplayFactory
|
||||
{
|
||||
public:
|
||||
virtual unsigned GetCount() override { return 1; }
|
||||
virtual int GetFromPoint(const wxPoint& pt) override;
|
||||
|
||||
protected:
|
||||
virtual wxDisplayImpl *CreateDisplay(unsigned n) override;
|
||||
|
||||
virtual wxDisplayImpl *CreateSingleDisplay() = 0;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_DISPLAY_H_
|
||||
66
libs/wxWidgets-3.3.1/include/wx/private/elfversion.h
Normal file
66
libs/wxWidgets-3.3.1/include/wx/private/elfversion.h
Normal file
@@ -0,0 +1,66 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/elfversion.h
|
||||
// Purpose: Helper macro for assigning ELF version to a symbol.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2025-04-14
|
||||
// Copyright: (c) 2025 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_ELFVERSION_H_
|
||||
#define _WX_PRIVATE_ELFVERSION_H_
|
||||
|
||||
// This symbol is defined by configure if .symver directive is supported.
|
||||
#ifdef wxHAVE_ELF_SYMVER
|
||||
// Prefer to use the attribute if it is available, as it works with LTO,
|
||||
// unlike the assembler directive.
|
||||
#ifdef __has_attribute
|
||||
#if __has_attribute(__symver__)
|
||||
#define wxELF_SYMVER(sym, symver) __attribute__((__symver__(symver)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef wxELF_SYMVER
|
||||
#define wxELF_SYMVER(sym, symver) __asm__(".symver " sym "," symver);
|
||||
#endif
|
||||
|
||||
// Using multiple versions for the same symbols may be not supported, in
|
||||
// which case we omit it: this results in generating 2 default versions for
|
||||
// the same symbol, which looks wrong, but doesn't seem to cause any
|
||||
// problems.
|
||||
#ifdef wxHAVE_ELF_SYMVER_MULTIPLE
|
||||
#define wxELF_SYMVER_NON_DEFAULT(sym, ver) wxELF_SYMVER(sym, ver)
|
||||
#else
|
||||
#define wxELF_SYMVER_NON_DEFAULT(sym, ver)
|
||||
#endif
|
||||
|
||||
// Our version tag depends on whether we're using Unicode or not.
|
||||
#if wxUSE_UNICODE
|
||||
#define wxMAKE_ELF_VERSION_TAG(ver) "WXU_" ver
|
||||
#else
|
||||
#define wxMAKE_ELF_VERSION_TAG(ver) "WX_" ver
|
||||
#endif
|
||||
|
||||
// This macro is used to repair ABI compatibility problems with the symbols
|
||||
// versions if any symbols are added with the wrong "3.4" version tag
|
||||
// because their definitions in the version script were erroneous.
|
||||
//
|
||||
// It allows to define both the old, compatible version ("3.4") and the new
|
||||
// ("3.4.N") one for the given symbol to restore ABI compatibility with the
|
||||
// previous releases without breaking it with the release containing the
|
||||
// corrected version.
|
||||
//
|
||||
// The parameters are the mangled symbol name (the simplest way to get is
|
||||
// probably to use nm or readelf on the object file or library) and the
|
||||
// part of the version after "WX[U]_", i.e. the version number itself.
|
||||
//
|
||||
// Note that this macro takes strings, not symbols, and that it includes
|
||||
// the trailing semicolon for consistency with the empty version below.
|
||||
#define wxELF_VERSION_COMPAT(sym, ver) \
|
||||
wxELF_SYMVER_NON_DEFAULT(sym, sym "@" wxMAKE_ELF_VERSION_TAG("3.4")) \
|
||||
wxELF_SYMVER(sym, sym "@@" wxMAKE_ELF_VERSION_TAG(ver))
|
||||
#else
|
||||
#define wxELF_VERSION_COMPAT(sym, ver)
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_ELFVERSION_H_
|
||||
@@ -0,0 +1,29 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/eventloopsourcesmanager.h
|
||||
// Purpose: declares wxEventLoopSourcesManagerBase class
|
||||
// Author: Rob Bresalier
|
||||
// Created: 2013-06-19
|
||||
// Copyright: (c) 2013 Rob Bresalier
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_EVENTLOOPSOURCESMANAGER_H_
|
||||
#define _WX_PRIVATE_EVENTLOOPSOURCESMANAGER_H_
|
||||
|
||||
// For pulling in the value of wxUSE_EVENTLOOP_SOURCE
|
||||
#include "wx/evtloop.h"
|
||||
|
||||
#if wxUSE_EVENTLOOP_SOURCE
|
||||
|
||||
class WXDLLIMPEXP_BASE wxEventLoopSourcesManagerBase
|
||||
{
|
||||
public:
|
||||
virtual wxEventLoopSource*
|
||||
AddSourceForFD(int fd, wxEventLoopSourceHandler *handler, int flags) = 0;
|
||||
|
||||
virtual ~wxEventLoopSourcesManagerBase() = default;
|
||||
};
|
||||
|
||||
#endif // wxUSE_EVENTLOOP_SOURCE
|
||||
|
||||
#endif // _WX_PRIVATE_EVENTLOOPSOURCESMANAGER_H_
|
||||
84
libs/wxWidgets-3.3.1/include/wx/private/extfield.h
Normal file
84
libs/wxWidgets-3.3.1/include/wx/private/extfield.h
Normal file
@@ -0,0 +1,84 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/extfield.h
|
||||
// Purpose: Declare wxExternalField helper
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2017-11-21
|
||||
// Copyright: (c) 2017 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_EXTFIELD_H_
|
||||
#define _WX_PRIVATE_EXTFIELD_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxExternalField: store object data outside of it
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This class allows to store some data without consuming space for the objects
|
||||
// that don't need it and can be useful for avoiding to add rarely used fields
|
||||
// to the classes that are used by many objects, e.g. wxWindow.
|
||||
//
|
||||
// Note that using this class costs in speed and convenience of access to the
|
||||
// field, which requires a hash lookup instead of accessing it directly. It
|
||||
// also only currently works for heap-allocated fields as it's probably never
|
||||
// worth using it for fields of simple types.
|
||||
//
|
||||
// Template parameter Object is the class that "contains" the field, Field is
|
||||
// the type of the field itself and FieldMap is the hash map, defined
|
||||
// separately using WX_DECLARE_HASH_MAP(), with Object* as the key and Field*
|
||||
// as the value type.
|
||||
template <typename Object, typename Field, typename FieldMap>
|
||||
class wxExternalField
|
||||
{
|
||||
public:
|
||||
typedef Object ObjectType;
|
||||
typedef Field FieldType;
|
||||
typedef FieldMap MapType;
|
||||
|
||||
// Store the field object to be used for the given object, replacing the
|
||||
// existing one, if any.
|
||||
//
|
||||
// This method takes ownership of the field pointer which will be destroyed
|
||||
// by EraseForObject().
|
||||
static void StoreForObject(ObjectType* obj, FieldType* field)
|
||||
{
|
||||
const typename MapType::iterator it = ms_map.find(obj);
|
||||
if ( it != ms_map.end() )
|
||||
{
|
||||
delete it->second;
|
||||
it->second = field;
|
||||
}
|
||||
else
|
||||
{
|
||||
ms_map.insert(typename MapType::value_type(obj, field));
|
||||
}
|
||||
}
|
||||
|
||||
// Find the object for the corresponding window.
|
||||
static FieldType* FromObject(ObjectType* obj)
|
||||
{
|
||||
const typename MapType::const_iterator it = ms_map.find(obj);
|
||||
return it == ms_map.end() ? nullptr : it->second;
|
||||
}
|
||||
|
||||
// Erase the object used for the corresponding window, return true if there
|
||||
// was one or false otherwise.
|
||||
static bool EraseForObject(ObjectType* obj)
|
||||
{
|
||||
const typename MapType::iterator it = ms_map.find(obj);
|
||||
if ( it == ms_map.end() )
|
||||
return false;
|
||||
|
||||
delete it->second;
|
||||
ms_map.erase(it);
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
static FieldMap ms_map;
|
||||
};
|
||||
|
||||
template <typename O, typename F, typename M>
|
||||
M wxExternalField<O, F, M>::ms_map;
|
||||
|
||||
#endif // _WX_PRIVATE_EXTFIELD_H_
|
||||
53
libs/wxWidgets-3.3.1/include/wx/private/fd.h
Normal file
53
libs/wxWidgets-3.3.1/include/wx/private/fd.h
Normal file
@@ -0,0 +1,53 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fd.h
|
||||
// Purpose: private stuff for working with file descriptors
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2008-11-23 (moved from wx/unix/private.h)
|
||||
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FD_H_
|
||||
#define _WX_PRIVATE_FD_H_
|
||||
|
||||
// standard Linux headers produce many warnings when used with icc so define
|
||||
// our own replacements for FD_XXX macros
|
||||
#if defined(__INTELC__) && defined(__LINUX__)
|
||||
inline void wxFD_ZERO(fd_set *fds)
|
||||
{
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:593)
|
||||
FD_ZERO(fds);
|
||||
#pragma warning(pop)
|
||||
}
|
||||
|
||||
inline void wxFD_SET(int fd, fd_set *fds)
|
||||
{
|
||||
#pragma warning(push, 1)
|
||||
#pragma warning(disable:1469)
|
||||
FD_SET(fd, fds);
|
||||
#pragma warning(pop)
|
||||
}
|
||||
|
||||
inline bool wxFD_ISSET(int fd, fd_set *fds)
|
||||
{
|
||||
#pragma warning(push, 1)
|
||||
#pragma warning(disable:1469)
|
||||
return FD_ISSET(fd, fds);
|
||||
#pragma warning(pop)
|
||||
}
|
||||
inline void wxFD_CLR(int fd, fd_set *fds)
|
||||
{
|
||||
#pragma warning(push, 1)
|
||||
#pragma warning(disable:1469)
|
||||
FD_CLR(fd, fds);
|
||||
#pragma warning(pop)
|
||||
}
|
||||
#else // !__INTELC__
|
||||
#define wxFD_ZERO(fds) FD_ZERO(fds)
|
||||
#define wxFD_SET(fd, fds) FD_SET(fd, fds)
|
||||
#define wxFD_ISSET(fd, fds) FD_ISSET(fd, fds)
|
||||
#define wxFD_CLR(fd, fds) FD_CLR(fd, fds)
|
||||
#endif // __INTELC__/!__INTELC__
|
||||
|
||||
#endif // _WX_PRIVATE_FD_H_
|
||||
115
libs/wxWidgets-3.3.1/include/wx/private/fdiodispatcher.h
Normal file
115
libs/wxWidgets-3.3.1/include/wx/private/fdiodispatcher.h
Normal file
@@ -0,0 +1,115 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fdiodispatcher.h
|
||||
// Purpose: classes for dispatching IO notifications for file descriptors
|
||||
// Authors: Lukasz Michalski
|
||||
// Created: December 2006
|
||||
// Copyright: (c) Lukasz Michalski
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FDIODISPATCHER_H_
|
||||
#define _WX_PRIVATE_FDIODISPATCHER_H_
|
||||
|
||||
#include "wx/private/fdiohandler.h"
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
// those flags describes sets where descriptor should be added
|
||||
enum wxFDIODispatcherEntryFlags
|
||||
{
|
||||
wxFDIO_INPUT = 1,
|
||||
wxFDIO_OUTPUT = 2,
|
||||
wxFDIO_EXCEPTION = 4,
|
||||
wxFDIO_ALL = wxFDIO_INPUT | wxFDIO_OUTPUT | wxFDIO_EXCEPTION
|
||||
};
|
||||
|
||||
// base class for wxSelectDispatcher and wxEpollDispatcher
|
||||
class WXDLLIMPEXP_BASE wxFDIODispatcher
|
||||
{
|
||||
public:
|
||||
enum { TIMEOUT_INFINITE = -1 };
|
||||
|
||||
// return the global dispatcher to be used for IO events, can be null only
|
||||
// if wxSelectDispatcher wasn't compiled into the library at all as
|
||||
// creating it never fails
|
||||
//
|
||||
// don't delete the returned pointer
|
||||
static wxFDIODispatcher *Get();
|
||||
|
||||
// if we have any registered handlers, check for any pending events to them
|
||||
// and dispatch them -- this is used from wxX11 and wxDFB event loops
|
||||
// implementation
|
||||
static void DispatchPending();
|
||||
|
||||
// register handler for the given descriptor with the dispatcher, return
|
||||
// true on success or false on error
|
||||
virtual bool RegisterFD(int fd, wxFDIOHandler *handler, int flags) = 0;
|
||||
|
||||
// modify descriptor flags or handler, return true on success
|
||||
virtual bool ModifyFD(int fd, wxFDIOHandler *handler, int flags) = 0;
|
||||
|
||||
// unregister descriptor previously registered with RegisterFD()
|
||||
virtual bool UnregisterFD(int fd) = 0;
|
||||
|
||||
// check if any events are currently available without dispatching them
|
||||
virtual bool HasPending() const = 0;
|
||||
|
||||
// wait for an event for at most timeout milliseconds and process it;
|
||||
// return the number of events processed (possibly 0 if timeout expired) or
|
||||
// -1 if an error occurred
|
||||
virtual int Dispatch(int timeout = TIMEOUT_INFINITE) = 0;
|
||||
|
||||
virtual ~wxFDIODispatcher() = default;
|
||||
};
|
||||
|
||||
//entry for wxFDIOHandlerMap
|
||||
struct wxFDIOHandlerEntry
|
||||
{
|
||||
wxFDIOHandlerEntry()
|
||||
{
|
||||
handler = nullptr;
|
||||
flags = 0;
|
||||
}
|
||||
|
||||
wxFDIOHandlerEntry(wxFDIOHandler *handler_, int flags_)
|
||||
: handler(handler_),
|
||||
flags(flags_)
|
||||
{
|
||||
}
|
||||
|
||||
wxFDIOHandler *handler;
|
||||
int flags;
|
||||
};
|
||||
|
||||
// this hash is used to map file descriptors to their handlers
|
||||
using wxFDIOHandlerMap = std::unordered_map<int, wxFDIOHandlerEntry>;
|
||||
|
||||
// FDIODispatcher that holds map fd <-> FDIOHandler, this should be used if
|
||||
// this map isn't maintained elsewhere already as it is usually needed anyhow
|
||||
//
|
||||
// notice that all functions for FD management have implementation
|
||||
// in the base class and should be called from the derived classes
|
||||
class WXDLLIMPEXP_BASE wxMappedFDIODispatcher : public wxFDIODispatcher
|
||||
{
|
||||
public:
|
||||
// find the handler for the given fd, return nullptr if none
|
||||
wxFDIOHandler *FindHandler(int fd) const;
|
||||
|
||||
// register handler for the given descriptor with the dispatcher, return
|
||||
// true on success or false on error
|
||||
virtual bool RegisterFD(int fd, wxFDIOHandler *handler, int flags) override;
|
||||
|
||||
// modify descriptor flags or handler, return true on success
|
||||
virtual bool ModifyFD(int fd, wxFDIOHandler *handler, int flags) override;
|
||||
|
||||
// unregister descriptor previously registered with RegisterFD()
|
||||
virtual bool UnregisterFD(int fd) override;
|
||||
|
||||
virtual ~wxMappedFDIODispatcher() = default;
|
||||
|
||||
protected:
|
||||
// the fd -> handler map containing all the registered handlers
|
||||
wxFDIOHandlerMap m_handlers;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_FDIODISPATCHER_H_
|
||||
@@ -0,0 +1,38 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fdioeventloopsourcehandler.h
|
||||
// Purpose: declares wxFDIOEventLoopSourceHandler class
|
||||
// Author: Rob Bresalier, Vadim Zeitlin
|
||||
// Created: 2013-06-13 (extracted from src/unix/evtloopunix.cpp)
|
||||
// Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// (c) 2013 Rob Bresalier
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FDIO_EVENT_LOOP_SOURCE_HANDLER_H
|
||||
#define _WX_PRIVATE_FDIO_EVENT_LOOP_SOURCE_HANDLER_H
|
||||
|
||||
#include "wx/evtloopsrc.h"
|
||||
|
||||
// This class is a temporary bridge between event loop sources and
|
||||
// FDIODispatcher. It is going to be removed soon, when all subject interfaces
|
||||
// are modified
|
||||
class wxFDIOEventLoopSourceHandler : public wxFDIOHandler
|
||||
{
|
||||
public:
|
||||
explicit wxFDIOEventLoopSourceHandler(wxEventLoopSourceHandler* handler)
|
||||
: m_handler(handler)
|
||||
{
|
||||
}
|
||||
|
||||
// Just forward to the real handler.
|
||||
virtual void OnReadWaiting() override { m_handler->OnReadWaiting(); }
|
||||
virtual void OnWriteWaiting() override { m_handler->OnWriteWaiting(); }
|
||||
virtual void OnExceptionWaiting() override { m_handler->OnExceptionWaiting(); }
|
||||
|
||||
protected:
|
||||
wxEventLoopSourceHandler* const m_handler;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxFDIOEventLoopSourceHandler);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_FDIO_EVENT_LOOP_SOURCE_HANDLER_H
|
||||
53
libs/wxWidgets-3.3.1/include/wx/private/fdiohandler.h
Normal file
53
libs/wxWidgets-3.3.1/include/wx/private/fdiohandler.h
Normal file
@@ -0,0 +1,53 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fdiohandler.h
|
||||
// Purpose: declares wxFDIOHandler class
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2009-08-17
|
||||
// Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FDIOHANDLER_H_
|
||||
#define _WX_PRIVATE_FDIOHANDLER_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFDIOHandler: interface used to process events on file descriptors
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxFDIOHandler
|
||||
{
|
||||
public:
|
||||
wxFDIOHandler() { m_regmask = 0; }
|
||||
|
||||
// called when descriptor is available for non-blocking read
|
||||
virtual void OnReadWaiting() = 0;
|
||||
|
||||
// called when descriptor is available for non-blocking write
|
||||
virtual void OnWriteWaiting() = 0;
|
||||
|
||||
// called when there is exception on descriptor
|
||||
virtual void OnExceptionWaiting() = 0;
|
||||
|
||||
// called to check if the handler is still valid, only used by
|
||||
// wxSocketImplUnix currently
|
||||
virtual bool IsOk() const { return true; }
|
||||
|
||||
|
||||
// get/set the mask of events for which we're currently registered for:
|
||||
// it's a combination of wxFDIO_{INPUT,OUTPUT,EXCEPTION}
|
||||
int GetRegisteredEvents() const { return m_regmask; }
|
||||
void SetRegisteredEvent(int flag) { m_regmask |= flag; }
|
||||
void ClearRegisteredEvent(int flag) { m_regmask &= ~flag; }
|
||||
|
||||
|
||||
// virtual dtor for the base class
|
||||
virtual ~wxFDIOHandler() = default;
|
||||
|
||||
private:
|
||||
int m_regmask;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxFDIOHandler);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_FDIOHANDLER_H_
|
||||
|
||||
42
libs/wxWidgets-3.3.1/include/wx/private/fdiomanager.h
Normal file
42
libs/wxWidgets-3.3.1/include/wx/private/fdiomanager.h
Normal file
@@ -0,0 +1,42 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fdiomanager.h
|
||||
// Purpose: declaration of wxFDIOManager
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2009-08-17
|
||||
// Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FDIOMANAGER_H_
|
||||
#define _WX_PRIVATE_FDIOMANAGER_H_
|
||||
|
||||
#include "wx/private/fdiohandler.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFDIOManager: register or unregister wxFDIOHandlers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// currently only used in wxGTK and wxQt, see wx/unix/apptrait.h
|
||||
|
||||
class wxFDIOManager
|
||||
{
|
||||
public:
|
||||
// identifies either input or output direction
|
||||
//
|
||||
// NB: the values of this enum shouldn't change
|
||||
enum Direction
|
||||
{
|
||||
INPUT,
|
||||
OUTPUT
|
||||
};
|
||||
|
||||
// start or stop monitoring the events on the given file descriptor
|
||||
virtual int AddInput(wxFDIOHandler *handler, int fd, Direction d) = 0;
|
||||
virtual void RemoveInput(wxFDIOHandler *handler, int fd, Direction d) = 0;
|
||||
|
||||
// empty but virtual dtor for the base class
|
||||
virtual ~wxFDIOManager() = default;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_FDIOMANAGER_H_
|
||||
|
||||
82
libs/wxWidgets-3.3.1/include/wx/private/fileback.h
Normal file
82
libs/wxWidgets-3.3.1/include/wx/private/fileback.h
Normal file
@@ -0,0 +1,82 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fileback.h
|
||||
// Purpose: Back an input stream with memory or a file
|
||||
// Author: Mike Wetherell
|
||||
// Copyright: (c) 2006 Mike Wetherell
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_FILEBACK_H__
|
||||
#define _WX_FILEBACK_H__
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_FILESYSTEM
|
||||
|
||||
#include "wx/stream.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Backs an input stream with memory or a file to make it seekable.
|
||||
//
|
||||
// One or more wxBackedInputStreams can be used to read it's data. The data is
|
||||
// reference counted, so stays alive until the last wxBackingFile or
|
||||
// wxBackedInputStream using it is destroyed.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_BASE wxBackingFile
|
||||
{
|
||||
public:
|
||||
enum { DefaultBufSize = 16384 };
|
||||
|
||||
// Takes ownership of stream. If the stream is smaller than bufsize, the
|
||||
// backing file is never created and the backing is done with memory.
|
||||
wxBackingFile(wxInputStream *stream,
|
||||
size_t bufsize = DefaultBufSize,
|
||||
const wxString& prefix = wxT("wxbf"));
|
||||
|
||||
wxBackingFile() : m_impl(nullptr) { }
|
||||
~wxBackingFile();
|
||||
|
||||
wxBackingFile(const wxBackingFile& backer);
|
||||
wxBackingFile& operator=(const wxBackingFile& backer);
|
||||
|
||||
operator bool() const { return m_impl != nullptr; }
|
||||
|
||||
private:
|
||||
class wxBackingFileImpl *m_impl;
|
||||
friend class wxBackedInputStream;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// An input stream to read from a wxBackingFile.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_BASE wxBackedInputStream : public wxInputStream
|
||||
{
|
||||
public:
|
||||
wxBackedInputStream(const wxBackingFile& backer);
|
||||
|
||||
// If the length of the backer's parent stream is unknown then GetLength()
|
||||
// returns wxInvalidOffset until the parent has been read to the end.
|
||||
wxFileOffset GetLength() const override;
|
||||
|
||||
// Returns the length, reading the parent stream to the end if necessary.
|
||||
wxFileOffset FindLength() const;
|
||||
|
||||
bool IsSeekable() const override { return true; }
|
||||
|
||||
protected:
|
||||
size_t OnSysRead(void *buffer, size_t size) override;
|
||||
wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode) override;
|
||||
wxFileOffset OnSysTell() const override;
|
||||
|
||||
private:
|
||||
wxBackingFile m_backer;
|
||||
wxFileOffset m_pos;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxBackedInputStream);
|
||||
};
|
||||
|
||||
#endif // wxUSE_FILESYSTEM
|
||||
|
||||
#endif // _WX_FILEBACK_H__
|
||||
89
libs/wxWidgets-3.3.1/include/wx/private/filedlgcustomize.h
Normal file
89
libs/wxWidgets-3.3.1/include/wx/private/filedlgcustomize.h
Normal file
@@ -0,0 +1,89 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/filedlgcustomize.h
|
||||
// Purpose: Private helpers used for wxFileDialog customization
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2022-05-26
|
||||
// Copyright: (c) 2022 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FILEDLGCUSTOMIZE_H_
|
||||
#define _WX_PRIVATE_FILEDLGCUSTOMIZE_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFileDialogCustomControlImpl: interface for all custom controls
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxFileDialogCustomControlImpl
|
||||
{
|
||||
public:
|
||||
virtual void Show(bool show) = 0;
|
||||
virtual void Enable(bool enable) = 0;
|
||||
|
||||
virtual bool DoBind(wxEvtHandler* handler);
|
||||
|
||||
virtual ~wxFileDialogCustomControlImpl();
|
||||
};
|
||||
|
||||
// This class is defined for symmetry with the other ones, but there are no
|
||||
// button-specific methods so far.
|
||||
class wxFileDialogButtonImpl : public wxFileDialogCustomControlImpl
|
||||
{
|
||||
};
|
||||
|
||||
class wxFileDialogCheckBoxImpl : public wxFileDialogCustomControlImpl
|
||||
{
|
||||
public:
|
||||
virtual bool GetValue() = 0;
|
||||
virtual void SetValue(bool value) = 0;
|
||||
};
|
||||
|
||||
#if wxUSE_RADIOBTN
|
||||
class wxFileDialogRadioButtonImpl : public wxFileDialogCustomControlImpl
|
||||
{
|
||||
public:
|
||||
virtual bool GetValue() = 0;
|
||||
virtual void SetValue(bool value) = 0;
|
||||
};
|
||||
#endif // wxUSE_RADIOBTN
|
||||
|
||||
class wxFileDialogChoiceImpl : public wxFileDialogCustomControlImpl
|
||||
{
|
||||
public:
|
||||
virtual int GetSelection() = 0;
|
||||
virtual void SetSelection(int n) = 0;
|
||||
};
|
||||
|
||||
class wxFileDialogTextCtrlImpl : public wxFileDialogCustomControlImpl
|
||||
{
|
||||
public:
|
||||
virtual wxString GetValue() = 0;
|
||||
virtual void SetValue(const wxString& value) = 0;
|
||||
};
|
||||
|
||||
class wxFileDialogStaticTextImpl : public wxFileDialogCustomControlImpl
|
||||
{
|
||||
public:
|
||||
virtual void SetLabelText(const wxString& text) = 0;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFileDialogCustomizeImpl: interface for actual customizers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxFileDialogCustomizeImpl
|
||||
{
|
||||
public:
|
||||
virtual wxFileDialogButtonImpl* AddButton(const wxString& label) = 0;
|
||||
virtual wxFileDialogCheckBoxImpl* AddCheckBox(const wxString& label) = 0;
|
||||
#if wxUSE_RADIOBTN
|
||||
virtual wxFileDialogRadioButtonImpl* AddRadioButton(const wxString& label) = 0;
|
||||
#endif
|
||||
virtual wxFileDialogChoiceImpl* AddChoice(size_t n, const wxString* strings) = 0;
|
||||
virtual wxFileDialogTextCtrlImpl* AddTextCtrl(const wxString& label) = 0;
|
||||
virtual wxFileDialogStaticTextImpl* AddStaticText(const wxString& label) = 0;
|
||||
|
||||
virtual ~wxFileDialogCustomizeImpl();
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_FILEDLGCUSTOMIZE_H_
|
||||
54
libs/wxWidgets-3.3.1/include/wx/private/filename.h
Normal file
54
libs/wxWidgets-3.3.1/include/wx/private/filename.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/filename.h
|
||||
// Purpose: Internal declarations for src/common/filename.cpp
|
||||
// Author: Mike Wetherell
|
||||
// Created: 2006-10-22
|
||||
// Copyright: (c) 2006 Mike Wetherell
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FILENAME_H_
|
||||
#define _WX_PRIVATE_FILENAME_H_
|
||||
|
||||
#include "wx/file.h"
|
||||
#include "wx/ffile.h"
|
||||
|
||||
// Self deleting temp files aren't supported on all platforms. Therefore
|
||||
// rather than let these be in the API, they can be used internally to
|
||||
// implement classes (e.g. wxTempFileStream), that will do the clean up when
|
||||
// the OS doesn't support it.
|
||||
|
||||
// Same usage as wxFileName::CreateTempFileName() with the extra parameter
|
||||
// deleteOnClose. *deleteOnClose true on entry requests a file created with a
|
||||
// delete on close flag, on exit the value of *deleteOnClose indicates whether
|
||||
// available.
|
||||
|
||||
#if wxUSE_FILE
|
||||
wxString wxCreateTempFileName(const wxString& prefix,
|
||||
wxFile *fileTemp,
|
||||
bool *deleteOnClose = nullptr);
|
||||
#endif
|
||||
|
||||
#if wxUSE_FFILE
|
||||
wxString wxCreateTempFileName(const wxString& prefix,
|
||||
wxFFile *fileTemp,
|
||||
bool *deleteOnClose = nullptr);
|
||||
#endif
|
||||
|
||||
// Returns an open temp file, if possible either an unlinked open file or one
|
||||
// that will delete on close. Only returns the filename if neither was
|
||||
// possible, so that the caller can delete the file when done.
|
||||
|
||||
#if wxUSE_FILE
|
||||
bool wxCreateTempFile(const wxString& prefix,
|
||||
wxFile *fileTemp,
|
||||
wxString *name);
|
||||
#endif
|
||||
|
||||
#if wxUSE_FFILE
|
||||
bool wxCreateTempFile(const wxString& prefix,
|
||||
wxFFile *fileTemp,
|
||||
wxString *name);
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_FILENAME_H_
|
||||
116
libs/wxWidgets-3.3.1/include/wx/private/flagscheck.h
Normal file
116
libs/wxWidgets-3.3.1/include/wx/private/flagscheck.h
Normal file
@@ -0,0 +1,116 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/flagscheck.h
|
||||
// Purpose: helpers for checking that (bit)flags don't overlap
|
||||
// Author: Vaclav Slavik
|
||||
// Created: 2008-02-21
|
||||
// Copyright: (c) 2008 Vaclav Slavik
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FLAGSCHECK_H_
|
||||
#define _WX_PRIVATE_FLAGSCHECK_H_
|
||||
|
||||
#include "wx/debug.h"
|
||||
|
||||
// IBM xlC 8 can't parse the template syntax
|
||||
#if !defined(__IBMCPP__)
|
||||
|
||||
#include "wx/meta/if.h"
|
||||
|
||||
namespace wxPrivate
|
||||
{
|
||||
|
||||
// These templates are used to implement wxADD_FLAG macro below.
|
||||
//
|
||||
// The idea is that we want to trigger *compilation* error if the flags
|
||||
// overlap, not just runtime assert failure. We can't implement the check
|
||||
// using just a simple logical operation, we need checks equivalent to this
|
||||
// code:
|
||||
//
|
||||
// mask = wxFLAG_1;
|
||||
// assert( (mask & wxFLAG_2) == 0 ); // no overlap
|
||||
// mask |= wxFLAG_3;
|
||||
// assert( (mask & wxFLAG_3) == 0 ); // no overlap
|
||||
// mask |= wxFLAG_3;
|
||||
// ...
|
||||
//
|
||||
// This can be done at compilation time by using templates metaprogramming
|
||||
// technique that makes the compiler carry on the computation.
|
||||
//
|
||||
// NB: If any of this doesn't compile with your compiler and would be too
|
||||
// hard to make work, it's probably best to disable this code and replace
|
||||
// the macros below with empty stubs, this isn't anything critical.
|
||||
|
||||
template<int val> struct FlagsHaveConflictingValues
|
||||
{
|
||||
// no value here - triggers compilation error
|
||||
};
|
||||
|
||||
template<int val> struct FlagValue
|
||||
{
|
||||
enum { value = val };
|
||||
};
|
||||
|
||||
// This template adds its template parameter integer 'add' to another integer
|
||||
// 'all' and produces their OR-combination (all | add). The result is "stored"
|
||||
// as constant SafelyAddToMask<>::value. Combination of many flags is achieved
|
||||
// by chaining parameter lists: the 'add' parameter is value member of
|
||||
// another (different) SafelyAddToMask<> instantiation.
|
||||
template<int all, int add> struct SafelyAddToMask
|
||||
{
|
||||
// This typedefs ensures that no flags in the list conflict. If there's
|
||||
// any overlap between the already constructed part of the mask ('all')
|
||||
// and the value being added to it ('add'), the test that is wxIf<>'s
|
||||
// first parameter will be non-zero and so Added value will be
|
||||
// FlagsHaveConflictingValues<add>. The next statement will try to use
|
||||
// AddedValue::value, but there's no such thing in
|
||||
// FlagsHaveConflictingValues<> and so compilation will fail.
|
||||
typedef typename wxIf<(all & add) == 0,
|
||||
FlagValue<add>,
|
||||
FlagsHaveConflictingValues<add> >::value
|
||||
AddedValue;
|
||||
|
||||
enum { value = all | AddedValue::value };
|
||||
};
|
||||
|
||||
} // wxPrivate namespace
|
||||
|
||||
|
||||
|
||||
// This macro is used to ensure that no two flags that can be combined in
|
||||
// the same integer value have overlapping bits. This is sometimes not entirely
|
||||
// trivial to ensure, for example in wxWindow styles or flags for wxSizerItem
|
||||
// that span several enums, some of them used for multiple purposes.
|
||||
//
|
||||
// By constructing allowed flags mask using wxADD_FLAG macro and then using
|
||||
// this mask to check flags passed as arguments, you can ensure that
|
||||
//
|
||||
// a) if any of the allowed flags overlap, you will get compilation error
|
||||
// b) if invalid flag is used, there will be an assert at runtime
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
// static const int SIZER_FLAGS_MASK =
|
||||
// wxADD_FLAG(wxCENTRE,
|
||||
// wxADD_FLAG(wxHORIZONTAL,
|
||||
// wxADD_FLAG(wxVERTICAL,
|
||||
// ...
|
||||
// 0))...);
|
||||
//
|
||||
// And wherever flags are used:
|
||||
//
|
||||
// wxASSERT_VALID_FLAG( m_flag, SIZER_FLAGS_MASK );
|
||||
|
||||
#define wxADD_FLAG(f, others) \
|
||||
::wxPrivate::SafelyAddToMask<f, others>::value
|
||||
|
||||
#else
|
||||
#define wxADD_FLAG(f, others) (f | others)
|
||||
#endif
|
||||
|
||||
// Checks if flags value 'f' is within the mask of allowed values
|
||||
#define wxASSERT_VALID_FLAGS(f, mask) \
|
||||
wxASSERT_MSG( (f & mask) == f, \
|
||||
"invalid flag: not within " #mask )
|
||||
|
||||
#endif // _WX_PRIVATE_FLAGSCHECK_H_
|
||||
247
libs/wxWidgets-3.3.1/include/wx/private/fontmgr.h
Normal file
247
libs/wxWidgets-3.3.1/include/wx/private/fontmgr.h
Normal file
@@ -0,0 +1,247 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fontmgr.h
|
||||
// Purpose: font management for ports that don't have their own
|
||||
// Author: Vaclav Slavik
|
||||
// Created: 2006-11-18
|
||||
// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com)
|
||||
// (c) 2006 REA Elektronik GmbH
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_FONTMGR_H_
|
||||
#define _WX_PRIVATE_FONTMGR_H_
|
||||
|
||||
#include "wx/list.h"
|
||||
#include "wx/fontutil.h"
|
||||
|
||||
class wxFontsManager;
|
||||
class wxFontInstance;
|
||||
class wxFontInstanceList;
|
||||
class wxFontFace;
|
||||
class wxFontBundle;
|
||||
class wxFontBundleHash;
|
||||
class wxFontMgrFontRefData;
|
||||
|
||||
WX_DECLARE_LIST(wxFontBundle, wxFontBundleList);
|
||||
|
||||
/**
|
||||
This class represents single font face with set parameters (point size,
|
||||
antialiasing).
|
||||
*/
|
||||
class wxFontInstanceBase
|
||||
{
|
||||
protected:
|
||||
wxFontInstanceBase(float ptSize, bool aa) : m_ptSize(ptSize), m_aa(aa) {}
|
||||
virtual ~wxFontInstanceBase() = default;
|
||||
|
||||
public:
|
||||
float GetPointSize() const { return m_ptSize; }
|
||||
bool IsAntiAliased() const { return m_aa; }
|
||||
|
||||
protected:
|
||||
float m_ptSize;
|
||||
bool m_aa;
|
||||
};
|
||||
|
||||
|
||||
/// This class represents loaded font face (bundle+weight+italics).
|
||||
class wxFontFaceBase
|
||||
{
|
||||
protected:
|
||||
/// Ctor. Creates object with reference count = 0, Acquire() must be
|
||||
/// called after the object is created.
|
||||
wxFontFaceBase();
|
||||
virtual ~wxFontFaceBase();
|
||||
|
||||
public:
|
||||
/// Increases reference count of the face
|
||||
virtual void Acquire();
|
||||
|
||||
/**
|
||||
Decreases reference count of the face. Call this when you no longer
|
||||
use the object returned by wxFontBundle. Note that this doesn't destroy
|
||||
the object, but only optionally shuts it down, so it's possible to
|
||||
call Acquire() and Release() more than once.
|
||||
*/
|
||||
virtual void Release();
|
||||
|
||||
/**
|
||||
Returns instance of the font at given size.
|
||||
|
||||
@param ptSize point size of the font to create; note that this is
|
||||
a float and not integer, it should be wxFont's point
|
||||
size multiplied by wxDC's scale factor
|
||||
@param aa should the font be antialiased?
|
||||
*/
|
||||
virtual wxFontInstance *GetFontInstance(float ptSize, bool aa);
|
||||
|
||||
protected:
|
||||
/// Called to create a new instance of the font by GetFontInstance() if
|
||||
/// it wasn't found it cache.
|
||||
virtual wxFontInstance *CreateFontInstance(float ptSize, bool aa) = 0;
|
||||
|
||||
protected:
|
||||
unsigned m_refCnt;
|
||||
wxFontInstanceList *m_instances;
|
||||
};
|
||||
|
||||
/**
|
||||
This class represents font bundle. Font bundle is set of faces that have
|
||||
the same name, but differ in weight and italics.
|
||||
*/
|
||||
class wxFontBundleBase
|
||||
{
|
||||
public:
|
||||
wxFontBundleBase();
|
||||
virtual ~wxFontBundleBase();
|
||||
|
||||
/// Returns name of the bundle
|
||||
virtual wxString GetName() const = 0;
|
||||
|
||||
/// Returns true if the font is fixed-width
|
||||
virtual bool IsFixed() const = 0;
|
||||
|
||||
/// Type of faces in the bundle
|
||||
enum FaceType
|
||||
{
|
||||
// NB: values of these constants are set so that it's possible to
|
||||
// make OR-combinations of them and still get valid enum element
|
||||
FaceType_Regular = 0,
|
||||
FaceType_Italic = 1,
|
||||
FaceType_Bold = 2,
|
||||
FaceType_BoldItalic = FaceType_Italic | FaceType_Bold,
|
||||
|
||||
FaceType_Max
|
||||
};
|
||||
|
||||
/// Returns true if the given face is available
|
||||
bool HasFace(FaceType type) const { return m_faces[type] != nullptr; }
|
||||
|
||||
/**
|
||||
Returns font face object that can be used to render font of given type.
|
||||
|
||||
Note that this method can only be called if HasFace(type) returns true.
|
||||
|
||||
Acquire() was called on the returned object, you must call Release()
|
||||
when you stop using it.
|
||||
*/
|
||||
wxFontFace *GetFace(FaceType type) const;
|
||||
|
||||
/**
|
||||
Returns font face object that can be used to render given font.
|
||||
|
||||
Acquire() was called on the returned object, you must call Release()
|
||||
when you stop using it.
|
||||
*/
|
||||
wxFontFace *GetFaceForFont(const wxFontMgrFontRefData& font) const;
|
||||
|
||||
protected:
|
||||
wxFontFace *m_faces[FaceType_Max];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
Base class for wxFontsManager class, which manages the list of all
|
||||
available fonts and their loaded instances.
|
||||
*/
|
||||
class wxFontsManagerBase
|
||||
{
|
||||
protected:
|
||||
wxFontsManagerBase();
|
||||
virtual ~wxFontsManagerBase();
|
||||
|
||||
public:
|
||||
/// Returns the font manager singleton, creating it if it doesn't exist
|
||||
static wxFontsManager *Get();
|
||||
|
||||
/// Called by wxApp to shut down the manager
|
||||
static void CleanUp();
|
||||
|
||||
/// Returns list of all available font bundles
|
||||
const wxFontBundleList& GetBundles() const { return *m_list; }
|
||||
|
||||
/**
|
||||
Returns object representing font bundle with the given name.
|
||||
|
||||
The returned object is owned by wxFontsManager, you must not delete it.
|
||||
*/
|
||||
wxFontBundle *GetBundle(const wxString& name) const;
|
||||
|
||||
/**
|
||||
Returns object representing font bundle that can be used to render
|
||||
given font.
|
||||
|
||||
The returned object is owned by wxFontsManager, you must not delete it.
|
||||
*/
|
||||
wxFontBundle *GetBundleForFont(const wxFontMgrFontRefData& font) const;
|
||||
|
||||
/// This method must be called by derived
|
||||
void AddBundle(wxFontBundle *bundle);
|
||||
|
||||
/// Returns default facename for given wxFont family
|
||||
virtual wxString GetDefaultFacename(wxFontFamily family) const = 0;
|
||||
|
||||
private:
|
||||
wxFontBundleHash *m_hash;
|
||||
wxFontBundleList *m_list;
|
||||
|
||||
protected:
|
||||
static wxFontsManager *ms_instance;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#if defined(__WXDFB__)
|
||||
#include "wx/dfb/private/fontmgr.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/// wxFontMgrFontRefData implementation using wxFontsManager classes
|
||||
class wxFontMgrFontRefData : public wxGDIRefData
|
||||
{
|
||||
public:
|
||||
wxFontMgrFontRefData(int size = wxDEFAULT,
|
||||
wxFontFamily family = wxFONTFAMILY_DEFAULT,
|
||||
wxFontStyle style = wxFONTSTYLE_NORMAL,
|
||||
int weight = wxFONTWEIGHT_NORMAL,
|
||||
bool underlined = false,
|
||||
const wxString& faceName = wxEmptyString,
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||
wxFontMgrFontRefData(const wxFontMgrFontRefData& data);
|
||||
~wxFontMgrFontRefData();
|
||||
|
||||
wxFontBundle *GetFontBundle() const;
|
||||
wxFontInstance *GetFontInstance(float scale, bool antialiased) const;
|
||||
|
||||
bool IsFixedWidth() const { return GetFontBundle()->IsFixed(); }
|
||||
|
||||
const wxNativeFontInfo *GetNativeFontInfo() const { return &m_info; }
|
||||
|
||||
double GetFractionalPointSize() const { return m_info.pointSize; }
|
||||
wxString GetFaceName() const { return m_info.faceName; }
|
||||
wxFontFamily GetFamily() const { return m_info.family; }
|
||||
wxFontStyle GetStyle() const { return m_info.style; }
|
||||
int GetNumericWeight() const { return m_info.weight; }
|
||||
bool GetUnderlined() const { return m_info.underlined; }
|
||||
wxFontEncoding GetEncoding() const { return m_info.encoding; }
|
||||
|
||||
void SetFractionalPointSize(double pointSize);
|
||||
void SetFamily(wxFontFamily family);
|
||||
void SetStyle(wxFontStyle style);
|
||||
void SetNumericWeight(int weight);
|
||||
void SetFaceName(const wxString& faceName);
|
||||
void SetUnderlined(bool underlined);
|
||||
void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
private:
|
||||
void EnsureValidFont();
|
||||
|
||||
wxNativeFontInfo m_info;
|
||||
|
||||
wxFontFace *m_fontFace;
|
||||
wxFontBundle *m_fontBundle;
|
||||
bool m_fontValid;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_FONTMGR_H_
|
||||
117
libs/wxWidgets-3.3.1/include/wx/private/fswatcher.h
Normal file
117
libs/wxWidgets-3.3.1/include/wx/private/fswatcher.h
Normal file
@@ -0,0 +1,117 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/fswatcher.h
|
||||
// Purpose: File system watcher impl classes
|
||||
// Author: Bartosz Bekier
|
||||
// Created: 2009-05-26
|
||||
// Copyright: (c) 2009 Bartosz Bekier <bartosz.bekier@gmail.com>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef WX_PRIVATE_FSWATCHER_H_
|
||||
#define WX_PRIVATE_FSWATCHER_H_
|
||||
|
||||
#include "wx/sharedptr.h"
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
#ifdef wxHAS_INOTIFY
|
||||
class wxFSWatchEntryUnix;
|
||||
#define wxFSWatchEntry wxFSWatchEntryUnix
|
||||
using wxFSWatchEntries = std::unordered_map<wxString, wxSharedPtr<wxFSWatchEntry>>;
|
||||
#include "wx/unix/private/fswatcher_inotify.h"
|
||||
#elif defined(wxHAS_KQUEUE)
|
||||
class wxFSWatchEntryKq;
|
||||
#define wxFSWatchEntry wxFSWatchEntryKq
|
||||
using wxFSWatchEntries = std::unordered_map<wxString, wxSharedPtr<wxFSWatchEntry>>;
|
||||
#include "wx/unix/private/fswatcher_kqueue.h"
|
||||
#elif defined(__WINDOWS__)
|
||||
class wxFSWatchEntryMSW;
|
||||
#define wxFSWatchEntry wxFSWatchEntryMSW
|
||||
using wxFSWatchEntries = std::unordered_map<wxString, wxSharedPtr<wxFSWatchEntry>>;
|
||||
#include "wx/msw/private/fswatcher.h"
|
||||
#else
|
||||
#define wxFSWatchEntry wxFSWatchEntryPolling
|
||||
#endif
|
||||
|
||||
class wxFSWatcherImpl
|
||||
{
|
||||
public:
|
||||
wxFSWatcherImpl(wxFileSystemWatcherBase* watcher) :
|
||||
m_watcher(watcher)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~wxFSWatcherImpl()
|
||||
{
|
||||
(void) RemoveAll();
|
||||
}
|
||||
|
||||
virtual bool Init() = 0;
|
||||
|
||||
virtual bool Add(const wxFSWatchInfo& winfo)
|
||||
{
|
||||
if ( m_watches.find(winfo.GetPath()) != m_watches.end() )
|
||||
{
|
||||
wxLogTrace(wxTRACE_FSWATCHER,
|
||||
"Path '%s' is already watched", winfo.GetPath());
|
||||
// This can happen if a dir is watched, then a parent tree added
|
||||
return true;
|
||||
}
|
||||
|
||||
// construct watch entry
|
||||
wxSharedPtr<wxFSWatchEntry> watch(new wxFSWatchEntry(winfo));
|
||||
|
||||
if (!DoAdd(watch))
|
||||
return false;
|
||||
|
||||
// add watch to our map (always succeeds, checked above)
|
||||
wxFSWatchEntries::value_type val(watch->GetPath(), watch);
|
||||
return m_watches.insert(val).second;
|
||||
}
|
||||
|
||||
virtual bool Remove(const wxFSWatchInfo& winfo)
|
||||
{
|
||||
wxFSWatchEntries::iterator it = m_watches.find(winfo.GetPath());
|
||||
if ( it == m_watches.end() )
|
||||
{
|
||||
wxLogTrace(wxTRACE_FSWATCHER,
|
||||
"Path '%s' is not watched", winfo.GetPath());
|
||||
// This can happen if a dir is watched, then a parent tree added
|
||||
return true;
|
||||
}
|
||||
wxSharedPtr<wxFSWatchEntry> watch = it->second;
|
||||
m_watches.erase(it);
|
||||
return DoRemove(watch);
|
||||
}
|
||||
|
||||
virtual bool RemoveAll()
|
||||
{
|
||||
bool ret = true;
|
||||
for ( wxFSWatchEntries::iterator it = m_watches.begin();
|
||||
it != m_watches.end();
|
||||
++it )
|
||||
{
|
||||
if ( !DoRemove(it->second) )
|
||||
ret = false;
|
||||
}
|
||||
m_watches.clear();
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Check whether any filespec matches the file's ext (if present)
|
||||
bool MatchesFilespec(const wxFileName& fn, const wxString& filespec) const
|
||||
{
|
||||
return filespec.empty() || wxMatchWild(filespec, fn.GetFullName());
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual bool DoAdd(wxSharedPtr<wxFSWatchEntry> watch) = 0;
|
||||
|
||||
virtual bool DoRemove(wxSharedPtr<wxFSWatchEntry> watch) = 0;
|
||||
|
||||
wxFSWatchEntries m_watches;
|
||||
wxFileSystemWatcherBase* m_watcher;
|
||||
};
|
||||
|
||||
|
||||
#endif /* WX_PRIVATE_FSWATCHER_H_ */
|
||||
25
libs/wxWidgets-3.3.1/include/wx/private/glibc.h
Normal file
25
libs/wxWidgets-3.3.1/include/wx/private/glibc.h
Normal file
@@ -0,0 +1,25 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/glibc.h
|
||||
// Purpose: glibc-specific private wx header
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2022-06-23
|
||||
// Copyright: (c) 2022 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_GLIBC_H_
|
||||
#define _WX_PRIVATE_GLIBC_H_
|
||||
|
||||
// Ensure that a header include __GLIBC__ is defined.
|
||||
#include <string.h>
|
||||
|
||||
// Macro for testing glibc version similar to wxCHECK_GCC_VERSION().
|
||||
#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
||||
#define wxCHECK_GLIBC_VERSION( major, minor ) \
|
||||
( ( __GLIBC__ > (major) ) \
|
||||
|| ( __GLIBC__ == (major) && __GLIBC_MINOR__ >= (minor) ) )
|
||||
#else
|
||||
#define wxCHECK_GLIBC_VERSION( major, minor ) 0
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_GLIBC_H_
|
||||
167
libs/wxWidgets-3.3.1/include/wx/private/graphics.h
Normal file
167
libs/wxWidgets-3.3.1/include/wx/private/graphics.h
Normal file
@@ -0,0 +1,167 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/graphics.h
|
||||
// Purpose: private graphics context header
|
||||
// Author: Stefan Csomor
|
||||
// Created:
|
||||
// Copyright: (c) Stefan Csomor
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_GRAPHICS_PRIVATE_H_
|
||||
#define _WX_GRAPHICS_PRIVATE_H_
|
||||
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
|
||||
#include "wx/graphics.h"
|
||||
|
||||
class WXDLLIMPEXP_CORE wxGraphicsObjectRefData : public wxObjectRefData
|
||||
{
|
||||
public :
|
||||
wxGraphicsObjectRefData( wxGraphicsRenderer* renderer );
|
||||
wxGraphicsObjectRefData( const wxGraphicsObjectRefData* data );
|
||||
wxGraphicsRenderer* GetRenderer() const ;
|
||||
wxNODISCARD virtual wxGraphicsObjectRefData* Clone() const ;
|
||||
|
||||
protected :
|
||||
wxGraphicsRenderer* m_renderer;
|
||||
} ;
|
||||
|
||||
class WXDLLIMPEXP_CORE wxGraphicsBitmapData : public wxGraphicsObjectRefData
|
||||
{
|
||||
public :
|
||||
wxGraphicsBitmapData( wxGraphicsRenderer* renderer) :
|
||||
wxGraphicsObjectRefData(renderer) {}
|
||||
|
||||
virtual ~wxGraphicsBitmapData() = default;
|
||||
|
||||
// returns the native representation
|
||||
virtual void * GetNativeBitmap() const = 0;
|
||||
} ;
|
||||
|
||||
class WXDLLIMPEXP_CORE wxGraphicsMatrixData : public wxGraphicsObjectRefData
|
||||
{
|
||||
public :
|
||||
wxGraphicsMatrixData( wxGraphicsRenderer* renderer) :
|
||||
wxGraphicsObjectRefData(renderer) {}
|
||||
|
||||
virtual ~wxGraphicsMatrixData() = default;
|
||||
|
||||
// concatenates the matrix
|
||||
virtual void Concat( const wxGraphicsMatrixData *t ) = 0;
|
||||
|
||||
// sets the matrix to the respective values
|
||||
virtual void Set(wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0,
|
||||
wxDouble tx=0.0, wxDouble ty=0.0) = 0;
|
||||
|
||||
// gets the component values of the matrix
|
||||
virtual void Get(wxDouble* a=nullptr, wxDouble* b=nullptr, wxDouble* c=nullptr,
|
||||
wxDouble* d=nullptr, wxDouble* tx=nullptr, wxDouble* ty=nullptr) const = 0;
|
||||
|
||||
// makes this the inverse matrix
|
||||
virtual void Invert() = 0;
|
||||
|
||||
// returns true if the elements of the transformation matrix are equal ?
|
||||
virtual bool IsEqual( const wxGraphicsMatrixData* t) const = 0;
|
||||
|
||||
// return true if this is the identity matrix
|
||||
virtual bool IsIdentity() const = 0;
|
||||
|
||||
//
|
||||
// transformation
|
||||
//
|
||||
|
||||
// add the translation to this matrix
|
||||
virtual void Translate( wxDouble dx , wxDouble dy ) = 0;
|
||||
|
||||
// add the scale to this matrix
|
||||
virtual void Scale( wxDouble xScale , wxDouble yScale ) = 0;
|
||||
|
||||
// add the rotation to this matrix (radians)
|
||||
virtual void Rotate( wxDouble angle ) = 0;
|
||||
|
||||
//
|
||||
// apply the transforms
|
||||
//
|
||||
|
||||
// applies that matrix to the point
|
||||
virtual void TransformPoint( wxDouble *x, wxDouble *y ) const = 0;
|
||||
|
||||
// applies the matrix except for translations
|
||||
virtual void TransformDistance( wxDouble *dx, wxDouble *dy ) const =0;
|
||||
|
||||
// returns the native representation
|
||||
virtual void * GetNativeMatrix() const = 0;
|
||||
} ;
|
||||
|
||||
class WXDLLIMPEXP_CORE wxGraphicsPathData : public wxGraphicsObjectRefData
|
||||
{
|
||||
public :
|
||||
wxGraphicsPathData(wxGraphicsRenderer* renderer) : wxGraphicsObjectRefData(renderer) {}
|
||||
virtual ~wxGraphicsPathData() = default;
|
||||
|
||||
//
|
||||
// These are the path primitives from which everything else can be constructed
|
||||
//
|
||||
|
||||
// begins a new subpath at (x,y)
|
||||
virtual void MoveToPoint( wxDouble x, wxDouble y ) = 0;
|
||||
|
||||
// adds a straight line from the current point to (x,y)
|
||||
virtual void AddLineToPoint( wxDouble x, wxDouble y ) = 0;
|
||||
|
||||
// adds a cubic Bezier curve from the current point, using two control points and an end point
|
||||
virtual void AddCurveToPoint( wxDouble cx1, wxDouble cy1, wxDouble cx2, wxDouble cy2, wxDouble x, wxDouble y ) = 0;
|
||||
|
||||
// adds another path
|
||||
virtual void AddPath( const wxGraphicsPathData* path ) =0;
|
||||
|
||||
// closes the current sub-path
|
||||
virtual void CloseSubpath() = 0;
|
||||
|
||||
// gets the last point of the current path, (0,0) if not yet set
|
||||
virtual void GetCurrentPoint( wxDouble* x, wxDouble* y) const = 0;
|
||||
|
||||
// adds an arc of a circle centering at (x,y) with radius (r) from startAngle to endAngle
|
||||
virtual void AddArc( wxDouble x, wxDouble y, wxDouble r, wxDouble startAngle, wxDouble endAngle, bool clockwise ) = 0;
|
||||
|
||||
//
|
||||
// These are convenience functions which - if not available natively will be assembled
|
||||
// using the primitives from above
|
||||
//
|
||||
|
||||
// adds a quadratic Bezier curve from the current point, using a control point and an end point
|
||||
virtual void AddQuadCurveToPoint( wxDouble cx, wxDouble cy, wxDouble x, wxDouble y );
|
||||
|
||||
// appends a rectangle as a new closed subpath
|
||||
virtual void AddRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h );
|
||||
|
||||
// appends an ellipsis as a new closed subpath fitting the passed rectangle
|
||||
virtual void AddCircle( wxDouble x, wxDouble y, wxDouble r );
|
||||
|
||||
// appends a an arc to two tangents connecting (current) to (x1,y1) and (x1,y1) to (x2,y2), also a straight line from (current) to (x1,y1)
|
||||
virtual void AddArcToPoint( wxDouble x1, wxDouble y1 , wxDouble x2, wxDouble y2, wxDouble r ) ;
|
||||
|
||||
// appends an ellipse
|
||||
virtual void AddEllipse( wxDouble x, wxDouble y, wxDouble w, wxDouble h);
|
||||
|
||||
// appends a rounded rectangle
|
||||
virtual void AddRoundedRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h, wxDouble radius);
|
||||
|
||||
// returns the native path
|
||||
virtual void * GetNativePath() const = 0;
|
||||
|
||||
// give the native path returned by GetNativePath() back (there might be some deallocations necessary)
|
||||
virtual void UnGetNativePath(void *p) const= 0;
|
||||
|
||||
// transforms each point of this path by the matrix
|
||||
virtual void Transform( const wxGraphicsMatrixData* matrix ) =0;
|
||||
|
||||
// gets the bounding box enclosing all points (possibly including control points)
|
||||
virtual void GetBox(wxDouble *x, wxDouble *y, wxDouble *w, wxDouble *h) const=0;
|
||||
|
||||
virtual bool Contains( wxDouble x, wxDouble y, wxPolygonFillMode fillStyle = wxODDEVEN_RULE) const=0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif // _WX_GRAPHICS_PRIVATE_H_
|
||||
31
libs/wxWidgets-3.3.1/include/wx/private/hyperlink.h
Normal file
31
libs/wxWidgets-3.3.1/include/wx/private/hyperlink.h
Normal file
@@ -0,0 +1,31 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/link.h
|
||||
// Purpose: Private functions related to hyperlinks.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2023-06-01
|
||||
// Copyright: (c) 2023 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_HYPERLINK_H_
|
||||
#define _WX_PRIVATE_HYPERLINK_H_
|
||||
|
||||
#include "wx/settings.h"
|
||||
|
||||
namespace wxPrivate
|
||||
{
|
||||
|
||||
inline wxColour GetLinkColour()
|
||||
{
|
||||
// There is a standard link colour appropriate for the default "light" mode,
|
||||
// see https://html.spec.whatwg.org/multipage/rendering.html#phrasing-content-3
|
||||
// it doesn't stand out enough in dark mode, so choose "light sky blue"
|
||||
// colour for the links in dark mode instead (this is a rather arbitrary
|
||||
// choice, but there doesn't seem to be any standard one).
|
||||
return wxSystemSettings::SelectLightDark(wxColour(0x00, 0x00, 0xee),
|
||||
wxColour(0x87, 0xce, 0xfa));
|
||||
}
|
||||
|
||||
} // namespace wxPrivate
|
||||
|
||||
#endif // _WX_PRIVATE_HYPERLINK_H_
|
||||
91
libs/wxWidgets-3.3.1/include/wx/private/icondir.h
Normal file
91
libs/wxWidgets-3.3.1/include/wx/private/icondir.h
Normal file
@@ -0,0 +1,91 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/icondir.h
|
||||
// Purpose: Declarations of structs used for loading MS icons
|
||||
// Author: wxWidgets team
|
||||
// Created: 2017-05-19
|
||||
// Copyright: (c) 2017 wxWidgets team
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_ICONDIR_H_
|
||||
#define _WX_PRIVATE_ICONDIR_H_
|
||||
|
||||
#include "wx/defs.h" // wxUint* declarations
|
||||
|
||||
|
||||
// Structs declared here are used for loading group icons from
|
||||
// .ICO files or MS Windows resources.
|
||||
// Icon entry and directory structs for .ICO files and
|
||||
// MS Windows resources are very similar but not identical.
|
||||
|
||||
#if wxUSE_ICO_CUR
|
||||
|
||||
#if wxUSE_STREAMS
|
||||
|
||||
// icon entry in .ICO files
|
||||
struct ICONDIRENTRY
|
||||
{
|
||||
wxUint8 bWidth; // Width of the image
|
||||
wxUint8 bHeight; // Height of the image (times 2)
|
||||
wxUint8 bColorCount; // Number of colors in image (0 if >=8bpp)
|
||||
wxUint8 bReserved; // Reserved
|
||||
|
||||
// these two are different in icons and cursors:
|
||||
// icon or cursor
|
||||
wxUint16 wPlanes; // Color Planes or XHotSpot
|
||||
wxUint16 wBitCount; // Bits per pixel or YHotSpot
|
||||
|
||||
wxUint32 dwBytesInRes; // how many bytes in this resource?
|
||||
wxUint32 dwImageOffset; // where in the file is this image
|
||||
};
|
||||
|
||||
// icon directory in .ICO files
|
||||
struct ICONDIR
|
||||
{
|
||||
wxUint16 idReserved; // Reserved
|
||||
wxUint16 idType; // resource type (1 for icons, 2 for cursors)
|
||||
wxUint16 idCount; // how many images?
|
||||
};
|
||||
|
||||
#endif // wxUSE_STREAMS
|
||||
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(2)
|
||||
|
||||
// icon entry in MS Windows resources
|
||||
struct GRPICONDIRENTRY
|
||||
{
|
||||
wxUint8 bWidth; // Width of the image
|
||||
wxUint8 bHeight; // Height of the image (times 2)
|
||||
wxUint8 bColorCount; // Number of colors in image (0 if >=8bpp)
|
||||
wxUint8 bReserved; // Reserved
|
||||
|
||||
// these two are different in icons and cursors:
|
||||
// icon or cursor
|
||||
wxUint16 wPlanes; // Color Planes or XHotSpot
|
||||
wxUint16 wBitCount; // Bits per pixel or YHotSpot
|
||||
|
||||
wxUint32 dwBytesInRes; // how many bytes in this resource?
|
||||
|
||||
wxUint16 nID; // actual icon resource ID
|
||||
};
|
||||
|
||||
// icon directory in MS Windows resources
|
||||
struct GRPICONDIR
|
||||
{
|
||||
wxUint16 idReserved; // Reserved
|
||||
wxUint16 idType; // resource type (1 for icons, 2 for cursors)
|
||||
wxUint16 idCount; // how many images?
|
||||
GRPICONDIRENTRY idEntries[1]; // The entries for each image
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif // __WINDOWS__
|
||||
|
||||
#endif // wxUSE_ICO_CUR
|
||||
|
||||
#endif // _WX_PRIVATE_ICONDIR_H_
|
||||
93
libs/wxWidgets-3.3.1/include/wx/private/init.h
Normal file
93
libs/wxWidgets-3.3.1/include/wx/private/init.h
Normal file
@@ -0,0 +1,93 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/init.h
|
||||
// Purpose: Private initialization-related data.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2023-09-02
|
||||
// Copyright: (c) 2023 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_INIT_H_
|
||||
#define _WX_PRIVATE_INIT_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Initialization data contains parameters we get from the OS entry function.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
struct WXDLLIMPEXP_BASE wxInitData
|
||||
{
|
||||
private:
|
||||
wxInitData() = default;
|
||||
|
||||
public:
|
||||
// Get the single global object.
|
||||
static wxInitData& Get();
|
||||
|
||||
// Initialize from ANSI command line arguments: argv contents should be
|
||||
// static, i.e. remain valid until the end of the program.
|
||||
void Initialize(int argc, char** argv);
|
||||
|
||||
// Initialize from wide command line arguments if we hadn't been
|
||||
// initialized in some other way: this allows to call this function
|
||||
// unconditionally, even when these wide arguments were themselves
|
||||
// synthesized from ANSI ones by our own code.
|
||||
//
|
||||
// Note that here we currently make a copy of the arguments internally, so
|
||||
// they don't need to be static.
|
||||
void InitIfNecessary(int argc, wchar_t** argv);
|
||||
|
||||
// This function is used instead of the dtor because the global object can
|
||||
// be initialized multiple times.
|
||||
void Free();
|
||||
|
||||
|
||||
// We always have argc and (Unicode) argv, they're filled by Initialize()
|
||||
// and argv as well as its elements are owned by us, see Free().
|
||||
int argc = 0;
|
||||
wchar_t** argv = nullptr;
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
// Initialize from the implicitly available Unicode command line.
|
||||
void MSWInitialize();
|
||||
|
||||
// This pointer is non-null only if MSWInitialize() was called. In this
|
||||
// case, argv is also set to it and, because this pointer needs to be freed
|
||||
// using MSW-specific function, argv must not be freed at all.
|
||||
//
|
||||
// It's also possible to use Initialize(), even under Windows, in which
|
||||
// case this pointer remains null and argv must be freed as usual.
|
||||
wchar_t** argvMSW = nullptr;
|
||||
#endif // __WINDOWS__
|
||||
|
||||
// At least wxGTK needs narrow command line arguments too and even thought
|
||||
// other ports under Windows typically don't need them (e.g. wxMSW itself
|
||||
// doesn't), we have to have them, as this header is toolkit-independent,
|
||||
// and so can't differ between wxMSW and wxGTK.
|
||||
|
||||
// Initializes argvA using argc and argv. This means that argc and argv
|
||||
// MUST be initialized before calling this function.
|
||||
void InitArgvA();
|
||||
|
||||
// This pointer may or not need to be freed, as indicated by ownsArgvA flag.
|
||||
char** argvA = nullptr;
|
||||
bool ownsArgvA = false;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxInitData);
|
||||
};
|
||||
|
||||
// Type of the hook function, see wxAddEntryHook(). If this function returns
|
||||
// a value different from -1, the process exits using it as error code.
|
||||
using wxEntryHook = int (*)();
|
||||
|
||||
// Set a special hook function which will be called before performing any
|
||||
// normal initialization. Note that this hook can't use any wxWidgets
|
||||
// functionality because nothing has been initialized yet, but can use
|
||||
// wxInitData to examine the command line arguments and determine if it should
|
||||
// be applied.
|
||||
//
|
||||
// This is currently used only by wxWebViewChromium to allow running Chromium
|
||||
// helper applications without initializing GTK under Linux but could, in
|
||||
// principle, be used for any other similar purpose.
|
||||
WXDLLIMPEXP_BASE void wxAddEntryHook(wxEntryHook hook);
|
||||
|
||||
#endif // _WX_PRIVATE_INIT_H_
|
||||
88
libs/wxWidgets-3.3.1/include/wx/private/json.h
Normal file
88
libs/wxWidgets-3.3.1/include/wx/private/json.h
Normal file
@@ -0,0 +1,88 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/json.h
|
||||
// Purpose: Helper functions to handle JSON data
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2020-01-17
|
||||
// Copyright: (c) 2020 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_JSON_H_
|
||||
#define _WX_PRIVATE_JSON_H_
|
||||
|
||||
namespace wxJSON
|
||||
{
|
||||
|
||||
// Decode a string literal including escape sequences
|
||||
// Returns false if the input string is not a valid JSON string
|
||||
bool DecodeString(const wxString& in, wxString* out)
|
||||
{
|
||||
const wxWCharBuffer buf = in.wc_str();
|
||||
const wchar_t* ch = buf.data();
|
||||
// String has to chart with a quote
|
||||
if (*(ch++) != '"')
|
||||
return false;
|
||||
out->clear();
|
||||
out->reserve(buf.length());
|
||||
const wchar_t* end = buf.data() + buf.length() - 1;
|
||||
for (; ch < end; ++ch)
|
||||
{
|
||||
if (*ch == '\\')
|
||||
{
|
||||
switch (*(++ch))
|
||||
{
|
||||
case 'b':
|
||||
out->append('\b');
|
||||
break;
|
||||
case 'n':
|
||||
out->append('\n');
|
||||
break;
|
||||
case 'r':
|
||||
out->append('\r');
|
||||
break;
|
||||
case 't':
|
||||
out->append('\t');
|
||||
break;
|
||||
case 'f':
|
||||
out->append('\f');
|
||||
break;
|
||||
case '/':
|
||||
out->append('/');
|
||||
break;
|
||||
case '"':
|
||||
out->append('"');
|
||||
break;
|
||||
case '\\':
|
||||
out->append('\\');
|
||||
break;
|
||||
case 'u':
|
||||
#if SIZEOF_WCHAR_T == 2
|
||||
// In this case, we handle surrogates without doing anything special was wchar_t strings use UTF-17 encoding.
|
||||
if (wxIsxdigit(ch[1]) && wxIsxdigit(ch[2]) &&
|
||||
wxIsxdigit(ch[3]) && wxIsxdigit(ch[4]))
|
||||
{
|
||||
wchar_t uchar = wxHexToDec(wxString(&ch[3], 2)) |
|
||||
wxHexToDec(wxString(&ch[1], 2)) >> 8;
|
||||
out->append(uchar);
|
||||
ch += 4;
|
||||
}
|
||||
#else
|
||||
#error Implement correct surrogate handling.
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
out->append(*ch);
|
||||
}
|
||||
|
||||
// String has to end with a quote
|
||||
return (*ch) == '"';
|
||||
}
|
||||
|
||||
} // namespace JSON
|
||||
|
||||
#endif // _WX_PRIVATE_JSON_H_
|
||||
212
libs/wxWidgets-3.3.1/include/wx/private/jsscriptwrapper.h
Normal file
212
libs/wxWidgets-3.3.1/include/wx/private/jsscriptwrapper.h
Normal file
@@ -0,0 +1,212 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/jsscriptwrapper.h
|
||||
// Purpose: JS Script Wrapper for wxWebView
|
||||
// Author: Jose Lorenzo
|
||||
// Created: 2017-08-12
|
||||
// Copyright: (c) 2017 Jose Lorenzo <josee.loren@gmail.com>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_JSSCRIPTWRAPPER_H_
|
||||
#define _WX_PRIVATE_JSSCRIPTWRAPPER_H_
|
||||
|
||||
#include "wx/regex.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Helper for wxWebView::RunScript()
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This class provides GetWrappedCode(), GetOutputCode() and GetCleanUpCode()
|
||||
// functions that should be executed in the backend-appropriate way by each
|
||||
// wxWebView implementation in order to actually execute the user-provided
|
||||
// JavaScript code, retrieve its result (if it executed successfully) and
|
||||
// perform the cleanup at the end.
|
||||
class wxJSScriptWrapper
|
||||
{
|
||||
public:
|
||||
enum OutputType
|
||||
{
|
||||
JS_OUTPUT_STRING, // All return types are converted to a string
|
||||
JS_OUTPUT_WEBKIT, // Some return types will be processed
|
||||
JS_OUTPUT_IE, // Most return types will be processed
|
||||
JS_OUTPUT_RAW // The return types is returned as is
|
||||
};
|
||||
|
||||
wxJSScriptWrapper(const wxString& js, OutputType outputType)
|
||||
: m_outputType(outputType)
|
||||
{
|
||||
// Adds one escape level.
|
||||
const char *charsNeededToBeEscaped = "\\\"\n\r\v\t\b\f";
|
||||
m_escapedCode.reserve(js.size());
|
||||
for (wxString::const_iterator it = js.begin(); it != js.end(); ++it)
|
||||
{
|
||||
if (wxStrchr(charsNeededToBeEscaped, *it))
|
||||
{
|
||||
m_escapedCode += '\\';
|
||||
switch ((wxChar) *it)
|
||||
{
|
||||
case 0x0A: // '\n'
|
||||
m_escapedCode += 'n';
|
||||
break;
|
||||
case 0x0D: // '\r'
|
||||
m_escapedCode += 'r';
|
||||
break;
|
||||
case 0x0B: // '\v'
|
||||
m_escapedCode += 'v';
|
||||
break;
|
||||
case 0x09: // '\t'
|
||||
m_escapedCode += 't';
|
||||
break;
|
||||
case 0x08: // '\b'
|
||||
m_escapedCode += 'b';
|
||||
break;
|
||||
case 0x0C: // '\f'
|
||||
m_escapedCode += 'f';
|
||||
break;
|
||||
default:
|
||||
m_escapedCode += *it;
|
||||
}
|
||||
}
|
||||
else
|
||||
m_escapedCode += *it;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the code to execute, its returned value will be either the value,
|
||||
// if it executed successfully, or the exception message prefixed with
|
||||
// "__wxexc:" if an error occurred.
|
||||
//
|
||||
// Either use SetOutput() to specify the script result or access it directly
|
||||
// Using GetOutputRef()
|
||||
//
|
||||
// Execute ExtractOutput() later to get the real output after successful
|
||||
// execution of this code or the proper error message.
|
||||
wxString GetWrappedCode() const
|
||||
{
|
||||
wxString code = wxString::Format(
|
||||
wxASCII_STR("(function () { try { var res = eval(\"%s\"); "),
|
||||
m_escapedCode);
|
||||
|
||||
switch (m_outputType)
|
||||
{
|
||||
case JS_OUTPUT_STRING:
|
||||
code += wxASCII_STR(
|
||||
"if (typeof res == 'object') return JSON.stringify(res);"
|
||||
"else if (typeof res == 'undefined') return 'undefined';"
|
||||
"else return String(res);"
|
||||
);
|
||||
break;
|
||||
case JS_OUTPUT_WEBKIT:
|
||||
code += wxASCII_STR(
|
||||
"if (typeof res == 'object') return JSON.stringify(res);"
|
||||
"else if (typeof res == 'undefined') return 'undefined';"
|
||||
"else return res;"
|
||||
);
|
||||
break;
|
||||
case JS_OUTPUT_IE:
|
||||
code += wxASCII_STR(
|
||||
"try {"
|
||||
"return (res == null || typeof res != 'object') ? String(res)"
|
||||
": JSON.stringify(res);"
|
||||
"}"
|
||||
"catch (e) {"
|
||||
"try {"
|
||||
"function __wx$stringifyJSON(obj) {"
|
||||
"if (!(obj instanceof Object))"
|
||||
"return typeof obj === \"string\""
|
||||
"? \'\"\' + obj + \'\"\'"
|
||||
": \'\' + obj;"
|
||||
"else if (obj instanceof Array) {"
|
||||
"if (obj[0] === undefined)"
|
||||
"return \'[]\';"
|
||||
"else {"
|
||||
"var arr = [];"
|
||||
"for (var i = 0; i < obj.length; i++)"
|
||||
"arr.push(__wx$stringifyJSON(obj[i]));"
|
||||
"return \'[\' + arr + \']\';"
|
||||
"}"
|
||||
"}"
|
||||
"else if (typeof obj === \"object\") {"
|
||||
"if (obj instanceof Date) {"
|
||||
"if (!Date.prototype.toISOString) {"
|
||||
"(function() {"
|
||||
"function pad(number) {"
|
||||
"return number < 10"
|
||||
"? '0' + number"
|
||||
": number;"
|
||||
"}"
|
||||
"Date.prototype.toISOString = function() {"
|
||||
"return this.getUTCFullYear() +"
|
||||
"'-' + pad(this.getUTCMonth() + 1) +"
|
||||
"'-' + pad(this.getUTCDate()) +"
|
||||
"'T' + pad(this.getUTCHours()) +"
|
||||
"':' + pad(this.getUTCMinutes()) +"
|
||||
"':' + pad(this.getUTCSeconds()) +"
|
||||
"'.' + (this.getUTCMilliseconds() / 1000)"
|
||||
".toFixed(3).slice(2, 5) + 'Z\"';"
|
||||
"};"
|
||||
"}());"
|
||||
"}"
|
||||
"return '\"' + obj.toISOString(); + '\"'"
|
||||
"}"
|
||||
"var objElements = [];"
|
||||
"for (var key in obj)"
|
||||
"{"
|
||||
"if (typeof obj[key] === \"function\")"
|
||||
"return \'{}\';"
|
||||
"else {"
|
||||
"objElements.push(\'\"\'"
|
||||
"+ key + \'\":\' +"
|
||||
"__wx$stringifyJSON(obj[key]));"
|
||||
"}"
|
||||
"}"
|
||||
"return \'{\' + objElements + \'}\';"
|
||||
"}"
|
||||
"}"
|
||||
"return __wx$stringifyJSON(res);"
|
||||
"}"
|
||||
"catch (e) { return \"__wxexc:\" + e.name + \": \" + e.message; }"
|
||||
"}");
|
||||
break;
|
||||
case JS_OUTPUT_RAW:
|
||||
code += wxASCII_STR("return res;");
|
||||
break;
|
||||
}
|
||||
|
||||
code +=
|
||||
wxASCII_STR("} catch (e) { return \"__wxexc:\" + e.name + \": \" + e.message; }"
|
||||
"})()");
|
||||
return code;
|
||||
}
|
||||
|
||||
// Extract the output value
|
||||
//
|
||||
// Returns true if executed successfully
|
||||
// string of the result will be put into output
|
||||
// Returns false when an exception occurred
|
||||
// string will be the exception message
|
||||
static bool ExtractOutput(const wxString& result, wxString* output)
|
||||
{
|
||||
if (output)
|
||||
*output = result;
|
||||
|
||||
if (result.starts_with(wxASCII_STR("__wxexc:")))
|
||||
{
|
||||
if (output)
|
||||
output->Remove(0, 8);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
wxString m_escapedCode;
|
||||
OutputType m_outputType;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxJSScriptWrapper);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_JSSCRIPTWRAPPER_H_
|
||||
954
libs/wxWidgets-3.3.1/include/wx/private/lang_info.h
Normal file
954
libs/wxWidgets-3.3.1/include/wx/private/lang_info.h
Normal file
@@ -0,0 +1,954 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/lang_info.h
|
||||
// Purpose: Language database data
|
||||
// Author: misc/languages/genlang.py
|
||||
// Created: 2024-10-04
|
||||
// Copyright: (c) 2024 wxWidgets development team <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WARNING: Parts of this file are generated. See misc/languages/README for
|
||||
// details.
|
||||
|
||||
#ifndef _WX_PRIVATE_LANG_INFO_H_
|
||||
#define _WX_PRIVATE_LANG_INFO_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Table of all supported languages
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// --- --- --- generated code begins here --- --- ---
|
||||
|
||||
// The following data tables are generated by misc/languages/genlang.py
|
||||
// When making changes, please put them into misc/languages/langtabl.txt
|
||||
|
||||
// Data table for known languages
|
||||
static const struct langData_t
|
||||
{
|
||||
int wxlang;
|
||||
const char* bcp47tag;
|
||||
const char* canonical;
|
||||
const char* canonicalref;
|
||||
wxUint32 winlang;
|
||||
wxUint32 winsublang;
|
||||
wxLayoutDirection layout;
|
||||
const char* desc;
|
||||
const char* descnative;
|
||||
}
|
||||
tabLangData[] =
|
||||
{
|
||||
{ wxLANGUAGE_ABKHAZIAN, "ab" , "ab" , "" , 0 , 0 , wxLayout_LeftToRight, "Abkhazian","\320\260\322\247\321\201\321\203\320\260 \320\261\321\213\320\267\321\210\323\231\320\260" },
|
||||
{ wxLANGUAGE_AFAR, "aa" , "aa" , "aa_ET" , 0x00, 0x04, wxLayout_LeftToRight, "Afar","Qafar" },
|
||||
{ wxLANGUAGE_AFAR_DJIBOUTI, "aa-DJ" , "aa_DJ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Afar (Djibouti)","Qafar (Yabuuti)" },
|
||||
{ wxLANGUAGE_AFAR_ERITREA, "aa-ER" , "aa_ER" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Afar (Eritrea)","Qafar (Eretria)" },
|
||||
{ wxLANGUAGE_AFAR_ETHIOPIA, "aa-ET" , "aa_ET" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Afar (Ethiopia)","Qafar (Otobbia)" },
|
||||
{ wxLANGUAGE_AFRIKAANS, "af" , "af" , "af_ZA" , 0x36, 0x01, wxLayout_LeftToRight, "Afrikaans","Afrikaans" },
|
||||
{ wxLANGUAGE_AFRIKAANS_NAMIBIA, "af-NA" , "af_NA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Afrikaans (Namibia)","Afrikaans (Namibi\303\253)" },
|
||||
{ wxLANGUAGE_AFRIKAANS_SOUTH_AFRICA, "af-ZA" , "af_ZA" , "" , 0x36, 0x01, wxLayout_LeftToRight, "Afrikaans (South Africa)","Afrikaans (Suid-Afrika)" },
|
||||
{ wxLANGUAGE_AGHEM, "agq" , "agq" , "agq_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Aghem","Aghem" },
|
||||
{ wxLANGUAGE_AGHEM_CAMEROON, "agq-CM" , "agq_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Aghem (Cameroon)","Aghem (K\303\240m\303\240l\303\273\305\213)" },
|
||||
{ wxLANGUAGE_AKAN, "ak" , "ak" , "ak_GH" , 0x00, 0x04, wxLayout_LeftToRight, "Akan","Akan" },
|
||||
{ wxLANGUAGE_AKAN_GHANA, "ak-GH" , "ak_GH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Akan (Ghana)","Akan (Gaana)" },
|
||||
{ wxLANGUAGE_ALBANIAN, "sq" , "sq" , "sq_AL" , 0x1c, 0x01, wxLayout_LeftToRight, "Albanian","shqip" },
|
||||
{ wxLANGUAGE_ALBANIAN_ALBANIA, "sq-AL" , "sq_AL" , "" , 0x1c, 0x01, wxLayout_LeftToRight, "Albanian (Albania)","shqip (Shqip\303\253ri)" },
|
||||
{ wxLANGUAGE_ALBANIAN_KOSOVO, "sq-XK" , "sq_XK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Albanian (Kosovo)","shqip (Kosov\303\253)" },
|
||||
{ wxLANGUAGE_ALBANIAN_NORTH_MACEDONIA, "sq-MK" , "sq_MK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Albanian (North Macedonia)","shqip (Maqedonia e Veriut)" },
|
||||
{ wxLANGUAGE_ALSATIAN_FRANCE, "gsw-FR" , "gsw_FR" , "" , 0x84, 0x01, wxLayout_LeftToRight, "Alsatian (France)","Els\303\244ssisch (Fr\303\240nkrisch)" },
|
||||
{ wxLANGUAGE_AMHARIC, "am" , "am" , "am_ET" , 0x5e, 0x01, wxLayout_LeftToRight, "Amharic","\341\212\240\341\210\233\341\210\255\341\212\233" },
|
||||
{ wxLANGUAGE_AMHARIC_ETHIOPIA, "am-ET" , "am_ET" , "" , 0x5e, 0x01, wxLayout_LeftToRight, "Amharic (Ethiopia)","\341\212\240\341\210\233\341\210\255\341\212\233 (\341\212\242\341\211\265\341\213\256\341\214\265\341\213\253)" },
|
||||
{ wxLANGUAGE_ARABIC, "ar" , "ar" , "ar_SA" , 0x01, 0x01, wxLayout_RightToLeft, "Arabic","\330\247\331\204\330\271\330\261\330\250\331\212\330\251" },
|
||||
{ wxLANGUAGE_ARABIC_ALGERIA, "ar-DZ" , "ar_DZ" , "" , 0x01, 0x05, wxLayout_RightToLeft, "Arabic (Algeria)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\254\330\262\330\247\330\246\330\261)" },
|
||||
{ wxLANGUAGE_ARABIC_BAHRAIN, "ar-BH" , "ar_BH" , "" , 0x01, 0x0f, wxLayout_RightToLeft, "Arabic (Bahrain)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\250\330\255\330\261\331\212\331\206)" },
|
||||
{ wxLANGUAGE_ARABIC_CHAD, "ar-TD" , "ar_TD" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Chad)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\252\330\264\330\247\330\257)" },
|
||||
{ wxLANGUAGE_ARABIC_COMOROS, "ar-KM" , "ar_KM" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Comoros)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\254\330\262\330\261 \330\247\331\204\331\202\331\205\330\261)" },
|
||||
{ wxLANGUAGE_ARABIC_DJIBOUTI, "ar-DJ" , "ar_DJ" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Djibouti)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\254\331\212\330\250\331\210\330\252\331\212)" },
|
||||
{ wxLANGUAGE_ARABIC_EGYPT, "ar-EG" , "ar_EG" , "" , 0x01, 0x03, wxLayout_RightToLeft, "Arabic (Egypt)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\331\205\330\265\330\261)" },
|
||||
{ wxLANGUAGE_ARABIC_ERITREA, "ar-ER" , "ar_ER" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Eritrea)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\245\330\261\331\212\330\252\330\261\331\212\330\247)" },
|
||||
{ wxLANGUAGE_ARABIC_IRAQ, "ar-IQ" , "ar_IQ" , "" , 0x01, 0x02, wxLayout_RightToLeft, "Arabic (Iraq)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\271\330\261\330\247\331\202)" },
|
||||
{ wxLANGUAGE_ARABIC_ISRAEL, "ar-IL" , "ar_IL" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Israel)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\245\330\263\330\261\330\247\330\246\331\212\331\204)" },
|
||||
{ wxLANGUAGE_ARABIC_JORDAN, "ar-JO" , "ar_JO" , "" , 0x01, 0x0b, wxLayout_RightToLeft, "Arabic (Jordan)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\243\330\261\330\257\331\206)" },
|
||||
{ wxLANGUAGE_ARABIC_KUWAIT, "ar-KW" , "ar_KW" , "" , 0x01, 0x0d, wxLayout_RightToLeft, "Arabic (Kuwait)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\331\203\331\210\331\212\330\252)" },
|
||||
{ wxLANGUAGE_ARABIC_LEBANON, "ar-LB" , "ar_LB" , "" , 0x01, 0x0c, wxLayout_RightToLeft, "Arabic (Lebanon)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\331\204\330\250\331\206\330\247\331\206)" },
|
||||
{ wxLANGUAGE_ARABIC_LIBYA, "ar-LY" , "ar_LY" , "" , 0x01, 0x04, wxLayout_RightToLeft, "Arabic (Libya)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\331\204\331\212\330\250\331\212\330\247)" },
|
||||
{ wxLANGUAGE_ARABIC_MAURITANIA, "ar-MR" , "ar_MR" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Mauritania)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\331\205\331\210\330\261\331\212\330\252\330\247\331\206\331\212\330\247)" },
|
||||
{ wxLANGUAGE_ARABIC_MOROCCO, "ar-MA" , "ar_MA" , "" , 0x01, 0x06, wxLayout_RightToLeft, "Arabic (Morocco)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\331\205\331\205\331\204\331\203\330\251 \330\247\331\204\331\205\330\272\330\261\330\250\331\212\330\251)" },
|
||||
{ wxLANGUAGE_ARABIC_OMAN, "ar-OM" , "ar_OM" , "" , 0x01, 0x08, wxLayout_RightToLeft, "Arabic (Oman)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\271\331\205\330\247\331\206)" },
|
||||
{ wxLANGUAGE_ARABIC_PALESTINIAN_AUTHORITY, "ar-PS" , "ar_PS" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Palestinian Authority)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\263\331\204\330\267\330\251 \330\247\331\204\331\201\331\204\330\263\330\267\331\212\331\206\331\212\330\251)" },
|
||||
{ wxLANGUAGE_ARABIC_QATAR, "ar-QA" , "ar_QA" , "" , 0x01, 0x10, wxLayout_RightToLeft, "Arabic (Qatar)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\331\202\330\267\330\261)" },
|
||||
{ wxLANGUAGE_ARABIC_SAUDI_ARABIA, "ar-SA" , "ar_SA" , "" , 0x01, 0x01, wxLayout_RightToLeft, "Arabic (Saudi Arabia)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\331\205\331\205\331\204\331\203\330\251 \330\247\331\204\330\271\330\261\330\250\331\212\330\251 \330\247\331\204\330\263\330\271\331\210\330\257\331\212\330\251)" },
|
||||
{ wxLANGUAGE_ARABIC_SOMALIA, "ar-SO" , "ar_SO" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Somalia)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\265\331\210\331\205\330\247\331\204)" },
|
||||
{ wxLANGUAGE_ARABIC_SOUTH_SUDAN, "ar-SS" , "ar_SS" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (South Sudan)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\254\331\206\331\210\330\250 \330\247\331\204\330\263\331\210\330\257\330\247\331\206)" },
|
||||
{ wxLANGUAGE_ARABIC_SUDAN, "ar-SD" , "ar_SD" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (Sudan)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\263\331\210\330\257\330\247\331\206)" },
|
||||
{ wxLANGUAGE_ARABIC_SYRIA, "ar-SY" , "ar_SY" , "" , 0x01, 0x0a, wxLayout_RightToLeft, "Arabic (Syria)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\263\331\210\330\261\331\212\330\247)" },
|
||||
{ wxLANGUAGE_ARABIC_TUNISIA, "ar-TN" , "ar_TN" , "" , 0x01, 0x07, wxLayout_RightToLeft, "Arabic (Tunisia)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\252\331\210\331\206\330\263)" },
|
||||
{ wxLANGUAGE_ARABIC_UAE, "ar-AE" , "ar_AE" , "" , 0x01, 0x0e, wxLayout_RightToLeft, "Arabic (United Arab Emirates)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\245\331\205\330\247\330\261\330\247\330\252 \330\247\331\204\330\271\330\261\330\250\331\212\330\251 \330\247\331\204\331\205\330\252\330\255\330\257\330\251)" },
|
||||
{ wxLANGUAGE_ARABIC_WORLD, "ar-001" , "ar_001" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Arabic (World)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\330\271\330\247\331\204\331\205)" },
|
||||
{ wxLANGUAGE_ARABIC_YEMEN, "ar-YE" , "ar_YE" , "" , 0x01, 0x09, wxLayout_RightToLeft, "Arabic (Yemen)","\330\247\331\204\330\271\330\261\330\250\331\212\330\251 (\330\247\331\204\331\212\331\205\331\206)" },
|
||||
{ wxLANGUAGE_ARMENIAN, "hy" , "hy" , "hy_AM" , 0x2b, 0x01, wxLayout_LeftToRight, "Armenian","\325\260\325\241\325\265\325\245\326\200\325\245\325\266" },
|
||||
{ wxLANGUAGE_ARMENIAN_ARMENIA, "hy-AM" , "hy_AM" , "" , 0x2b, 0x01, wxLayout_LeftToRight, "Armenian (Armenia)","\325\260\325\241\325\265\325\245\326\200\325\245\325\266 (\325\200\325\241\325\265\325\241\325\275\325\277\325\241\325\266)" },
|
||||
{ wxLANGUAGE_ASSAMESE, "as" , "as" , "as_IN" , 0x4d, 0x01, wxLayout_LeftToRight, "Assamese","\340\246\205\340\246\270\340\246\256\340\247\200\340\246\257\340\246\274\340\246\276" },
|
||||
{ wxLANGUAGE_ASSAMESE_INDIA, "as-IN" , "as_IN" , "" , 0x4d, 0x01, wxLayout_LeftToRight, "Assamese (India)","\340\246\205\340\246\270\340\246\256\340\247\200\340\246\257\340\246\274\340\246\276 (\340\246\255\340\246\276\340\247\260\340\246\244)" },
|
||||
{ wxLANGUAGE_ASTURIAN, "ast" , "ast" , "ast_ES" , 0x00, 0x04, wxLayout_LeftToRight, "Asturian","asturianu" },
|
||||
{ wxLANGUAGE_ASTURIAN_SPAIN, "ast-ES" , "ast_ES" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Asturian (Spain)","asturianu (Espa\303\261a)" },
|
||||
{ wxLANGUAGE_ASU, "asa" , "asa" , "asa_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Asu","Kipare" },
|
||||
{ wxLANGUAGE_ASU_TANZANIA, "asa-TZ" , "asa_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Asu (Tanzania)","Kipare (Tadhania)" },
|
||||
{ wxLANGUAGE_AYMARA, "ay" , "ay" , "" , 0 , 0 , wxLayout_LeftToRight, "Aymara","Aymara" },
|
||||
{ wxLANGUAGE_AZERBAIJANI, "az" , "az" , "" , 0x2c, 0x01, wxLayout_LeftToRight, "Azerbaijani","az\311\231rbaycan" },
|
||||
{ wxLANGUAGE_AZERBAIJANI_CYRILLIC, "az-Cyrl" , "az@cyrillic" , "" , 0x2c, 0x02, wxLayout_LeftToRight, "Azerbaijani (Cyrillic)","\320\220\320\267\323\231\321\200\320\261\320\260\321\230\322\271\320\260\320\275\302\240\320\264\320\270\320\273\320\270 (\320\232\320\270\321\200\320\270\320\273)" },
|
||||
{ wxLANGUAGE_AZERBAIJANI_CYRILLIC_AZERBAIJAN, "az-Cyrl-AZ" , "az_AZ@cyrillic" , "" , 0x2c, 0x02, wxLayout_LeftToRight, "Azerbaijani (Cyrillic, Azerbaijan)","\320\260\320\267\323\231\321\200\320\261\320\260\321\230\322\271\320\260\320\275 (\320\220\320\267\323\231\321\200\320\261\320\260\321\230\322\271\320\260\320\275)" },
|
||||
{ wxLANGUAGE_AZERBAIJANI_LATIN, "az-Latn" , "az@latin" , "" , 0x2c, 0x01, wxLayout_LeftToRight, "Azerbaijani (Latin)","Az\311\231rbaycan\302\255\304\261l\304\261 (Lat\304\261n)" },
|
||||
{ wxLANGUAGE_AZERBAIJANI_LATIN_AZERBAIJAN, "az-Latn-AZ" , "az_AZ@latin" , "" , 0x2c, 0x01, wxLayout_LeftToRight, "Azerbaijani (Latin, Azerbaijan)","az\311\231rbaycan (Az\311\231rbaycan)" },
|
||||
{ wxLANGUAGE_BAFIA, "ksf" , "ksf" , "ksf_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Bafia","rikpa" },
|
||||
{ wxLANGUAGE_BAFIA_CAMEROON, "ksf-CM" , "ksf_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Bafia (Cameroon)","rikpa (kam\311\233r\303\272n)" },
|
||||
{ wxLANGUAGE_BAMANANKAN, "bm" , "bm" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Bamanankan","bamanakan" },
|
||||
{ wxLANGUAGE_BAMANANKAN_LATIN, "bm-Latn" , "bm@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Bamanankan (Latin)","bamanakan (Latin)" },
|
||||
{ wxLANGUAGE_BAMANANKAN_LATIN_MALI, "bm-Latn-ML" , "bm_ML@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Bamanankan (Latin, Mali)","bamanakan (Mali)" },
|
||||
{ wxLANGUAGE_BANGLA, "bn" , "bn" , "bn_BD" , 0x45, 0x02, wxLayout_LeftToRight, "Bangla","\340\246\254\340\246\276\340\246\202\340\246\262\340\246\276" },
|
||||
{ wxLANGUAGE_BANGLA_BANGLADESH, "bn-BD" , "bn_BD" , "" , 0x45, 0x02, wxLayout_LeftToRight, "Bangla (Bangladesh)","\340\246\254\340\246\276\340\246\202\340\246\262\340\246\276 (\340\246\254\340\246\276\340\246\202\340\246\262\340\246\276\340\246\246\340\247\207\340\246\266)" },
|
||||
{ wxLANGUAGE_BANGLA_INDIA, "bn-IN" , "bn_IN" , "" , 0x45, 0x01, wxLayout_LeftToRight, "Bengali (India)","\340\246\254\340\246\276\340\246\202\340\246\262\340\246\276 (\340\246\255\340\246\276\340\246\260\340\246\244)" },
|
||||
{ wxLANGUAGE_BASAA, "bas" , "bas" , "bas_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Basaa","\306\201\303\240s\303\240a" },
|
||||
{ wxLANGUAGE_BASAA_CAMEROON, "bas-CM" , "bas_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Basaa (Cameroon)","\306\201\303\240s\303\240a (K\303\240m\311\233\314\200r\303\273n)" },
|
||||
{ wxLANGUAGE_BASHKIR, "ba" , "ba" , "ba_RU" , 0x6d, 0x01, wxLayout_LeftToRight, "Bashkir","\320\221\320\260\321\210\322\241\320\276\321\200\321\202" },
|
||||
{ wxLANGUAGE_BASHKIR_RUSSIA, "ba-RU" , "ba_RU" , "" , 0x6d, 0x01, wxLayout_LeftToRight, "Bashkir (Russia)","\320\221\320\260\321\210\322\241\320\276\321\200\321\202 (\320\240\323\231\321\201\323\231\320\271)" },
|
||||
{ wxLANGUAGE_BASQUE, "eu" , "eu" , "eu_ES" , 0x2d, 0x01, wxLayout_LeftToRight, "Basque","euskara" },
|
||||
{ wxLANGUAGE_BASQUE_SPAIN, "eu-ES" , "eu_ES" , "" , 0x2d, 0x01, wxLayout_LeftToRight, "Basque (Basque)","euskara (euskara)" },
|
||||
{ wxLANGUAGE_BELARUSIAN, "be" , "be" , "be_BY" , 0x23, 0x01, wxLayout_LeftToRight, "Belarusian","\320\261\320\265\320\273\320\260\321\200\321\203\321\201\320\272\320\260\321\217" },
|
||||
{ wxLANGUAGE_BELARUSIAN_BELARUS, "be-BY" , "be_BY" , "" , 0x23, 0x01, wxLayout_LeftToRight, "Belarusian (Belarus)","\320\261\320\265\320\273\320\260\321\200\321\203\321\201\320\272\320\260\321\217 (\320\221\320\265\320\273\320\260\321\200\321\203\321\201\321\214)" },
|
||||
{ wxLANGUAGE_BEMBA, "bem" , "bem" , "bem_ZM" , 0x00, 0x04, wxLayout_LeftToRight, "Bemba","Ichibemba" },
|
||||
{ wxLANGUAGE_BEMBA_ZAMBIA, "bem-ZM" , "bem_ZM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Bemba (Zambia)","Ichibemba (Zambia)" },
|
||||
{ wxLANGUAGE_BENA, "bez" , "bez" , "bez_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Bena","Hibena" },
|
||||
{ wxLANGUAGE_BENA_TANZANIA, "bez-TZ" , "bez_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Bena (Tanzania)","Hibena (Hutanzania)" },
|
||||
{ wxLANGUAGE_BIHARI, "bh" , "bh" , "" , 0 , 0 , wxLayout_LeftToRight, "Bihari","Bihari" },
|
||||
{ wxLANGUAGE_BISLAMA, "bi" , "bi" , "" , 0 , 0 , wxLayout_LeftToRight, "Bislama","Bislama" },
|
||||
{ wxLANGUAGE_BLIN, "byn" , "byn" , "byn_ER" , 0x00, 0x04, wxLayout_LeftToRight, "Blin","\341\211\245\341\210\212\341\212\225" },
|
||||
{ wxLANGUAGE_BLIN_ERITREA, "byn-ER" , "byn_ER" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Blin (Eritrea)","\341\211\245\341\210\212\341\212\225 (\341\212\244\341\210\255\341\211\265\341\210\253)" },
|
||||
{ wxLANGUAGE_BODO, "brx" , "brx" , "brx_IN" , 0x00, 0x04, wxLayout_LeftToRight, "Bodo","\340\244\254\340\244\241\340\244\274\340\245\213" },
|
||||
{ wxLANGUAGE_BODO_INDIA, "brx-IN" , "brx_IN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Bodo (India)","\340\244\254\340\244\241\340\244\274\340\245\213 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_BOSNIAN, "bs" , "bs" , "" , 0x1a, 0x05, wxLayout_LeftToRight, "Bosnian","bosanski" },
|
||||
{ wxLANGUAGE_BOSNIAN_CYRILLIC, "bs-Cyrl" , "bs@cyrillic" , "" , 0x1a, 0x08, wxLayout_LeftToRight, "Bosnian (Cyrillic)","\320\261\320\276\321\201\320\260\320\275\321\201\320\272\320\270 (\320\213\320\270\321\200\320\270\320\273\320\270\321\206\320\260)" },
|
||||
{ wxLANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_AND_HERZEGOVINA, "bs-Cyrl-BA" , "bs_BA@cyrillic" , "" , 0x1a, 0x08, wxLayout_LeftToRight, "Bosnian (Cyrillic, Bosnia and Herzegovina)","\320\261\320\276\321\201\320\260\320\275\321\201\320\272\320\270 (\320\221\320\276\321\201\320\275\320\260 \320\270 \320\245\320\265\321\200\321\206\320\265\320\263\320\276\320\262\320\270\320\275\320\260)" },
|
||||
{ wxLANGUAGE_BOSNIAN_LATIN, "bs-Latn" , "bs@latin" , "" , 0x1a, 0x05, wxLayout_LeftToRight, "Bosnian (Latin)","bosanski (Latinica)" },
|
||||
{ wxLANGUAGE_BOSNIAN_LATIN_BOSNIA_AND_HERZEGOVINA, "bs-Latn-BA" , "bs_BA@latin" , "" , 0x1a, 0x05, wxLayout_LeftToRight, "Bosnian (Latin, Bosnia and Herzegovina)","bosanski (Bosna i Hercegovina)" },
|
||||
{ wxLANGUAGE_BRETON, "br" , "br" , "br_FR" , 0x7e, 0x01, wxLayout_LeftToRight, "Breton","brezhoneg" },
|
||||
{ wxLANGUAGE_BRETON_FRANCE, "br-FR" , "br_FR" , "" , 0x7e, 0x01, wxLayout_LeftToRight, "Breton (France)","brezhoneg (Fra\303\261s)" },
|
||||
{ wxLANGUAGE_BULGARIAN, "bg" , "bg" , "bg_BG" , 0x02, 0x01, wxLayout_LeftToRight, "Bulgarian","\320\261\321\212\320\273\320\263\320\260\321\200\321\201\320\272\320\270" },
|
||||
{ wxLANGUAGE_BULGARIAN_BULGARIA, "bg-BG" , "bg_BG" , "" , 0x02, 0x01, wxLayout_LeftToRight, "Bulgarian (Bulgaria)","\320\261\321\212\320\273\320\263\320\260\321\200\321\201\320\272\320\270 (\320\221\321\212\320\273\320\263\320\260\321\200\320\270\321\217)" },
|
||||
{ wxLANGUAGE_BURMESE, "my" , "my" , "my_MM" , 0x55, 0x01, wxLayout_LeftToRight, "Burmese","\341\200\227\341\200\231\341\200\254" },
|
||||
{ wxLANGUAGE_BURMESE_MYANMAR, "my-MM" , "my_MM" , "" , 0x55, 0x01, wxLayout_LeftToRight, "Burmese (Myanmar)","\341\200\231\341\200\274\341\200\224\341\200\272\341\200\231\341\200\254 (\341\200\231\341\200\274\341\200\224\341\200\272\341\200\231\341\200\254)" },
|
||||
{ wxLANGUAGE_CATALAN, "ca" , "ca" , "ca_ES" , 0x03, 0x01, wxLayout_LeftToRight, "Catalan","catal\303\240" },
|
||||
{ wxLANGUAGE_CATALAN_ANDORRA, "ca-AD" , "ca_AD" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Catalan (Andorra)","catal\303\240 (Andorra)" },
|
||||
{ wxLANGUAGE_CATALAN_FRANCE, "ca-FR" , "ca_FR" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Catalan (France)","catal\303\240 (Fran\303\247a)" },
|
||||
{ wxLANGUAGE_CATALAN_ITALY, "ca-IT" , "ca_IT" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Catalan (Italy)","catal\303\240 (It\303\240lia)" },
|
||||
{ wxLANGUAGE_CATALAN_SPAIN, "ca-ES" , "ca_ES" , "" , 0x03, 0x01, wxLayout_LeftToRight, "Catalan (Catalan)","catal\303\240 (catal\303\240)" },
|
||||
{ wxLANGUAGE_CEBUANO, "ceb" , "ceb" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Cebuano","Binisaya" },
|
||||
{ wxLANGUAGE_CEBUANO_LATIN, "ceb-Latn" , "ceb@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Cebuano (Latin)","Binisaya (Latin)" },
|
||||
{ wxLANGUAGE_CEBUANO_LATIN_PHILIPPINES, "ceb-Latn-PH" , "ceb_PH@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Cebuano (Latin, Philippines)","Binisaya (Pilipinas)" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT, "tzm" , "tzm" , "" , 0x5f, 0x02, wxLayout_LeftToRight, "Central Atlas Tamazight","Tamazi\311\243t n la\341\271\255la\341\271\243" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_ARABIC, "tzm-Arab" , "tzm@arabic" , "" , 0x5f, 0x01, wxLayout_RightToLeft, "Central Atlas Tamazight (Arabic)","\330\247\331\204\330\243\331\205\330\247\330\262\331\212\330\272\331\212\330\251 \331\210\330\263\330\267 \330\247\331\204\330\243\330\267\331\204\330\263" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_ARABIC_MOROCCO, "tzm-Arab-MA" , "tzm_MA@arabic" , "" , 0x5f, 0x01, wxLayout_RightToLeft, "Central Atlas Tamazight (Arabic, Morocco)","\330\247\331\204\330\243\331\205\330\247\330\262\331\212\330\272\331\212\330\251 \331\210\330\263\330\267 \330\247\331\204\330\243\330\267\331\204\330\263 (\330\247\331\204\331\205\330\272\330\261\330\250)" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN, "tzm-Latn" , "tzm@latin" , "" , 0x5f, 0x02, wxLayout_LeftToRight, "Central Atlas Tamazight (Latin)","Tamazi\311\243t n la\341\271\255la\341\271\243 (Latin)" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN_ALGERIA, "tzm-Latn-DZ" , "tzm_DZ@latin" , "" , 0x5f, 0x02, wxLayout_LeftToRight, "Central Atlas Tamazight (Latin, Algeria)","Tamazi\311\243t n la\341\271\255la\341\271\243 (Djaza\303\257r)" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN_MOROCCO, "tzm-Latn-MA" , "tzm_MA@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Central Atlas Tamazight (Latin, Morocco)","Tamazi\311\243t n la\341\271\255la\341\271\243 (Me\341\271\233\341\271\233uk)" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_TIFINAGH, "tzm-Tfng" , "tzm@tifinagh" , "" , 0x5f, 0x04, wxLayout_LeftToRight, "Central Atlas Tamazight (Tifinagh)","Tamazight (Tifinagh)" },
|
||||
{ wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_TIFINAGH_MOROCCO, "tzm-Tfng-MA" , "tzm_MA@tifinagh" , "" , 0x5f, 0x04, wxLayout_LeftToRight, "Central Atlas Tamazight (Tifinagh, Morocco)","\342\265\234\342\264\260\342\265\216\342\264\260\342\265\243\342\265\211\342\265\226\342\265\234 (\342\265\215\342\265\216\342\265\226\342\265\224\342\265\211\342\264\261)" },
|
||||
{ wxLANGUAGE_CENTRAL_KURDISH, "ku" , "ku" , "" , 0x92, 0x01, wxLayout_RightToLeft, "Central Kurdish","\332\251\331\210\330\261\330\257\333\214\333\214 \331\206\330\247\331\210\333\225\332\225\330\247\330\263\330\252" },
|
||||
{ wxLANGUAGE_CENTRAL_KURDISH_ARABIC, "ku-Arab" , "ku@arabic" , "" , 0x92, 0x01, wxLayout_RightToLeft, "Central Kurdish","\332\251\331\210\330\261\330\257\333\214\333\214 \331\206\330\247\331\210\333\225\332\225\330\247\330\263\330\252" },
|
||||
{ wxLANGUAGE_CENTRAL_KURDISH_ARABIC_IRAQ, "ku-Arab-IQ" , "ku_IQ@arabic" , "" , 0x92, 0x01, wxLayout_RightToLeft, "Central Kurdish (Iraq)","\332\251\331\210\330\261\330\257\333\214\333\214 \331\206\330\247\331\210\333\225\332\225\330\247\330\263\330\252 (\330\271\333\216\330\261\330\247\331\202)" },
|
||||
{ wxLANGUAGE_CHAKMA, "ccp" , "ccp" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chakma","\360\221\204\214\360\221\204\213\360\221\204\264\360\221\204\237\360\221\204\263\360\221\204\246" },
|
||||
{ wxLANGUAGE_CHAKMA_CHAKMA, "ccp-Cakm" , "ccp@chakma" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chakma (Chakma)","\360\221\204\214\360\221\204\213\360\221\204\264\360\221\204\237\360\221\204\263\360\221\204\246 (\360\221\204\214\360\221\204\207\360\221\204\264\360\221\204\237)" },
|
||||
{ wxLANGUAGE_CHAKMA_CHAKMA_BANGLADESH, "ccp-Cakm-BD" , "ccp_BD@chakma" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chakma (Chakma, Bangladesh)","\360\221\204\214\360\221\204\213\360\221\204\264\360\221\204\237\360\221\204\263\360\221\204\246 (\360\221\204\235\360\221\204\201\360\221\204\243\360\221\204\230\360\221\204\254\360\221\204\214\360\221\204\264)" },
|
||||
{ wxLANGUAGE_CHAKMA_CHAKMA_INDIA, "ccp-Cakm-IN" , "ccp_IN@chakma" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chakma (Chakma, India)","\360\221\204\214\360\221\204\213\360\221\204\264\360\221\204\237\360\221\204\263\360\221\204\246 (\360\221\204\236\360\221\204\242\360\221\204\247\360\221\204\226\360\221\204\264)" },
|
||||
{ wxLANGUAGE_CHECHEN, "ce" , "ce" , "ce_RU" , 0x00, 0x04, wxLayout_LeftToRight, "Chechen","\320\275\320\276\321\205\321\207\320\270\320\271\320\275" },
|
||||
{ wxLANGUAGE_CHECHEN_RUSSIA, "ce-RU" , "ce_RU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chechen (Russia)","\320\275\320\276\321\205\321\207\320\270\320\271\320\275 (\320\240\320\276\321\201\321\201\320\270)" },
|
||||
{ wxLANGUAGE_CHEROKEE, "chr" , "chr" , "" , 0x5c, 0x01, wxLayout_LeftToRight, "Cherokee","\341\217\243\341\216\263\341\216\251" },
|
||||
{ wxLANGUAGE_CHEROKEE_CHEROKEE, "chr-Cher" , "chr@cherokee" , "" , 0x5c, 0x01, wxLayout_LeftToRight, "Cherokee","\341\217\243\341\216\263\341\216\251" },
|
||||
{ wxLANGUAGE_CHEROKEE_US, "chr-Cher-US" , "chr_US@cherokee" , "" , 0x5c, 0x01, wxLayout_LeftToRight, "Cherokee (Cherokee, United States)","\341\217\243\341\216\263\341\216\251 (\341\217\214\341\217\212 \341\216\242\341\217\263\341\216\276\341\216\265\341\217\215\341\217\224\341\217\205 \341\217\215\341\216\246\341\217\232\341\216\251)" },
|
||||
{ wxLANGUAGE_CHIGA, "cgg" , "cgg" , "cgg_UG" , 0x00, 0x04, wxLayout_LeftToRight, "Chiga","Rukiga" },
|
||||
{ wxLANGUAGE_CHIGA_UGANDA, "cgg-UG" , "cgg_UG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chiga (Uganda)","Rukiga (Uganda)" },
|
||||
{ wxLANGUAGE_CHINESE, "zh" , "zh" , "zh_TW" , 0x04, 0x01, wxLayout_LeftToRight, "Chinese","\344\270\255\346\226\207" },
|
||||
{ wxLANGUAGE_CHINESE_CHINA, "zh-CN" , "zh_CN" , "" , 0x04, 0x02, wxLayout_LeftToRight, "Chinese (Simplified, China)","\344\270\255\346\226\207(\344\270\255\345\233\275)" },
|
||||
{ wxLANGUAGE_CHINESE_HONGKONG, "zh-HK" , "zh_HK" , "" , 0x04, 0x03, wxLayout_LeftToRight, "Chinese (Traditional, Hong Kong SAR)","\344\270\255\346\226\207(\351\246\231\346\270\257\347\211\271\345\210\245\350\241\214\346\224\277\345\215\200)" },
|
||||
{ wxLANGUAGE_CHINESE_MACAO, "zh-MO" , "zh_MO" , "" , 0x04, 0x05, wxLayout_LeftToRight, "Chinese (Traditional, Macao SAR)","\344\270\255\346\226\207(\346\276\263\351\226\200\347\211\271\345\210\245\350\241\214\346\224\277\345\215\200)" },
|
||||
{ wxLANGUAGE_CHINESE_SIMPLIFIED_EXPLICIT, "zh-Hans" , "zh@Hans" , "zh_CN" , 0x04, 0x02, wxLayout_LeftToRight, "Chinese (Simplified)","\344\270\255\346\226\207(\347\256\200\344\275\223)" },
|
||||
{ wxLANGUAGE_CHINESE_SIMPLIFIED_HONGKONG, "zh-Hans-HK" , "zh_HK@Hans" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chinese (Simplified, Hong Kong SAR)","\344\270\255\346\226\207 (\351\246\231\346\270\257\347\211\271\345\210\253\350\241\214\346\224\277\345\214\272)" },
|
||||
{ wxLANGUAGE_CHINESE_SIMPLIFIED_MACAO, "zh-Hans-MO" , "zh_MO@Hans" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Chinese (Simplified, Macao SAR)","\344\270\255\346\226\207 (\346\276\263\351\227\250\347\211\271\345\210\253\350\241\214\346\224\277\345\214\272)" },
|
||||
{ wxLANGUAGE_CHINESE_SINGAPORE, "zh-SG" , "zh_SG" , "" , 0x04, 0x04, wxLayout_LeftToRight, "Chinese (Simplified, Singapore)","\344\270\255\346\226\207(\346\226\260\345\212\240\345\235\241)" },
|
||||
{ wxLANGUAGE_CHINESE_TAIWAN, "zh-TW" , "zh_TW" , "" , 0x04, 0x01, wxLayout_LeftToRight, "Chinese (Traditional, Taiwan)","\344\270\255\346\226\207(\345\217\260\347\201\243)" },
|
||||
{ wxLANGUAGE_CHINESE_TRADITIONAL_EXPLICIT, "zh-Hant" , "zh@Hant" , "zh_TW" , 0x04, 0x01, wxLayout_LeftToRight, "Chinese (Traditional)","\344\270\255\346\226\207(\347\271\201\351\253\224)" },
|
||||
{ wxLANGUAGE_CHURCH_SLAVIC, "cu" , "cu" , "cu_RU" , 0x00, 0x04, wxLayout_LeftToRight, "Church Slavic","\321\206\320\265\321\200\320\272\320\276\320\262\320\275\320\276\321\201\320\273\320\276\320\262\320\265\314\201\320\275\321\201\320\272\321\227\320\271" },
|
||||
{ wxLANGUAGE_CHURCH_SLAVIC_RUSSIA, "cu-RU" , "cu_RU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Church Slavic (Russia)","\321\206\320\265\321\200\320\272\320\276\320\262\320\275\320\276\321\201\320\273\320\276\320\262\320\265\314\201\320\275\321\201\320\272\321\227\320\271 (\321\200\321\241\321\201\321\201\321\226\314\201\320\260)" },
|
||||
{ wxLANGUAGE_COLOGNIAN, "ksh" , "ksh" , "ksh_DE" , 0x00, 0x04, wxLayout_LeftToRight, "Colognian","K\303\266lsch" },
|
||||
{ wxLANGUAGE_COLOGNIAN_GERMANY, "ksh-DE" , "ksh_DE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Colognian (Germany)","K\303\266lsch (Do\303\274tschland)" },
|
||||
{ wxLANGUAGE_CORNISH, "kw" , "kw" , "kw_GB" , 0x00, 0x04, wxLayout_LeftToRight, "Cornish","kernewek" },
|
||||
{ wxLANGUAGE_CORNISH_UK, "kw-GB" , "kw_GB" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Cornish (United Kingdom)","kernewek (Rywvaneth Unys)" },
|
||||
{ wxLANGUAGE_CORSICAN, "co" , "co" , "co_FR" , 0x83, 0x01, wxLayout_LeftToRight, "Corsican","corsu" },
|
||||
{ wxLANGUAGE_CORSICAN_FRANCE, "co-FR" , "co_FR" , "" , 0x83, 0x01, wxLayout_LeftToRight, "Corsican (France)","Corsu (Francia)" },
|
||||
{ wxLANGUAGE_CROATIAN, "hr" , "hr" , "hr_HR" , 0x1a, 0x01, wxLayout_LeftToRight, "Croatian","hrvatski" },
|
||||
{ wxLANGUAGE_CROATIAN_BOSNIA_AND_HERZEGOVINA, "hr-BA" , "hr_BA" , "" , 0x1a, 0x04, wxLayout_LeftToRight, "Croatian (Bosnia and Herzegovina)","hrvatski (Bosna i Hercegovina)" },
|
||||
{ wxLANGUAGE_CROATIAN_CROATIA, "hr-HR" , "hr_HR" , "" , 0x1a, 0x01, wxLayout_LeftToRight, "Croatian (Croatia)","hrvatski (Hrvatska)" },
|
||||
{ wxLANGUAGE_CZECH, "cs" , "cs" , "cs_CZ" , 0x05, 0x01, wxLayout_LeftToRight, "Czech","\304\215e\305\241tina" },
|
||||
{ wxLANGUAGE_CZECH_CZECHIA, "cs-CZ" , "cs_CZ" , "" , 0x05, 0x01, wxLayout_LeftToRight, "Czech (Czechia)","\304\215e\305\241tina (\304\214esko)" },
|
||||
{ wxLANGUAGE_DANISH, "da" , "da" , "da_DK" , 0x06, 0x01, wxLayout_LeftToRight, "Danish","dansk" },
|
||||
{ wxLANGUAGE_DANISH_DENMARK, "da-DK" , "da_DK" , "" , 0x06, 0x01, wxLayout_LeftToRight, "Danish (Denmark)","dansk (Danmark)" },
|
||||
{ wxLANGUAGE_DANISH_GREENLAND, "da-GL" , "da_GL" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Danish (Greenland)","dansk (Gr\303\270nland)" },
|
||||
{ wxLANGUAGE_DIVEHI, "dv" , "dv" , "dv_MV" , 0x65, 0x01, wxLayout_RightToLeft, "Divehi","\336\213\336\250\336\210\336\254\336\200\336\250\336\204\336\246\336\220\336\260" },
|
||||
{ wxLANGUAGE_DIVEHI_MALDIVES, "dv-MV" , "dv_MV" , "" , 0x65, 0x01, wxLayout_RightToLeft, "Divehi (Maldives)","\336\213\336\250\336\210\336\254\336\200\336\250\336\204\336\246\336\220\336\260 (\336\213\336\250\336\210\336\254\336\200\336\250 \336\203\336\247\336\207\336\260\336\226\336\254)" },
|
||||
{ wxLANGUAGE_DOGRI, "doi" , "doi" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dogri","\340\244\241\340\245\213\340\244\227\340\244\260\340\245\200" },
|
||||
{ wxLANGUAGE_DOGRI_DEVANAGARI, "doi-Deva" , "doi@devanagari" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dogri (Devanagari)","\340\244\241\340\245\213\340\244\227\340\244\260\340\245\200 (\340\244\246\340\245\207\340\244\265\340\244\250\340\244\276\340\244\227\340\244\260\340\245\200)" },
|
||||
{ wxLANGUAGE_DOGRI_DEVANAGARI_INDIA, "doi-Deva-IN" , "doi_IN@devanagari" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dogri (Devanagari, India)","\340\244\241\340\245\213\340\244\227\340\244\260\340\245\200 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_DUALA, "dua" , "dua" , "dua_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Duala","du\303\241l\303\241" },
|
||||
{ wxLANGUAGE_DUALA_CAMEROON, "dua-CM" , "dua_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Duala (Cameroon)","du\303\241l\303\241 (Cameroun)" },
|
||||
{ wxLANGUAGE_DUTCH, "nl" , "nl" , "nl_NL" , 0x13, 0x01, wxLayout_LeftToRight, "Dutch","Nederlands" },
|
||||
{ wxLANGUAGE_DUTCH_ARUBA, "nl-AW" , "nl_AW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dutch (Aruba)","Nederlands (Aruba)" },
|
||||
{ wxLANGUAGE_DUTCH_BELGIAN, "nl-BE" , "nl_BE" , "" , 0x13, 0x02, wxLayout_LeftToRight, "Dutch (Belgium)","Nederlands (Belgi\303\253)" },
|
||||
{ wxLANGUAGE_DUTCH_BONAIRE_SINT_EUSTATIUS_AND_SABA, "nl-BQ" , "nl_BQ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dutch (Bonaire, Sint Eustatius and Saba)","Nederlands (Bonaire, Sint Eustatius en Saba)" },
|
||||
{ wxLANGUAGE_DUTCH_CURACAO, "nl-CW" , "nl_CW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dutch (Cura\303\247ao)","Nederlands (Cura\303\247ao)" },
|
||||
{ wxLANGUAGE_DUTCH_NETHERLANDS, "nl-NL" , "nl_NL" , "" , 0x13, 0x01, wxLayout_LeftToRight, "Dutch (Netherlands)","Nederlands (Nederland)" },
|
||||
{ wxLANGUAGE_DUTCH_SINT_MAARTEN, "nl-SX" , "nl_SX" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dutch (Sint Maarten)","Nederlands (Sint-Maarten)" },
|
||||
{ wxLANGUAGE_DUTCH_SURINAME, "nl-SR" , "nl_SR" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Dutch (Suriname)","Nederlands (Suriname)" },
|
||||
{ wxLANGUAGE_DZONGKHA, "dz" , "dz" , "dz_BT" , 0x51, 0x03, wxLayout_LeftToRight, "Dzongkha","\340\275\242\340\276\253\340\275\274\340\275\204\340\274\213\340\275\201" },
|
||||
{ wxLANGUAGE_DZONGKHA_BHUTAN, "dz-BT" , "dz_BT" , "" , 0x51, 0x03, wxLayout_LeftToRight, "Dzongkha (Bhutan)","\340\275\242\340\276\253\340\275\274\340\275\204\340\274\213\340\275\201 (\340\275\240\340\275\226\340\276\262\340\275\264\340\275\202)" },
|
||||
{ wxLANGUAGE_EDO, "bin" , "bin" , "bin_NG" , 0x66, 0x01, wxLayout_LeftToRight, "Edo","\341\272\270\314\200d\303\263" },
|
||||
{ wxLANGUAGE_EDO_NIGERIA, "bin-NG" , "bin_NG" , "" , 0x66, 0x01, wxLayout_LeftToRight, "Edo (Nigeria)","\341\272\270\314\200d\303\263 (Nigeria)" },
|
||||
{ wxLANGUAGE_EMBU, "ebu" , "ebu" , "ebu_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Embu","K\304\251embu" },
|
||||
{ wxLANGUAGE_EMBU_KENYA, "ebu-KE" , "ebu_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Embu (Kenya)","K\304\251embu (Kenya)" },
|
||||
{ wxLANGUAGE_ENGLISH, "en" , "en" , "en_GB" , 0x09, 0x02, wxLayout_LeftToRight, "English","English" },
|
||||
{ wxLANGUAGE_ENGLISH_AMERICAN_SAMOA, "en-AS" , "en_AS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (American Samoa)","English (American Samoa)" },
|
||||
{ wxLANGUAGE_ENGLISH_ANGUILLA, "en-AI" , "en_AI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Anguilla)","English (Anguilla)" },
|
||||
{ wxLANGUAGE_ENGLISH_ANTIGUA_AND_BARBUDA, "en-AG" , "en_AG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Antigua and Barbuda)","English (Antigua & Barbuda)" },
|
||||
{ wxLANGUAGE_ENGLISH_AUSTRALIA, "en-AU" , "en_AU" , "" , 0x09, 0x03, wxLayout_LeftToRight, "English (Australia)","English (Australia)" },
|
||||
{ wxLANGUAGE_ENGLISH_AUSTRIA, "en-AT" , "en_AT" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Austria)","English (Austria)" },
|
||||
{ wxLANGUAGE_ENGLISH_BAHAMAS, "en-BS" , "en_BS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Bahamas)","English (Bahamas)" },
|
||||
{ wxLANGUAGE_ENGLISH_BARBADOS, "en-BB" , "en_BB" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Barbados)","English (Barbados)" },
|
||||
{ wxLANGUAGE_ENGLISH_BELGIUM, "en-BE" , "en_BE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Belgium)","English (Belgium)" },
|
||||
{ wxLANGUAGE_ENGLISH_BELIZE, "en-BZ" , "en_BZ" , "" , 0x09, 0x0a, wxLayout_LeftToRight, "English (Belize)","English (Belize)" },
|
||||
{ wxLANGUAGE_ENGLISH_BERMUDA, "en-BM" , "en_BM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Bermuda)","English (Bermuda)" },
|
||||
{ wxLANGUAGE_ENGLISH_BOTSWANA, "en-BW" , "en_BW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Botswana)","English (Botswana)" },
|
||||
{ wxLANGUAGE_ENGLISH_BRITISH_INDIAN_OCEAN_TERRITORY, "en-IO" , "en_IO" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (British Indian Ocean Territory)","English (British Indian Ocean Territory)" },
|
||||
{ wxLANGUAGE_ENGLISH_BRITISH_VIRGIN_ISLANDS, "en-VG" , "en_VG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (British Virgin Islands)","English (British Virgin Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_BURUNDI, "en-BI" , "en_BI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Burundi)","English (Burundi)" },
|
||||
{ wxLANGUAGE_ENGLISH_CAMEROON, "en-CM" , "en_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Cameroon)","English (Cameroon)" },
|
||||
{ wxLANGUAGE_ENGLISH_CANADA, "en-CA" , "en_CA" , "" , 0x09, 0x04, wxLayout_LeftToRight, "English (Canada)","English (Canada)" },
|
||||
{ wxLANGUAGE_ENGLISH_CARIBBEAN, "en-029" , "en_029" , "en_CB" , 0x09, 0x09, wxLayout_LeftToRight, "English (Caribbean)","English (Caribbean)" },
|
||||
{ wxLANGUAGE_ENGLISH_CARIBBEAN_CB, "en-CB" , "en_CB" , "" , 0x09, 0x09, wxLayout_LeftToRight, "English (Caribbean)","English (Caribbean)" },
|
||||
{ wxLANGUAGE_ENGLISH_CAYMAN_ISLANDS, "en-KY" , "en_KY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Cayman Islands)","English (Cayman Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_CHRISTMAS_ISLAND, "en-CX" , "en_CX" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Christmas Island)","English (Christmas Island)" },
|
||||
{ wxLANGUAGE_ENGLISH_COCOS_KEELING_ISLANDS, "en-CC" , "en_CC" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Cocos (Keeling) Islands)","English (Cocos (Keeling) Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_COOK_ISLANDS, "en-CK" , "en_CK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Cook Islands)","English (Cook Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_CYPRUS, "en-CY" , "en_CY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Cyprus)","English (Cyprus)" },
|
||||
{ wxLANGUAGE_ENGLISH_DENMARK, "en-DK" , "en_DK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Denmark)","English (Denmark)" },
|
||||
{ wxLANGUAGE_ENGLISH_DOMINICA, "en-DM" , "en_DM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Dominica)","English (Dominica)" },
|
||||
{ wxLANGUAGE_ENGLISH_EIRE, "en-IE" , "en_IE" , "" , 0x09, 0x06, wxLayout_LeftToRight, "English (Ireland)","English (Ireland)" },
|
||||
{ wxLANGUAGE_ENGLISH_ERITREA, "en-ER" , "en_ER" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Eritrea)","English (Eritrea)" },
|
||||
{ wxLANGUAGE_ENGLISH_ESWATINI, "en-SZ" , "en_SZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Eswatini)","English (Eswatini)" },
|
||||
{ wxLANGUAGE_ENGLISH_EUROPE, "en-150" , "en_150" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Europe)","English (Europe)" },
|
||||
{ wxLANGUAGE_ENGLISH_FALKLAND_ISLANDS, "en-FK" , "en_FK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Falkland Islands)","English (Falkland Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_FIJI, "en-FJ" , "en_FJ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Fiji)","English (Fiji)" },
|
||||
{ wxLANGUAGE_ENGLISH_FINLAND, "en-FI" , "en_FI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Finland)","English (Finland)" },
|
||||
{ wxLANGUAGE_ENGLISH_GAMBIA, "en-GM" , "en_GM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Gambia)","English (Gambia)" },
|
||||
{ wxLANGUAGE_ENGLISH_GERMANY, "en-DE" , "en_DE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Germany)","English (Germany)" },
|
||||
{ wxLANGUAGE_ENGLISH_GHANA, "en-GH" , "en_GH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Ghana)","English (Ghana)" },
|
||||
{ wxLANGUAGE_ENGLISH_GIBRALTAR, "en-GI" , "en_GI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Gibraltar)","English (Gibraltar)" },
|
||||
{ wxLANGUAGE_ENGLISH_GRENADA, "en-GD" , "en_GD" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Grenada)","English (Grenada)" },
|
||||
{ wxLANGUAGE_ENGLISH_GUAM, "en-GU" , "en_GU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Guam)","English (Guam)" },
|
||||
{ wxLANGUAGE_ENGLISH_GUERNSEY, "en-GG" , "en_GG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Guernsey)","English (Guernsey)" },
|
||||
{ wxLANGUAGE_ENGLISH_GUYANA, "en-GY" , "en_GY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Guyana)","English (Guyana)" },
|
||||
{ wxLANGUAGE_ENGLISH_HONG_KONG_SAR, "en-HK" , "en_HK" , "" , 0x09, 0x0f, wxLayout_LeftToRight, "English (Hong Kong SAR)","English (Hong Kong SAR)" },
|
||||
{ wxLANGUAGE_ENGLISH_INDIA, "en-IN" , "en_IN" , "" , 0x09, 0x10, wxLayout_LeftToRight, "English (India)","English (India)" },
|
||||
{ wxLANGUAGE_ENGLISH_INDONESIA, "en-ID" , "en_ID" , "" , 0x09, 0x0e, wxLayout_LeftToRight, "English (Indonesia)","English (Indonesia)" },
|
||||
{ wxLANGUAGE_ENGLISH_ISLE_OF_MAN, "en-IM" , "en_IM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Isle of Man)","English (Isle of Man)" },
|
||||
{ wxLANGUAGE_ENGLISH_ISRAEL, "en-IL" , "en_IL" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Israel)","English (Israel)" },
|
||||
{ wxLANGUAGE_ENGLISH_JAMAICA, "en-JM" , "en_JM" , "" , 0x09, 0x08, wxLayout_LeftToRight, "English (Jamaica)","English (Jamaica)" },
|
||||
{ wxLANGUAGE_ENGLISH_JERSEY, "en-JE" , "en_JE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Jersey)","English (Jersey)" },
|
||||
{ wxLANGUAGE_ENGLISH_KENYA, "en-KE" , "en_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Kenya)","English (Kenya)" },
|
||||
{ wxLANGUAGE_ENGLISH_KIRIBATI, "en-KI" , "en_KI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Kiribati)","English (Kiribati)" },
|
||||
{ wxLANGUAGE_ENGLISH_LESOTHO, "en-LS" , "en_LS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Lesotho)","English (Lesotho)" },
|
||||
{ wxLANGUAGE_ENGLISH_LIBERIA, "en-LR" , "en_LR" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Liberia)","English (Liberia)" },
|
||||
{ wxLANGUAGE_ENGLISH_MACAO_SAR, "en-MO" , "en_MO" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Macao SAR)","English (Macao SAR)" },
|
||||
{ wxLANGUAGE_ENGLISH_MADAGASCAR, "en-MG" , "en_MG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Madagascar)","English (Madagascar)" },
|
||||
{ wxLANGUAGE_ENGLISH_MALAWI, "en-MW" , "en_MW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Malawi)","English (Malawi)" },
|
||||
{ wxLANGUAGE_ENGLISH_MALAYSIA, "en-MY" , "en_MY" , "" , 0x09, 0x11, wxLayout_LeftToRight, "English (Malaysia)","English (Malaysia)" },
|
||||
{ wxLANGUAGE_ENGLISH_MALTA, "en-MT" , "en_MT" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Malta)","English (Malta)" },
|
||||
{ wxLANGUAGE_ENGLISH_MARSHALL_ISLANDS, "en-MH" , "en_MH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Marshall Islands)","English (Marshall Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_MAURITIUS, "en-MU" , "en_MU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Mauritius)","English (Mauritius)" },
|
||||
{ wxLANGUAGE_ENGLISH_MICRONESIA, "en-FM" , "en_FM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Micronesia)","English (Micronesia)" },
|
||||
{ wxLANGUAGE_ENGLISH_MONTSERRAT, "en-MS" , "en_MS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Montserrat)","English (Montserrat)" },
|
||||
{ wxLANGUAGE_ENGLISH_NAMIBIA, "en-NA" , "en_NA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Namibia)","English (Namibia)" },
|
||||
{ wxLANGUAGE_ENGLISH_NAURU, "en-NR" , "en_NR" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Nauru)","English (Nauru)" },
|
||||
{ wxLANGUAGE_ENGLISH_NETHERLANDS, "en-NL" , "en_NL" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Netherlands)","English (Netherlands)" },
|
||||
{ wxLANGUAGE_ENGLISH_NEW_ZEALAND, "en-NZ" , "en_NZ" , "" , 0x09, 0x05, wxLayout_LeftToRight, "English (New Zealand)","English (New Zealand)" },
|
||||
{ wxLANGUAGE_ENGLISH_NIGERIA, "en-NG" , "en_NG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Nigeria)","English (Nigeria)" },
|
||||
{ wxLANGUAGE_ENGLISH_NIUE, "en-NU" , "en_NU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Niue)","English (Niue)" },
|
||||
{ wxLANGUAGE_ENGLISH_NORFOLK_ISLAND, "en-NF" , "en_NF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Norfolk Island)","English (Norfolk Island)" },
|
||||
{ wxLANGUAGE_ENGLISH_NORTHERN_MARIANA_ISLANDS, "en-MP" , "en_MP" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Northern Mariana Islands)","English (Northern Mariana Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_PAKISTAN, "en-PK" , "en_PK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Pakistan)","English (Pakistan)" },
|
||||
{ wxLANGUAGE_ENGLISH_PALAU, "en-PW" , "en_PW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Palau)","English (Palau)" },
|
||||
{ wxLANGUAGE_ENGLISH_PAPUA_NEW_GUINEA, "en-PG" , "en_PG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Papua New Guinea)","English (Papua New Guinea)" },
|
||||
{ wxLANGUAGE_ENGLISH_PHILIPPINES, "en-PH" , "en_PH" , "" , 0x09, 0x0d, wxLayout_LeftToRight, "English (Philippines)","English (Philippines)" },
|
||||
{ wxLANGUAGE_ENGLISH_PITCAIRN_ISLANDS, "en-PN" , "en_PN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Pitcairn Islands)","English (Pitcairn Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_PUERTO_RICO, "en-PR" , "en_PR" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Puerto Rico)","English (Puerto Rico)" },
|
||||
{ wxLANGUAGE_ENGLISH_RWANDA, "en-RW" , "en_RW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Rwanda)","English (Rwanda)" },
|
||||
{ wxLANGUAGE_ENGLISH_SAMOA, "en-WS" , "en_WS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Samoa)","English (Samoa)" },
|
||||
{ wxLANGUAGE_ENGLISH_SEYCHELLES, "en-SC" , "en_SC" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Seychelles)","English (Seychelles)" },
|
||||
{ wxLANGUAGE_ENGLISH_SIERRA_LEONE, "en-SL" , "en_SL" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Sierra Leone)","English (Sierra Leone)" },
|
||||
{ wxLANGUAGE_ENGLISH_SINGAPORE, "en-SG" , "en_SG" , "" , 0x09, 0x12, wxLayout_LeftToRight, "English (Singapore)","English (Singapore)" },
|
||||
{ wxLANGUAGE_ENGLISH_SINT_MAARTEN, "en-SX" , "en_SX" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Sint Maarten)","English (Sint Maarten)" },
|
||||
{ wxLANGUAGE_ENGLISH_SLOVENIA, "en-SI" , "en_SI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Slovenia)","English (Slovenia)" },
|
||||
{ wxLANGUAGE_ENGLISH_SOLOMON_ISLANDS, "en-SB" , "en_SB" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Solomon Islands)","English (Solomon Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_SOUTH_AFRICA, "en-ZA" , "en_ZA" , "" , 0x09, 0x07, wxLayout_LeftToRight, "English (South Africa)","English (South Africa)" },
|
||||
{ wxLANGUAGE_ENGLISH_SOUTH_SUDAN, "en-SS" , "en_SS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (South Sudan)","English (South Sudan)" },
|
||||
{ wxLANGUAGE_ENGLISH_ST_HELENA_ASCENSION_TRISTAN_DA_CUNHA, "en-SH" , "en_SH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (St Helena, Ascension, Tristan da Cunha)","English (St Helena, Ascension, Tristan da Cunha)" },
|
||||
{ wxLANGUAGE_ENGLISH_ST_KITTS_AND_NEVIS, "en-KN" , "en_KN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (St. Kitts and Nevis)","English (St. Kitts & Nevis)" },
|
||||
{ wxLANGUAGE_ENGLISH_ST_LUCIA, "en-LC" , "en_LC" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (St. Lucia)","English (St. Lucia)" },
|
||||
{ wxLANGUAGE_ENGLISH_ST_VINCENT_AND_GRENADINES, "en-VC" , "en_VC" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (St. Vincent and Grenadines)","English (St. Vincent & Grenadines)" },
|
||||
{ wxLANGUAGE_ENGLISH_SUDAN, "en-SD" , "en_SD" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Sudan)","English (Sudan)" },
|
||||
{ wxLANGUAGE_ENGLISH_SWEDEN, "en-SE" , "en_SE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Sweden)","English (Sweden)" },
|
||||
{ wxLANGUAGE_ENGLISH_SWITZERLAND, "en-CH" , "en_CH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Switzerland)","English (Switzerland)" },
|
||||
{ wxLANGUAGE_ENGLISH_TANZANIA, "en-TZ" , "en_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Tanzania)","English (Tanzania)" },
|
||||
{ wxLANGUAGE_ENGLISH_TOKELAU, "en-TK" , "en_TK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Tokelau)","English (Tokelau)" },
|
||||
{ wxLANGUAGE_ENGLISH_TONGA, "en-TO" , "en_TO" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Tonga)","English (Tonga)" },
|
||||
{ wxLANGUAGE_ENGLISH_TRINIDAD, "en-TT" , "en_TT" , "" , 0x09, 0x0b, wxLayout_LeftToRight, "English (Trinidad and Tobago)","English (Trinidad & Tobago)" },
|
||||
{ wxLANGUAGE_ENGLISH_TURKS_AND_CAICOS_ISLANDS, "en-TC" , "en_TC" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Turks and Caicos Islands)","English (Turks & Caicos Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_TUVALU, "en-TV" , "en_TV" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Tuvalu)","English (Tuvalu)" },
|
||||
{ wxLANGUAGE_ENGLISH_UGANDA, "en-UG" , "en_UG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Uganda)","English (Uganda)" },
|
||||
{ wxLANGUAGE_ENGLISH_UK, "en-GB" , "en_GB" , "" , 0x09, 0x02, wxLayout_LeftToRight, "English (United Kingdom)","English (United Kingdom)" },
|
||||
{ wxLANGUAGE_ENGLISH_UNITED_ARAB_EMIRATES, "en-AE" , "en_AE" , "" , 0x09, 0x13, wxLayout_LeftToRight, "English (United Arab Emirates)","English (United Arab Emirates)" },
|
||||
{ wxLANGUAGE_ENGLISH_US, "en-US" , "en_US" , "" , 0x09, 0x01, wxLayout_LeftToRight, "English (United States)","English (United States)" },
|
||||
{ wxLANGUAGE_ENGLISH_US_OUTLYING_ISLANDS, "en-UM" , "en_UM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (U.S. Outlying Islands)","English (U.S. Outlying Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_US_VIRGIN_ISLANDS, "en-VI" , "en_VI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (U.S. Virgin Islands)","English (U.S. Virgin Islands)" },
|
||||
{ wxLANGUAGE_ENGLISH_VANUATU, "en-VU" , "en_VU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Vanuatu)","English (Vanuatu)" },
|
||||
{ wxLANGUAGE_ENGLISH_WORLD, "en-001" , "en_001" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (World)","English (World)" },
|
||||
{ wxLANGUAGE_ENGLISH_ZAMBIA, "en-ZM" , "en_ZM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "English (Zambia)","English (Zambia)" },
|
||||
{ wxLANGUAGE_ENGLISH_ZIMBABWE, "en-ZW" , "en_ZW" , "" , 0x09, 0x0c, wxLayout_LeftToRight, "English (Zimbabwe)","English (Zimbabwe)" },
|
||||
{ wxLANGUAGE_ESPERANTO, "eo" , "eo" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Esperanto","esperanto" },
|
||||
{ wxLANGUAGE_ESPERANTO_WORLD, "eo-001" , "eo_001" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Esperanto (World)","esperanto (Mondo)" },
|
||||
{ wxLANGUAGE_ESTONIAN, "et" , "et" , "et_EE" , 0x25, 0x01, wxLayout_LeftToRight, "Estonian","eesti" },
|
||||
{ wxLANGUAGE_ESTONIAN_ESTONIA, "et-EE" , "et_EE" , "" , 0x25, 0x01, wxLayout_LeftToRight, "Estonian (Estonia)","eesti (Eesti)" },
|
||||
{ wxLANGUAGE_EWE, "ee" , "ee" , "ee_GH" , 0x00, 0x04, wxLayout_LeftToRight, "Ewe","E\312\213egbe" },
|
||||
{ wxLANGUAGE_EWE_GHANA, "ee-GH" , "ee_GH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ewe (Ghana)","E\312\213egbe (Ghana nutome)" },
|
||||
{ wxLANGUAGE_EWE_TOGO, "ee-TG" , "ee_TG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ewe (Togo)","E\312\213egbe (Togo nutome)" },
|
||||
{ wxLANGUAGE_EWONDO, "ewo" , "ewo" , "ewo_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Ewondo","ewondo" },
|
||||
{ wxLANGUAGE_EWONDO_CAMEROON, "ewo-CM" , "ewo_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ewondo (Cameroon)","ewondo (Kam\311\231r\303\272n)" },
|
||||
{ wxLANGUAGE_FAEROESE, "fo" , "fo" , "fo_FO" , 0x38, 0x01, wxLayout_LeftToRight, "Faroese","f\303\270royskt" },
|
||||
{ wxLANGUAGE_FAEROESE_DENMARK, "fo-DK" , "fo_DK" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Faroese (Denmark)","f\303\270royskt (Danmark)" },
|
||||
{ wxLANGUAGE_FAEROESE_FAROE_ISLANDS, "fo-FO" , "fo_FO" , "" , 0x38, 0x01, wxLayout_LeftToRight, "Faroese (Faroe Islands)","f\303\270royskt (F\303\270royar)" },
|
||||
{ wxLANGUAGE_FIJI, "fj" , "fj" , "" , 0 , 0 , wxLayout_LeftToRight, "Fiji","Na Vosa Vakaviti" },
|
||||
{ wxLANGUAGE_FILIPINO, "fil" , "fil" , "fil_PH" , 0x64, 0x01, wxLayout_LeftToRight, "Filipino","Filipino" },
|
||||
{ wxLANGUAGE_FILIPINO_PHILIPPINES, "fil-PH" , "fil_PH" , "" , 0x64, 0x01, wxLayout_LeftToRight, "Filipino (Philippines)","Filipino (Pilipinas)" },
|
||||
{ wxLANGUAGE_FINNISH, "fi" , "fi" , "fi_FI" , 0x0b, 0x01, wxLayout_LeftToRight, "Finnish","suomi" },
|
||||
{ wxLANGUAGE_FINNISH_FINLAND, "fi-FI" , "fi_FI" , "" , 0x0b, 0x01, wxLayout_LeftToRight, "Finnish (Finland)","suomi (Suomi)" },
|
||||
{ wxLANGUAGE_FRENCH, "fr" , "fr" , "fr_FR" , 0x0c, 0x01, wxLayout_LeftToRight, "French","fran\303\247ais" },
|
||||
{ wxLANGUAGE_FRENCH_ALGERIA, "fr-DZ" , "fr_DZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Algeria)","fran\303\247ais (Alg\303\251rie)" },
|
||||
{ wxLANGUAGE_FRENCH_BELGIAN, "fr-BE" , "fr_BE" , "" , 0x0c, 0x02, wxLayout_LeftToRight, "French (Belgium)","fran\303\247ais (Belgique)" },
|
||||
{ wxLANGUAGE_FRENCH_BENIN, "fr-BJ" , "fr_BJ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Benin)","fran\303\247ais (B\303\251nin)" },
|
||||
{ wxLANGUAGE_FRENCH_BURKINA_FASO, "fr-BF" , "fr_BF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Burkina Faso)","fran\303\247ais (Burkina Faso)" },
|
||||
{ wxLANGUAGE_FRENCH_BURUNDI, "fr-BI" , "fr_BI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Burundi)","fran\303\247ais (Burundi)" },
|
||||
{ wxLANGUAGE_FRENCH_CAMEROON, "fr-CM" , "fr_CM" , "" , 0x0c, 0x0b, wxLayout_LeftToRight, "French (Cameroon)","fran\303\247ais (Cameroun)" },
|
||||
{ wxLANGUAGE_FRENCH_CANADIAN, "fr-CA" , "fr_CA" , "" , 0x0c, 0x03, wxLayout_LeftToRight, "French (Canada)","fran\303\247ais (Canada)" },
|
||||
{ wxLANGUAGE_FRENCH_CARIBBEAN, "fr-029" , "fr_029" , "" , 0x0c, 0x07, wxLayout_LeftToRight, "French (Caribbean)","fran\303\247ais (Cara\303\257bes)" },
|
||||
{ wxLANGUAGE_FRENCH_CENTRAL_AFRICAN_REPUBLIC, "fr-CF" , "fr_CF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Central African Republic)","fran\303\247ais (R\303\251publique centrafricaine)" },
|
||||
{ wxLANGUAGE_FRENCH_CHAD, "fr-TD" , "fr_TD" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Chad)","fran\303\247ais (Tchad)" },
|
||||
{ wxLANGUAGE_FRENCH_COMOROS, "fr-KM" , "fr_KM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Comoros)","fran\303\247ais (Comores)" },
|
||||
{ wxLANGUAGE_FRENCH_CONGO, "fr-CG" , "fr_CG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Congo)","fran\303\247ais (Congo)" },
|
||||
{ wxLANGUAGE_FRENCH_CONGO_DRC, "fr-CD" , "fr_CD" , "" , 0x0c, 0x09, wxLayout_LeftToRight, "French Congo (DRC)","fran\303\247ais (Congo, R\303\251publique d\303\251mocratique du)" },
|
||||
{ wxLANGUAGE_FRENCH_COTE_DIVOIRE, "fr-CI" , "fr_CI" , "" , 0x0c, 0x0c, wxLayout_LeftToRight, "French (C\303\264te d\342\200\231Ivoire)","fran\303\247ais (C\303\264te d\342\200\231Ivoire)" },
|
||||
{ wxLANGUAGE_FRENCH_DJIBOUTI, "fr-DJ" , "fr_DJ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Djibouti)","fran\303\247ais (Djibouti)" },
|
||||
{ wxLANGUAGE_FRENCH_EQUATORIAL_GUINEA, "fr-GQ" , "fr_GQ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Equatorial Guinea)","fran\303\247ais (Guin\303\251e \303\251quatoriale)" },
|
||||
{ wxLANGUAGE_FRENCH_FRANCE, "fr-FR" , "fr_FR" , "" , 0x0c, 0x01, wxLayout_LeftToRight, "French (France)","fran\303\247ais (France)" },
|
||||
{ wxLANGUAGE_FRENCH_FRENCH_GUIANA, "fr-GF" , "fr_GF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (French Guiana)","fran\303\247ais (Guyane fran\303\247aise)" },
|
||||
{ wxLANGUAGE_FRENCH_FRENCH_POLYNESIA, "fr-PF" , "fr_PF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (French Polynesia)","fran\303\247ais (Polyn\303\251sie fran\303\247aise)" },
|
||||
{ wxLANGUAGE_FRENCH_GABON, "fr-GA" , "fr_GA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Gabon)","fran\303\247ais (Gabon)" },
|
||||
{ wxLANGUAGE_FRENCH_GUADELOUPE, "fr-GP" , "fr_GP" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Guadeloupe)","fran\303\247ais (Guadeloupe)" },
|
||||
{ wxLANGUAGE_FRENCH_GUINEA, "fr-GN" , "fr_GN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Guinea)","fran\303\247ais (Guin\303\251e)" },
|
||||
{ wxLANGUAGE_FRENCH_HAITI, "fr-HT" , "fr_HT" , "" , 0x0c, 0x0f, wxLayout_LeftToRight, "French (Haiti)","fran\303\247ais (Ha\303\257ti)" },
|
||||
{ wxLANGUAGE_FRENCH_LUXEMBOURG, "fr-LU" , "fr_LU" , "" , 0x0c, 0x05, wxLayout_LeftToRight, "French (Luxembourg)","fran\303\247ais (Luxembourg)" },
|
||||
{ wxLANGUAGE_FRENCH_MADAGASCAR, "fr-MG" , "fr_MG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Madagascar)","fran\303\247ais (Madagascar)" },
|
||||
{ wxLANGUAGE_FRENCH_MALI, "fr-ML" , "fr_ML" , "" , 0x0c, 0x0d, wxLayout_LeftToRight, "French (Mali)","fran\303\247ais (Mali)" },
|
||||
{ wxLANGUAGE_FRENCH_MARTINIQUE, "fr-MQ" , "fr_MQ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Martinique)","fran\303\247ais (Martinique)" },
|
||||
{ wxLANGUAGE_FRENCH_MAURITANIA, "fr-MR" , "fr_MR" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Mauritania)","fran\303\247ais (Mauritanie)" },
|
||||
{ wxLANGUAGE_FRENCH_MAURITIUS, "fr-MU" , "fr_MU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Mauritius)","fran\303\247ais (Maurice)" },
|
||||
{ wxLANGUAGE_FRENCH_MAYOTTE, "fr-YT" , "fr_YT" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Mayotte)","fran\303\247ais (Mayotte)" },
|
||||
{ wxLANGUAGE_FRENCH_MONACO, "fr-MC" , "fr_MC" , "" , 0x0c, 0x06, wxLayout_LeftToRight, "French (Monaco)","fran\303\247ais (Monaco)" },
|
||||
{ wxLANGUAGE_FRENCH_MOROCCO, "fr-MA" , "fr_MA" , "" , 0x0c, 0x0e, wxLayout_LeftToRight, "French (Morocco)","fran\303\247ais (Maroc)" },
|
||||
{ wxLANGUAGE_FRENCH_NEW_CALEDONIA, "fr-NC" , "fr_NC" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (New Caledonia)","fran\303\247ais (Nouvelle-Cal\303\251donie)" },
|
||||
{ wxLANGUAGE_FRENCH_NIGER, "fr-NE" , "fr_NE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Niger)","fran\303\247ais (Niger)" },
|
||||
{ wxLANGUAGE_FRENCH_REUNION, "fr-RE" , "fr_RE" , "" , 0x0c, 0x08, wxLayout_LeftToRight, "French (R\303\251union)","fran\303\247ais (La R\303\251union)" },
|
||||
{ wxLANGUAGE_FRENCH_RWANDA, "fr-RW" , "fr_RW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Rwanda)","fran\303\247ais (Rwanda)" },
|
||||
{ wxLANGUAGE_FRENCH_SENEGAL, "fr-SN" , "fr_SN" , "" , 0x0c, 0x0a, wxLayout_LeftToRight, "French (Senegal)","fran\303\247ais (S\303\251n\303\251gal)" },
|
||||
{ wxLANGUAGE_FRENCH_SEYCHELLES, "fr-SC" , "fr_SC" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Seychelles)","fran\303\247ais (Seychelles)" },
|
||||
{ wxLANGUAGE_FRENCH_ST_BARTHELEMY, "fr-BL" , "fr_BL" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (St. Barth\303\251lemy)","fran\303\247ais (Saint-Barth\303\251lemy)" },
|
||||
{ wxLANGUAGE_FRENCH_ST_MARTIN, "fr-MF" , "fr_MF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (St. Martin)","fran\303\247ais (Saint-Martin)" },
|
||||
{ wxLANGUAGE_FRENCH_ST_PIERRE_AND_MIQUELON, "fr-PM" , "fr_PM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (St. Pierre and Miquelon)","fran\303\247ais (Saint-Pierre-et-Miquelon)" },
|
||||
{ wxLANGUAGE_FRENCH_SWISS, "fr-CH" , "fr_CH" , "" , 0x0c, 0x04, wxLayout_LeftToRight, "French (Switzerland)","fran\303\247ais (Suisse)" },
|
||||
{ wxLANGUAGE_FRENCH_SYRIA, "fr-SY" , "fr_SY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Syria)","fran\303\247ais (Syrie)" },
|
||||
{ wxLANGUAGE_FRENCH_TOGO, "fr-TG" , "fr_TG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Togo)","fran\303\247ais (Togo)" },
|
||||
{ wxLANGUAGE_FRENCH_TUNISIA, "fr-TN" , "fr_TN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Tunisia)","fran\303\247ais (Tunisie)" },
|
||||
{ wxLANGUAGE_FRENCH_VANUATU, "fr-VU" , "fr_VU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Vanuatu)","fran\303\247ais (Vanuatu)" },
|
||||
{ wxLANGUAGE_FRENCH_WALLIS_AND_FUTUNA, "fr-WF" , "fr_WF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "French (Wallis and Futuna)","fran\303\247ais (Wallis-et-Futuna)" },
|
||||
{ wxLANGUAGE_FRISIAN, "fy" , "fy" , "fy_NL" , 0x62, 0x01, wxLayout_LeftToRight, "Western Frisian","Frysk" },
|
||||
{ wxLANGUAGE_FRISIAN_NETHERLANDS, "fy-NL" , "fy_NL" , "" , 0x62, 0x01, wxLayout_LeftToRight, "Western Frisian (Netherlands)","Frysk (Nederl\303\242n)" },
|
||||
{ wxLANGUAGE_FRIULIAN, "fur" , "fur" , "fur_IT" , 0x00, 0x04, wxLayout_LeftToRight, "Friulian","furlan" },
|
||||
{ wxLANGUAGE_FRIULIAN_ITALY, "fur-IT" , "fur_IT" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Friulian (Italy)","furlan (Italie)" },
|
||||
{ wxLANGUAGE_FULAH, "ff" , "ff" , "" , 0x67, 0x02, wxLayout_LeftToRight, "Fulah","Pulaar" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM, "ff-Adlm" , "ff@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\200\360\236\244\201\360\236\244\202\360\236\244\242\360\236\244\203)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_BURKINA_FASO, "ff-Adlm-BF" , "ff_BF@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Burkina Faso)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\204\360\236\244\265\360\236\244\252\360\236\244\263\360\236\244\255\360\236\244\262\360\236\244\242 \360\236\244\212\360\236\244\242\360\236\244\247\360\236\244\256\360\236\245\205)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_CAMEROON, "ff-Adlm-CM" , "ff_CM@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Cameroon)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\221\360\236\244\242\360\236\244\245\360\236\244\242\360\236\244\252\360\236\244\265\360\236\245\205\360\236\244\262)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_GAMBIA, "ff-Adlm-GM" , "ff_GM@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Gambia)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\230\360\236\244\242\360\236\244\245\360\236\244\246\360\236\244\255\360\236\244\264\360\236\244\242)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_GHANA, "ff-Adlm-GH" , "ff_GH@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Ghana)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\230\360\236\244\242\360\236\244\262\360\236\244\242)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_GUINEA, "ff-Adlm-GN" , "ff_GN@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Guinea)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\230\360\236\244\255\360\236\244\262\360\236\244\253)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_GUINEA_BISSAU, "ff-Adlm-GW" , "ff_GW@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Guinea-Bissau)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\230\360\236\244\255\360\236\244\262\360\236\244\253-\360\236\244\204\360\236\244\255\360\236\244\247\360\236\244\242\360\236\244\261\360\236\244\256\360\236\245\205)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_LIBERIA, "ff-Adlm-LR" , "ff_LR@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Liberia)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\202\360\236\244\242\360\236\244\246\360\236\244\255\360\236\244\252\360\236\244\255\360\236\244\264\360\236\244\242\360\236\245\204)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_MAURITANIA, "ff-Adlm-MR" , "ff_MR@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Mauritania)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\203\360\236\244\256\360\236\244\252\360\236\244\274\360\236\244\242\360\236\244\262\360\236\244\255\360\236\245\205)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_NIGER, "ff-Adlm-NE" , "ff_NE@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Niger)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\220\360\236\244\255\360\236\245\205\360\236\244\266\360\236\244\253\360\236\244\252)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_NIGERIA, "ff-Adlm-NG" , "ff_NG@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Nigeria)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\220\360\236\244\242\360\236\244\266\360\236\244\253\360\236\244\252\360\236\244\255\360\236\244\264\360\236\244\242\360\236\245\204)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_SENEGAL, "ff-Adlm-SN" , "ff_SN@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Senegal)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\205\360\236\244\253\360\236\244\262\360\236\244\253\360\236\244\272\360\236\244\242\360\236\245\204\360\236\244\244)" },
|
||||
{ wxLANGUAGE_FULAH_ADLAM_SIERRA_LEONE, "ff-Adlm-SL" , "ff_SL@adlam" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Adlam, Sierra Leone)","\360\236\244\206\360\236\244\265\360\236\244\244\360\236\244\242\360\236\244\252 (\360\236\244\205\360\236\244\242\360\236\244\252\360\236\244\242\360\236\244\244\360\236\244\256\360\236\244\262)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN, "ff-Latn" , "ff@latin" , "" , 0x67, 0x02, wxLayout_LeftToRight, "Fulah (Latin)","Pulaar" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_BURKINA_FASO, "ff-Latn-BF" , "ff_BF@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Burkina Faso)","Pulaar (Burkibaa Faaso)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_CAMEROON, "ff-Latn-CM" , "ff_CM@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Cameroon)","Pulaar (Kameruun)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_GAMBIA, "ff-Latn-GM" , "ff_GM@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Gambia)","Pulaar (Gammbi)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_GHANA, "ff-Latn-GH" , "ff_GH@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Ghana)","Pulaar (Ganaa)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_GUINEA, "ff-Latn-GN" , "ff_GN@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Guinea)","Pulaar (Gine)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_GUINEA_BISSAU, "ff-Latn-GW" , "ff_GW@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Guinea-Bissau)","Pulaar (Gine-Bisaawo)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_LIBERIA, "ff-Latn-LR" , "ff_LR@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Liberia)","Pulaar (Liberiyaa)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_MAURITANIA, "ff-Latn-MR" , "ff_MR@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Mauritania)","Pulaar (Muritani)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_NIGER, "ff-Latn-NE" , "ff_NE@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Niger)","Pulaar (Nijeer)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_NIGERIA, "ff-Latn-NG" , "ff_NG@latin" , "" , 0x67, 0x01, wxLayout_LeftToRight, "Fulah (Latin, Nigeria)","Pulaar (Nijeriyaa)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_SENEGAL, "ff-Latn-SN" , "ff_SN@latin" , "" , 0x67, 0x02, wxLayout_LeftToRight, "Fulah (Latin, Senegal)","Pulaar (Senegaal)" },
|
||||
{ wxLANGUAGE_FULAH_LATIN_SIERRA_LEONE, "ff-Latn-SL" , "ff_SL@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Fulah (Latin, Sierra Leone)","Pulaar (Seraa liyon)" },
|
||||
{ wxLANGUAGE_GALICIAN, "gl" , "gl" , "gl_ES" , 0x56, 0x01, wxLayout_LeftToRight, "Galician","galego" },
|
||||
{ wxLANGUAGE_GALICIAN_SPAIN, "gl-ES" , "gl_ES" , "" , 0x56, 0x01, wxLayout_LeftToRight, "Galician (Galician)","galego (galego)" },
|
||||
{ wxLANGUAGE_GANDA, "lg" , "lg" , "lg_UG" , 0x00, 0x04, wxLayout_LeftToRight, "Ganda","Luganda" },
|
||||
{ wxLANGUAGE_GANDA_UGANDA, "lg-UG" , "lg_UG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ganda (Uganda)","Luganda (Yuganda)" },
|
||||
{ wxLANGUAGE_GEORGIAN, "ka" , "ka" , "ka_GE" , 0x37, 0x01, wxLayout_LeftToRight, "Georgian","\341\203\245\341\203\220\341\203\240\341\203\227\341\203\243\341\203\232\341\203\230" },
|
||||
{ wxLANGUAGE_GEORGIAN_GEORGIA, "ka-GE" , "ka_GE" , "" , 0x37, 0x01, wxLayout_LeftToRight, "Georgian (Georgia)","\341\203\245\341\203\220\341\203\240\341\203\227\341\203\243\341\203\232\341\203\230 (\341\203\241\341\203\220\341\203\245\341\203\220\341\203\240\341\203\227\341\203\225\341\203\224\341\203\232\341\203\235)" },
|
||||
{ wxLANGUAGE_GERMAN, "de" , "de" , "de_DE" , 0x07, 0x01, wxLayout_LeftToRight, "German","Deutsch" },
|
||||
{ wxLANGUAGE_GERMAN_AUSTRIAN, "de-AT" , "de_AT" , "" , 0x07, 0x03, wxLayout_LeftToRight, "German (Austria)","Deutsch (\303\226sterreich)" },
|
||||
{ wxLANGUAGE_GERMAN_BELGIUM, "de-BE" , "de_BE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "German (Belgium)","Deutsch (Belgien)" },
|
||||
{ wxLANGUAGE_GERMAN_GERMANY, "de-DE" , "de_DE" , "" , 0x07, 0x01, wxLayout_LeftToRight, "German (Germany)","Deutsch (Deutschland)" },
|
||||
{ wxLANGUAGE_GERMAN_ITALY, "de-IT" , "de_IT" , "" , 0x00, 0x04, wxLayout_LeftToRight, "German (Italy)","Deutsch (Italien)" },
|
||||
{ wxLANGUAGE_GERMAN_LIECHTENSTEIN, "de-LI" , "de_LI" , "" , 0x07, 0x05, wxLayout_LeftToRight, "German (Liechtenstein)","Deutsch (Liechtenstein)" },
|
||||
{ wxLANGUAGE_GERMAN_LUXEMBOURG, "de-LU" , "de_LU" , "" , 0x07, 0x04, wxLayout_LeftToRight, "German (Luxembourg)","Deutsch (Luxemburg)" },
|
||||
{ wxLANGUAGE_GERMAN_SWISS, "de-CH" , "de_CH" , "" , 0x07, 0x02, wxLayout_LeftToRight, "German (Switzerland)","Deutsch (Schweiz)" },
|
||||
{ wxLANGUAGE_GREEK, "el" , "el" , "el_GR" , 0x08, 0x01, wxLayout_LeftToRight, "Greek","\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254" },
|
||||
{ wxLANGUAGE_GREEK_CYPRUS, "el-CY" , "el_CY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Greek (Cyprus)","\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254 (\316\232\317\215\317\200\317\201\316\277\317\202)" },
|
||||
{ wxLANGUAGE_GREEK_GREECE, "el-GR" , "el_GR" , "" , 0x08, 0x01, wxLayout_LeftToRight, "Greek (Greece)","\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254 (\316\225\316\273\316\273\316\254\316\264\316\261)" },
|
||||
{ wxLANGUAGE_GUARANI, "gn" , "gn" , "gn_PY" , 0x74, 0x01, wxLayout_LeftToRight, "Guarani","Ava\303\261e\342\200\231\341\272\275" },
|
||||
{ wxLANGUAGE_GUARANI_PARAGUAY, "gn-PY" , "gn_PY" , "" , 0x74, 0x01, wxLayout_LeftToRight, "Guarani (Paraguay)","Ava\303\261e\342\200\231\341\272\275 (Paragu\303\241i)" },
|
||||
{ wxLANGUAGE_GUJARATI, "gu" , "gu" , "gu_IN" , 0x47, 0x01, wxLayout_LeftToRight, "Gujarati","\340\252\227\340\253\201\340\252\234\340\252\260\340\252\276\340\252\244\340\253\200" },
|
||||
{ wxLANGUAGE_GUJARATI_INDIA, "gu-IN" , "gu_IN" , "" , 0x47, 0x01, wxLayout_LeftToRight, "Gujarati (India)","\340\252\227\340\253\201\340\252\234\340\252\260\340\252\276\340\252\244\340\253\200 (\340\252\255\340\252\276\340\252\260\340\252\244)" },
|
||||
{ wxLANGUAGE_GUSII, "guz" , "guz" , "guz_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Gusii","Ekegusii" },
|
||||
{ wxLANGUAGE_GUSII_KENYA, "guz-KE" , "guz_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Gusii (Kenya)","Ekegusii (Kenya)" },
|
||||
{ wxLANGUAGE_HAUSA, "ha" , "ha" , "" , 0x68, 0x01, wxLayout_LeftToRight, "Hausa","Hausa" },
|
||||
{ wxLANGUAGE_HAUSA_LATIN, "ha-Latn" , "ha@latin" , "" , 0x68, 0x01, wxLayout_LeftToRight, "Hausa (Latin)","Hausa (Latin)" },
|
||||
{ wxLANGUAGE_HAUSA_LATIN_GHANA, "ha-Latn-GH" , "ha_GH@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Hausa (Latin, Ghana)","Hausa (Gana)" },
|
||||
{ wxLANGUAGE_HAUSA_LATIN_NIGER, "ha-Latn-NE" , "ha_NE@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Hausa (Latin, Niger)","Hausa (Nijar)" },
|
||||
{ wxLANGUAGE_HAUSA_LATIN_NIGERIA, "ha-Latn-NG" , "ha_NG@latin" , "" , 0x68, 0x01, wxLayout_LeftToRight, "Hausa (Latin, Nigeria)","Hausa (Najeriya)" },
|
||||
{ wxLANGUAGE_HAWAIIAN, "haw" , "haw" , "haw_US" , 0x75, 0x01, wxLayout_LeftToRight, "Hawaiian","\312\273\305\214lelo Hawai\312\273i" },
|
||||
{ wxLANGUAGE_HAWAIIAN_US, "haw-US" , "haw_US" , "" , 0x75, 0x01, wxLayout_LeftToRight, "Hawaiian (United States)","\312\273\305\214lelo Hawai\312\273i (\312\273Amelika Hui P\305\253 \312\273Ia)" },
|
||||
{ wxLANGUAGE_HEBREW, "he" , "he" , "he_IL" , 0x0d, 0x01, wxLayout_RightToLeft, "Hebrew","\327\242\327\221\327\250\327\231\327\252" },
|
||||
{ wxLANGUAGE_HEBREW_ISRAEL, "he-IL" , "he_IL" , "" , 0x0d, 0x01, wxLayout_RightToLeft, "Hebrew (Israel)","\327\242\327\221\327\250\327\231\327\252 (\327\231\327\251\327\250\327\220\327\234)" },
|
||||
{ wxLANGUAGE_HINDI, "hi" , "hi" , "hi_IN" , 0x39, 0x01, wxLayout_LeftToRight, "Hindi","\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200" },
|
||||
{ wxLANGUAGE_HINDI_INDIA, "hi-IN" , "hi_IN" , "" , 0x39, 0x01, wxLayout_LeftToRight, "Hindi (India)","\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_HUNGARIAN, "hu" , "hu" , "hu_HU" , 0x0e, 0x01, wxLayout_LeftToRight, "Hungarian","magyar" },
|
||||
{ wxLANGUAGE_HUNGARIAN_HUNGARY, "hu-HU" , "hu_HU" , "" , 0x0e, 0x01, wxLayout_LeftToRight, "Hungarian (Hungary)","magyar (Magyarorsz\303\241g)" },
|
||||
{ wxLANGUAGE_IBIBIO, "ibb" , "ibb" , "ibb_NG" , 0x69, 0x01, wxLayout_LeftToRight, "Ibibio","Ibibio-Efik" },
|
||||
{ wxLANGUAGE_IBIBIO_NIGERIA, "ibb-NG" , "ibb_NG" , "" , 0x69, 0x01, wxLayout_LeftToRight, "Ibibio (Nigeria)","Ibibio-Efik (Nigeria)" },
|
||||
{ wxLANGUAGE_ICELANDIC, "is" , "is" , "is_IS" , 0x0f, 0x01, wxLayout_LeftToRight, "Icelandic","\303\255slenska" },
|
||||
{ wxLANGUAGE_ICELANDIC_ICELAND, "is-IS" , "is_IS" , "" , 0x0f, 0x01, wxLayout_LeftToRight, "Icelandic (Iceland)","\303\255slenska (\303\215sland)" },
|
||||
{ wxLANGUAGE_IGBO, "ig" , "ig" , "ig_NG" , 0x70, 0x01, wxLayout_LeftToRight, "Igbo","Igbo" },
|
||||
{ wxLANGUAGE_IGBO_NIGERIA, "ig-NG" , "ig_NG" , "" , 0x70, 0x01, wxLayout_LeftToRight, "Igbo (Nigeria)","Igbo (Na\341\273\213j\341\273\213r\341\273\213a)" },
|
||||
{ wxLANGUAGE_INDONESIAN, "id" , "id" , "id_ID" , 0x21, 0x01, wxLayout_LeftToRight, "Indonesian","Indonesia" },
|
||||
{ wxLANGUAGE_INDONESIAN_INDONESIA, "id-ID" , "id_ID" , "" , 0x21, 0x01, wxLayout_LeftToRight, "Indonesian (Indonesia)","Indonesia (Indonesia)" },
|
||||
{ wxLANGUAGE_INTERLINGUA, "ia" , "ia" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Interlingua","interlingua" },
|
||||
{ wxLANGUAGE_INTERLINGUA_WORLD, "ia-001" , "ia_001" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Interlingua (World)","interlingua (Mundo)" },
|
||||
{ wxLANGUAGE_INTERLINGUE, "ie" , "ie" , "" , 0 , 0 , wxLayout_LeftToRight, "Interlingue","Interlingue" },
|
||||
{ wxLANGUAGE_INUKTITUT, "iu" , "iu" , "" , 0x5d, 0x02, wxLayout_LeftToRight, "Inuktitut","Inuktitut" },
|
||||
{ wxLANGUAGE_INUKTITUT_LATIN, "iu-Latn" , "iu@latin" , "" , 0x5d, 0x02, wxLayout_LeftToRight, "Inuktitut (Latin)","Inuktitut (Qaliujaaqpait)" },
|
||||
{ wxLANGUAGE_INUKTITUT_LATIN_CANADA, "iu-Latn-CA" , "iu_CA@latin" , "" , 0x5d, 0x02, wxLayout_LeftToRight, "Inuktitut (Latin, Canada)","Inuktitut (Kanatami)" },
|
||||
{ wxLANGUAGE_INUKTITUT_SYLLABICS, "iu-Cans" , "iu@canadian_aboriginal" , "" , 0x5d, 0x01, wxLayout_LeftToRight, "Inuktitut (Syllabics)","\341\220\203\341\223\204\341\222\203\341\221\216\341\221\220\341\221\246 (\341\226\203\341\223\202\341\220\205\341\224\256\341\226\205\341\220\270\341\220\203\341\221\246)" },
|
||||
{ wxLANGUAGE_INUKTITUT_SYLLABICS_CANADA, "iu-Cans-CA" , "iu_CA@canadian_aboriginal" , "" , 0x5d, 0x01, wxLayout_LeftToRight, "Inuktitut (Syllabics, Canada)","\341\220\203\341\223\204\341\222\203\341\221\216\341\221\220\341\221\246 (\341\221\262\341\223\207\341\221\225\341\222\245)" },
|
||||
{ wxLANGUAGE_INUPIAK, "ik" , "ik" , "" , 0 , 0 , wxLayout_LeftToRight, "Inupiak","Inupiaq" },
|
||||
{ wxLANGUAGE_IRISH, "ga" , "ga" , "ga_IE" , 0x3c, 0x02, wxLayout_LeftToRight, "Irish","Gaeilge" },
|
||||
{ wxLANGUAGE_IRISH_IRELAND, "ga-IE" , "ga_IE" , "" , 0x3c, 0x02, wxLayout_LeftToRight, "Irish (Ireland)","Gaeilge (\303\211ire)" },
|
||||
{ wxLANGUAGE_IRISH_UNITED_KINGDOM, "ga-GB" , "ga_GB" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Irish (United Kingdom)","Gaeilge (an R\303\255ocht Aontaithe)" },
|
||||
{ wxLANGUAGE_ITALIAN, "it" , "it" , "it_IT" , 0x10, 0x01, wxLayout_LeftToRight, "Italian","italiano" },
|
||||
{ wxLANGUAGE_ITALIAN_ITALY, "it-IT" , "it_IT" , "" , 0x10, 0x01, wxLayout_LeftToRight, "Italian (Italy)","italiano (Italia)" },
|
||||
{ wxLANGUAGE_ITALIAN_SAN_MARINO, "it-SM" , "it_SM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Italian (San Marino)","italiano (San Marino)" },
|
||||
{ wxLANGUAGE_ITALIAN_SWISS, "it-CH" , "it_CH" , "" , 0x10, 0x02, wxLayout_LeftToRight, "Italian (Switzerland)","italiano (Svizzera)" },
|
||||
{ wxLANGUAGE_ITALIAN_VATICAN_CITY, "it-VA" , "it_VA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Italian (Vatican City)","italiano (Citt\303\240 del Vaticano)" },
|
||||
{ wxLANGUAGE_JAPANESE, "ja" , "ja" , "ja_JP" , 0x11, 0x01, wxLayout_LeftToRight, "Japanese","\346\227\245\346\234\254\350\252\236" },
|
||||
{ wxLANGUAGE_JAPANESE_JAPAN, "ja-JP" , "ja_JP" , "" , 0x11, 0x01, wxLayout_LeftToRight, "Japanese (Japan)","\346\227\245\346\234\254\350\252\236 (\346\227\245\346\234\254)" },
|
||||
{ wxLANGUAGE_JAVANESE, "jv" , "jv" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Javanese","Basa Jawa" },
|
||||
{ wxLANGUAGE_JAVANESE_JAVANESE, "jv-Java" , "jv@javanese" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Javanese (Javanese)","\352\246\247\352\246\261\352\246\227\352\246\256" },
|
||||
{ wxLANGUAGE_JAVANESE_JAVANESE_INDONESIA, "jv-Java-ID" , "jv_ID@javanese" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Javanese (Javanese, Indonesia)","\352\246\247\352\246\261\352\246\227\352\246\256 (Indon\303\251sia)" },
|
||||
{ wxLANGUAGE_JAVANESE_LATIN, "jv-Latn" , "jv@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Javanese","Basa Jawa" },
|
||||
{ wxLANGUAGE_JAVANESE_LATIN_INDONESIA, "jv-Latn-ID" , "jv_ID@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Javanese (Indonesia)","Basa Jawa (Indonesia)" },
|
||||
{ wxLANGUAGE_JOLA_FONYI, "dyo" , "dyo" , "dyo_SN" , 0x00, 0x04, wxLayout_LeftToRight, "Jola-Fonyi","joola" },
|
||||
{ wxLANGUAGE_JOLA_FONYI_SENEGAL, "dyo-SN" , "dyo_SN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Jola-Fonyi (Senegal)","joola (Senegal)" },
|
||||
{ wxLANGUAGE_KABUVERDIANU, "kea" , "kea" , "kea_CV" , 0x00, 0x04, wxLayout_LeftToRight, "Kabuverdianu","kabuverdianu" },
|
||||
{ wxLANGUAGE_KABUVERDIANU_CABO_VERDE, "kea-CV" , "kea_CV" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kabuverdianu (Cabo Verde)","kabuverdianu (Kabu Verdi)" },
|
||||
{ wxLANGUAGE_KABYLE, "kab" , "kab" , "kab_DZ" , 0x00, 0x04, wxLayout_LeftToRight, "Kabyle","Taqbaylit" },
|
||||
{ wxLANGUAGE_KABYLE_ALGERIA, "kab-DZ" , "kab_DZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kabyle (Algeria)","Taqbaylit (Lezzayer)" },
|
||||
{ wxLANGUAGE_KAKO, "kkj" , "kkj" , "kkj_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Kako","kak\311\224" },
|
||||
{ wxLANGUAGE_KAKO_CAMEROON, "kkj-CM" , "kkj_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kako (Cameroon)","kak\311\224 (Kam\311\233run)" },
|
||||
{ wxLANGUAGE_KALAALLISUT, "kl" , "kl" , "kl_GL" , 0x6f, 0x01, wxLayout_LeftToRight, "Kalaallisut","kalaallisut" },
|
||||
{ wxLANGUAGE_KALAALLISUT_GREENLAND, "kl-GL" , "kl_GL" , "" , 0x6f, 0x01, wxLayout_LeftToRight, "Kalaallisut (Greenland)","kalaallisut (Kalaallit Nunaat)" },
|
||||
{ wxLANGUAGE_KALENJIN, "kln" , "kln" , "kln_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Kalenjin","Kalenjin" },
|
||||
{ wxLANGUAGE_KALENJIN_KENYA, "kln-KE" , "kln_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kalenjin (Kenya)","Kalenjin (Emetab Kenya)" },
|
||||
{ wxLANGUAGE_KAMBA, "kam" , "kam" , "kam_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Kamba","Kikamba" },
|
||||
{ wxLANGUAGE_KAMBA_KENYA, "kam-KE" , "kam_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kamba (Kenya)","Kikamba (Kenya)" },
|
||||
{ wxLANGUAGE_KANNADA, "kn" , "kn" , "kn_IN" , 0x4b, 0x01, wxLayout_LeftToRight, "Kannada","\340\262\225\340\262\250\340\263\215\340\262\250\340\262\241" },
|
||||
{ wxLANGUAGE_KANNADA_INDIA, "kn-IN" , "kn_IN" , "" , 0x4b, 0x01, wxLayout_LeftToRight, "Kannada (India)","\340\262\225\340\262\250\340\263\215\340\262\250\340\262\241 (\340\262\255\340\262\276\340\262\260\340\262\244)" },
|
||||
{ wxLANGUAGE_KANURI, "kr" , "kr" , "" , 0x71, 0x01, wxLayout_LeftToRight, "Kanuri","Kanuri" },
|
||||
{ wxLANGUAGE_KANURI_LATIN, "kr-Latn" , "kr@latin" , "" , 0x71, 0x01, wxLayout_LeftToRight, "Kanuri (Latin)","Kanuri" },
|
||||
{ wxLANGUAGE_KANURI_LATIN_NIGERIA, "kr-Latn-NG" , "kr_NG@latin" , "" , 0x71, 0x01, wxLayout_LeftToRight, "Kanuri (Latin, Nigeria)","Kanuri (Nigeria)" },
|
||||
{ wxLANGUAGE_KASHMIRI, "ks" , "ks" , "ks_IN" , 0x00, 0x04, wxLayout_RightToLeft, "Kashmiri","\332\251\331\262\330\264\331\217\330\261" },
|
||||
{ wxLANGUAGE_KASHMIRI_ARABIC, "ks-Arab" , "ks@arabic" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Kashmiri (Arabic)","\332\251\331\262\330\264\331\217\330\261 (\330\247\331\216\330\261\330\250\333\214)" },
|
||||
{ wxLANGUAGE_KASHMIRI_ARABIC_INDIA, "ks-Arab-IN" , "ks_IN@arabic" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Kashmiri (Arabic)","\332\251\331\262\330\264\331\217\330\261 (\330\247\331\216\330\261\330\250\333\214)" },
|
||||
{ wxLANGUAGE_KASHMIRI_DEVANAGARI, "ks-Deva" , "ks@devanagari" , "" , 0x60, 0x02, wxLayout_LeftToRight, "Kashmiri (Devanagari)","\340\244\225\340\245\211\340\244\266\340\245\201\340\244\260" },
|
||||
{ wxLANGUAGE_KASHMIRI_DEVANAGARI_INDIA, "ks-Deva-IN" , "ks_IN@devanagari" , "" , 0x60, 0x02, wxLayout_LeftToRight, "Kashmiri (Devanagari)","\340\244\225\340\245\211\340\244\266\340\245\201\340\244\260 (India)" },
|
||||
{ wxLANGUAGE_KASHMIRI_INDIA, "ks-IN" , "ks_IN" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Kashmiri (India)","\332\251\330\264\331\210\330\261 (\330\250\332\276\330\247\330\261\330\252)" },
|
||||
{ wxLANGUAGE_KAZAKH, "kk" , "kk" , "kk_KZ" , 0x3f, 0x01, wxLayout_LeftToRight, "Kazakh","\322\233\320\260\320\267\320\260\322\233 \321\202\321\226\320\273\321\226" },
|
||||
{ wxLANGUAGE_KAZAKH_KAZAKHSTAN, "kk-KZ" , "kk_KZ" , "" , 0x3f, 0x01, wxLayout_LeftToRight, "Kazakh (Kazakhstan)","\322\233\320\260\320\267\320\260\322\233 \321\202\321\226\320\273\321\226 (\322\232\320\260\320\267\320\260\322\233\321\201\321\202\320\260\320\275)" },
|
||||
{ wxLANGUAGE_KHMER, "km" , "km" , "km_KH" , 0x53, 0x01, wxLayout_LeftToRight, "Khmer","\341\236\201\341\237\222\341\236\230\341\237\202\341\236\232" },
|
||||
{ wxLANGUAGE_KHMER_CAMBODIA, "km-KH" , "km_KH" , "" , 0x53, 0x01, wxLayout_LeftToRight, "Khmer (Cambodia)","\341\236\201\341\237\222\341\236\230\341\237\202\341\236\232 (\341\236\200\341\236\230\341\237\222\341\236\226\341\236\273\341\236\207\341\236\266)" },
|
||||
{ wxLANGUAGE_KICHE, "quc" , "quc" , "" , 0x86, 0x01, wxLayout_LeftToRight, "K\312\274iche\312\274","K\312\274iche\312\274" },
|
||||
{ wxLANGUAGE_KICHE_LATIN, "quc-Latn" , "quc@latin" , "" , 0x86, 0x01, wxLayout_LeftToRight, "K\312\274iche\312\274 (Latin)","K\312\274iche\312\274" },
|
||||
{ wxLANGUAGE_KICHE_LATIN_GUATEMALA, "quc-Latn-GT" , "quc_GT@latin" , "" , 0x86, 0x01, wxLayout_LeftToRight, "K\312\274iche\312\274 (Latin, Guatemala)","K\312\274iche\312\274 (Guatemala)" },
|
||||
{ wxLANGUAGE_KIKUYU, "ki" , "ki" , "ki_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Kikuyu","Gikuyu" },
|
||||
{ wxLANGUAGE_KIKUYU_KENYA, "ki-KE" , "ki_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kikuyu (Kenya)","Gikuyu (Kenya)" },
|
||||
{ wxLANGUAGE_KINYARWANDA, "rw" , "rw" , "rw_RW" , 0x87, 0x01, wxLayout_LeftToRight, "Kinyarwanda","Kinyarwanda" },
|
||||
{ wxLANGUAGE_KINYARWANDA_RWANDA, "rw-RW" , "rw_RW" , "" , 0x87, 0x01, wxLayout_LeftToRight, "Kinyarwanda (Rwanda)","Kinyarwanda (U Rwanda)" },
|
||||
{ wxLANGUAGE_KIRGHIZ, "ky" , "ky" , "ky_KG" , 0x40, 0x01, wxLayout_LeftToRight, "Kyrgyz","\320\272\321\213\321\200\320\263\321\213\320\267\321\207\320\260" },
|
||||
{ wxLANGUAGE_KIRGHIZ_KYRGYZSTAN, "ky-KG" , "ky_KG" , "" , 0x40, 0x01, wxLayout_LeftToRight, "Kyrgyz (Kyrgyzstan)","\320\272\321\213\321\200\320\263\321\213\320\267\321\207\320\260 (\320\232\321\213\321\200\320\263\321\213\320\267\321\201\321\202\320\260\320\275)" },
|
||||
{ wxLANGUAGE_KIRUNDI, "rn" , "rn" , "rn_BI" , 0x00, 0x04, wxLayout_LeftToRight, "Rundi","Ikirundi" },
|
||||
{ wxLANGUAGE_KIRUNDI_BURUNDI, "rn-BI" , "rn_BI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Rundi (Burundi)","Ikirundi (Uburundi)" },
|
||||
{ wxLANGUAGE_KONKANI, "kok" , "kok" , "kok_IN" , 0x57, 0x01, wxLayout_LeftToRight, "Konkani","\340\244\225\340\245\213\340\244\202\340\244\225\340\244\243\340\245\200" },
|
||||
{ wxLANGUAGE_KONKANI_INDIA, "kok-IN" , "kok_IN" , "" , 0x57, 0x01, wxLayout_LeftToRight, "Konkani (India)","\340\244\225\340\245\213\340\244\202\340\244\225\340\244\243\340\245\200 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_KOREAN, "ko" , "ko" , "ko_KR" , 0x12, 0x01, wxLayout_LeftToRight, "Korean","\355\225\234\352\265\255\354\226\264" },
|
||||
{ wxLANGUAGE_KOREAN_KOREA, "ko-KR" , "ko_KR" , "" , 0x12, 0x01, wxLayout_LeftToRight, "Korean (Korea)","\355\225\234\352\265\255\354\226\264(\353\214\200\355\225\234\353\257\274\352\265\255)" },
|
||||
{ wxLANGUAGE_KOREAN_NORTH_KOREA, "ko-KP" , "ko_KP" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Korean (North Korea)","\355\225\234\352\265\255\354\226\264 (\354\241\260\354\204\240\353\257\274\354\243\274\354\243\274\354\235\230\354\235\270\353\257\274\352\263\265\355\231\224\352\265\255)" },
|
||||
{ wxLANGUAGE_KOYRABORO_SENNI, "ses" , "ses" , "ses_ML" , 0x00, 0x04, wxLayout_LeftToRight, "Koyraboro Senni","Koyraboro senni" },
|
||||
{ wxLANGUAGE_KOYRABORO_SENNI_MALI, "ses-ML" , "ses_ML" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Koyraboro Senni (Mali)","Koyraboro senni (Maali)" },
|
||||
{ wxLANGUAGE_KOYRA_CHIINI, "khq" , "khq" , "khq_ML" , 0x00, 0x04, wxLayout_LeftToRight, "Koyra Chiini","Koyra ciini" },
|
||||
{ wxLANGUAGE_KOYRA_CHIINI_MALI, "khq-ML" , "khq_ML" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Koyra Chiini (Mali)","Koyra ciini (Maali)" },
|
||||
{ wxLANGUAGE_KURDISH, "ku-TR" , "ku_TR" , "" , 0 , 0 , wxLayout_LeftToRight, "Kurdish","Kurd\303\256" },
|
||||
{ wxLANGUAGE_KURDISH_ARABIC_IRAN, "ku-Arab-IR" , "ku_IR@arabic" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Kurdish (Arabic, Iran)","\332\251\331\210\330\261\330\257\333\214 (\330\246\333\216\330\261\330\247\331\206)" },
|
||||
{ wxLANGUAGE_KWASIO, "nmg" , "nmg" , "nmg_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Kwasio","Kwasio" },
|
||||
{ wxLANGUAGE_KWASIO_CAMEROON, "nmg-CM" , "nmg_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kwasio (Cameroon)","Kwasio (Kamerun)" },
|
||||
{ wxLANGUAGE_LAKOTA, "lkt" , "lkt" , "lkt_US" , 0x00, 0x04, wxLayout_LeftToRight, "Lakota","Lak\310\237\303\263l\312\274iyapi" },
|
||||
{ wxLANGUAGE_LAKOTA_US, "lkt-US" , "lkt_US" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Lakota (United States)","Lak\310\237\303\263l\312\274iyapi (M\303\255laha\305\213ska T\310\237am\303\241k\310\237o\304\215he)" },
|
||||
{ wxLANGUAGE_LANGI, "lag" , "lag" , "lag_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Langi","K\311\250laangi" },
|
||||
{ wxLANGUAGE_LANGI_TANZANIA, "lag-TZ" , "lag_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Langi (Tanzania)","K\311\250laangi (Taansan\303\255a)" },
|
||||
{ wxLANGUAGE_LAOTHIAN, "lo" , "lo" , "lo_LA" , 0x54, 0x01, wxLayout_LeftToRight, "Lao","\340\272\245\340\272\262\340\272\247" },
|
||||
{ wxLANGUAGE_LAOTHIAN_LAOS, "lo-LA" , "lo_LA" , "" , 0x54, 0x01, wxLayout_LeftToRight, "Lao (Laos)","\340\272\245\340\272\262\340\272\247 (\340\272\245\340\272\262\340\272\247)" },
|
||||
{ wxLANGUAGE_LATIN, "la" , "la" , "la_VA" , 0x76, 0x01, wxLayout_LeftToRight, "Latin","Latina" },
|
||||
{ wxLANGUAGE_LATIN_VATICAN_CITY, "la-VA" , "la_VA" , "" , 0x76, 0x01, wxLayout_LeftToRight, "Latin (Vatican City)","Latina (Civitas Vaticana)" },
|
||||
{ wxLANGUAGE_LATIN_WORLD, "la-001" , "la_001" , "" , 0x76, 0x01, wxLayout_LeftToRight, "Latin (World)","Latina (Mundus)" },
|
||||
{ wxLANGUAGE_LATVIAN, "lv" , "lv" , "lv_LV" , 0x26, 0x01, wxLayout_LeftToRight, "Latvian","latvie\305\241u" },
|
||||
{ wxLANGUAGE_LATVIAN_LATVIA, "lv-LV" , "lv_LV" , "" , 0x26, 0x01, wxLayout_LeftToRight, "Latvian (Latvia)","latvie\305\241u (Latvija)" },
|
||||
{ wxLANGUAGE_LINGALA, "ln" , "ln" , "ln_CD" , 0x00, 0x04, wxLayout_LeftToRight, "Lingala","ling\303\241la" },
|
||||
{ wxLANGUAGE_LINGALA_ANGOLA, "ln-AO" , "ln_AO" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Lingala (Angola)","ling\303\241la (Ang\303\263la)" },
|
||||
{ wxLANGUAGE_LINGALA_CENTRAL_AFRICAN_REPUBLIC, "ln-CF" , "ln_CF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Lingala (Central African Republic)","ling\303\241la (Repibiki ya Afr\303\255ka ya K\303\241ti)" },
|
||||
{ wxLANGUAGE_LINGALA_CONGO, "ln-CG" , "ln_CG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Lingala (Congo)","ling\303\241la (Kongo)" },
|
||||
{ wxLANGUAGE_LINGALA_CONGO_DRC, "ln-CD" , "ln_CD" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Lingala (Congo DRC)","ling\303\241la (Republ\303\255ki ya Kong\303\263 Demokrat\303\255ki)" },
|
||||
{ wxLANGUAGE_LITHUANIAN, "lt" , "lt" , "lt_LT" , 0x27, 0x01, wxLayout_LeftToRight, "Lithuanian","lietuvi\305\263" },
|
||||
{ wxLANGUAGE_LITHUANIAN_LITHUANIA, "lt-LT" , "lt_LT" , "" , 0x27, 0x01, wxLayout_LeftToRight, "Lithuanian (Lithuania)","lietuvi\305\263 (Lietuva)" },
|
||||
{ wxLANGUAGE_LOWER_SORBIAN, "dsb" , "dsb" , "dsb_DE" , 0x2e, 0x02, wxLayout_LeftToRight, "Lower Sorbian","dolnoserb\305\241\304\207ina" },
|
||||
{ wxLANGUAGE_LOWER_SORBIAN_GERMANY, "dsb-DE" , "dsb_DE" , "" , 0x2e, 0x02, wxLayout_LeftToRight, "Lower Sorbian (Germany)","dolnoserb\305\241\304\207ina (Nimska)" },
|
||||
{ wxLANGUAGE_LOW_GERMAN, "nds" , "nds" , "nds_DE" , 0x00, 0x04, wxLayout_LeftToRight, "Low German","Neddersass\342\200\231sch" },
|
||||
{ wxLANGUAGE_LOW_GERMAN_GERMANY, "nds-DE" , "nds_DE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Low German (Germany)","Neddersass\342\200\231sch (D\303\274\303\274tschland)" },
|
||||
{ wxLANGUAGE_LOW_GERMAN_NETHERLANDS, "nds-NL" , "nds_NL" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Low German (Netherlands)","Neddersass\342\200\231sch (Nedderlannen)" },
|
||||
{ wxLANGUAGE_LUBA_KATANGA, "lu" , "lu" , "lu_CD" , 0x00, 0x04, wxLayout_LeftToRight, "Luba-Katanga","Tshiluba" },
|
||||
{ wxLANGUAGE_LUBA_KATANGA_CONGO_DRC, "lu-CD" , "lu_CD" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Luba-Katanga (Congo DRC)","Tshiluba (Ditunga wa Kongu)" },
|
||||
{ wxLANGUAGE_LUO, "luo" , "luo" , "luo_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Luo","Dholuo" },
|
||||
{ wxLANGUAGE_LUO_KENYA, "luo-KE" , "luo_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Luo (Kenya)","Dholuo (Kenya)" },
|
||||
{ wxLANGUAGE_LUXEMBOURGISH, "lb" , "lb" , "lb_LU" , 0x6e, 0x01, wxLayout_LeftToRight, "Luxembourgish","L\303\253tzebuergesch" },
|
||||
{ wxLANGUAGE_LUXEMBOURGISH_LUXEMBOURG, "lb-LU" , "lb_LU" , "" , 0x6e, 0x01, wxLayout_LeftToRight, "Luxembourgish (Luxembourg)","L\303\253tzebuergesch (L\303\253tzebuerg)" },
|
||||
{ wxLANGUAGE_LUYIA, "luy" , "luy" , "luy_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Luyia","Luluhia" },
|
||||
{ wxLANGUAGE_LUYIA_KENYA, "luy-KE" , "luy_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Luyia (Kenya)","Luluhia (Kenya)" },
|
||||
{ wxLANGUAGE_MACEDONIAN, "mk" , "mk" , "mk_MK" , 0x2f, 0x01, wxLayout_LeftToRight, "Macedonian","\320\274\320\260\320\272\320\265\320\264\320\276\320\275\321\201\320\272\320\270" },
|
||||
{ wxLANGUAGE_MACEDONIAN_NORTH_MACEDONIA, "mk-MK" , "mk_MK" , "" , 0x2f, 0x01, wxLayout_LeftToRight, "Macedonian (North Macedonia)","\320\274\320\260\320\272\320\265\320\264\320\276\320\275\321\201\320\272\320\270 (\320\241\320\265\320\262\320\265\321\200\320\275\320\260 \320\234\320\260\320\272\320\265\320\264\320\276\320\275\320\270\321\230\320\260)" },
|
||||
{ wxLANGUAGE_MACHAME, "jmc" , "jmc" , "jmc_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Machame","Kimachame" },
|
||||
{ wxLANGUAGE_MACHAME_TANZANIA, "jmc-TZ" , "jmc_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Machame (Tanzania)","Kimachame (Tanzania)" },
|
||||
{ wxLANGUAGE_MAITHILI, "mai" , "mai" , "mai_IN" , 0x00, 0x04, wxLayout_LeftToRight, "Maithili","\340\244\256\340\245\210\340\244\245\340\244\277\340\244\262\340\245\200" },
|
||||
{ wxLANGUAGE_MAITHILI_INDIA, "mai-IN" , "mai_IN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Maithili (India)","\340\244\256\340\245\210\340\244\245\340\244\277\340\244\262\340\245\200 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_MAKHUWA_MEETTO, "mgh" , "mgh" , "mgh_MZ" , 0x00, 0x04, wxLayout_LeftToRight, "Makhuwa-Meetto","Makua" },
|
||||
{ wxLANGUAGE_MAKHUWA_MEETTO_MOZAMBIQUE, "mgh-MZ" , "mgh_MZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Makhuwa-Meetto (Mozambique)","Makua (Umozambiki)" },
|
||||
{ wxLANGUAGE_MAKONDE, "kde" , "kde" , "kde_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Makonde","Chimakonde" },
|
||||
{ wxLANGUAGE_MAKONDE_TANZANIA, "kde-TZ" , "kde_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Makonde (Tanzania)","Chimakonde (Tanzania)" },
|
||||
{ wxLANGUAGE_MALAGASY, "mg" , "mg" , "mg_MG" , 0x00, 0x04, wxLayout_LeftToRight, "Malagasy","Malagasy" },
|
||||
{ wxLANGUAGE_MALAGASY_MADAGASCAR, "mg-MG" , "mg_MG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Malagasy (Madagascar)","Malagasy (Madagasikara)" },
|
||||
{ wxLANGUAGE_MALAY, "ms" , "ms" , "ms_MY" , 0x3e, 0x01, wxLayout_LeftToRight, "Malay","Melayu" },
|
||||
{ wxLANGUAGE_MALAYALAM, "ml" , "ml" , "ml_IN" , 0x4c, 0x01, wxLayout_LeftToRight, "Malayalam","\340\264\256\340\264\262\340\264\257\340\264\276\340\264\263\340\264\202" },
|
||||
{ wxLANGUAGE_MALAYALAM_INDIA, "ml-IN" , "ml_IN" , "" , 0x4c, 0x01, wxLayout_LeftToRight, "Malayalam (India)","\340\264\256\340\264\262\340\264\257\340\264\276\340\264\263\340\264\202 (\340\264\207\340\264\250\340\265\215\340\264\244\340\265\215\340\264\257)" },
|
||||
{ wxLANGUAGE_MALAY_BRUNEI, "ms-BN" , "ms_BN" , "" , 0x3e, 0x02, wxLayout_LeftToRight, "Malay (Brunei)","Melayu (Brunei)" },
|
||||
{ wxLANGUAGE_MALAY_INDONESIA, "ms-ID" , "ms_ID" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Malay (Indonesia)","Melayu (Indonesia)" },
|
||||
{ wxLANGUAGE_MALAY_MALAYSIA, "ms-MY" , "ms_MY" , "" , 0x3e, 0x01, wxLayout_LeftToRight, "Malay (Malaysia)","Melayu (Malaysia)" },
|
||||
{ wxLANGUAGE_MALAY_SINGAPORE, "ms-SG" , "ms_SG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Malay (Singapore)","Melayu (Singapura)" },
|
||||
{ wxLANGUAGE_MALTESE, "mt" , "mt" , "mt_MT" , 0x3a, 0x01, wxLayout_LeftToRight, "Maltese","Malti" },
|
||||
{ wxLANGUAGE_MALTESE_MALTA, "mt-MT" , "mt_MT" , "" , 0x3a, 0x01, wxLayout_LeftToRight, "Maltese (Malta)","Malti (Malta)" },
|
||||
{ wxLANGUAGE_MANIPURI, "mni" , "mni" , "mni_IN" , 0x58, 0x01, wxLayout_LeftToRight, "Manipuri","\340\246\256\340\247\210\340\246\244\340\247\210\340\246\262\340\247\213\340\246\250\340\247\215" },
|
||||
{ wxLANGUAGE_MANIPURI_BENGALI, "mni-Beng" , "mni@bengali" , "" , 0x58, 0x01, wxLayout_LeftToRight, "Manipuri (Bangla)","\340\246\256\340\247\210\340\246\244\340\247\210\340\246\262\340\247\213\340\246\250\340\247\215" },
|
||||
{ wxLANGUAGE_MANIPURI_INDIA, "mni-IN" , "mni_IN" , "" , 0x58, 0x01, wxLayout_LeftToRight, "Manipuri (Bangla, India)","\340\246\256\340\247\210\340\246\244\340\247\210\340\246\262\340\247\213\340\246\250\340\247\215 (\340\246\207\340\246\250\340\247\215\340\246\246\340\246\277\340\246\257\340\246\274\340\246\276)" },
|
||||
{ wxLANGUAGE_MANX, "gv" , "gv" , "gv_IM" , 0x00, 0x04, wxLayout_LeftToRight, "Manx","Gaelg" },
|
||||
{ wxLANGUAGE_MANX_ISLE_OF_MAN, "gv-IM" , "gv_IM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Manx (Isle of Man)","Gaelg (Ellan Vannin)" },
|
||||
{ wxLANGUAGE_MAORI, "mi" , "mi" , "mi_NZ" , 0x81, 0x01, wxLayout_LeftToRight, "Maori","te reo M\304\201ori" },
|
||||
{ wxLANGUAGE_MAORI_NEW_ZEALAND, "mi-NZ" , "mi_NZ" , "" , 0x81, 0x01, wxLayout_LeftToRight, "Maori (New Zealand)","te reo M\304\201ori (Aotearoa)" },
|
||||
{ wxLANGUAGE_MAPUCHE, "arn" , "arn" , "arn_CL" , 0x7a, 0x01, wxLayout_LeftToRight, "Mapuche","Mapudungun" },
|
||||
{ wxLANGUAGE_MAPUCHE_CHILE, "arn-CL" , "arn_CL" , "" , 0x7a, 0x01, wxLayout_LeftToRight, "Mapuche (Chile)","Mapudungun (Chile)" },
|
||||
{ wxLANGUAGE_MARATHI, "mr" , "mr" , "mr_IN" , 0x4e, 0x01, wxLayout_LeftToRight, "Marathi","\340\244\256\340\244\260\340\244\276\340\244\240\340\245\200" },
|
||||
{ wxLANGUAGE_MARATHI_INDIA, "mr-IN" , "mr_IN" , "" , 0x4e, 0x01, wxLayout_LeftToRight, "Marathi (India)","\340\244\256\340\244\260\340\244\276\340\244\240\340\245\200 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_MASAI, "mas" , "mas" , "mas_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Masai","Maa" },
|
||||
{ wxLANGUAGE_MASAI_KENYA, "mas-KE" , "mas_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Masai (Kenya)","Maa (Kenya)" },
|
||||
{ wxLANGUAGE_MASAI_TANZANIA, "mas-TZ" , "mas_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Masai (Tanzania)","Maa (Tansania)" },
|
||||
{ wxLANGUAGE_MAZANDERANI, "mzn" , "mzn" , "mzn_IR" , 0x00, 0x04, wxLayout_RightToLeft, "Mazanderani","\331\205\330\247\330\262\330\261\331\210\331\206\333\214" },
|
||||
{ wxLANGUAGE_MAZANDERANI_IRAN, "mzn-IR" , "mzn_IR" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Mazanderani (Iran)","\331\205\330\247\330\262\330\261\331\210\331\206\333\214 (\330\247\333\214\330\261\330\247\331\206)" },
|
||||
{ wxLANGUAGE_MERU, "mer" , "mer" , "mer_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Meru","K\304\251m\304\251r\305\251" },
|
||||
{ wxLANGUAGE_MERU_KENYA, "mer-KE" , "mer_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Meru (Kenya)","K\304\251m\304\251r\305\251 (Kenya)" },
|
||||
{ wxLANGUAGE_META, "mgo" , "mgo" , "mgo_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Meta\312\274","meta\312\274" },
|
||||
{ wxLANGUAGE_META_CAMEROON, "mgo-CM" , "mgo_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Meta\312\274 (Cameroon)","meta\312\274 (Kamalun)" },
|
||||
{ wxLANGUAGE_MOHAWK, "moh" , "moh" , "moh_CA" , 0x7c, 0x01, wxLayout_LeftToRight, "Mohawk","Kanien\312\274k\303\251ha" },
|
||||
{ wxLANGUAGE_MOHAWK_CANADA, "moh-CA" , "moh_CA" , "" , 0x7c, 0x01, wxLayout_LeftToRight, "Mohawk (Canada)","Kanien\312\274k\303\251ha (Canada)" },
|
||||
{ wxLANGUAGE_MOLDAVIAN, "mo" , "mo" , "" , 0 , 0 , wxLayout_LeftToRight, "Moldavian","\320\273\320\270\320\274\320\261\320\260 \320\274\320\276\320\273\320\264\320\276\320\262\320\265\320\275\321\217\321\201\320\272\321\215" },
|
||||
{ wxLANGUAGE_MONGOLIAN, "mn" , "mn" , "mn_MN" , 0x50, 0x01, wxLayout_LeftToRight, "Mongolian","\320\234\320\276\320\275\320\263\320\276\320\273\302\240\321\205\321\215\320\273" },
|
||||
{ wxLANGUAGE_MONGOLIAN_CYRILLIC, "mn-Cyrl" , "mn@cyrillic" , "" , 0x50, 0x01, wxLayout_LeftToRight, "Mongolian","\320\234\320\276\320\275\320\263\320\276\320\273\302\240\321\205\321\215\320\273 (\320\232\320\270\321\200\320\270\320\273\320\273 \322\257\321\201\321\215\320\263)" },
|
||||
{ wxLANGUAGE_MONGOLIAN_MONGOLIA, "mn-MN" , "mn_MN" , "" , 0x50, 0x01, wxLayout_LeftToRight, "Mongolian (Mongolia)","\320\274\320\276\320\275\320\263\320\276\320\273 (\320\234\320\276\320\275\320\263\320\276\320\273)" },
|
||||
{ wxLANGUAGE_MONGOLIAN_TRADITIONAL, "mn-Mong" , "mn@mongolian" , "" , 0x50, 0x02, wxLayout_LeftToRight, "Mongolian (Traditional Mongolian)","\341\240\256\341\240\243\341\240\251\341\240\255\341\240\243\341\240\244\341\240\257 \341\240\254\341\240\241\341\240\257\341\240\241 (\341\240\256\341\240\243\341\240\251\341\240\255\341\240\243\341\240\244\341\240\257 \341\240\254\341\240\241\341\240\257\341\240\241)" },
|
||||
{ wxLANGUAGE_MONGOLIAN_TRADITIONAL_CHINA, "mn-Mong-CN" , "mn_CN@mongolian" , "" , 0x50, 0x02, wxLayout_LeftToRight, "Mongolian (Traditional Mongolian, China)","\341\240\256\341\240\243\341\240\251\341\240\255\341\240\243\341\240\244\341\240\257 \341\240\254\341\240\241\341\240\257\341\240\241 (\341\240\252\341\240\246\341\240\255\341\240\246\341\240\263\341\240\241 \341\240\250\341\240\240\341\240\242\341\240\267\341\240\240\341\240\256\341\240\263\341\240\240\341\240\254\341\240\244 \341\240\263\341\240\244\341\240\256\341\240\263\341\240\240\341\240\263\341\240\244 \341\240\240\341\240\267\341\240\240\341\240\263 \341\240\243\341\240\257\341\240\243\341\240\260)" },
|
||||
{ wxLANGUAGE_MONGOLIAN_TRADITIONAL_MONGOLIA, "mn-Mong-MN" , "mn_MN@mongolian" , "" , 0x50, 0x03, wxLayout_LeftToRight, "Mongolian (Traditional Mongolian, Mongolia)","\341\240\256\341\240\243\341\240\251\341\240\255\341\240\243\341\240\257 \341\240\254\341\240\241\341\240\257\341\240\241 (\341\240\256\341\240\243\341\240\251\341\240\255\341\240\243\341\240\257 \341\240\243\341\240\257\341\240\243\341\240\260)" },
|
||||
{ wxLANGUAGE_MORISYEN, "mfe" , "mfe" , "mfe_MU" , 0x00, 0x04, wxLayout_LeftToRight, "Morisyen","kreol morisien" },
|
||||
{ wxLANGUAGE_MORISYEN_MAURITIUS, "mfe-MU" , "mfe_MU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Morisyen (Mauritius)","kreol morisien (Moris)" },
|
||||
{ wxLANGUAGE_MUNDANG, "mua" , "mua" , "mua_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Mundang","MUNDA\305\212" },
|
||||
{ wxLANGUAGE_MUNDANG_CAMEROON, "mua-CM" , "mua_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Mundang (Cameroon)","MUNDA\305\212 (kameru\305\213)" },
|
||||
{ wxLANGUAGE_NAMA, "naq" , "naq" , "naq_NA" , 0x00, 0x04, wxLayout_LeftToRight, "Nama","Khoekhoegowab" },
|
||||
{ wxLANGUAGE_NAMA_NAMIBIA, "naq-NA" , "naq_NA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Nama (Namibia)","Khoekhoegowab (Namibiab)" },
|
||||
{ wxLANGUAGE_NAURU, "na" , "na" , "" , 0 , 0 , wxLayout_LeftToRight, "Nauru","Nauru" },
|
||||
{ wxLANGUAGE_NEPALI, "ne" , "ne" , "ne_NP" , 0x61, 0x01, wxLayout_LeftToRight, "Nepali","\340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200" },
|
||||
{ wxLANGUAGE_NEPALI_INDIA, "ne-IN" , "ne_IN" , "" , 0x61, 0x02, wxLayout_LeftToRight, "Nepali (India)","\340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_NEPALI_NEPAL, "ne-NP" , "ne_NP" , "" , 0x61, 0x01, wxLayout_LeftToRight, "Nepali (Nepal)","\340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 (\340\244\250\340\245\207\340\244\252\340\244\276\340\244\262)" },
|
||||
{ wxLANGUAGE_NGIEMBOON, "nnh" , "nnh" , "nnh_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Ngiemboon","Shw\303\263\305\213\303\262 ngiemb\311\224\311\224n" },
|
||||
{ wxLANGUAGE_NGIEMBOON_CAMEROON, "nnh-CM" , "nnh_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ngiemboon (Cameroon)","Shw\303\263\305\213\303\262 ngiemb\311\224\311\224n (K\303\240mal\303\273m)" },
|
||||
{ wxLANGUAGE_NGOMBA, "jgo" , "jgo" , "jgo_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Ngomba","Nda\352\236\214a" },
|
||||
{ wxLANGUAGE_NGOMBA_CAMEROON, "jgo-CM" , "jgo_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ngomba (Cameroon)","Nda\352\236\214a (Kam\311\233l\303\273n)" },
|
||||
{ wxLANGUAGE_NIGERIAN_PIDGIN, "pcm" , "pcm" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Nigerian Pidgin","Naij\303\255ri\303\241 P\303\255jin" },
|
||||
{ wxLANGUAGE_NIGERIAN_PIDGIN_LATIN, "pcm-Latn" , "pcm@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Nigerian Pidgin (Latin)","Naij\303\255ri\303\241 P\303\255jin (L\303\241tin)" },
|
||||
{ wxLANGUAGE_NIGERIAN_PIDGIN_LATIN_NIGERIA, "pcm-Latn-NG" , "pcm_NG@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Nigerian Pidgin (Latin, Nigeria)","Naij\303\255ri\303\241 P\303\255jin (Naij\303\255ria)" },
|
||||
{ wxLANGUAGE_NKO, "nqo" , "nqo" , "nqo_GN" , 0x00, 0x04, wxLayout_RightToLeft, "N'ko","\337\222\337\236\337\217" },
|
||||
{ wxLANGUAGE_NKO_GUINEA, "nqo-GN" , "nqo_GN" , "" , 0x00, 0x04, wxLayout_RightToLeft, "N'ko (Guinea)","\337\222\337\236\337\217 (\337\226\337\214\337\254\337\243\337\215\337\254 \337\236\337\212\337\262\337\223\337\215\337\262)" },
|
||||
{ wxLANGUAGE_NORTHERN_LURI, "lrc" , "lrc" , "lrc_IR" , 0x00, 0x04, wxLayout_RightToLeft, "Northern Luri","\331\204\333\212\330\261\333\214 \330\264\331\210\331\205\330\247\331\204\333\214" },
|
||||
{ wxLANGUAGE_NORTHERN_LURI_IRAN, "lrc-IR" , "lrc_IR" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Northern Luri (Iran)","\331\204\333\212\330\261\333\214 \330\264\331\210\331\205\330\247\331\204\333\214 (Iran)" },
|
||||
{ wxLANGUAGE_NORTHERN_LURI_IRAQ, "lrc-IQ" , "lrc_IQ" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Northern Luri (Iraq)","\331\204\333\212\330\261\333\214 \330\264\331\210\331\205\330\247\331\204\333\214 (Iraq)" },
|
||||
{ wxLANGUAGE_NORTH_NDEBELE, "nd" , "nd" , "nd_ZW" , 0x00, 0x04, wxLayout_LeftToRight, "North Ndebele","isiNdebele" },
|
||||
{ wxLANGUAGE_NORTH_NDEBELE_ZIMBABWE, "nd-ZW" , "nd_ZW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "North Ndebele (Zimbabwe)","isiNdebele (Zimbabwe)" },
|
||||
{ wxLANGUAGE_NORWEGIAN, "no" , "no" , "" , 0x14, 0x01, wxLayout_LeftToRight, "Norwegian","norsk" },
|
||||
{ wxLANGUAGE_NORWEGIAN_BOKMAL, "nb" , "nb" , "nb_NO" , 0x14, 0x01, wxLayout_LeftToRight, "Norwegian Bokm\303\245l","norsk bokm\303\245l" },
|
||||
{ wxLANGUAGE_NORWEGIAN_BOKMAL_NORWAY, "nb-NO" , "nb_NO" , "" , 0x14, 0x01, wxLayout_LeftToRight, "Norwegian Bokm\303\245l (Norway)","norsk bokm\303\245l (Norge)" },
|
||||
{ wxLANGUAGE_NORWEGIAN_BOKMAL_SVALBARD_AND_JAN_MAYEN, "nb-SJ" , "nb_SJ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Norwegian Bokm\303\245l (Svalbard and Jan Mayen)","norsk bokm\303\245l (Svalbard og Jan Mayen)" },
|
||||
{ wxLANGUAGE_NORWEGIAN_NYNORSK, "nn" , "nn" , "nn_NO" , 0x14, 0x02, wxLayout_LeftToRight, "Norwegian Nynorsk","norsk nynorsk" },
|
||||
{ wxLANGUAGE_NORWEGIAN_NYNORSK_NORWAY, "nn-NO" , "nn_NO" , "" , 0x14, 0x02, wxLayout_LeftToRight, "Norwegian Nynorsk (Norway)","norsk nynorsk (Noreg)" },
|
||||
{ wxLANGUAGE_NUER, "nus" , "nus" , "nus_SS" , 0x00, 0x04, wxLayout_LeftToRight, "Nuer","Thok Nath" },
|
||||
{ wxLANGUAGE_NUER_SOUTH_SUDAN, "nus-SS" , "nus_SS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Nuer (South Sudan)","Thok Nath (South Sudan)" },
|
||||
{ wxLANGUAGE_NYANKOLE, "nyn" , "nyn" , "nyn_UG" , 0x00, 0x04, wxLayout_LeftToRight, "Nyankole","Runyankore" },
|
||||
{ wxLANGUAGE_NYANKOLE_UGANDA, "nyn-UG" , "nyn_UG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Nyankole (Uganda)","Runyankore (Uganda)" },
|
||||
{ wxLANGUAGE_OCCITAN, "oc" , "oc" , "oc_FR" , 0x82, 0x01, wxLayout_LeftToRight, "Occitan","occitan" },
|
||||
{ wxLANGUAGE_OCCITAN_FRANCE, "oc-FR" , "oc_FR" , "" , 0x82, 0x01, wxLayout_LeftToRight, "Occitan (France)","occitan (Fran\303\247a)" },
|
||||
{ wxLANGUAGE_ODIA, "or" , "or" , "or_IN" , 0x48, 0x01, wxLayout_LeftToRight, "Odia","\340\254\223\340\254\241\340\254\274\340\254\277\340\254\206" },
|
||||
{ wxLANGUAGE_ODIA_INDIA, "or-IN" , "or_IN" , "" , 0x48, 0x01, wxLayout_LeftToRight, "Odia (India)","\340\254\223\340\254\241\340\254\274\340\254\277\340\254\206 (\340\254\255\340\254\276\340\254\260\340\254\244)" },
|
||||
{ wxLANGUAGE_OROMO, "om" , "om" , "om_ET" , 0x72, 0x01, wxLayout_LeftToRight, "Oromo","Oromoo" },
|
||||
{ wxLANGUAGE_OROMO_ETHIOPIA, "om-ET" , "om_ET" , "" , 0x72, 0x01, wxLayout_LeftToRight, "Oromo (Ethiopia)","Oromoo (Itoophiyaa)" },
|
||||
{ wxLANGUAGE_OROMO_KENYA, "om-KE" , "om_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Oromo (Kenya)","Oromoo (Keeniyaa)" },
|
||||
{ wxLANGUAGE_OSSETIC, "os" , "os" , "os_GE" , 0x00, 0x04, wxLayout_LeftToRight, "Ossetic","\320\270\321\200\320\276\320\275" },
|
||||
{ wxLANGUAGE_OSSETIC_GEORGIA, "os-GE" , "os_GE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ossetic (Georgia)","\320\270\321\200\320\276\320\275 (\320\223\321\203\321\213\321\200\320\264\320\267\321\213\321\201\321\202\320\276\320\275)" },
|
||||
{ wxLANGUAGE_OSSETIC_RUSSIA, "os-RU" , "os_RU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Ossetic (Russia)","\320\270\321\200\320\276\320\275 (\320\243\323\225\321\200\323\225\321\201\320\265)" },
|
||||
{ wxLANGUAGE_PAPIAMENTO, "pap" , "pap" , "" , 0x79, 0x01, wxLayout_LeftToRight, "Papiamento","Papiamentu" },
|
||||
{ wxLANGUAGE_PAPIAMENTO_CARIBBEAN, "pap-029" , "pap_029" , "" , 0x79, 0x01, wxLayout_LeftToRight, "Papiamento (Caribbean)","Papiamentu (Caribbean)" },
|
||||
{ wxLANGUAGE_PASHTO, "ps" , "ps" , "ps_AF" , 0x63, 0x01, wxLayout_RightToLeft, "Pashto","\331\276\332\232\330\252\331\210" },
|
||||
{ wxLANGUAGE_PASHTO_AFGHANISTAN, "ps-AF" , "ps_AF" , "" , 0x63, 0x01, wxLayout_RightToLeft, "Pashto (Afghanistan)","\331\276\332\232\330\252\331\210 (\330\247\331\201\330\272\330\247\331\206\330\263\330\252\330\247\331\206)" },
|
||||
{ wxLANGUAGE_PASHTO_PAKISTAN, "ps-PK" , "ps_PK" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Pashto (Pakistan)","\331\276\332\232\330\252\331\210 (\331\276\330\247\332\251\330\263\330\252\330\247\331\206)" },
|
||||
{ wxLANGUAGE_PERSIAN, "fa" , "fa" , "fa_IR" , 0x29, 0x01, wxLayout_RightToLeft, "Persian","\331\201\330\247\330\261\330\263\333\214" },
|
||||
{ wxLANGUAGE_PERSIAN_AFGHANISTAN, "fa-AF" , "fa_AF" , "" , 0x8c, 0x01, wxLayout_RightToLeft, "Persian (Afghanistan)","\331\201\330\247\330\261\330\263\333\214 (\330\247\331\201\330\272\330\247\331\206\330\263\330\252\330\247\331\206)" },
|
||||
{ wxLANGUAGE_PERSIAN_IRAN, "fa-IR" , "fa_IR" , "" , 0x29, 0x01, wxLayout_RightToLeft, "Persian (Iran)","\331\201\330\247\330\261\330\263\333\214 (\330\247\333\214\330\261\330\247\331\206)" },
|
||||
{ wxLANGUAGE_POLISH, "pl" , "pl" , "pl_PL" , 0x15, 0x01, wxLayout_LeftToRight, "Polish","polski" },
|
||||
{ wxLANGUAGE_POLISH_POLAND, "pl-PL" , "pl_PL" , "" , 0x15, 0x01, wxLayout_LeftToRight, "Polish (Poland)","polski (Polska)" },
|
||||
{ wxLANGUAGE_PORTUGUESE, "pt" , "pt" , "pt_PT" , 0x16, 0x02, wxLayout_LeftToRight, "Portuguese","portugu\303\252s" },
|
||||
{ wxLANGUAGE_PORTUGUESE_ANGOLA, "pt-AO" , "pt_AO" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Angola)","portugu\303\252s (Angola)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_BRAZILIAN, "pt-BR" , "pt_BR" , "" , 0x16, 0x01, wxLayout_LeftToRight, "Portuguese (Brazil)","portugu\303\252s (Brasil)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_CABO_VERDE, "pt-CV" , "pt_CV" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Cabo Verde)","portugu\303\252s (Cabo Verde)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_EQUATORIAL_GUINEA, "pt-GQ" , "pt_GQ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Equatorial Guinea)","portugu\303\252s (Guin\303\251 Equatorial)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_GUINEA_BISSAU, "pt-GW" , "pt_GW" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Guinea-Bissau)","portugu\303\252s (Guin\303\251-Bissau)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_LUXEMBOURG, "pt-LU" , "pt_LU" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Luxembourg)","portugu\303\252s (Luxemburgo)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_MACAO_SAR, "pt-MO" , "pt_MO" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Macao SAR)","portugu\303\252s (RAE de Macau)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_MOZAMBIQUE, "pt-MZ" , "pt_MZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Mozambique)","portugu\303\252s (Mo\303\247ambique)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_PORTUGAL, "pt-PT" , "pt_PT" , "" , 0x16, 0x02, wxLayout_LeftToRight, "Portuguese (Portugal)","portugu\303\252s (Portugal)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_SAO_TOME_AND_PRINCIPE, "pt-ST" , "pt_ST" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (S\303\243o Tom\303\251 and Pr\303\255ncipe)","portugu\303\252s (S\303\243o Tom\303\251 e Pr\303\255ncipe)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_SWITZERLAND, "pt-CH" , "pt_CH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Switzerland)","portugu\303\252s (Su\303\255\303\247a)" },
|
||||
{ wxLANGUAGE_PORTUGUESE_TIMOR_LESTE, "pt-TL" , "pt_TL" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Portuguese (Timor-Leste)","portugu\303\252s (Timor-Leste)" },
|
||||
{ wxLANGUAGE_PRUSSIAN, "prg" , "prg" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Prussian","pr\305\253siskan" },
|
||||
{ wxLANGUAGE_PRUSSIAN_WORLD, "prg-001" , "prg_001" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Prussian (World)","pr\305\253siskan (sw\304\253tai)" },
|
||||
{ wxLANGUAGE_PUNJABI, "pa" , "pa" , "pa_IN" , 0x46, 0x01, wxLayout_LeftToRight, "Punjabi","\340\250\252\340\251\260\340\250\234\340\250\276\340\250\254\340\251\200" },
|
||||
{ wxLANGUAGE_PUNJABI_ARABIC, "pa-Arab" , "pa@arabic" , "" , 0x46, 0x02, wxLayout_RightToLeft, "Punjabi","\331\276\331\206\330\254\330\247\330\250\333\214" },
|
||||
{ wxLANGUAGE_PUNJABI_GURMUKHI, "pa-Guru" , "pa@gurmukhi" , "" , 0x46, 0x01, wxLayout_LeftToRight, "Punjabi","\340\250\252\340\251\260\340\250\234\340\250\276\340\250\254\340\251\200" },
|
||||
{ wxLANGUAGE_PUNJABI_INDIA, "pa-IN" , "pa_IN" , "" , 0x46, 0x01, wxLayout_LeftToRight, "Punjabi (India)","\340\250\252\340\251\260\340\250\234\340\250\276\340\250\254\340\251\200 (\340\250\255\340\250\276\340\250\260\340\250\244)" },
|
||||
{ wxLANGUAGE_PUNJABI_PAKISTAN, "pa-Arab-PK" , "pa_PK@arabic" , "" , 0x46, 0x02, wxLayout_RightToLeft, "Punjabi (Pakistan)","\331\276\331\206\330\254\330\247\330\250\333\214 (\331\276\330\247\332\251\330\263\330\252\330\247\331\206)" },
|
||||
{ wxLANGUAGE_QUECHUA, "quz" , "quz" , "quz_BO" , 0x6b, 0x01, wxLayout_LeftToRight, "Quechua","Runasimi" },
|
||||
{ wxLANGUAGE_QUECHUA_BOLIVIA, "quz-BO" , "quz_BO" , "" , 0x6b, 0x01, wxLayout_LeftToRight, "Quechua (Bolivia)","Runasimi (Bolivia)" },
|
||||
{ wxLANGUAGE_QUECHUA_ECUADOR, "quz-EC" , "quz_EC" , "" , 0x6b, 0x02, wxLayout_LeftToRight, "Quechua (Ecuador)","Runasimi (Ecuador)" },
|
||||
{ wxLANGUAGE_QUECHUA_MACRO, "qu" , "qu" , "" , 0 , 0 , wxLayout_LeftToRight, "Quechua","Qhichwa" },
|
||||
{ wxLANGUAGE_QUECHUA_PERU, "quz-PE" , "quz_PE" , "" , 0x6b, 0x03, wxLayout_LeftToRight, "Quechua (Peru)","Runasimi (Per\303\272)" },
|
||||
{ wxLANGUAGE_RHAETO_ROMANCE, "rm" , "rm" , "rm_CH" , 0x17, 0x01, wxLayout_LeftToRight, "Romansh","rumantsch" },
|
||||
{ wxLANGUAGE_RHAETO_ROMANCE_SWITZERLAND, "rm-CH" , "rm_CH" , "" , 0x17, 0x01, wxLayout_LeftToRight, "Romansh (Switzerland)","rumantsch (Svizra)" },
|
||||
{ wxLANGUAGE_ROMANIAN, "ro" , "ro" , "ro_RO" , 0x18, 0x01, wxLayout_LeftToRight, "Romanian","rom\303\242n\304\203" },
|
||||
{ wxLANGUAGE_ROMANIAN_MOLDOVA, "ro-MD" , "ro_MD" , "" , 0x18, 0x02, wxLayout_LeftToRight, "Romanian (Moldova)","rom\303\242n\304\203 (Republica Moldova)" },
|
||||
{ wxLANGUAGE_ROMANIAN_ROMANIA, "ro-RO" , "ro_RO" , "" , 0x18, 0x01, wxLayout_LeftToRight, "Romanian (Romania)","rom\303\242n\304\203 (Rom\303\242nia)" },
|
||||
{ wxLANGUAGE_ROMBO, "rof" , "rof" , "rof_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Rombo","Kihorombo" },
|
||||
{ wxLANGUAGE_ROMBO_TANZANIA, "rof-TZ" , "rof_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Rombo (Tanzania)","Kihorombo (Tanzania)" },
|
||||
{ wxLANGUAGE_RUSSIAN, "ru" , "ru" , "ru_RU" , 0x19, 0x01, wxLayout_LeftToRight, "Russian","\321\200\321\203\321\201\321\201\320\272\320\270\320\271" },
|
||||
{ wxLANGUAGE_RUSSIAN_BELARUS, "ru-BY" , "ru_BY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Russian (Belarus)","\321\200\321\203\321\201\321\201\320\272\320\270\320\271 (\320\221\320\265\320\273\320\260\321\200\321\203\321\201\321\214)" },
|
||||
{ wxLANGUAGE_RUSSIAN_KAZAKHSTAN, "ru-KZ" , "ru_KZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Russian (Kazakhstan)","\321\200\321\203\321\201\321\201\320\272\320\270\320\271 (\320\232\320\260\320\267\320\260\321\205\321\201\321\202\320\260\320\275)" },
|
||||
{ wxLANGUAGE_RUSSIAN_KYRGYZSTAN, "ru-KG" , "ru_KG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Russian (Kyrgyzstan)","\321\200\321\203\321\201\321\201\320\272\320\270\320\271 (\320\232\320\270\321\200\320\263\320\270\320\267\320\270\321\217)" },
|
||||
{ wxLANGUAGE_RUSSIAN_MOLDOVA, "ru-MD" , "ru_MD" , "" , 0x19, 0x02, wxLayout_LeftToRight, "Russian (Moldova)","\321\200\321\203\321\201\321\201\320\272\320\270\320\271 (\320\234\320\276\320\273\320\264\320\276\320\262\320\260)" },
|
||||
{ wxLANGUAGE_RUSSIAN_RUSSIA, "ru-RU" , "ru_RU" , "" , 0x19, 0x01, wxLayout_LeftToRight, "Russian (Russia)","\321\200\321\203\321\201\321\201\320\272\320\270\320\271 (\320\240\320\276\321\201\321\201\320\270\321\217)" },
|
||||
{ wxLANGUAGE_RUSSIAN_UKRAINE, "ru-UA" , "ru_UA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Russian (Ukraine)","\321\200\321\203\321\201\321\201\320\272\320\270\320\271 (\320\243\320\272\321\200\320\260\320\270\320\275\320\260)" },
|
||||
{ wxLANGUAGE_RWA, "rwk" , "rwk" , "rwk_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Rwa","Kiruwa" },
|
||||
{ wxLANGUAGE_RWA_TANZANIA, "rwk-TZ" , "rwk_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Rwa (Tanzania)","Kiruwa (Tanzania)" },
|
||||
{ wxLANGUAGE_SAHO, "ssy" , "ssy" , "ssy_ER" , 0x00, 0x04, wxLayout_LeftToRight, "Saho","Saho" },
|
||||
{ wxLANGUAGE_SAHO_ERITREA, "ssy-ER" , "ssy_ER" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Saho (Eritrea)","Saho (Eretria)" },
|
||||
{ wxLANGUAGE_SAKHA, "sah" , "sah" , "sah_RU" , 0x85, 0x01, wxLayout_LeftToRight, "Sakha","\321\201\320\260\321\205\320\260 \321\202\321\213\320\273\320\260" },
|
||||
{ wxLANGUAGE_SAKHA_RUSSIA, "sah-RU" , "sah_RU" , "" , 0x85, 0x01, wxLayout_LeftToRight, "Sakha (Russia)","\321\201\320\260\321\205\320\260 \321\202\321\213\320\273\320\260 (\320\220\321\200\320\260\321\201\321\201\321\213\321\213\320\271\320\260)" },
|
||||
{ wxLANGUAGE_SAMBURU, "saq" , "saq" , "saq_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Samburu","Kisampur" },
|
||||
{ wxLANGUAGE_SAMBURU_KENYA, "saq-KE" , "saq_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Samburu (Kenya)","Kisampur (Kenya)" },
|
||||
{ wxLANGUAGE_SAMI, "se" , "se" , "se_NO" , 0x3b, 0x01, wxLayout_LeftToRight, "Northern Sami","davvis\303\241megiella" },
|
||||
{ wxLANGUAGE_SAMI_FINLAND, "se-FI" , "se_FI" , "" , 0x3b, 0x03, wxLayout_LeftToRight, "Sami, Northern (Finland)","davvis\303\241megiella (Suopma)" },
|
||||
{ wxLANGUAGE_SAMI_INARI, "smn" , "smn" , "smn_FI" , 0x3b, 0x09, wxLayout_LeftToRight, "Sami (Inari)","anar\303\242\305\241kiel\303\242" },
|
||||
{ wxLANGUAGE_SAMI_INARI_FINLAND, "smn-FI" , "smn_FI" , "" , 0x3b, 0x09, wxLayout_LeftToRight, "Sami, Inari (Finland)","anar\303\242\305\241kiel\303\242 (Suom\303\242)" },
|
||||
{ wxLANGUAGE_SAMI_LULE, "smj" , "smj" , "smj_SE" , 0x3b, 0x05, wxLayout_LeftToRight, "Sami (Lule)","julevus\303\241megiella" },
|
||||
{ wxLANGUAGE_SAMI_LULE_NORWAY, "smj-NO" , "smj_NO" , "" , 0x3b, 0x04, wxLayout_LeftToRight, "Sami, Lule (Norway)","julevus\303\241megiella (Vuodna)" },
|
||||
{ wxLANGUAGE_SAMI_LULE_SWEDEN, "smj-SE" , "smj_SE" , "" , 0x3b, 0x05, wxLayout_LeftToRight, "Sami, Lule (Sweden)","julevus\303\241megiella (Svierik)" },
|
||||
{ wxLANGUAGE_SAMI_NORWAY, "se-NO" , "se_NO" , "" , 0x3b, 0x01, wxLayout_LeftToRight, "Sami, Northern (Norway)","davvis\303\241megiella (Norga)" },
|
||||
{ wxLANGUAGE_SAMI_SKOLT, "sms" , "sms" , "sms_FI" , 0x3b, 0x08, wxLayout_LeftToRight, "Sami (Skolt)","s\303\244\303\244\302\264m\307\251i\303\265ll" },
|
||||
{ wxLANGUAGE_SAMI_SKOLT_FINLAND, "sms-FI" , "sms_FI" , "" , 0x3b, 0x08, wxLayout_LeftToRight, "Sami, Skolt (Finland)","s\303\244\303\244\302\264m\307\251i\303\265ll (L\303\244\303\244\302\264ddj\303\242nnam)" },
|
||||
{ wxLANGUAGE_SAMI_SOUTHERN, "sma" , "sma" , "sma_SE" , 0x3b, 0x07, wxLayout_LeftToRight, "Sami (Southern)","\303\245arjelsaemieng\303\257ele" },
|
||||
{ wxLANGUAGE_SAMI_SOUTHERN_NORWAY, "sma-NO" , "sma_NO" , "" , 0x3b, 0x06, wxLayout_LeftToRight, "Sami, Southern (Norway)","\303\245arjelsaemieng\303\257ele (N\303\266\303\266rje)" },
|
||||
{ wxLANGUAGE_SAMI_SOUTHERN_SWEDEN, "sma-SE" , "sma_SE" , "" , 0x3b, 0x07, wxLayout_LeftToRight, "Sami, Southern (Sweden)","\303\245arjelsaemieng\303\257ele (Sveerje)" },
|
||||
{ wxLANGUAGE_SAMI_SWEDEN, "se-SE" , "se_SE" , "" , 0x3b, 0x02, wxLayout_LeftToRight, "Sami, Northern (Sweden)","davvis\303\241megiella (Ruo\305\247\305\247a)" },
|
||||
{ wxLANGUAGE_SAMOAN, "sm" , "sm" , "" , 0 , 0 , wxLayout_LeftToRight, "Samoan","Samoa" },
|
||||
{ wxLANGUAGE_SANGHO, "sg" , "sg" , "sg_CF" , 0x00, 0x04, wxLayout_LeftToRight, "Sango","S\303\244ng\303\266" },
|
||||
{ wxLANGUAGE_SANGHO_CENTRAL_AFRICAN_REPUBLIC, "sg-CF" , "sg_CF" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Sango (Central African Republic)","S\303\244ng\303\266 (K\303\266d\303\266r\303\266s\303\252se t\303\256 B\303\252afr\303\256ka)" },
|
||||
{ wxLANGUAGE_SANGU, "sbp" , "sbp" , "sbp_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Sangu","Ishisangu" },
|
||||
{ wxLANGUAGE_SANGU_TANZANIA, "sbp-TZ" , "sbp_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Sangu (Tanzania)","Ishisangu (Tansaniya)" },
|
||||
{ wxLANGUAGE_SANSKRIT, "sa" , "sa" , "sa_IN" , 0x4f, 0x01, wxLayout_LeftToRight, "Sanskrit","\340\244\270\340\244\202\340\244\270\340\245\215\340\244\225\340\245\203\340\244\244 \340\244\255\340\244\276\340\244\267\340\244\276" },
|
||||
{ wxLANGUAGE_SANSKRIT_INDIA, "sa-IN" , "sa_IN" , "" , 0x4f, 0x01, wxLayout_LeftToRight, "Sanskrit (India)","\340\244\270\340\244\202\340\244\270\340\245\215\340\244\225\340\245\203\340\244\244 \340\244\255\340\244\276\340\244\267\340\244\276 (\340\244\255\340\244\276\340\244\260\340\244\244\340\244\203)" },
|
||||
{ wxLANGUAGE_SANTALI, "sat" , "sat" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Santali","\341\261\245\341\261\237\341\261\261\341\261\233\341\261\237\341\261\262\341\261\244" },
|
||||
{ wxLANGUAGE_SANTALI_OL_CHIKI, "sat-Olck" , "sat@ol_chiki" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Santali (Ol Chiki)","\341\261\245\341\261\237\341\261\261\341\261\233\341\261\237\341\261\262\341\261\244 (\341\261\232\341\261\236 \341\261\252\341\261\244\341\261\240\341\261\244)" },
|
||||
{ wxLANGUAGE_SANTALI_OL_CHIKI_INDIA, "sat-Olck-IN" , "sat_IN@ol_chiki" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Santali (Ol Chiki, India)","\341\261\245\341\261\237\341\261\261\341\261\233\341\261\237\341\261\262\341\261\244 (\341\261\244\341\261\261\341\261\260\341\261\244\341\261\255\341\261\237)" },
|
||||
{ wxLANGUAGE_SCOTS_GAELIC, "gd" , "gd" , "gd_GB" , 0x91, 0x01, wxLayout_LeftToRight, "Scottish Gaelic","G\303\240idhlig" },
|
||||
{ wxLANGUAGE_SCOTS_GAELIC_UK, "gd-GB" , "gd_GB" , "" , 0x91, 0x01, wxLayout_LeftToRight, "Scottish Gaelic (United Kingdom)","G\303\240idhlig (An R\303\254oghachd Aonaichte)" },
|
||||
{ wxLANGUAGE_SENA, "seh" , "seh" , "seh_MZ" , 0x00, 0x04, wxLayout_LeftToRight, "Sena","sena" },
|
||||
{ wxLANGUAGE_SENA_MOZAMBIQUE, "seh-MZ" , "seh_MZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Sena (Mozambique)","sena (Mo\303\247ambique)" },
|
||||
{ wxLANGUAGE_SERBIAN, "sr" , "sr" , "sr_RS" , 0x1a, 0x01, wxLayout_LeftToRight, "Serbian","srpski" },
|
||||
{ wxLANGUAGE_SERBIAN_CYRILLIC, "sr-Cyrl" , "sr@cyrillic" , "" , 0x1a, 0x0a, wxLayout_LeftToRight, "Serbian (Cyrillic)","\321\201\321\200\320\277\321\201\320\272\320\270 (\320\213\320\270\321\200\320\270\320\273\320\270\321\206\320\260)" },
|
||||
{ wxLANGUAGE_SERBIAN_CYRILLIC_BOSNIA_AND_HERZEGOVINA, "sr-Cyrl-BA" , "sr_BA@cyrillic" , "" , 0x1a, 0x07, wxLayout_LeftToRight, "Serbian (Cyrillic, Bosnia and Herzegovina)","\321\201\321\200\320\277\321\201\320\272\320\270 (\320\221\320\276\321\201\320\275\320\260 \320\270 \320\245\320\265\321\200\321\206\320\265\320\263\320\276\320\262\320\270\320\275\320\260)" },
|
||||
{ wxLANGUAGE_SERBIAN_CYRILLIC_KOSOVO, "sr-Cyrl-XK" , "sr_XK@cyrillic" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Serbian (Cyrillic, Kosovo)","\321\201\321\200\320\277\321\201\320\272\320\270 (\320\232\320\276\321\201\320\276\320\262\320\276)" },
|
||||
{ wxLANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO, "sr-Cyrl-ME" , "sr_ME@cyrillic" , "" , 0x1a, 0x0c, wxLayout_LeftToRight, "Serbian (Cyrillic, Montenegro)","\321\201\321\200\320\277\321\201\320\272\320\270 (\320\246\321\200\320\275\320\260 \320\223\320\276\321\200\320\260)" },
|
||||
{ wxLANGUAGE_SERBIAN_CYRILLIC_SERBIA, "sr-Cyrl-RS" , "sr_RS@cyrillic" , "" , 0x1a, 0x0a, wxLayout_LeftToRight, "Serbian (Cyrillic, Serbia)","\321\201\321\200\320\277\321\201\320\272\320\270 (\320\241\321\200\320\261\320\270\321\230\320\260)" },
|
||||
{ wxLANGUAGE_SERBIAN_CYRILLIC_YU, "sr-Cyrl-YU" , "sr_YU@cyrillic" , "" , 0x1a, 0x03, wxLayout_LeftToRight, "Serbian (Cyrillic)","\321\201\321\200\320\277\321\201\320\272\320\270 (\320\241\321\200\320\261\320\270\321\230\320\260)" },
|
||||
{ wxLANGUAGE_SERBIAN_LATIN, "sr-Latn" , "sr@latin" , "" , 0x1a, 0x09, wxLayout_LeftToRight, "Serbian (Latin)","srpski (latinica)" },
|
||||
{ wxLANGUAGE_SERBIAN_LATIN_BOSNIA_AND_HERZEGOVINA, "sr-Latn-BA" , "sr_BA@latin" , "" , 0x1a, 0x06, wxLayout_LeftToRight, "Serbian (Latin, Bosnia and Herzegovina)","srpski (Bosna i Hercegovina)" },
|
||||
{ wxLANGUAGE_SERBIAN_LATIN_KOSOVO, "sr-Latn-XK" , "sr_XK@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Serbian (Latin, Kosovo)","srpski (Kosovo)" },
|
||||
{ wxLANGUAGE_SERBIAN_LATIN_MONTENEGRO, "sr-Latn-ME" , "sr_ME@latin" , "" , 0x1a, 0x0b, wxLayout_LeftToRight, "Serbian (Latin, Montenegro)","srpski (Crna Gora)" },
|
||||
{ wxLANGUAGE_SERBIAN_LATIN_SERBIA, "sr-Latn-RS" , "sr_RS@latin" , "" , 0x1a, 0x09, wxLayout_LeftToRight, "Serbian (Latin, Serbia)","srpski (Srbija)" },
|
||||
{ wxLANGUAGE_SERBIAN_LATIN_YU, "sr-Latn-YU" , "sr_YU@latin" , "" , 0x1a, 0x02, wxLayout_LeftToRight, "Serbian (Latin)","srpski (latinica)" },
|
||||
{ wxLANGUAGE_SERBIAN_SERBIA, "sr-RS" , "sr_RS" , "" , 0x1a, 0x01, wxLayout_LeftToRight, "Serbian (Serbia)","srpski (Srbija)" },
|
||||
{ wxLANGUAGE_SERBIAN_YU, "sr-YU" , "sr_YU" , "" , 0x1a, 0x01, wxLayout_LeftToRight, "Serbian","srpski" },
|
||||
{ wxLANGUAGE_SERBO_CROATIAN, "sh" , "sh" , "" , 0 , 0 , wxLayout_LeftToRight, "Serbo-Croatian","srpskohrvatski" },
|
||||
{ wxLANGUAGE_SESOTHO, "st" , "st" , "st_ZA" , 0x30, 0x01, wxLayout_LeftToRight, "Sesotho","Sesotho" },
|
||||
{ wxLANGUAGE_SESOTHO_LESOTHO, "st-LS" , "st_LS" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Sesotho (Lesotho)","Sesotho (Lesotho)" },
|
||||
{ wxLANGUAGE_SESOTHO_SA_LEBOA, "nso" , "nso" , "nso_ZA" , 0x6c, 0x01, wxLayout_LeftToRight, "Sesotho sa Leboa","Sesotho sa Leboa" },
|
||||
{ wxLANGUAGE_SESOTHO_SA_LEBOA_SOUTH_AFRICA, "nso-ZA" , "nso_ZA" , "" , 0x6c, 0x01, wxLayout_LeftToRight, "Sesotho sa Leboa (South Africa)","Sesotho sa Leboa (Afrika Borwa)" },
|
||||
{ wxLANGUAGE_SESOTHO_SOUTH_AFRICA, "st-ZA" , "st_ZA" , "" , 0x30, 0x01, wxLayout_LeftToRight, "Sesotho (South Africa)","Sesotho (South Africa)" },
|
||||
{ wxLANGUAGE_SETSWANA, "tn" , "tn" , "tn_ZA" , 0x32, 0x01, wxLayout_LeftToRight, "Setswana","Setswana" },
|
||||
{ wxLANGUAGE_SETSWANA_BOTSWANA, "tn-BW" , "tn_BW" , "" , 0x32, 0x02, wxLayout_LeftToRight, "Setswana (Botswana)","Setswana (Botswana)" },
|
||||
{ wxLANGUAGE_SETSWANA_SOUTH_AFRICA, "tn-ZA" , "tn_ZA" , "" , 0x32, 0x01, wxLayout_LeftToRight, "Setswana (South Africa)","Setswana (Aforika Borwa)" },
|
||||
{ wxLANGUAGE_SHAMBALA, "ksb" , "ksb" , "ksb_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Shambala","Kishambaa" },
|
||||
{ wxLANGUAGE_SHAMBALA_TANZANIA, "ksb-TZ" , "ksb_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Shambala (Tanzania)","Kishambaa (Tanzania)" },
|
||||
{ wxLANGUAGE_SHONA, "sn" , "sn" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Shona","chiShona" },
|
||||
{ wxLANGUAGE_SHONA_LATIN, "sn-Latn" , "sn@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Shona (Latin)","chiShona (Latin)" },
|
||||
{ wxLANGUAGE_SHONA_LATIN_ZIMBABWE, "sn-Latn-ZW" , "sn_ZW@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Shona (Latin, Zimbabwe)","chiShona (Zimbabwe)" },
|
||||
{ wxLANGUAGE_SINDHI, "sd" , "sd" , "" , 0x59, 0x02, wxLayout_RightToLeft, "Sindhi","\330\263\331\206\332\214\331\212" },
|
||||
{ wxLANGUAGE_SINDHI_ARABIC, "sd-Arab" , "sd@arabic" , "" , 0x59, 0x02, wxLayout_RightToLeft, "Sindhi","\330\263\331\206\332\214\331\212" },
|
||||
{ wxLANGUAGE_SINDHI_DEVANAGARI, "sd-Deva" , "sd@devanagari" , "" , 0x59, 0x01, wxLayout_LeftToRight, "Sindhi (Devanagari)","\340\244\270\340\244\277\340\244\250\340\245\215\340\244\247\340\245\200" },
|
||||
{ wxLANGUAGE_SINDHI_DEVANAGARI_INDIA, "sd-Deva-IN" , "sd_IN@devanagari" , "" , 0x59, 0x01, wxLayout_LeftToRight, "Sindhi (Devanagari, India)","\340\244\270\340\244\277\340\244\250\340\245\215\340\244\247\340\245\200 (\340\244\255\340\244\276\340\244\260\340\244\244)" },
|
||||
{ wxLANGUAGE_SINDHI_PAKISTAN, "sd-Arab-PK" , "sd_PK@arabic" , "" , 0x59, 0x02, wxLayout_RightToLeft, "Sindhi (Pakistan)","\330\263\331\206\332\214\331\212 (\331\276\330\247\332\251\330\263\330\252\330\247\331\206)" },
|
||||
{ wxLANGUAGE_SINHALESE, "si" , "si" , "si_LK" , 0x5b, 0x01, wxLayout_LeftToRight, "Sinhala","\340\267\203\340\267\222\340\266\202\340\267\204\340\266\275" },
|
||||
{ wxLANGUAGE_SINHALESE_SRI_LANKA, "si-LK" , "si_LK" , "" , 0x5b, 0x01, wxLayout_LeftToRight, "Sinhala (Sri Lanka)","\340\267\203\340\267\222\340\266\202\340\267\204\340\266\275 (\340\267\201\340\267\212\342\200\215\340\266\273\340\267\223 \340\266\275\340\266\202\340\266\232\340\267\217\340\267\200)" },
|
||||
{ wxLANGUAGE_SISWATI, "ss" , "ss" , "ss_ZA" , 0x00, 0x04, wxLayout_LeftToRight, "siSwati","Siswati" },
|
||||
{ wxLANGUAGE_SISWATI_ESWATINI, "ss-SZ" , "ss_SZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "siSwati (Eswatini)","siSwati (eSwatini)" },
|
||||
{ wxLANGUAGE_SISWATI_SOUTH_AFRICA, "ss-ZA" , "ss_ZA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "siSwati (South Africa)","siSwati (South Africa)" },
|
||||
{ wxLANGUAGE_SLOVAK, "sk" , "sk" , "sk_SK" , 0x1b, 0x01, wxLayout_LeftToRight, "Slovak","sloven\304\215ina" },
|
||||
{ wxLANGUAGE_SLOVAK_SLOVAKIA, "sk-SK" , "sk_SK" , "" , 0x1b, 0x01, wxLayout_LeftToRight, "Slovak (Slovakia)","sloven\304\215ina (Slovensko)" },
|
||||
{ wxLANGUAGE_SLOVENIAN, "sl" , "sl" , "sl_SI" , 0x24, 0x01, wxLayout_LeftToRight, "Slovenian","sloven\305\241\304\215ina" },
|
||||
{ wxLANGUAGE_SLOVENIAN_SLOVENIA, "sl-SI" , "sl_SI" , "" , 0x24, 0x01, wxLayout_LeftToRight, "Slovenian (Slovenia)","sloven\305\241\304\215ina (Slovenija)" },
|
||||
{ wxLANGUAGE_SOGA, "xog" , "xog" , "xog_UG" , 0x00, 0x04, wxLayout_LeftToRight, "Soga","Olusoga" },
|
||||
{ wxLANGUAGE_SOGA_UGANDA, "xog-UG" , "xog_UG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Soga (Uganda)","Olusoga (Yuganda)" },
|
||||
{ wxLANGUAGE_SOMALI, "so" , "so" , "so_SO" , 0x77, 0x01, wxLayout_LeftToRight, "Somali","Soomaali" },
|
||||
{ wxLANGUAGE_SOMALI_DJIBOUTI, "so-DJ" , "so_DJ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Somali (Djibouti)","Soomaali (Jabuuti)" },
|
||||
{ wxLANGUAGE_SOMALI_ETHIOPIA, "so-ET" , "so_ET" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Somali (Ethiopia)","Soomaali (Itoobiya)" },
|
||||
{ wxLANGUAGE_SOMALI_KENYA, "so-KE" , "so_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Somali (Kenya)","Soomaali (Kenya)" },
|
||||
{ wxLANGUAGE_SOMALI_SOMALIA, "so-SO" , "so_SO" , "" , 0x77, 0x01, wxLayout_LeftToRight, "Somali (Somalia)","Soomaali (Soomaaliya)" },
|
||||
{ wxLANGUAGE_SOUTH_NDEBELE, "nr" , "nr" , "nr_ZA" , 0x00, 0x04, wxLayout_LeftToRight, "South Ndebele","isiNdebele" },
|
||||
{ wxLANGUAGE_SOUTH_NDEBELE_SOUTH_AFRICA, "nr-ZA" , "nr_ZA" , "" , 0x00, 0x04, wxLayout_LeftToRight, "South Ndebele (South Africa)","isiNdebele (South Africa)" },
|
||||
{ wxLANGUAGE_SPANISH, "es" , "es" , "es_ES" , 0x0a, 0x03, wxLayout_LeftToRight, "Spanish","espa\303\261ol" },
|
||||
{ wxLANGUAGE_SPANISH_ARGENTINA, "es-AR" , "es_AR" , "" , 0x0a, 0x0b, wxLayout_LeftToRight, "Spanish (Argentina)","espa\303\261ol (Argentina)" },
|
||||
{ wxLANGUAGE_SPANISH_BELIZE, "es-BZ" , "es_BZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Spanish (Belize)","espa\303\261ol (Belice)" },
|
||||
{ wxLANGUAGE_SPANISH_BOLIVIA, "es-BO" , "es_BO" , "" , 0x0a, 0x10, wxLayout_LeftToRight, "Spanish (Bolivia)","espa\303\261ol (Bolivia)" },
|
||||
{ wxLANGUAGE_SPANISH_BRAZIL, "es-BR" , "es_BR" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Spanish (Brazil)","espa\303\261ol (Brasil)" },
|
||||
{ wxLANGUAGE_SPANISH_CHILE, "es-CL" , "es_CL" , "" , 0x0a, 0x0d, wxLayout_LeftToRight, "Spanish (Chile)","espa\303\261ol (Chile)" },
|
||||
{ wxLANGUAGE_SPANISH_COLOMBIA, "es-CO" , "es_CO" , "" , 0x0a, 0x09, wxLayout_LeftToRight, "Spanish (Colombia)","espa\303\261ol (Colombia)" },
|
||||
{ wxLANGUAGE_SPANISH_COSTA_RICA, "es-CR" , "es_CR" , "" , 0x0a, 0x05, wxLayout_LeftToRight, "Spanish (Costa Rica)","espa\303\261ol (Costa Rica)" },
|
||||
{ wxLANGUAGE_SPANISH_CUBA, "es-CU" , "es_CU" , "" , 0x0a, 0x17, wxLayout_LeftToRight, "Spanish (Cuba)","espa\303\261ol (Cuba)" },
|
||||
{ wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC, "es-DO" , "es_DO" , "" , 0x0a, 0x07, wxLayout_LeftToRight, "Spanish (Dominican Republic)","espa\303\261ol (Rep\303\272blica Dominicana)" },
|
||||
{ wxLANGUAGE_SPANISH_ECUADOR, "es-EC" , "es_EC" , "" , 0x0a, 0x0c, wxLayout_LeftToRight, "Spanish (Ecuador)","espa\303\261ol (Ecuador)" },
|
||||
{ wxLANGUAGE_SPANISH_EL_SALVADOR, "es-SV" , "es_SV" , "" , 0x0a, 0x11, wxLayout_LeftToRight, "Spanish (El Salvador)","espa\303\261ol (El Salvador)" },
|
||||
{ wxLANGUAGE_SPANISH_EQUATORIAL_GUINEA, "es-GQ" , "es_GQ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Spanish (Equatorial Guinea)","espa\303\261ol (Guinea Ecuatorial)" },
|
||||
{ wxLANGUAGE_SPANISH_GUATEMALA, "es-GT" , "es_GT" , "" , 0x0a, 0x04, wxLayout_LeftToRight, "Spanish (Guatemala)","espa\303\261ol (Guatemala)" },
|
||||
{ wxLANGUAGE_SPANISH_HONDURAS, "es-HN" , "es_HN" , "" , 0x0a, 0x12, wxLayout_LeftToRight, "Spanish (Honduras)","espa\303\261ol (Honduras)" },
|
||||
{ wxLANGUAGE_SPANISH_LATIN_AMERICA, "es-419" , "es_419" , "" , 0x0a, 0x16, wxLayout_LeftToRight, "Spanish (Latin America)","espa\303\261ol (Latinoam\303\251rica)" },
|
||||
{ wxLANGUAGE_SPANISH_MEXICAN, "es-MX" , "es_MX" , "" , 0x0a, 0x02, wxLayout_LeftToRight, "Spanish (Mexico)","espa\303\261ol (M\303\251xico)" },
|
||||
{ wxLANGUAGE_SPANISH_NICARAGUA, "es-NI" , "es_NI" , "" , 0x0a, 0x13, wxLayout_LeftToRight, "Spanish (Nicaragua)","espa\303\261ol (Nicaragua)" },
|
||||
{ wxLANGUAGE_SPANISH_PANAMA, "es-PA" , "es_PA" , "" , 0x0a, 0x06, wxLayout_LeftToRight, "Spanish (Panama)","espa\303\261ol (Panam\303\241)" },
|
||||
{ wxLANGUAGE_SPANISH_PARAGUAY, "es-PY" , "es_PY" , "" , 0x0a, 0x0f, wxLayout_LeftToRight, "Spanish (Paraguay)","espa\303\261ol (Paraguay)" },
|
||||
{ wxLANGUAGE_SPANISH_PERU, "es-PE" , "es_PE" , "" , 0x0a, 0x0a, wxLayout_LeftToRight, "Spanish (Peru)","espa\303\261ol (Per\303\272)" },
|
||||
{ wxLANGUAGE_SPANISH_PHILIPPINES, "es-PH" , "es_PH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Spanish (Philippines)","espa\303\261ol (Filipinas)" },
|
||||
{ wxLANGUAGE_SPANISH_PUERTO_RICO, "es-PR" , "es_PR" , "" , 0x0a, 0x14, wxLayout_LeftToRight, "Spanish (Puerto Rico)","espa\303\261ol (Puerto Rico)" },
|
||||
{ wxLANGUAGE_SPANISH_SPAIN, "es-ES" , "es_ES" , "" , 0x0a, 0x03, wxLayout_LeftToRight, "Spanish (Spain, International Sort)","espa\303\261ol (Espa\303\261a, alfabetizaci\303\263n internacional)" },
|
||||
{ wxLANGUAGE_SPANISH_URUGUAY, "es-UY" , "es_UY" , "" , 0x0a, 0x0e, wxLayout_LeftToRight, "Spanish (Uruguay)","espa\303\261ol (Uruguay)" },
|
||||
{ wxLANGUAGE_SPANISH_US, "es-US" , "es_US" , "" , 0x0a, 0x15, wxLayout_LeftToRight, "Spanish (United States)","espa\303\261ol (Estados Unidos)" },
|
||||
{ wxLANGUAGE_SPANISH_VENEZUELA, "es-VE" , "es_VE" , "" , 0x0a, 0x08, wxLayout_LeftToRight, "Spanish (Venezuela)","espa\303\261ol (Venezuela)" },
|
||||
{ wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT, "zgh" , "zgh" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Standard Moroccan Tamazight","\342\265\234\342\264\260\342\265\216\342\264\260\342\265\243\342\265\211\342\265\226\342\265\234" },
|
||||
{ wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT_TIFINAGH, "zgh-Tfng" , "zgh@tifinagh" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Standard Moroccan Tamazight (Tifinagh)","\342\265\234\342\264\260\342\265\216\342\264\260\342\265\243\342\265\211\342\265\226\342\265\234 (Tifinagh)" },
|
||||
{ wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT_TIFINAGH_MOROCCO, "zgh-Tfng-MA" , "zgh_MA@tifinagh" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Standard Moroccan Tamazight (Tifinagh, Morocco)","\342\265\234\342\264\260\342\265\216\342\264\260\342\265\243\342\265\211\342\265\226\342\265\234 (\342\265\215\342\265\216\342\265\226\342\265\224\342\265\211\342\264\261)" },
|
||||
{ wxLANGUAGE_SUNDANESE, "su" , "su" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Sundanese","Basa Sunda" },
|
||||
{ wxLANGUAGE_SUNDANESE_LATIN, "su-Latn" , "su@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Sundanese (Latin)","Basa Sunda (Latin)" },
|
||||
{ wxLANGUAGE_SUNDANESE_LATIN_INDONESIA, "su-Latn-ID" , "su_ID@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Sundanese (Latin, Indonesia)","Basa Sunda (Indonesia)" },
|
||||
{ wxLANGUAGE_SWAHILI, "sw" , "sw" , "sw_KE" , 0x41, 0x01, wxLayout_LeftToRight, "Kiswahili","Kiswahili" },
|
||||
{ wxLANGUAGE_SWAHILI_CONGO_DRC, "sw-CD" , "sw_CD" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kiswahili (Congo DRC)","Kiswahili (Jamhuri ya Kidemokrasia ya Kongo)" },
|
||||
{ wxLANGUAGE_SWAHILI_KENYA, "sw-KE" , "sw_KE" , "" , 0x41, 0x01, wxLayout_LeftToRight, "Kiswahili (Kenya)","Kiswahili (Kenya)" },
|
||||
{ wxLANGUAGE_SWAHILI_TANZANIA, "sw-TZ" , "sw_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kiswahili (Tanzania)","Kiswahili (Tanzania)" },
|
||||
{ wxLANGUAGE_SWAHILI_UGANDA, "sw-UG" , "sw_UG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Kiswahili (Uganda)","Kiswahili (Uganda)" },
|
||||
{ wxLANGUAGE_SWEDISH, "sv" , "sv" , "sv_SE" , 0x1d, 0x01, wxLayout_LeftToRight, "Swedish","svenska" },
|
||||
{ wxLANGUAGE_SWEDISH_ALAND_ISLANDS, "sv-AX" , "sv_AX" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Swedish (\303\205land Islands)","svenska (\303\205land)" },
|
||||
{ wxLANGUAGE_SWEDISH_FINLAND, "sv-FI" , "sv_FI" , "" , 0x1d, 0x02, wxLayout_LeftToRight, "Swedish (Finland)","svenska (Finland)" },
|
||||
{ wxLANGUAGE_SWEDISH_SWEDEN, "sv-SE" , "sv_SE" , "" , 0x1d, 0x01, wxLayout_LeftToRight, "Swedish (Sweden)","svenska (Sverige)" },
|
||||
{ wxLANGUAGE_SWISS_GERMAN, "gsw" , "gsw" , "gsw_CH" , 0x00, 0x04, wxLayout_LeftToRight, "Swiss German","Schwiizert\303\274\303\274tsch" },
|
||||
{ wxLANGUAGE_SWISS_GERMAN_LIECHTENSTEIN, "gsw-LI" , "gsw_LI" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Swiss German (Liechtenstein)","Schwiizert\303\274\303\274tsch (Li\303\244chtescht\303\244i)" },
|
||||
{ wxLANGUAGE_SWISS_GERMAN_SWITZERLAND, "gsw-CH" , "gsw_CH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Swiss German (Switzerland)","Schwiizert\303\274\303\274tsch (Schwiiz)" },
|
||||
{ wxLANGUAGE_SYRIAC, "syr" , "syr" , "syr_SY" , 0x5a, 0x01, wxLayout_RightToLeft, "Syriac","\334\243\334\230\334\252\334\235\334\235\334\220" },
|
||||
{ wxLANGUAGE_SYRIAC_SYRIA, "syr-SY" , "syr_SY" , "" , 0x5a, 0x01, wxLayout_RightToLeft, "Syriac (Syria)","\334\243\334\230\334\252\334\235\334\235\334\220 (\334\243\334\230\334\252\334\235\334\220)" },
|
||||
{ wxLANGUAGE_TACHELHIT, "shi" , "shi" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tachelhit","\342\265\234\342\264\260\342\265\233\342\265\215\342\265\203\342\265\211\342\265\234" },
|
||||
{ wxLANGUAGE_TACHELHIT_LATIN, "shi-Latn" , "shi@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tachelhit (Latin)","Tashel\341\270\245iyt (Latin)" },
|
||||
{ wxLANGUAGE_TACHELHIT_LATIN_MOROCCO, "shi-Latn-MA" , "shi_MA@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tachelhit (Latin, Morocco)","Tashel\341\270\245iyt (lm\311\243rib)" },
|
||||
{ wxLANGUAGE_TACHELHIT_TIFINAGH, "shi-Tfng" , "shi@tifinagh" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tachelhit (Tifinagh)","\342\265\234\342\264\260\342\265\233\342\265\215\342\265\203\342\265\211\342\265\234 (Tifinagh)" },
|
||||
{ wxLANGUAGE_TACHELHIT_TIFINAGH_MOROCCO, "shi-Tfng-MA" , "shi_MA@tifinagh" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tachelhit (Tifinagh, Morocco)","\342\265\234\342\264\260\342\265\233\342\265\215\342\265\203\342\265\211\342\265\234 (\342\265\215\342\265\216\342\265\226\342\265\224\342\265\211\342\264\261)" },
|
||||
{ wxLANGUAGE_TAGALOG, "tl" , "tl" , "tl_PH" , 0 , 0 , wxLayout_LeftToRight, "Tagalog","Tagalog" },
|
||||
{ wxLANGUAGE_TAGALOG_PHILIPPINES, "tl-PH" , "tl_PH" , "" , 0 , 0 , wxLayout_LeftToRight, "Tagalog (Philippines)","Tagalog (Pilipinas)" },
|
||||
{ wxLANGUAGE_TAITA, "dav" , "dav" , "dav_KE" , 0x00, 0x04, wxLayout_LeftToRight, "Taita","Kitaita" },
|
||||
{ wxLANGUAGE_TAITA_KENYA, "dav-KE" , "dav_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Taita (Kenya)","Kitaita (Kenya)" },
|
||||
{ wxLANGUAGE_TAJIK, "tg" , "tg" , "" , 0x28, 0x01, wxLayout_LeftToRight, "Tajik","\320\242\320\276\322\267\320\270\320\272\323\243" },
|
||||
{ wxLANGUAGE_TAJIK_CYRILLIC, "tg-Cyrl" , "tg@cyrillic" , "" , 0x28, 0x01, wxLayout_LeftToRight, "Tajik (Cyrillic)","\320\242\320\276\322\267\320\270\320\272\323\243 (\320\232\320\270\321\200\320\270\320\273\320\273\320\270\320\272\323\243)" },
|
||||
{ wxLANGUAGE_TAJIK_CYRILLIC_TAJIKISTAN, "tg-Cyrl-TJ" , "tg_TJ@cyrillic" , "" , 0x28, 0x01, wxLayout_LeftToRight, "Tajik (Cyrillic, Tajikistan)","\321\202\320\276\322\267\320\270\320\272\323\243 (\320\242\320\276\322\267\320\270\320\272\320\270\321\201\321\202\320\276\320\275)" },
|
||||
{ wxLANGUAGE_TAMIL, "ta" , "ta" , "ta_IN" , 0x49, 0x01, wxLayout_LeftToRight, "Tamil","\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215" },
|
||||
{ wxLANGUAGE_TAMIL_INDIA, "ta-IN" , "ta_IN" , "" , 0x49, 0x01, wxLayout_LeftToRight, "Tamil (India)","\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215 (\340\256\207\340\256\250\340\257\215\340\256\244\340\256\277\340\256\257\340\256\276)" },
|
||||
{ wxLANGUAGE_TAMIL_MALAYSIA, "ta-MY" , "ta_MY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tamil (Malaysia)","\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215 (\340\256\256\340\256\262\340\257\207\340\256\232\340\256\277\340\256\257\340\256\276)" },
|
||||
{ wxLANGUAGE_TAMIL_SINGAPORE, "ta-SG" , "ta_SG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tamil (Singapore)","\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215 (\340\256\232\340\256\277\340\256\231\340\257\215\340\256\225\340\256\252\340\257\215\340\256\252\340\257\202\340\256\260\340\257\215)" },
|
||||
{ wxLANGUAGE_TAMIL_SRI_LANKA, "ta-LK" , "ta_LK" , "" , 0x49, 0x02, wxLayout_LeftToRight, "Tamil (Sri Lanka)","\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215 (\340\256\207\340\256\262\340\256\231\340\257\215\340\256\225\340\257\210)" },
|
||||
{ wxLANGUAGE_TASAWAQ, "twq" , "twq" , "twq_NE" , 0x00, 0x04, wxLayout_LeftToRight, "Tasawaq","Tasawaq senni" },
|
||||
{ wxLANGUAGE_TASAWAQ_NIGER, "twq-NE" , "twq_NE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tasawaq (Niger)","Tasawaq senni (Ni\305\276er)" },
|
||||
{ wxLANGUAGE_TATAR, "tt" , "tt" , "tt_RU" , 0x44, 0x01, wxLayout_LeftToRight, "Tatar","\321\202\320\260\321\202\320\260\321\200" },
|
||||
{ wxLANGUAGE_TATAR_RUSSIA, "tt-RU" , "tt_RU" , "" , 0x44, 0x01, wxLayout_LeftToRight, "Tatar (Russia)","\321\202\320\260\321\202\320\260\321\200 (\320\240\320\276\321\201\321\201\320\270\321\217)" },
|
||||
{ wxLANGUAGE_TELUGU, "te" , "te" , "te_IN" , 0x4a, 0x01, wxLayout_LeftToRight, "Telugu","\340\260\244\340\261\206\340\260\262\340\261\201\340\260\227\340\261\201" },
|
||||
{ wxLANGUAGE_TELUGU_INDIA, "te-IN" , "te_IN" , "" , 0x4a, 0x01, wxLayout_LeftToRight, "Telugu (India)","\340\260\244\340\261\206\340\260\262\340\261\201\340\260\227\340\261\201 (\340\260\255\340\260\276\340\260\260\340\260\244\340\260\246\340\261\207\340\260\266\340\260\202)" },
|
||||
{ wxLANGUAGE_TESO, "teo" , "teo" , "teo_UG" , 0x00, 0x04, wxLayout_LeftToRight, "Teso","Kiteso" },
|
||||
{ wxLANGUAGE_TESO_KENYA, "teo-KE" , "teo_KE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Teso (Kenya)","Kiteso (Kenia)" },
|
||||
{ wxLANGUAGE_TESO_UGANDA, "teo-UG" , "teo_UG" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Teso (Uganda)","Kiteso (Uganda)" },
|
||||
{ wxLANGUAGE_THAI, "th" , "th" , "th_TH" , 0x1e, 0x01, wxLayout_LeftToRight, "Thai","\340\271\204\340\270\227\340\270\242" },
|
||||
{ wxLANGUAGE_THAI_THAILAND, "th-TH" , "th_TH" , "" , 0x1e, 0x01, wxLayout_LeftToRight, "Thai (Thailand)","\340\271\204\340\270\227\340\270\242 (\340\271\204\340\270\227\340\270\242)" },
|
||||
{ wxLANGUAGE_TIBETAN, "bo" , "bo" , "bo_CN" , 0x51, 0x01, wxLayout_LeftToRight, "Tibetan","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\246\340\276\220\340\275\221\340\274\213" },
|
||||
{ wxLANGUAGE_TIBETAN_CHINA, "bo-CN" , "bo_CN" , "" , 0x51, 0x01, wxLayout_LeftToRight, "Tibetan (China)","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\246\340\276\220\340\275\221\340\274\213 (\340\275\242\340\276\222\340\276\261\340\274\213\340\275\223\340\275\202)" },
|
||||
{ wxLANGUAGE_TIBETAN_INDIA, "bo-IN" , "bo_IN" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tibetan (India)","\340\275\226\340\275\274\340\275\221\340\274\213\340\275\246\340\276\220\340\275\221\340\274\213 (\340\275\242\340\276\222\340\276\261\340\274\213\340\275\202\340\275\242\340\274\213)" },
|
||||
{ wxLANGUAGE_TIGRE, "tig" , "tig" , "tig_ER" , 0x00, 0x04, wxLayout_LeftToRight, "Tigre","\341\211\265\341\214\215\341\210\250" },
|
||||
{ wxLANGUAGE_TIGRE_ERITREA, "tig-ER" , "tig_ER" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tigre (Eritrea)","\341\211\265\341\214\215\341\210\250 (\341\212\244\341\210\255\341\211\265\341\210\253)" },
|
||||
{ wxLANGUAGE_TIGRINYA, "ti" , "ti" , "ti_ER" , 0x73, 0x02, wxLayout_LeftToRight, "Tigrinya","\341\211\265\341\214\215\341\210\255" },
|
||||
{ wxLANGUAGE_TIGRINYA_ERITREA, "ti-ER" , "ti_ER" , "" , 0x73, 0x02, wxLayout_LeftToRight, "Tigrinya (Eritrea)","\341\211\265\341\214\215\341\210\255 (\341\212\244\341\210\255\341\211\265\341\210\253)" },
|
||||
{ wxLANGUAGE_TIGRINYA_ETHIOPIA, "ti-ET" , "ti_ET" , "" , 0x73, 0x01, wxLayout_LeftToRight, "Tigrinya (Ethiopia)","\341\211\265\341\214\215\341\210\255 (\341\212\242\341\211\265\341\213\256\341\214\265\341\213\253)" },
|
||||
{ wxLANGUAGE_TONGA, "to" , "to" , "to_TO" , 0x00, 0x04, wxLayout_LeftToRight, "Tongan","lea fakatonga" },
|
||||
{ wxLANGUAGE_TONGA_TONGA, "to-TO" , "to_TO" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Tongan (Tonga)","lea fakatonga (Tonga)" },
|
||||
{ wxLANGUAGE_TSONGA, "ts" , "ts" , "ts_ZA" , 0x31, 0x01, wxLayout_LeftToRight, "Xitsonga","Xitsonga" },
|
||||
{ wxLANGUAGE_TSONGA_SOUTH_AFRICA, "ts-ZA" , "ts_ZA" , "" , 0x31, 0x01, wxLayout_LeftToRight, "Xitsonga (South Africa)","Xitsonga (South Africa)" },
|
||||
{ wxLANGUAGE_TURKISH, "tr" , "tr" , "tr_TR" , 0x1f, 0x01, wxLayout_LeftToRight, "Turkish","T\303\274rk\303\247e" },
|
||||
{ wxLANGUAGE_TURKISH_CYPRUS, "tr-CY" , "tr_CY" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Turkish (Cyprus)","T\303\274rk\303\247e (K\304\261br\304\261s)" },
|
||||
{ wxLANGUAGE_TURKISH_TURKIYE, "tr-TR" , "tr_TR" , "" , 0x1f, 0x01, wxLayout_LeftToRight, "Turkish (T\303\274rkiye)","T\303\274rk\303\247e (T\303\274rkiye)" },
|
||||
{ wxLANGUAGE_TURKMEN, "tk" , "tk" , "tk_TM" , 0x42, 0x01, wxLayout_LeftToRight, "Turkmen","t\303\274rkmen dili" },
|
||||
{ wxLANGUAGE_TURKMEN_TURKMENISTAN, "tk-TM" , "tk_TM" , "" , 0x42, 0x01, wxLayout_LeftToRight, "Turkmen (Turkmenistan)","t\303\274rkmen dili (T\303\274rkmenistan)" },
|
||||
{ wxLANGUAGE_TWI, "tw" , "tw" , "" , 0 , 0 , wxLayout_LeftToRight, "Twi","Twi" },
|
||||
{ wxLANGUAGE_UIGHUR, "ug" , "ug" , "ug_CN" , 0x80, 0x01, wxLayout_RightToLeft, "Uyghur","\330\246\333\207\331\212\330\272\333\207\330\261\332\206\333\225" },
|
||||
{ wxLANGUAGE_UIGHUR_CHINA, "ug-CN" , "ug_CN" , "" , 0x80, 0x01, wxLayout_RightToLeft, "Uyghur (China)","\330\246\333\207\331\212\330\272\333\207\330\261\332\206\333\225 (\330\254\333\207\332\255\330\256\333\207\330\247 \330\256\333\225\331\204\331\202 \330\254\333\207\331\205\332\276\333\207\330\261\331\211\331\212\331\211\330\252\331\211)" },
|
||||
{ wxLANGUAGE_UKRAINIAN, "uk" , "uk" , "uk_UA" , 0x22, 0x01, wxLayout_LeftToRight, "Ukrainian","\321\203\320\272\321\200\320\260\321\227\320\275\321\201\321\214\320\272\320\260" },
|
||||
{ wxLANGUAGE_UKRAINIAN_UKRAINE, "uk-UA" , "uk_UA" , "" , 0x22, 0x01, wxLayout_LeftToRight, "Ukrainian (Ukraine)","\321\203\320\272\321\200\320\260\321\227\320\275\321\201\321\214\320\272\320\260 (\320\243\320\272\321\200\320\260\321\227\320\275\320\260)" },
|
||||
{ wxLANGUAGE_UPPER_SORBIAN, "hsb" , "hsb" , "hsb_DE" , 0x2e, 0x01, wxLayout_LeftToRight, "Upper Sorbian","hornjoserb\305\241\304\207ina" },
|
||||
{ wxLANGUAGE_UPPER_SORBIAN_GERMANY, "hsb-DE" , "hsb_DE" , "" , 0x2e, 0x01, wxLayout_LeftToRight, "Upper Sorbian (Germany)","hornjoserb\305\241\304\207ina (N\304\233mska)" },
|
||||
{ wxLANGUAGE_URDU, "ur" , "ur" , "ur_PK" , 0x20, 0x01, wxLayout_RightToLeft, "Urdu","\330\247\330\261\330\257\331\210" },
|
||||
{ wxLANGUAGE_URDU_INDIA, "ur-IN" , "ur_IN" , "" , 0x20, 0x02, wxLayout_RightToLeft, "Urdu (India)","\330\247\330\261\330\257\331\210 (\330\250\332\276\330\247\330\261\330\252)" },
|
||||
{ wxLANGUAGE_URDU_PAKISTAN, "ur-PK" , "ur_PK" , "" , 0x20, 0x01, wxLayout_RightToLeft, "Urdu (Pakistan)","\330\247\330\261\330\257\331\210 (\331\276\330\247\332\251\330\263\330\252\330\247\331\206)" },
|
||||
{ wxLANGUAGE_UZBEK, "uz" , "uz" , "" , 0x43, 0x01, wxLayout_LeftToRight, "Uzbek","o\342\200\230zbek" },
|
||||
{ wxLANGUAGE_UZBEK_ARABIC, "uz-Arab" , "uz@arabic" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Uzbek (Arabic)","\330\247\331\210\330\262\330\250\333\214\332\251 (\330\271\330\261\330\250\333\214)" },
|
||||
{ wxLANGUAGE_UZBEK_ARABIC_AFGHANISTAN, "uz-Arab-AF" , "uz_AF@arabic" , "" , 0x00, 0x04, wxLayout_RightToLeft, "Uzbek (Arabic, Afghanistan)","\330\247\331\210\330\262\330\250\333\214\332\251 (\330\247\331\201\330\272\330\247\331\206\330\263\330\252\330\247\331\206)" },
|
||||
{ wxLANGUAGE_UZBEK_CYRILLIC, "uz-Cyrl" , "uz@cyrillic" , "" , 0x43, 0x02, wxLayout_LeftToRight, "Uzbek (Cyrillic)","\320\216\320\267\320\261\320\265\320\272 (\320\232\320\270\321\200\320\270\320\273)" },
|
||||
{ wxLANGUAGE_UZBEK_CYRILLIC_UZBEKISTAN, "uz-Cyrl-UZ" , "uz_UZ@cyrillic" , "" , 0x43, 0x02, wxLayout_LeftToRight, "Uzbek (Cyrillic, Uzbekistan)","\321\236\320\267\320\261\320\265\320\272\321\207\320\260 (\320\216\320\267\320\261\320\265\320\272\320\270\321\201\321\202\320\276\320\275)" },
|
||||
{ wxLANGUAGE_UZBEK_LATIN, "uz-Latn" , "uz@latin" , "" , 0x43, 0x01, wxLayout_LeftToRight, "Uzbek (Latin)","o\342\200\230zbek" },
|
||||
{ wxLANGUAGE_UZBEK_LATIN_UZBEKISTAN, "uz-Latn-UZ" , "uz_UZ@latin" , "" , 0x43, 0x01, wxLayout_LeftToRight, "Uzbek (Latin, Uzbekistan)","o\342\200\230zbek (O\312\273zbekiston)" },
|
||||
{ wxLANGUAGE_VAI, "vai" , "vai" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Vai","\352\225\231\352\224\244" },
|
||||
{ wxLANGUAGE_VAI_LATIN, "vai-Latn" , "vai@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Vai (Latin)","Vai (Latin)" },
|
||||
{ wxLANGUAGE_VAI_LATIN_LIBERIA, "vai-Latn-LR" , "vai_LR@latin" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Vai (Latin, Liberia)","Vai (Laibhiya)" },
|
||||
{ wxLANGUAGE_VAI_VAI, "vai-Vaii" , "vai@vai" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Vai (Vai)","\352\225\231\352\224\244 (Vai)" },
|
||||
{ wxLANGUAGE_VAI_VAI_LIBERIA, "vai-Vaii-LR" , "vai_LR@vai" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Vai (Vai, Liberia)","\352\225\231\352\224\244 (\352\225\236\352\224\244\352\224\253\352\225\251)" },
|
||||
{ wxLANGUAGE_VALENCIAN, "ca-ES-valencia" , "ca_ES@valencia" , "" , 0x03, 0x02, wxLayout_LeftToRight, "Valencian (Spain)","valenci\303\240 (Espanya)" },
|
||||
{ wxLANGUAGE_VENDA, "ve" , "ve" , "ve_ZA" , 0x33, 0x01, wxLayout_LeftToRight, "Venda","Tshiven\341\270\223a" },
|
||||
{ wxLANGUAGE_VENDA_SOUTH_AFRICA, "ve-ZA" , "ve_ZA" , "" , 0x33, 0x01, wxLayout_LeftToRight, "Venda (South Africa)","Tshiven\341\270\223a (South Africa)" },
|
||||
{ wxLANGUAGE_VIETNAMESE, "vi" , "vi" , "vi_VN" , 0x2a, 0x01, wxLayout_LeftToRight, "Vietnamese","Ti\341\272\277ng Vi\341\273\207t" },
|
||||
{ wxLANGUAGE_VIETNAMESE_VIETNAM, "vi-VN" , "vi_VN" , "" , 0x2a, 0x01, wxLayout_LeftToRight, "Vietnamese (Vietnam)","Ti\341\272\277ng Vi\341\273\207t (Vi\341\273\207t Nam)" },
|
||||
{ wxLANGUAGE_VOLAPUK, "vo" , "vo" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Volap\303\274k","Volap\303\274k" },
|
||||
{ wxLANGUAGE_VOLAPUK_WORLD, "vo-001" , "vo_001" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Volap\303\274k (World)","Volap\303\274k (World)" },
|
||||
{ wxLANGUAGE_VUNJO, "vun" , "vun" , "vun_TZ" , 0x00, 0x04, wxLayout_LeftToRight, "Vunjo","Kyivunjo" },
|
||||
{ wxLANGUAGE_VUNJO_TANZANIA, "vun-TZ" , "vun_TZ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Vunjo (Tanzania)","Kyivunjo (Tanzania)" },
|
||||
{ wxLANGUAGE_WALSER, "wae" , "wae" , "wae_CH" , 0x00, 0x04, wxLayout_LeftToRight, "Walser","Walser" },
|
||||
{ wxLANGUAGE_WALSER_SWITZERLAND, "wae-CH" , "wae_CH" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Walser (Switzerland)","Walser (Schwiz)" },
|
||||
{ wxLANGUAGE_WELSH, "cy" , "cy" , "cy_GB" , 0x52, 0x01, wxLayout_LeftToRight, "Welsh","Cymraeg" },
|
||||
{ wxLANGUAGE_WELSH_UK, "cy-GB" , "cy_GB" , "" , 0x52, 0x01, wxLayout_LeftToRight, "Welsh (United Kingdom)","Cymraeg (Y Deyrnas Unedig)" },
|
||||
{ wxLANGUAGE_WOLAYTTA, "wal" , "wal" , "wal_ET" , 0x00, 0x04, wxLayout_LeftToRight, "Wolaytta","\341\213\210\341\210\213\341\213\255\341\211\263\341\211\261" },
|
||||
{ wxLANGUAGE_WOLAYTTA_ETHIOPIA, "wal-ET" , "wal_ET" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Wolaytta (Ethiopia)","\341\213\210\341\210\213\341\213\255\341\211\263\341\211\261 (\341\212\242\341\211\265\341\213\256\341\214\265\341\213\253)" },
|
||||
{ wxLANGUAGE_WOLOF, "wo" , "wo" , "wo_SN" , 0x88, 0x01, wxLayout_LeftToRight, "Wolof","Wolof" },
|
||||
{ wxLANGUAGE_WOLOF_SENEGAL, "wo-SN" , "wo_SN" , "" , 0x88, 0x01, wxLayout_LeftToRight, "Wolof (Senegal)","Wolof (Senegaal)" },
|
||||
{ wxLANGUAGE_XHOSA, "xh" , "xh" , "xh_ZA" , 0x34, 0x01, wxLayout_LeftToRight, "isiXhosa","isiXhosa" },
|
||||
{ wxLANGUAGE_XHOSA_SOUTH_AFRICA, "xh-ZA" , "xh_ZA" , "" , 0x34, 0x01, wxLayout_LeftToRight, "isiXhosa (South Africa)","isiXhosa (eMzantsi Afrika)" },
|
||||
{ wxLANGUAGE_YANGBEN, "yav" , "yav" , "yav_CM" , 0x00, 0x04, wxLayout_LeftToRight, "Yangben","nuasue" },
|
||||
{ wxLANGUAGE_YANGBEN_CAMEROON, "yav-CM" , "yav_CM" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Yangben (Cameroon)","nuasue (Kemel\303\272n)" },
|
||||
{ wxLANGUAGE_YI, "ii" , "ii" , "ii_CN" , 0x78, 0x01, wxLayout_LeftToRight, "Yi","\352\206\210\352\214\240\352\211\231" },
|
||||
{ wxLANGUAGE_YIDDISH, "yi" , "yi" , "" , 0x3d, 0x01, wxLayout_RightToLeft, "Yiddish","\327\231\327\231\326\264\327\223\327\231\327\251" },
|
||||
{ wxLANGUAGE_YIDDISH_WORLD, "yi-001" , "yi_001" , "" , 0x3d, 0x01, wxLayout_RightToLeft, "Yiddish (World)","\327\231\327\231\326\264\327\223\327\231\327\251 (\327\225\327\225\327\242\327\234\327\230)" },
|
||||
{ wxLANGUAGE_YI_CHINA, "ii-CN" , "ii_CN" , "" , 0x78, 0x01, wxLayout_LeftToRight, "Yi (China)","\352\206\210\352\214\240\352\211\231 (\352\215\217\352\207\251)" },
|
||||
{ wxLANGUAGE_YORUBA, "yo" , "yo" , "yo_NG" , 0x6a, 0x01, wxLayout_LeftToRight, "Yoruba","\303\210d\303\250 Yor\303\271b\303\241" },
|
||||
{ wxLANGUAGE_YORUBA_BENIN, "yo-BJ" , "yo_BJ" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Yoruba (Benin)","\303\210d\303\250 Yor\303\271b\303\241 (B\311\233\314\200n\311\233\314\200)" },
|
||||
{ wxLANGUAGE_YORUBA_NIGERIA, "yo-NG" , "yo_NG" , "" , 0x6a, 0x01, wxLayout_LeftToRight, "Yoruba (Nigeria)","\303\210d\303\250 Yor\303\271b\303\241 (N\303\240\303\254j\303\255r\303\255\303\240)" },
|
||||
{ wxLANGUAGE_ZARMA, "dje" , "dje" , "dje_NE" , 0x00, 0x04, wxLayout_LeftToRight, "Zarma","Zarmaciine" },
|
||||
{ wxLANGUAGE_ZARMA_NIGER, "dje-NE" , "dje_NE" , "" , 0x00, 0x04, wxLayout_LeftToRight, "Zarma (Niger)","Zarmaciine (Ni\305\276er)" },
|
||||
{ wxLANGUAGE_ZHUANG, "za" , "za" , "" , 0 , 0 , wxLayout_LeftToRight, "Zhuang","Zhuang" },
|
||||
{ wxLANGUAGE_ZULU, "zu" , "zu" , "zu_ZA" , 0x35, 0x01, wxLayout_LeftToRight, "isiZulu","isiZulu" },
|
||||
{ wxLANGUAGE_ZULU_SOUTH_AFRICA, "zu-ZA" , "zu_ZA" , "" , 0x35, 0x01, wxLayout_LeftToRight, "isiZulu (South Africa)","isiZulu (iNingizimu Afrika)" },
|
||||
|
||||
{ 0, nullptr, nullptr, nullptr, 0, 0, wxLayout_Default, nullptr, nullptr }
|
||||
};
|
||||
// --- --- --- generated code ends here --- --- ---
|
||||
|
||||
#endif // _WX_PRIVATE_LANG_INFO_H_
|
||||
353
libs/wxWidgets-3.3.1/include/wx/private/lang_likely.h
Normal file
353
libs/wxWidgets-3.3.1/include/wx/private/lang_likely.h
Normal file
@@ -0,0 +1,353 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/lang_likely.h
|
||||
// Purpose: Mapping of likely subtags
|
||||
// Author: misc/languages/genlang.py
|
||||
// Created: 2024-10-04
|
||||
// Copyright: (c) 2024 wxWidgets development team <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WARNING: Parts of this file are generated. See misc/languages/README for
|
||||
// details.
|
||||
|
||||
#ifndef _WX_PRIVATE_LANG_LIKELY_H_
|
||||
#define _WX_PRIVATE_LANG_LIKELY_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Mapping of language ids to default locale tags
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// --- --- --- generated code begins here --- --- ---
|
||||
|
||||
// The following data tables are generated by misc/languages/genlang.py
|
||||
// When making changes, please put them into misc/languages/likelytabl.txt
|
||||
|
||||
// Data table for likely subtags
|
||||
static const struct likelyData_t
|
||||
{
|
||||
const char* tagfrom;
|
||||
const char* tagto;
|
||||
}
|
||||
tabLikelyData[] =
|
||||
{
|
||||
{ "aa", "aa-Latn-ET" },
|
||||
{ "ab", "ab-Cyrl-GE" },
|
||||
{ "af", "af-Latn-ZA" },
|
||||
{ "agq", "agq-Latn-CM" },
|
||||
{ "ak", "ak-Latn-GH" },
|
||||
{ "am", "am-Ethi-ET" },
|
||||
{ "ar", "ar-Arab-EG" },
|
||||
{ "arn", "arn-Latn-CL" },
|
||||
{ "as", "as-Beng-IN" },
|
||||
{ "asa", "asa-Latn-TZ" },
|
||||
{ "ast", "ast-Latn-ES" },
|
||||
{ "ay", "ay-Latn-BO" },
|
||||
{ "az", "az-Latn-AZ" },
|
||||
{ "az-Arab", "az-Arab-IR" },
|
||||
{ "az-IQ", "az-Arab-IQ" },
|
||||
{ "az-IR", "az-Arab-IR" },
|
||||
{ "az-RU", "az-Cyrl-RU" },
|
||||
{ "ba", "ba-Cyrl-RU" },
|
||||
{ "bas", "bas-Latn-CM" },
|
||||
{ "be", "be-Cyrl-BY" },
|
||||
{ "bem", "bem-Latn-ZM" },
|
||||
{ "bez", "bez-Latn-TZ" },
|
||||
{ "bg", "bg-Cyrl-BG" },
|
||||
{ "bi", "bi-Latn-VU" },
|
||||
{ "bin", "bin-Latn-NG" },
|
||||
{ "bm", "bm-Latn-ML" },
|
||||
{ "bn", "bn-Beng-BD" },
|
||||
{ "bo", "bo-Tibt-CN" },
|
||||
{ "br", "br-Latn-FR" },
|
||||
{ "brx", "brx-Deva-IN" },
|
||||
{ "bs", "bs-Latn-BA" },
|
||||
{ "byn", "byn-Ethi-ER" },
|
||||
{ "ca", "ca-Latn-ES" },
|
||||
{ "ccp", "ccp-Cakm-BD" },
|
||||
{ "ce", "ce-Cyrl-RU" },
|
||||
{ "ceb", "ceb-Latn-PH" },
|
||||
{ "cgg", "cgg-Latn-UG" },
|
||||
{ "chr", "chr-Cher-US" },
|
||||
{ "co", "co-Latn-FR" },
|
||||
{ "cs", "cs-Latn-CZ" },
|
||||
{ "cu", "cu-Cyrl-RU" },
|
||||
{ "cu-Glag", "cu-Glag-BG" },
|
||||
{ "cy", "cy-Latn-GB" },
|
||||
{ "da", "da-Latn-DK" },
|
||||
{ "dav", "dav-Latn-KE" },
|
||||
{ "de", "de-Latn-DE" },
|
||||
{ "dje", "dje-Latn-NE" },
|
||||
{ "doi", "doi-Deva-IN" },
|
||||
{ "dsb", "dsb-Latn-DE" },
|
||||
{ "dua", "dua-Latn-CM" },
|
||||
{ "dv", "dv-Thaa-MV" },
|
||||
{ "dyo", "dyo-Latn-SN" },
|
||||
{ "dz", "dz-Tibt-BT" },
|
||||
{ "ebu", "ebu-Latn-KE" },
|
||||
{ "ee", "ee-Latn-GH" },
|
||||
{ "el", "el-Grek-GR" },
|
||||
{ "en", "en-Latn-US" },
|
||||
{ "en-Shaw", "en-Shaw-GB" },
|
||||
{ "eo", "eo-Latn-001" },
|
||||
{ "es", "es-Latn-ES" },
|
||||
{ "et", "et-Latn-EE" },
|
||||
{ "eu", "eu-Latn-ES" },
|
||||
{ "ewo", "ewo-Latn-CM" },
|
||||
{ "fa", "fa-Arab-IR" },
|
||||
{ "ff", "ff-Latn-SN" },
|
||||
{ "ff-Adlm", "ff-Adlm-GN" },
|
||||
{ "fi", "fi-Latn-FI" },
|
||||
{ "fil", "fil-Latn-PH" },
|
||||
{ "fj", "fj-Latn-FJ" },
|
||||
{ "fo", "fo-Latn-FO" },
|
||||
{ "fr", "fr-Latn-FR" },
|
||||
{ "fur", "fur-Latn-IT" },
|
||||
{ "fy", "fy-Latn-NL" },
|
||||
{ "ga", "ga-Latn-IE" },
|
||||
{ "gd", "gd-Latn-GB" },
|
||||
{ "gl", "gl-Latn-ES" },
|
||||
{ "gn", "gn-Latn-PY" },
|
||||
{ "gsw", "gsw-Latn-CH" },
|
||||
{ "gu", "gu-Gujr-IN" },
|
||||
{ "guz", "guz-Latn-KE" },
|
||||
{ "gv", "gv-Latn-IM" },
|
||||
{ "ha", "ha-Latn-NG" },
|
||||
{ "ha-CM", "ha-Arab-CM" },
|
||||
{ "ha-SD", "ha-Arab-SD" },
|
||||
{ "haw", "haw-Latn-US" },
|
||||
{ "he", "he-Hebr-IL" },
|
||||
{ "hi", "hi-Deva-IN" },
|
||||
{ "hr", "hr-Latn-HR" },
|
||||
{ "hsb", "hsb-Latn-DE" },
|
||||
{ "hu", "hu-Latn-HU" },
|
||||
{ "hy", "hy-Armn-AM" },
|
||||
{ "ia", "ia-Latn-001" },
|
||||
{ "ibb", "ibb-Latn-NG" },
|
||||
{ "id", "id-Latn-ID" },
|
||||
{ "ie", "ie-Latn-EE" },
|
||||
{ "ig", "ig-Latn-NG" },
|
||||
{ "ii", "ii-Yiii-CN" },
|
||||
{ "ik", "ik-Latn-US" },
|
||||
{ "is", "is-Latn-IS" },
|
||||
{ "it", "it-Latn-IT" },
|
||||
{ "iu", "iu-Cans-CA" },
|
||||
{ "ja", "ja-Jpan-JP" },
|
||||
{ "jgo", "jgo-Latn-CM" },
|
||||
{ "jmc", "jmc-Latn-TZ" },
|
||||
{ "jv", "jv-Latn-ID" },
|
||||
{ "ka", "ka-Geor-GE" },
|
||||
{ "kab", "kab-Latn-DZ" },
|
||||
{ "kam", "kam-Latn-KE" },
|
||||
{ "kde", "kde-Latn-TZ" },
|
||||
{ "kea", "kea-Latn-CV" },
|
||||
{ "khq", "khq-Latn-ML" },
|
||||
{ "ki", "ki-Latn-KE" },
|
||||
{ "kk", "kk-Cyrl-KZ" },
|
||||
{ "kk-AF", "kk-Arab-AF" },
|
||||
{ "kk-Arab", "kk-Arab-CN" },
|
||||
{ "kk-CN", "kk-Arab-CN" },
|
||||
{ "kk-IR", "kk-Arab-IR" },
|
||||
{ "kk-MN", "kk-Arab-MN" },
|
||||
{ "kkj", "kkj-Latn-CM" },
|
||||
{ "kl", "kl-Latn-GL" },
|
||||
{ "kln", "kln-Latn-KE" },
|
||||
{ "km", "km-Khmr-KH" },
|
||||
{ "kn", "kn-Knda-IN" },
|
||||
{ "ko", "ko-Kore-KR" },
|
||||
{ "kok", "kok-Deva-IN" },
|
||||
{ "kr", "kr-Latn-NG" },
|
||||
{ "ks", "ks-Arab-IN" },
|
||||
{ "ksb", "ksb-Latn-TZ" },
|
||||
{ "ksf", "ksf-Latn-CM" },
|
||||
{ "ksh", "ksh-Latn-DE" },
|
||||
{ "ku", "ku-Latn-TR" },
|
||||
{ "ku-Arab", "ku-Arab-IQ" },
|
||||
{ "ku-LB", "ku-Arab-LB" },
|
||||
{ "ku-Yezi", "ku-Yezi-GE" },
|
||||
{ "kw", "kw-Latn-GB" },
|
||||
{ "ky", "ky-Cyrl-KG" },
|
||||
{ "ky-Arab", "ky-Arab-CN" },
|
||||
{ "ky-CN", "ky-Arab-CN" },
|
||||
{ "ky-Latn", "ky-Latn-TR" },
|
||||
{ "ky-TR", "ky-Latn-TR" },
|
||||
{ "la", "la-Latn-VA" },
|
||||
{ "lag", "lag-Latn-TZ" },
|
||||
{ "lb", "lb-Latn-LU" },
|
||||
{ "lg", "lg-Latn-UG" },
|
||||
{ "lkt", "lkt-Latn-US" },
|
||||
{ "ln", "ln-Latn-CD" },
|
||||
{ "lo", "lo-Laoo-LA" },
|
||||
{ "lrc", "lrc-Arab-IR" },
|
||||
{ "lt", "lt-Latn-LT" },
|
||||
{ "lu", "lu-Latn-CD" },
|
||||
{ "luo", "luo-Latn-KE" },
|
||||
{ "luy", "luy-Latn-KE" },
|
||||
{ "lv", "lv-Latn-LV" },
|
||||
{ "mai", "mai-Deva-IN" },
|
||||
{ "mas", "mas-Latn-KE" },
|
||||
{ "mer", "mer-Latn-KE" },
|
||||
{ "mfe", "mfe-Latn-MU" },
|
||||
{ "mg", "mg-Latn-MG" },
|
||||
{ "mgh", "mgh-Latn-MZ" },
|
||||
{ "mgo", "mgo-Latn-CM" },
|
||||
{ "mi", "mi-Latn-NZ" },
|
||||
{ "mk", "mk-Cyrl-MK" },
|
||||
{ "ml", "ml-Mlym-IN" },
|
||||
{ "mn", "mn-Cyrl-MN" },
|
||||
{ "mn-CN", "mn-Mong-CN" },
|
||||
{ "mn-Mong", "mn-Mong-CN" },
|
||||
{ "mni", "mni-Beng-IN" },
|
||||
{ "mo", "mo-Latn-RO" },
|
||||
{ "moh", "moh-Latn-CA" },
|
||||
{ "mr", "mr-Deva-IN" },
|
||||
{ "ms", "ms-Latn-MY" },
|
||||
{ "ms-CC", "ms-Arab-CC" },
|
||||
{ "mt", "mt-Latn-MT" },
|
||||
{ "mua", "mua-Latn-CM" },
|
||||
{ "my", "my-Mymr-MM" },
|
||||
{ "mzn", "mzn-Arab-IR" },
|
||||
{ "na", "na-Latn-NR" },
|
||||
{ "naq", "naq-Latn-NA" },
|
||||
{ "nb", "nb-Latn-NO" },
|
||||
{ "nd", "nd-Latn-ZW" },
|
||||
{ "nds", "nds-Latn-DE" },
|
||||
{ "ne", "ne-Deva-NP" },
|
||||
{ "nl", "nl-Latn-NL" },
|
||||
{ "nmg", "nmg-Latn-CM" },
|
||||
{ "nn", "nn-Latn-NO" },
|
||||
{ "nnh", "nnh-Latn-CM" },
|
||||
{ "no", "no-Latn-NO" },
|
||||
{ "nqo", "nqo-Nkoo-GN" },
|
||||
{ "nr", "nr-Latn-ZA" },
|
||||
{ "nso", "nso-Latn-ZA" },
|
||||
{ "nus", "nus-Latn-SS" },
|
||||
{ "nyn", "nyn-Latn-UG" },
|
||||
{ "oc", "oc-Latn-FR" },
|
||||
{ "om", "om-Latn-ET" },
|
||||
{ "or", "or-Orya-IN" },
|
||||
{ "os", "os-Cyrl-GE" },
|
||||
{ "pa", "pa-Guru-IN" },
|
||||
{ "pa-Arab", "pa-Arab-PK" },
|
||||
{ "pa-PK", "pa-Arab-PK" },
|
||||
{ "pap", "pap-Latn-CW" },
|
||||
{ "pcm", "pcm-Latn-NG" },
|
||||
{ "pl", "pl-Latn-PL" },
|
||||
{ "prg", "prg-Latn-PL" },
|
||||
{ "ps", "ps-Arab-AF" },
|
||||
{ "pt", "pt-Latn-BR" },
|
||||
{ "qu", "qu-Latn-PE" },
|
||||
{ "quc", "quc-Latn-GT" },
|
||||
{ "rm", "rm-Latn-CH" },
|
||||
{ "rn", "rn-Latn-BI" },
|
||||
{ "ro", "ro-Latn-RO" },
|
||||
{ "rof", "rof-Latn-TZ" },
|
||||
{ "ru", "ru-Cyrl-RU" },
|
||||
{ "rw", "rw-Latn-RW" },
|
||||
{ "rwk", "rwk-Latn-TZ" },
|
||||
{ "sa", "sa-Deva-IN" },
|
||||
{ "sah", "sah-Cyrl-RU" },
|
||||
{ "saq", "saq-Latn-KE" },
|
||||
{ "sat", "sat-Olck-IN" },
|
||||
{ "sbp", "sbp-Latn-TZ" },
|
||||
{ "sd", "sd-Arab-PK" },
|
||||
{ "sd-Deva", "sd-Deva-IN" },
|
||||
{ "sd-IN", "sd-Deva-IN" },
|
||||
{ "sd-Khoj", "sd-Khoj-IN" },
|
||||
{ "sd-Sind", "sd-Sind-IN" },
|
||||
{ "se", "se-Latn-NO" },
|
||||
{ "seh", "seh-Latn-MZ" },
|
||||
{ "ses", "ses-Latn-ML" },
|
||||
{ "sg", "sg-Latn-CF" },
|
||||
{ "shi", "shi-Tfng-MA" },
|
||||
{ "si", "si-Sinh-LK" },
|
||||
{ "sk", "sk-Latn-SK" },
|
||||
{ "sl", "sl-Latn-SI" },
|
||||
{ "sm", "sm-Latn-WS" },
|
||||
{ "sma", "sma-Latn-SE" },
|
||||
{ "smj", "smj-Latn-SE" },
|
||||
{ "smn", "smn-Latn-FI" },
|
||||
{ "sms", "sms-Latn-FI" },
|
||||
{ "sn", "sn-Latn-ZW" },
|
||||
{ "so", "so-Latn-SO" },
|
||||
{ "sq", "sq-Latn-AL" },
|
||||
{ "sr", "sr-Cyrl-RS" },
|
||||
{ "sr-ME", "sr-Latn-ME" },
|
||||
{ "sr-RO", "sr-Latn-RO" },
|
||||
{ "sr-RU", "sr-Latn-RU" },
|
||||
{ "sr-TR", "sr-Latn-TR" },
|
||||
{ "ss", "ss-Latn-ZA" },
|
||||
{ "ssy", "ssy-Latn-ER" },
|
||||
{ "st", "st-Latn-ZA" },
|
||||
{ "su", "su-Latn-ID" },
|
||||
{ "sv", "sv-Latn-SE" },
|
||||
{ "sw", "sw-Latn-TZ" },
|
||||
{ "syr", "syr-Syrc-IQ" },
|
||||
{ "ta", "ta-Taml-IN" },
|
||||
{ "te", "te-Telu-IN" },
|
||||
{ "teo", "teo-Latn-UG" },
|
||||
{ "tg", "tg-Cyrl-TJ" },
|
||||
{ "tg-Arab", "tg-Arab-PK" },
|
||||
{ "tg-PK", "tg-Arab-PK" },
|
||||
{ "th", "th-Thai-TH" },
|
||||
{ "ti", "ti-Ethi-ET" },
|
||||
{ "tig", "tig-Ethi-ER" },
|
||||
{ "tk", "tk-Latn-TM" },
|
||||
{ "tl", "tl-Latn-PH" },
|
||||
{ "tn", "tn-Latn-ZA" },
|
||||
{ "to", "to-Latn-TO" },
|
||||
{ "tr", "tr-Latn-TR" },
|
||||
{ "ts", "ts-Latn-ZA" },
|
||||
{ "tt", "tt-Cyrl-RU" },
|
||||
{ "twq", "twq-Latn-NE" },
|
||||
{ "tzm", "tzm-Latn-MA" },
|
||||
{ "ug", "ug-Arab-CN" },
|
||||
{ "ug-Cyrl", "ug-Cyrl-KZ" },
|
||||
{ "ug-KZ", "ug-Cyrl-KZ" },
|
||||
{ "ug-MN", "ug-Cyrl-MN" },
|
||||
{ "uk", "uk-Cyrl-UA" },
|
||||
{ "ur", "ur-Arab-PK" },
|
||||
{ "uz", "uz-Latn-UZ" },
|
||||
{ "uz-AF", "uz-Arab-AF" },
|
||||
{ "uz-Arab", "uz-Arab-AF" },
|
||||
{ "uz-CN", "uz-Cyrl-CN" },
|
||||
{ "vai", "vai-Vaii-LR" },
|
||||
{ "ve", "ve-Latn-ZA" },
|
||||
{ "vi", "vi-Latn-VN" },
|
||||
{ "vo", "vo-Latn-001" },
|
||||
{ "vun", "vun-Latn-TZ" },
|
||||
{ "wae", "wae-Latn-CH" },
|
||||
{ "wal", "wal-Ethi-ET" },
|
||||
{ "wo", "wo-Latn-SN" },
|
||||
{ "xh", "xh-Latn-ZA" },
|
||||
{ "xog", "xog-Latn-UG" },
|
||||
{ "yav", "yav-Latn-CM" },
|
||||
{ "yi", "yi-Hebr-UA" },
|
||||
{ "yo", "yo-Latn-NG" },
|
||||
{ "za", "za-Latn-CN" },
|
||||
{ "zgh", "zgh-Tfng-MA" },
|
||||
{ "zh", "zh-Hans-CN" },
|
||||
{ "zh-AU", "zh-Hant-AU" },
|
||||
{ "zh-BN", "zh-Hant-BN" },
|
||||
{ "zh-Bopo", "zh-Bopo-TW" },
|
||||
{ "zh-GB", "zh-Hant-GB" },
|
||||
{ "zh-GF", "zh-Hant-GF" },
|
||||
{ "zh-HK", "zh-Hant-HK" },
|
||||
{ "zh-Hanb", "zh-Hanb-TW" },
|
||||
{ "zh-Hant", "zh-Hant-TW" },
|
||||
{ "zh-ID", "zh-Hant-ID" },
|
||||
{ "zh-MO", "zh-Hant-MO" },
|
||||
{ "zh-PA", "zh-Hant-PA" },
|
||||
{ "zh-PF", "zh-Hant-PF" },
|
||||
{ "zh-PH", "zh-Hant-PH" },
|
||||
{ "zh-SR", "zh-Hant-SR" },
|
||||
{ "zh-TH", "zh-Hant-TH" },
|
||||
{ "zh-TW", "zh-Hant-TW" },
|
||||
{ "zh-US", "zh-Hant-US" },
|
||||
{ "zh-VN", "zh-Hant-VN" },
|
||||
{ "zu", "zu-Latn-ZA" },
|
||||
|
||||
{ nullptr, nullptr }
|
||||
};
|
||||
// --- --- --- generated code ends here --- --- ---
|
||||
|
||||
#endif // _WX_PRIVATE_LANG_LIKELY_H_
|
||||
214
libs/wxWidgets-3.3.1/include/wx/private/lang_match.h
Normal file
214
libs/wxWidgets-3.3.1/include/wx/private/lang_match.h
Normal file
@@ -0,0 +1,214 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/lang_match.h
|
||||
// Purpose: Mapping of language matchings
|
||||
// Author: misc/languages/genlang.py
|
||||
// Created: 2024-10-04
|
||||
// Copyright: (c) 2024 wxWidgets development team <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WARNING: Parts of this file are generated. See misc/languages/README for
|
||||
// details.
|
||||
|
||||
#ifndef _WX_PRIVATE_LANG_MATCH_H_
|
||||
#define _WX_PRIVATE_LANG_MATCH_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Mapping of pairs of desired and supported languages to language distances
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// --- --- --- generated code begins here --- --- ---
|
||||
|
||||
// The following data tables are generated by misc/languages/genlang.py
|
||||
// When making changes, please put them into misc/languages/matchingtabl.txt
|
||||
|
||||
// Data table for matching languages
|
||||
static const struct matchData_t
|
||||
{
|
||||
const char* matchkey;
|
||||
int matchval;
|
||||
}
|
||||
tabMatchData[] =
|
||||
{
|
||||
{ "aa:ssy", 4 },
|
||||
{ "ab:ru", 30 },
|
||||
{ "af:nl", 20 },
|
||||
{ "ak:en", 30 },
|
||||
{ "am:en", 30 },
|
||||
{ "am-Ethi:en-Latn", 10 },
|
||||
{ "ar-Latn:ar-Arab", 20 },
|
||||
{ "ay:es", 20 },
|
||||
{ "az:ru", 30 },
|
||||
{ "az-Latn:ru-Cyrl", 10 },
|
||||
{ "be:ru", 20 },
|
||||
{ "bem:en", 30 },
|
||||
{ "bh:hi", 30 },
|
||||
{ "bn:en", 30 },
|
||||
{ "bn-Beng:en-Latn", 10 },
|
||||
{ "bn-Latn:bn-Beng", 20 },
|
||||
{ "bo:zh", 20 },
|
||||
{ "bo-Tibt:zh-Hans", 10 },
|
||||
{ "br:fr", 20 },
|
||||
{ "bs:hr", 4 },
|
||||
{ "bs:sh", 4 },
|
||||
{ "ca:es", 20 },
|
||||
{ "ceb:fil", 30 },
|
||||
{ "chr:en", 20 },
|
||||
{ "co:fr", 20 },
|
||||
{ "cs:sk", 20 },
|
||||
{ "cy:en", 20 },
|
||||
{ "da:nb", 8 },
|
||||
{ "da:no", 8 },
|
||||
{ "ee:en", 30 },
|
||||
{ "eo:en", 30 },
|
||||
{ "eu:es", 20 },
|
||||
{ "fo:da", 20 },
|
||||
{ "fy:nl", 20 },
|
||||
{ "ga:en", 20 },
|
||||
{ "gd:en", 20 },
|
||||
{ "gl:es", 20 },
|
||||
{ "gn:es", 20 },
|
||||
{ "gsw:de", 4 },
|
||||
{ "gu:hi", 30 },
|
||||
{ "gu-Latn:gu-Gujr", 20 },
|
||||
{ "ha:en", 30 },
|
||||
{ "haw:en", 20 },
|
||||
{ "hi-Latn:hi-Deva", 20 },
|
||||
{ "hr:bs", 4 },
|
||||
{ "hr:sh", 4 },
|
||||
{ "hy:ru", 30 },
|
||||
{ "hy-Armn:ru-Cyrl", 10 },
|
||||
{ "ia:en", 30 },
|
||||
{ "id:ms", 10 },
|
||||
{ "ig:en", 30 },
|
||||
{ "is:en", 20 },
|
||||
{ "ja-Hani:ja-Jpan", 5 },
|
||||
{ "ja-Hira:ja-Hrkt", 5 },
|
||||
{ "ja-Hira:ja-Jpan", 5 },
|
||||
{ "ja-Hrkt:ja-Jpan", 5 },
|
||||
{ "ja-Kana:ja-Hrkt", 5 },
|
||||
{ "ja-Kana:ja-Jpan", 5 },
|
||||
{ "ja-Latn:ja-Jpan", 5 },
|
||||
{ "jv:id", 20 },
|
||||
{ "ka:en", 30 },
|
||||
{ "ka-Geor:en-Latn", 10 },
|
||||
{ "kk:ru", 30 },
|
||||
{ "km:en", 30 },
|
||||
{ "km-Khmr:en-Latn", 10 },
|
||||
{ "kn:en", 30 },
|
||||
{ "kn-Knda:en-Latn", 10 },
|
||||
{ "kn-Latn:kn-Knda", 20 },
|
||||
{ "ko-Hang:ko-Kore", 5 },
|
||||
{ "ko-Hani:ko-Kore", 5 },
|
||||
{ "ko-Jamo:ko-Hang", 5 },
|
||||
{ "ko-Jamo:ko-Kore", 5 },
|
||||
{ "ku:tr", 30 },
|
||||
{ "ky:ru", 30 },
|
||||
{ "la:it", 20 },
|
||||
{ "lb:de", 4 },
|
||||
{ "lg:en", 30 },
|
||||
{ "ln:fr", 30 },
|
||||
{ "lo:en", 30 },
|
||||
{ "lo-Laoo:en-Latn", 10 },
|
||||
{ "mai:hi", 20 },
|
||||
{ "mfe:en", 30 },
|
||||
{ "mg:fr", 30 },
|
||||
{ "mi:en", 20 },
|
||||
{ "ml:en", 30 },
|
||||
{ "ml-Latn:ml-Mlym", 20 },
|
||||
{ "ml-Mlym:en-Latn", 10 },
|
||||
{ "mn:ru", 30 },
|
||||
{ "mr:hi", 30 },
|
||||
{ "mr-Latn:mr-Deva", 20 },
|
||||
{ "ms:id", 30 },
|
||||
{ "mt:en", 30 },
|
||||
{ "my:en", 30 },
|
||||
{ "my-Mymr:en-Latn", 10 },
|
||||
{ "nb:da", 8 },
|
||||
{ "nb:nn", 20 },
|
||||
{ "nb:no", 1 },
|
||||
{ "ne:en", 30 },
|
||||
{ "ne-Deva:en-Latn", 10 },
|
||||
{ "nn:nb", 20 },
|
||||
{ "nn:no", 20 },
|
||||
{ "no:da", 8 },
|
||||
{ "no:nb", 1 },
|
||||
{ "no:nn", 20 },
|
||||
{ "nso:en", 30 },
|
||||
{ "nyn:en", 30 },
|
||||
{ "oc:fr", 20 },
|
||||
{ "om:en", 30 },
|
||||
{ "or:en", 30 },
|
||||
{ "or-Orya:en-Latn", 10 },
|
||||
{ "pa:en", 30 },
|
||||
{ "pa-Guru:en-Latn", 10 },
|
||||
{ "pcm:en", 20 },
|
||||
{ "ps:en", 30 },
|
||||
{ "ps-Arab:en-Latn", 10 },
|
||||
{ "qu:es", 30 },
|
||||
{ "rm:de", 20 },
|
||||
{ "rn:en", 30 },
|
||||
{ "rw:fr", 30 },
|
||||
{ "sa:hi", 30 },
|
||||
{ "sd:en", 30 },
|
||||
{ "sd-Arab:en-Latn", 10 },
|
||||
{ "sh:bs", 4 },
|
||||
{ "sh:hr", 4 },
|
||||
{ "sh:sr", 4 },
|
||||
{ "si:en", 30 },
|
||||
{ "si-Sinh:en-Latn", 10 },
|
||||
{ "sk:cs", 20 },
|
||||
{ "sn:en", 30 },
|
||||
{ "so:en", 30 },
|
||||
{ "sq:en", 30 },
|
||||
{ "sr:sh", 4 },
|
||||
{ "sr-Cyrl:sr-Latn", 5 },
|
||||
{ "sr-Latn:sr-Cyrl", 5 },
|
||||
{ "ssy:aa", 4 },
|
||||
{ "st:en", 30 },
|
||||
{ "su:id", 20 },
|
||||
{ "sw:en", 30 },
|
||||
{ "ta:en", 30 },
|
||||
{ "ta-Latn:ta-Taml", 20 },
|
||||
{ "ta-Taml:en-Latn", 10 },
|
||||
{ "te:en", 30 },
|
||||
{ "te-Latn:te-Telu", 20 },
|
||||
{ "te-Telu:en-Latn", 10 },
|
||||
{ "tg:ru", 30 },
|
||||
{ "ti:en", 30 },
|
||||
{ "ti-Ethi:en-Latn", 10 },
|
||||
{ "tk:ru", 30 },
|
||||
{ "tk-Latn:ru-Cyrl", 10 },
|
||||
{ "tn:en", 30 },
|
||||
{ "to:en", 30 },
|
||||
{ "tt:ru", 30 },
|
||||
{ "ug:zh", 20 },
|
||||
{ "ur:en", 30 },
|
||||
{ "ur-Arab:en-Latn", 10 },
|
||||
{ "uz:ru", 30 },
|
||||
{ "uz-Latn:ru-Cyrl", 10 },
|
||||
{ "wo:fr", 30 },
|
||||
{ "xh:en", 30 },
|
||||
{ "yi:en", 30 },
|
||||
{ "yi-Hebr:en-Latn", 10 },
|
||||
{ "yo:en", 30 },
|
||||
{ "za:zh", 20 },
|
||||
{ "za-Latn:zh-Hans", 10 },
|
||||
{ "zh-Hani:zh-Hans", 20 },
|
||||
{ "zh-Hani:zh-Hant", 20 },
|
||||
{ "zh-Latn:zh-Hans", 20 },
|
||||
{ "zu:en", 30 },
|
||||
{ "*:*", 80 },
|
||||
{ "*-*:*-*", 50 },
|
||||
{ "*-*-*:*-*-*", 4 },
|
||||
{ "ar-*-*:ar-*-*", 5 },
|
||||
{ "en-*-*:en-*-*", 5 },
|
||||
{ "es-*-*:es-*-*", 5 },
|
||||
{ "pt-*-*:pt-*-*", 5 },
|
||||
{ "zh-Hant-*:zh-Hant-*", 5 },
|
||||
|
||||
{ nullptr, 0 }
|
||||
};
|
||||
// --- --- --- generated code ends here --- --- ---
|
||||
|
||||
#endif // _WX_PRIVATE_LANG_MATCH_H_
|
||||
170
libs/wxWidgets-3.3.1/include/wx/private/lang_regions.h
Normal file
170
libs/wxWidgets-3.3.1/include/wx/private/lang_regions.h
Normal file
@@ -0,0 +1,170 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/lang_regions.h
|
||||
// Purpose: Mapping of region groups for selected languages
|
||||
// Author: misc/languages/genlang.py
|
||||
// Created: 2024-10-04
|
||||
// Copyright: (c) 2024 wxWidgets development team <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WARNING: Parts of this file are generated. See misc/languages/README for
|
||||
// details.
|
||||
|
||||
#ifndef _WX_PRIVATE_LANG_REGIONS_H_
|
||||
#define _WX_PRIVATE_LANG_REGIONS_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Mapping of region groups
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// --- --- --- generated code begins here --- --- ---
|
||||
|
||||
// The following data tables are generated by misc/languages/genlang.py
|
||||
// When making changes, please put them into misc/languages/regiongrouptabl.txt
|
||||
|
||||
// Data table for region groups
|
||||
static const struct regionGroupData_t
|
||||
{
|
||||
const char* language;
|
||||
const char* country;
|
||||
}
|
||||
regionGroupData[] =
|
||||
{
|
||||
{ "ar", "DZ" },
|
||||
{ "ar", "EH" },
|
||||
{ "ar", "LY" },
|
||||
{ "ar", "MA" },
|
||||
{ "ar", "MR" },
|
||||
{ "ar", "TN" },
|
||||
{ "en", "AS" },
|
||||
{ "en", "CA" },
|
||||
{ "en", "GU" },
|
||||
{ "en", "MH" },
|
||||
{ "en", "MP" },
|
||||
{ "en", "PH" },
|
||||
{ "en", "PR" },
|
||||
{ "en", "UM" },
|
||||
{ "en", "US" },
|
||||
{ "en", "VI" },
|
||||
{ "es", "AG" },
|
||||
{ "es", "AI" },
|
||||
{ "es", "AR" },
|
||||
{ "es", "AW" },
|
||||
{ "es", "BB" },
|
||||
{ "es", "BL" },
|
||||
{ "es", "BM" },
|
||||
{ "es", "BO" },
|
||||
{ "es", "BQ" },
|
||||
{ "es", "BR" },
|
||||
{ "es", "BS" },
|
||||
{ "es", "BV" },
|
||||
{ "es", "BZ" },
|
||||
{ "es", "CA" },
|
||||
{ "es", "CL" },
|
||||
{ "es", "CO" },
|
||||
{ "es", "CR" },
|
||||
{ "es", "CU" },
|
||||
{ "es", "CW" },
|
||||
{ "es", "DM" },
|
||||
{ "es", "DO" },
|
||||
{ "es", "EC" },
|
||||
{ "es", "FK" },
|
||||
{ "es", "GD" },
|
||||
{ "es", "GF" },
|
||||
{ "es", "GL" },
|
||||
{ "es", "GP" },
|
||||
{ "es", "GS" },
|
||||
{ "es", "GT" },
|
||||
{ "es", "GY" },
|
||||
{ "es", "HN" },
|
||||
{ "es", "HT" },
|
||||
{ "es", "JM" },
|
||||
{ "es", "KN" },
|
||||
{ "es", "KY" },
|
||||
{ "es", "LC" },
|
||||
{ "es", "MF" },
|
||||
{ "es", "MQ" },
|
||||
{ "es", "MS" },
|
||||
{ "es", "MX" },
|
||||
{ "es", "NI" },
|
||||
{ "es", "PA" },
|
||||
{ "es", "PE" },
|
||||
{ "es", "PM" },
|
||||
{ "es", "PR" },
|
||||
{ "es", "PY" },
|
||||
{ "es", "SR" },
|
||||
{ "es", "SV" },
|
||||
{ "es", "SX" },
|
||||
{ "es", "TC" },
|
||||
{ "es", "TT" },
|
||||
{ "es", "US" },
|
||||
{ "es", "UY" },
|
||||
{ "es", "VC" },
|
||||
{ "es", "VE" },
|
||||
{ "es", "VG" },
|
||||
{ "es", "VI" },
|
||||
{ "pt", "AG" },
|
||||
{ "pt", "AI" },
|
||||
{ "pt", "AR" },
|
||||
{ "pt", "AW" },
|
||||
{ "pt", "BB" },
|
||||
{ "pt", "BL" },
|
||||
{ "pt", "BM" },
|
||||
{ "pt", "BO" },
|
||||
{ "pt", "BQ" },
|
||||
{ "pt", "BR" },
|
||||
{ "pt", "BS" },
|
||||
{ "pt", "BV" },
|
||||
{ "pt", "BZ" },
|
||||
{ "pt", "CA" },
|
||||
{ "pt", "CL" },
|
||||
{ "pt", "CO" },
|
||||
{ "pt", "CR" },
|
||||
{ "pt", "CU" },
|
||||
{ "pt", "CW" },
|
||||
{ "pt", "DM" },
|
||||
{ "pt", "DO" },
|
||||
{ "pt", "EC" },
|
||||
{ "pt", "FK" },
|
||||
{ "pt", "GD" },
|
||||
{ "pt", "GF" },
|
||||
{ "pt", "GL" },
|
||||
{ "pt", "GP" },
|
||||
{ "pt", "GS" },
|
||||
{ "pt", "GT" },
|
||||
{ "pt", "GY" },
|
||||
{ "pt", "HN" },
|
||||
{ "pt", "HT" },
|
||||
{ "pt", "JM" },
|
||||
{ "pt", "KN" },
|
||||
{ "pt", "KY" },
|
||||
{ "pt", "LC" },
|
||||
{ "pt", "MF" },
|
||||
{ "pt", "MQ" },
|
||||
{ "pt", "MS" },
|
||||
{ "pt", "MX" },
|
||||
{ "pt", "NI" },
|
||||
{ "pt", "PA" },
|
||||
{ "pt", "PE" },
|
||||
{ "pt", "PM" },
|
||||
{ "pt", "PR" },
|
||||
{ "pt", "PY" },
|
||||
{ "pt", "SR" },
|
||||
{ "pt", "SV" },
|
||||
{ "pt", "SX" },
|
||||
{ "pt", "TC" },
|
||||
{ "pt", "TT" },
|
||||
{ "pt", "US" },
|
||||
{ "pt", "UY" },
|
||||
{ "pt", "VC" },
|
||||
{ "pt", "VE" },
|
||||
{ "pt", "VG" },
|
||||
{ "pt", "VI" },
|
||||
{ "zh-Hant", "HK" },
|
||||
{ "zh-Hant", "MO" },
|
||||
|
||||
{ nullptr, nullptr }
|
||||
};
|
||||
// --- --- --- generated code ends here --- --- ---
|
||||
|
||||
#endif // _WX_PRIVATE_LANG_REGIONS_H_
|
||||
206
libs/wxWidgets-3.3.1/include/wx/private/lang_scripts.h
Normal file
206
libs/wxWidgets-3.3.1/include/wx/private/lang_scripts.h
Normal file
@@ -0,0 +1,206 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/lang_scripts.h
|
||||
// Purpose: Mapping of language script ids
|
||||
// Author: misc/languages/genlang.py
|
||||
// Created: 2024-10-04
|
||||
// Copyright: (c) 2024 wxWidgets development team <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WARNING: Parts of this file are generated. See misc/languages/README for
|
||||
// details.
|
||||
|
||||
#ifndef _WX_PRIVATE_LANG_SCRIPTS_H_
|
||||
#define _WX_PRIVATE_LANG_SCRIPTS_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Mapping of known script ids to POSIX modifiers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// --- --- --- generated code begins here --- --- ---
|
||||
|
||||
// The following data tables are generated by misc/languages/genlang.py
|
||||
// When making changes, please put them into misc/languages/scripttabl.txt
|
||||
|
||||
// Data table for known language scripts
|
||||
static const struct scriptData_t
|
||||
{
|
||||
const char* scname;
|
||||
const char* scalias;
|
||||
}
|
||||
tabScriptData[] =
|
||||
{
|
||||
{ "Adlm", "adlam" },
|
||||
{ "Aghb", "caucasian_albanian" },
|
||||
{ "Ahom", "ahom" },
|
||||
{ "Arab", "arabic" },
|
||||
{ "Armi", "imperial_aramaic" },
|
||||
{ "Armn", "armenian" },
|
||||
{ "Avst", "avestan" },
|
||||
{ "Bali", "balinese" },
|
||||
{ "Bamu", "bamum" },
|
||||
{ "Bass", "bassa_vah" },
|
||||
{ "Batk", "batak" },
|
||||
{ "Beng", "bengali" },
|
||||
{ "Bhks", "bhaiksuki" },
|
||||
{ "Bopo", "bopomofo" },
|
||||
{ "Brah", "brahmi" },
|
||||
{ "Brai", "braille" },
|
||||
{ "Bugi", "buginese" },
|
||||
{ "Buhd", "buhid" },
|
||||
{ "Cakm", "chakma" },
|
||||
{ "Cans", "canadian_aboriginal" },
|
||||
{ "Cari", "carian" },
|
||||
{ "Cham", "cham" },
|
||||
{ "Cher", "cherokee" },
|
||||
{ "Chrs", "chorasmian" },
|
||||
{ "Copt", "coptic" },
|
||||
{ "Cpmn", "cypro_minoan" },
|
||||
{ "Cprt", "cypriot" },
|
||||
{ "Cyrl", "cyrillic" },
|
||||
{ "Deva", "devanagari" },
|
||||
{ "Diak", "dives_akuru" },
|
||||
{ "Dogr", "dogra" },
|
||||
{ "Dsrt", "deseret" },
|
||||
{ "Dupl", "duployan" },
|
||||
{ "Egyp", "egyptian_hieroglyphs" },
|
||||
{ "Elba", "elbasan" },
|
||||
{ "Elym", "elymaic" },
|
||||
{ "Ethi", "ethiopic" },
|
||||
{ "Geok", "georgian" },
|
||||
{ "Geor", "georgian" },
|
||||
{ "Glag", "glagolitic" },
|
||||
{ "Gong", "gunjala_gondi" },
|
||||
{ "Gonm", "masaram_gondi" },
|
||||
{ "Goth", "gothic" },
|
||||
{ "Gran", "grantha" },
|
||||
{ "Grek", "greek" },
|
||||
{ "Gujr", "gujarati" },
|
||||
{ "Guru", "gurmukhi" },
|
||||
{ "Hang", "hangul" },
|
||||
{ "Hani", "han" },
|
||||
{ "Hano", "hanunoo" },
|
||||
{ "Hans", "Hans" },
|
||||
{ "Hant", "Hant" },
|
||||
{ "Hatr", "hatran" },
|
||||
{ "Hebr", "hebrew" },
|
||||
{ "Hira", "hiragana" },
|
||||
{ "Hluw", "anatolian_hieroglyphs" },
|
||||
{ "Hmng", "pahawh_hmong" },
|
||||
{ "Hmnp", "nyiakeng_puachue_hmong" },
|
||||
{ "Hrkt", "katakana_or_hiragana" },
|
||||
{ "Hung", "old_hungarian" },
|
||||
{ "Ital", "old_italic" },
|
||||
{ "Java", "javanese" },
|
||||
{ "Kali", "kayah_li" },
|
||||
{ "Kana", "katakana" },
|
||||
{ "Kawi", "kawi" },
|
||||
{ "Khar", "kharoshthi" },
|
||||
{ "Khmr", "khmer" },
|
||||
{ "Khoj", "khojki" },
|
||||
{ "Kits", "khitan_small_script" },
|
||||
{ "Knda", "kannada" },
|
||||
{ "Kthi", "kaithi" },
|
||||
{ "Lana", "tai_tham" },
|
||||
{ "Laoo", "lao" },
|
||||
{ "Latn", "latin" },
|
||||
{ "Lepc", "lepcha" },
|
||||
{ "Limb", "limbu" },
|
||||
{ "Lina", "linear_a" },
|
||||
{ "Linb", "linear_b" },
|
||||
{ "Lisu", "lisu" },
|
||||
{ "Lyci", "lycian" },
|
||||
{ "Lydi", "lydian" },
|
||||
{ "Mahj", "mahajani" },
|
||||
{ "Maka", "makasar" },
|
||||
{ "Mand", "mandaic" },
|
||||
{ "Mani", "manichaean" },
|
||||
{ "Marc", "marchen" },
|
||||
{ "Medf", "medefaidrin" },
|
||||
{ "Mend", "mende_kikakui" },
|
||||
{ "Merc", "meroitic_cursive" },
|
||||
{ "Mero", "meroitic_hieroglyphs" },
|
||||
{ "Mlym", "malayalam" },
|
||||
{ "Modi", "modi" },
|
||||
{ "Mong", "mongolian" },
|
||||
{ "Mroo", "mro" },
|
||||
{ "Mtei", "meetei_mayek" },
|
||||
{ "Mult", "multani" },
|
||||
{ "Mymr", "myanmar" },
|
||||
{ "Nagm", "nag_mundari" },
|
||||
{ "Nand", "nandinagari" },
|
||||
{ "Narb", "old_north_arabian" },
|
||||
{ "Nbat", "nabataean" },
|
||||
{ "Newa", "newa" },
|
||||
{ "Nkoo", "nko" },
|
||||
{ "Nshu", "nushu" },
|
||||
{ "Ogam", "ogham" },
|
||||
{ "Olck", "ol_chiki" },
|
||||
{ "Orkh", "old_turkic" },
|
||||
{ "Orya", "oriya" },
|
||||
{ "Osge", "osage" },
|
||||
{ "Osma", "osmanya" },
|
||||
{ "Ougr", "old_uyghur" },
|
||||
{ "Palm", "palmyrene" },
|
||||
{ "Pauc", "pau_cin_hau" },
|
||||
{ "Perm", "old_permic" },
|
||||
{ "Phag", "phags_pa" },
|
||||
{ "Phli", "inscriptional_pahlavi" },
|
||||
{ "Phlp", "psalter_pahlavi" },
|
||||
{ "Phnx", "phoenician" },
|
||||
{ "Plrd", "miao" },
|
||||
{ "Prti", "inscriptional_parthian" },
|
||||
{ "Rjng", "rejang" },
|
||||
{ "Rohg", "hanifi_rohingya" },
|
||||
{ "Runr", "runic" },
|
||||
{ "Samr", "samaritan" },
|
||||
{ "Sarb", "old_south_arabian" },
|
||||
{ "Saur", "saurashtra" },
|
||||
{ "Sgnw", "signwriting" },
|
||||
{ "Shaw", "shavian" },
|
||||
{ "Shrd", "sharada" },
|
||||
{ "Sidd", "siddham" },
|
||||
{ "Sind", "khudawadi" },
|
||||
{ "Sinh", "sinhala" },
|
||||
{ "Sogd", "sogdian" },
|
||||
{ "Sogo", "old_sogdian" },
|
||||
{ "Sora", "sora_sompeng" },
|
||||
{ "Soyo", "soyombo" },
|
||||
{ "Sund", "sundanese" },
|
||||
{ "Sylo", "syloti_nagri" },
|
||||
{ "Syrc", "syriac" },
|
||||
{ "Tagb", "tagbanwa" },
|
||||
{ "Takr", "takri" },
|
||||
{ "Tale", "tai_le" },
|
||||
{ "Talu", "new_tai_lue" },
|
||||
{ "Taml", "tamil" },
|
||||
{ "Tang", "tangut" },
|
||||
{ "Tavt", "tai_viet" },
|
||||
{ "Telu", "telugu" },
|
||||
{ "Tfng", "tifinagh" },
|
||||
{ "Tglg", "tagalog" },
|
||||
{ "Thaa", "thaana" },
|
||||
{ "Thai", "thai" },
|
||||
{ "Tibt", "tibetan" },
|
||||
{ "Tirh", "tirhuta" },
|
||||
{ "Tnsa", "tangsa" },
|
||||
{ "Toto", "toto" },
|
||||
{ "Ugar", "ugaritic" },
|
||||
{ "Vaii", "vai" },
|
||||
{ "Vith", "vithkuqi" },
|
||||
{ "Wara", "warang_citi" },
|
||||
{ "Wcho", "wancho" },
|
||||
{ "Xpeo", "old_persian" },
|
||||
{ "Xsux", "cuneiform" },
|
||||
{ "Yezi", "yezidi" },
|
||||
{ "Yiii", "yi" },
|
||||
{ "Zanb", "zanabazar_square" },
|
||||
{ "Zinh", "inherited" },
|
||||
{ "Zyyy", "common" },
|
||||
{ "Zzzz", "unknown" },
|
||||
|
||||
{ nullptr, nullptr }
|
||||
};
|
||||
// --- --- --- generated code ends here --- --- ---
|
||||
|
||||
#endif // _WX_PRIVATE_LANG_SCRIPTS_H_
|
||||
43
libs/wxWidgets-3.3.1/include/wx/private/launchbrowser.h
Normal file
43
libs/wxWidgets-3.3.1/include/wx/private/launchbrowser.h
Normal file
@@ -0,0 +1,43 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/launchbrowser.h
|
||||
// Purpose: Helpers for wxLaunchDefaultBrowser() implementation.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2016-02-07
|
||||
// Copyright: (c) 2016 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_LAUNCHBROWSER_H_
|
||||
#define _WX_PRIVATE_LAUNCHBROWSER_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxLaunchBrowserParams: passed to wxDoLaunchDefaultBrowser()
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
struct wxLaunchBrowserParams
|
||||
{
|
||||
explicit wxLaunchBrowserParams(int f) : flags(f) { }
|
||||
|
||||
// Return either the URL or the file depending on our scheme.
|
||||
const wxString& GetPathOrURL() const
|
||||
{
|
||||
return scheme == wxS("file") ? path : url;
|
||||
}
|
||||
|
||||
|
||||
// The URL is always specified and is the real URL, always with the scheme
|
||||
// part, which can be "file://".
|
||||
wxString url;
|
||||
|
||||
// The path is a local path which is only non-empty if the URL uses the
|
||||
// "file://" scheme.
|
||||
wxString path;
|
||||
|
||||
// The scheme of the URL, e.g. "file" or "http".
|
||||
wxString scheme;
|
||||
|
||||
// The flags passed to wxLaunchDefaultBrowser().
|
||||
int flags;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_LAUNCHBROWSER_H_
|
||||
67
libs/wxWidgets-3.3.1/include/wx/private/localeset.h
Normal file
67
libs/wxWidgets-3.3.1/include/wx/private/localeset.h
Normal file
@@ -0,0 +1,67 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/localeset.h
|
||||
// Purpose: Define helper wxLocaleSetter class.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2021-08-03 (extracted from tests/testprec.h)
|
||||
// Copyright: (c) 2021 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_LOCALESET_H_
|
||||
#define _WX_PRIVATE_LOCALESET_H_
|
||||
|
||||
#include "wx/crt.h" // wxStrdupA()
|
||||
|
||||
#include <locale.h>
|
||||
|
||||
// Helper class setting the locale to the given one for its lifetime.
|
||||
class wxLocaleSetter
|
||||
{
|
||||
public:
|
||||
wxLocaleSetter(const char *loc)
|
||||
: m_locOld(wxStrdupA(setlocale(LC_ALL, nullptr)))
|
||||
{
|
||||
setlocale(LC_ALL, loc);
|
||||
}
|
||||
|
||||
~wxLocaleSetter()
|
||||
{
|
||||
setlocale(LC_ALL, m_locOld);
|
||||
free(m_locOld);
|
||||
}
|
||||
|
||||
private:
|
||||
char * const m_locOld;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxLocaleSetter);
|
||||
};
|
||||
|
||||
// An even simpler helper for setting the locale to "C" one during its lifetime.
|
||||
class wxCLocaleSetter : private wxLocaleSetter
|
||||
{
|
||||
public:
|
||||
wxCLocaleSetter() : wxLocaleSetter("C") { }
|
||||
|
||||
private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxCLocaleSetter);
|
||||
};
|
||||
|
||||
// This function must be called on program startup and after changing
|
||||
// locale to ensure LC_CTYPE is set correctly under macOS (it does nothing
|
||||
// under the other platforms currently).
|
||||
inline void wxEnsureLocaleIsCompatibleWithCRT()
|
||||
{
|
||||
#if defined(__DARWIN__)
|
||||
// In OS X and iOS, wchar_t CRT functions convert to char* and fail under
|
||||
// some locales. The safest fix is to set LC_CTYPE to UTF-8 to ensure that
|
||||
// they can handle any input.
|
||||
//
|
||||
// Note that this must be done for any app, Cocoa or console, whether or
|
||||
// not it uses wxLocale.
|
||||
//
|
||||
// See https://stackoverflow.com/questions/11713745/why-does-the-printf-family-of-functions-care-about-locale
|
||||
setlocale(LC_CTYPE, "UTF-8");
|
||||
#endif // defined(__DARWIN__)
|
||||
}
|
||||
|
||||
#endif // _WX_PRIVATE_LOCALESET_H_
|
||||
35
libs/wxWidgets-3.3.1/include/wx/private/log.h
Normal file
35
libs/wxWidgets-3.3.1/include/wx/private/log.h
Normal file
@@ -0,0 +1,35 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/log.h
|
||||
// Purpose: Private wxLog-related declarations.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2025-01-19 (extracted from log.cpp)
|
||||
// Copyright: (c) 2025 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_LOG_H_
|
||||
#define _WX_PRIVATE_LOG_H_
|
||||
|
||||
#include "wx/log.h"
|
||||
#include "wx/msgout.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxLogOutputBest: wxLog wrapper around wxMessageOutputBest
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxLogOutputBest : public wxLog
|
||||
{
|
||||
public:
|
||||
wxLogOutputBest() = default;
|
||||
|
||||
protected:
|
||||
virtual void DoLogText(const wxString& msg) override
|
||||
{
|
||||
wxMessageOutputBest().Output(msg);
|
||||
}
|
||||
|
||||
private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxLogOutputBest);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_LOG_H_
|
||||
176
libs/wxWidgets-3.3.1/include/wx/private/markupparser.h
Normal file
176
libs/wxWidgets-3.3.1/include/wx/private/markupparser.h
Normal file
@@ -0,0 +1,176 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/markupparser.h
|
||||
// Purpose: Classes for parsing simple markup.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2011-02-16
|
||||
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_MARKUPPARSER_H_
|
||||
#define _WX_PRIVATE_MARKUPPARSER_H_
|
||||
|
||||
#include "wx/string.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMarkupSpanAttributes: information about attributes for a markup span.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
struct wxMarkupSpanAttributes
|
||||
{
|
||||
enum OptionalBool
|
||||
{
|
||||
Unspecified = -1,
|
||||
No,
|
||||
Yes
|
||||
};
|
||||
|
||||
wxMarkupSpanAttributes()
|
||||
{
|
||||
m_sizeKind = Size_Unspecified;
|
||||
|
||||
m_isBold =
|
||||
m_isItalic =
|
||||
m_isUnderlined =
|
||||
m_isStrikethrough = Unspecified;
|
||||
}
|
||||
|
||||
// If a string is empty, it means that the corresponding attribute is not
|
||||
// set.
|
||||
wxString m_fgCol,
|
||||
m_bgCol,
|
||||
m_fontFace;
|
||||
|
||||
// There are many ways of specifying the size. First of all, the size may
|
||||
// be relative in which case m_fontSize is either -1 or +1 meaning that
|
||||
// it's one step smaller or larger than the current font. Second, it may be
|
||||
// absolute in which case m_fontSize contains either the size in 1024th of
|
||||
// a point (Pango convention) or its values are in [-3, 3] interval and map
|
||||
// to [xx-small, xx-large] CSS-like font size specification. And finally it
|
||||
// may be not specified at all, of course, in which case the value of
|
||||
// m_fontSize doesn't matter and it shouldn't be used.
|
||||
enum
|
||||
{
|
||||
Size_Unspecified,
|
||||
Size_Relative,
|
||||
Size_Symbolic,
|
||||
Size_PointParts
|
||||
} m_sizeKind;
|
||||
int m_fontSize;
|
||||
|
||||
// If the value is Unspecified, the attribute wasn't given.
|
||||
OptionalBool m_isBold,
|
||||
m_isItalic,
|
||||
m_isUnderlined,
|
||||
m_isStrikethrough;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMarkupParserOutput: gathers the results of parsing markup.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// A class deriving directly from this one needs to implement all the pure
|
||||
// virtual functions below but as the handling of all simple tags (bold, italic
|
||||
// &c) is often very similar, it is usually more convenient to inherit from
|
||||
// wxMarkupParserFontOutput defined in wx/private/markupparserfont.h instead.
|
||||
class wxMarkupParserOutput
|
||||
{
|
||||
public:
|
||||
wxMarkupParserOutput() = default;
|
||||
virtual ~wxMarkupParserOutput() = default;
|
||||
|
||||
// Virtual functions called by wxMarkupParser while parsing the markup.
|
||||
|
||||
// Called for a run of normal text.
|
||||
virtual void OnText(const wxString& text) = 0;
|
||||
|
||||
// These functions correspond to the simple tags without parameters.
|
||||
virtual void OnBoldStart() = 0;
|
||||
virtual void OnBoldEnd() = 0;
|
||||
|
||||
virtual void OnItalicStart() = 0;
|
||||
virtual void OnItalicEnd() = 0;
|
||||
|
||||
virtual void OnUnderlinedStart() = 0;
|
||||
virtual void OnUnderlinedEnd() = 0;
|
||||
|
||||
virtual void OnStrikethroughStart() = 0;
|
||||
virtual void OnStrikethroughEnd() = 0;
|
||||
|
||||
virtual void OnBigStart() = 0;
|
||||
virtual void OnBigEnd() = 0;
|
||||
|
||||
virtual void OnSmallStart() = 0;
|
||||
virtual void OnSmallEnd() = 0;
|
||||
|
||||
virtual void OnTeletypeStart() = 0;
|
||||
virtual void OnTeletypeEnd() = 0;
|
||||
|
||||
// The generic span start and end functions.
|
||||
virtual void OnSpanStart(const wxMarkupSpanAttributes& attrs) = 0;
|
||||
virtual void OnSpanEnd(const wxMarkupSpanAttributes& attrs) = 0;
|
||||
|
||||
private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxMarkupParserOutput);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMarkupParser: parses the given markup text into wxMarkupParserOutput.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxMarkupParser
|
||||
{
|
||||
public:
|
||||
// Initialize the parser with the object that will receive parsing results.
|
||||
// This object lifetime must be greater than ours.
|
||||
explicit wxMarkupParser(wxMarkupParserOutput& output)
|
||||
: m_output(output)
|
||||
{
|
||||
}
|
||||
|
||||
// Parse the entire string and call wxMarkupParserOutput methods.
|
||||
//
|
||||
// Return true if the string was successfully parsed or false if it failed
|
||||
// (presumably because of syntax errors in the markup).
|
||||
bool Parse(const wxString& text);
|
||||
|
||||
// Quote a normal string, not meant to be interpreted as markup, so that it
|
||||
// produces the same string when parsed as markup. This means, for example,
|
||||
// replacing '<' in the input string with "<" to prevent them from being
|
||||
// interpreted as tag opening characters.
|
||||
static wxString Quote(const wxString& text);
|
||||
|
||||
// Strip markup from a string, i.e. simply remove all tags and replace
|
||||
// XML entities with their values (or with "&&" in case of "&" to
|
||||
// prevent it from being interpreted as mnemonic marker).
|
||||
static wxString Strip(const wxString& text);
|
||||
|
||||
private:
|
||||
// Simple struct combining the name of a tag and its attributes.
|
||||
struct TagAndAttrs
|
||||
{
|
||||
TagAndAttrs(const wxString& name_) : name(name_) { }
|
||||
|
||||
wxString name;
|
||||
wxMarkupSpanAttributes attrs;
|
||||
};
|
||||
|
||||
// Call the wxMarkupParserOutput method corresponding to the given tag.
|
||||
//
|
||||
// Return false if the tag doesn't match any of the known ones.
|
||||
bool OutputTag(const TagAndAttrs& tagAndAttrs, bool start);
|
||||
|
||||
// Parse the attributes and fill the provided TagAndAttrs object with the
|
||||
// information about them. Does nothing if attrs string is empty.
|
||||
//
|
||||
// Returns empty string on success of a [fragment of an] error message if
|
||||
// we failed to parse the attributes.
|
||||
wxString ParseAttrs(wxString attrs, TagAndAttrs& tagAndAttrs);
|
||||
|
||||
|
||||
wxMarkupParserOutput& m_output;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxMarkupParser);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_MARKUPPARSER_H_
|
||||
256
libs/wxWidgets-3.3.1/include/wx/private/markupparserattr.h
Normal file
256
libs/wxWidgets-3.3.1/include/wx/private/markupparserattr.h
Normal file
@@ -0,0 +1,256 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/markupparserattr.h
|
||||
// Purpose: Classes mapping markup attributes to wxFont/wxColour.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2011-02-18
|
||||
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_MARKUPPARSERATTR_H_
|
||||
#define _WX_PRIVATE_MARKUPPARSERATTR_H_
|
||||
|
||||
#include "wx/private/markupparser.h"
|
||||
|
||||
#include "wx/stack.h"
|
||||
|
||||
#include "wx/colour.h"
|
||||
#include "wx/font.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMarkupParserAttrOutput: simplified wxFont-using version of the above.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This class assumes that wxFont and wxColour are used to perform all the
|
||||
// markup tags and implements the base class virtual functions in terms of
|
||||
// OnAttr{Start,End}() only.
|
||||
//
|
||||
// Notice that you still must implement OnText() inherited from the base class
|
||||
// when deriving from this one.
|
||||
class wxMarkupParserAttrOutput : public wxMarkupParserOutput
|
||||
{
|
||||
public:
|
||||
// A container of font and colours with inheritance support. It holds two
|
||||
// sets of attributes:
|
||||
// 1. The currently specified ones from parsed tags that contain
|
||||
// information on what should change in the output; some of them
|
||||
// may be invalid if only the others are affected by a change.
|
||||
// 2. The _effective_ attributes that are always valid and accumulate
|
||||
// all past changes as the markup is being parser; these are used
|
||||
// to restore state when unwinding nested attributes.
|
||||
struct Attr
|
||||
{
|
||||
Attr(const Attr *attrInEffect,
|
||||
const wxFont& font_,
|
||||
const wxColour& foreground_ = wxColour(),
|
||||
const wxColour& background_ = wxColour())
|
||||
: font(font_), foreground(foreground_), background(background_)
|
||||
{
|
||||
if (attrInEffect)
|
||||
{
|
||||
effectiveFont = font.IsOk() ? font : attrInEffect->effectiveFont;
|
||||
effectiveForeground = foreground_.IsOk() ? foreground_ : attrInEffect->effectiveForeground;
|
||||
effectiveBackground = background.IsOk() ? background : attrInEffect->effectiveBackground;
|
||||
}
|
||||
else
|
||||
{
|
||||
effectiveFont = font;
|
||||
effectiveForeground = foreground;
|
||||
effectiveBackground = background;
|
||||
}
|
||||
}
|
||||
|
||||
wxFont font;
|
||||
wxColour foreground,
|
||||
background;
|
||||
wxFont effectiveFont;
|
||||
wxColour effectiveForeground,
|
||||
effectiveBackground;
|
||||
};
|
||||
|
||||
|
||||
// This object must be initialized with the font and colours to use
|
||||
// initially, i.e. the ones used before any tags in the string.
|
||||
wxMarkupParserAttrOutput(const wxFont& font,
|
||||
const wxColour& foreground,
|
||||
const wxColour& background)
|
||||
{
|
||||
m_attrs.push(Attr(nullptr, font, foreground, background));
|
||||
}
|
||||
|
||||
// Indicates the change of the font and/or colours used. Any of the
|
||||
// fields of the argument may be invalid indicating that the corresponding
|
||||
// attribute didn't actually change.
|
||||
virtual void OnAttrStart(const Attr& attr) = 0;
|
||||
|
||||
// Indicates the end of the region affected by the given attributes
|
||||
// (the same ones that were passed to the matching OnAttrStart(), use
|
||||
// GetAttr() to get the ones that will be used from now on).
|
||||
virtual void OnAttrEnd(const Attr& attr) = 0;
|
||||
|
||||
|
||||
// Implement all pure virtual methods inherited from the base class in
|
||||
// terms of our own ones.
|
||||
virtual void OnBoldStart() override { DoChangeFont(&wxFont::Bold); }
|
||||
virtual void OnBoldEnd() override { DoEndAttr(); }
|
||||
|
||||
virtual void OnItalicStart() override { DoChangeFont(&wxFont::Italic); }
|
||||
virtual void OnItalicEnd() override { DoEndAttr(); }
|
||||
|
||||
virtual void OnUnderlinedStart() override { DoChangeFont(&wxFont::Underlined); }
|
||||
virtual void OnUnderlinedEnd() override { DoEndAttr(); }
|
||||
|
||||
virtual void OnStrikethroughStart() override { DoChangeFont(&wxFont::Strikethrough); }
|
||||
virtual void OnStrikethroughEnd() override { DoEndAttr(); }
|
||||
|
||||
virtual void OnBigStart() override { DoChangeFont(&wxFont::Larger); }
|
||||
virtual void OnBigEnd() override { DoEndAttr(); }
|
||||
|
||||
virtual void OnSmallStart() override { DoChangeFont(&wxFont::Smaller); }
|
||||
virtual void OnSmallEnd() override { DoEndAttr(); }
|
||||
|
||||
virtual void OnTeletypeStart() override
|
||||
{
|
||||
wxFont font(GetFont());
|
||||
font.SetFamily(wxFONTFAMILY_TELETYPE);
|
||||
DoSetFont(font);
|
||||
}
|
||||
virtual void OnTeletypeEnd() override { DoEndAttr(); }
|
||||
|
||||
virtual void OnSpanStart(const wxMarkupSpanAttributes& spanAttr) override
|
||||
{
|
||||
wxFont font(GetFont());
|
||||
if ( !spanAttr.m_fontFace.empty() )
|
||||
font.SetFaceName(spanAttr.m_fontFace);
|
||||
|
||||
FontModifier<wxFontWeight>()(spanAttr.m_isBold,
|
||||
font, &wxFont::SetWeight,
|
||||
wxFONTWEIGHT_NORMAL, wxFONTWEIGHT_BOLD);
|
||||
|
||||
FontModifier<wxFontStyle>()(spanAttr.m_isItalic,
|
||||
font, &wxFont::SetStyle,
|
||||
wxFONTSTYLE_NORMAL, wxFONTSTYLE_ITALIC);
|
||||
|
||||
FontModifier<bool>()(spanAttr.m_isUnderlined,
|
||||
font, &wxFont::SetUnderlined,
|
||||
false, true);
|
||||
|
||||
FontModifier<bool>()(spanAttr.m_isStrikethrough,
|
||||
font, &wxFont::SetStrikethrough,
|
||||
false, true);
|
||||
|
||||
switch ( spanAttr.m_sizeKind )
|
||||
{
|
||||
case wxMarkupSpanAttributes::Size_Unspecified:
|
||||
break;
|
||||
|
||||
case wxMarkupSpanAttributes::Size_Relative:
|
||||
if ( spanAttr.m_fontSize > 0 )
|
||||
font.MakeLarger();
|
||||
else
|
||||
font.MakeSmaller();
|
||||
break;
|
||||
|
||||
case wxMarkupSpanAttributes::Size_Symbolic:
|
||||
// The values of font size intentionally coincide with the
|
||||
// values of wxFontSymbolicSize enum elements so simply cast
|
||||
// one to the other.
|
||||
font.SetSymbolicSize(
|
||||
static_cast<wxFontSymbolicSize>(spanAttr.m_fontSize)
|
||||
);
|
||||
break;
|
||||
|
||||
case wxMarkupSpanAttributes::Size_PointParts:
|
||||
font.SetFractionalPointSize(spanAttr.m_fontSize/1024.);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
const Attr attr(&m_attrs.top(), font, spanAttr.m_fgCol, spanAttr.m_bgCol);
|
||||
OnAttrStart(attr);
|
||||
|
||||
m_attrs.push(attr);
|
||||
}
|
||||
|
||||
virtual void OnSpanEnd(const wxMarkupSpanAttributes& WXUNUSED(spanAttr)) override
|
||||
{
|
||||
DoEndAttr();
|
||||
}
|
||||
|
||||
protected:
|
||||
// Get the current attributes, i.e. the ones that should be used for
|
||||
// rendering (or measuring or whatever) the text at the current position in
|
||||
// the string.
|
||||
//
|
||||
// It may be called from OnAttrStart() to get the old attributes used
|
||||
// before and from OnAttrEnd() to get the new attributes that will be used
|
||||
// from now on but is mostly meant to be used from overridden OnText()
|
||||
// implementations.
|
||||
const Attr& GetAttr() const { return m_attrs.top(); }
|
||||
|
||||
// A shortcut for accessing the font of the current attribute.
|
||||
const wxFont& GetFont() const { return GetAttr().font; }
|
||||
|
||||
private:
|
||||
// Change only the font to the given one. Call OnAttrStart() to notify
|
||||
// about the change and update the attributes stack.
|
||||
void DoSetFont(const wxFont& font)
|
||||
{
|
||||
const Attr attr(&m_attrs.top(), font);
|
||||
|
||||
OnAttrStart(attr);
|
||||
|
||||
m_attrs.push(attr);
|
||||
}
|
||||
|
||||
// Apply the given function to the font currently on top of the font stack,
|
||||
// push the new font on the stack and call OnAttrStart() with it.
|
||||
void DoChangeFont(wxFont (wxFont::*func)() const)
|
||||
{
|
||||
DoSetFont((GetFont().*func)());
|
||||
}
|
||||
|
||||
void DoEndAttr()
|
||||
{
|
||||
const Attr attr(m_attrs.top());
|
||||
m_attrs.pop();
|
||||
|
||||
OnAttrEnd(attr);
|
||||
}
|
||||
|
||||
// A helper class used to apply the given function to a wxFont object
|
||||
// depending on the value of an OptionalBool.
|
||||
template <typename T>
|
||||
struct FontModifier
|
||||
{
|
||||
FontModifier() = default;
|
||||
|
||||
void operator()(wxMarkupSpanAttributes::OptionalBool isIt,
|
||||
wxFont& font,
|
||||
void (wxFont::*func)(T),
|
||||
T noValue,
|
||||
T yesValue)
|
||||
{
|
||||
switch ( isIt )
|
||||
{
|
||||
case wxMarkupSpanAttributes::Unspecified:
|
||||
break;
|
||||
|
||||
case wxMarkupSpanAttributes::No:
|
||||
(font.*func)(noValue);
|
||||
break;
|
||||
|
||||
case wxMarkupSpanAttributes::Yes:
|
||||
(font.*func)(yesValue);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
wxStack<Attr> m_attrs;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxMarkupParserAttrOutput);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_MARKUPPARSERATTR_H_
|
||||
216
libs/wxWidgets-3.3.1/include/wx/private/menuradio.h
Normal file
216
libs/wxWidgets-3.3.1/include/wx/private/menuradio.h
Normal file
@@ -0,0 +1,216 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/menuradio.h
|
||||
// Purpose: wxMenuRadioItemsData implementation
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified: Artur Wieczorek: added UpdateOnInsertNonRadio()
|
||||
// Created: 2017-08-12
|
||||
// Copyright: (c) 2011 Vadim Zeitlin et al
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef WX_PRIVATE_MENURADIO_H_
|
||||
#define WX_PRIVATE_MENURADIO_H_
|
||||
|
||||
#include "wx/vector.h"
|
||||
|
||||
// Contains the data about the radio items groups in the given menu.
|
||||
class wxMenuRadioItemsData
|
||||
{
|
||||
public:
|
||||
wxMenuRadioItemsData() = default;
|
||||
|
||||
// Default copy ctor, assignment operator and dtor are all ok.
|
||||
|
||||
// Find the start and end of the group containing the given position or
|
||||
// return false if it's not inside any range.
|
||||
bool GetGroupRange(int pos, int *start, int *end) const
|
||||
{
|
||||
// We use a simple linear search here because there are not that many
|
||||
// items in a menu and hence even fewer radio items ranges anyhow, so
|
||||
// normally there is no need to do anything fancy (like keeping the
|
||||
// array sorted and using binary search).
|
||||
for ( Ranges::const_iterator it = m_ranges.begin();
|
||||
it != m_ranges.end();
|
||||
++it )
|
||||
{
|
||||
const Range& r = *it;
|
||||
|
||||
if ( r.start <= pos && pos <= r.end )
|
||||
{
|
||||
if ( start )
|
||||
*start = r.start;
|
||||
if ( end )
|
||||
*end = r.end;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Take into account the new radio item about to be added at the given
|
||||
// position. The are two cases to handle:
|
||||
// - If item precedes the range, the range indices have to be updated.
|
||||
// - If item falls inside the range, this range is extended to include
|
||||
// the item.
|
||||
// Returns true if this item starts a new radio group, false if it extends
|
||||
// an existing one.
|
||||
bool UpdateOnInsertRadio(int pos)
|
||||
{
|
||||
bool inExistingGroup = false;
|
||||
|
||||
for ( Ranges::iterator it = m_ranges.begin();
|
||||
it != m_ranges.end();
|
||||
++it )
|
||||
{
|
||||
Range& r = *it;
|
||||
|
||||
if ( pos < r.start )
|
||||
{
|
||||
// Item is inserted before this range, update its indices.
|
||||
r.start++;
|
||||
r.end++;
|
||||
}
|
||||
else if ( pos <= r.end + 1 )
|
||||
{
|
||||
wxASSERT_MSG(!inExistingGroup,
|
||||
wxS("Item already inserted inside another range"));
|
||||
// Item is inserted in the middle of this range or immediately
|
||||
// after it in which case it extends this range so make it span
|
||||
// one more item in any case.
|
||||
r.end++;
|
||||
|
||||
inExistingGroup = true;
|
||||
}
|
||||
//else: Item is inserted after this range, nothing to do for it.
|
||||
}
|
||||
|
||||
if ( inExistingGroup )
|
||||
return false;
|
||||
|
||||
// Make a new range for the group this item will belong to.
|
||||
Range r;
|
||||
r.start = pos;
|
||||
r.end = pos;
|
||||
m_ranges.push_back(r);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Take into account the new non-radio item about to be added at the given
|
||||
// position. The are two cases to handle:
|
||||
// - If item precedes the range, the range indices have to be updated.
|
||||
// - If item falls inside the range, this range has to be split into
|
||||
// two new ranges.
|
||||
// Returns true if existing group has been split into two subgroups.
|
||||
bool UpdateOnInsertNonRadio(int pos)
|
||||
{
|
||||
bool wasSplit = false;
|
||||
Range newRange;
|
||||
|
||||
for ( Ranges::iterator it = m_ranges.begin();
|
||||
it != m_ranges.end();
|
||||
++it )
|
||||
{
|
||||
Range& r = *it;
|
||||
|
||||
if ( pos <= r.start )
|
||||
{
|
||||
// Item is inserted before this range or just at its start,
|
||||
// update its indices.
|
||||
r.start++;
|
||||
r.end++;
|
||||
}
|
||||
else if ( pos <= r.end )
|
||||
{
|
||||
wxASSERT_MSG(!wasSplit,
|
||||
wxS("Item already inserted inside another range"));
|
||||
// Item is inserted inside this range in which case
|
||||
// it breaks the range into two parts: one ending before
|
||||
// the item and one started after it.
|
||||
|
||||
// The new range after the item has to be stored and added to the list
|
||||
// after finishing the iteration through the ranges.
|
||||
newRange.start = pos + 1; // start after the item
|
||||
newRange.end = r.end + 1; // inherits current end "moved up" by one item
|
||||
wasSplit = true;
|
||||
// Current range ends just before the item position.
|
||||
r.end = pos - 1;
|
||||
}
|
||||
//else: Item is inserted after this range, nothing to do for it.
|
||||
}
|
||||
|
||||
if ( !wasSplit )
|
||||
return false;
|
||||
|
||||
// Add a split range to the list.
|
||||
m_ranges.push_back(newRange);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Update the ranges of the existing radio groups after removing the menu
|
||||
// item at the given position.
|
||||
//
|
||||
// The item being removed can be the item of any kind, not only the radio
|
||||
// button belonging to the radio group, and this function checks for it
|
||||
// and, as a side effect, returns true if this item was found inside an
|
||||
// existing radio group.
|
||||
bool UpdateOnRemoveItem(int pos)
|
||||
{
|
||||
bool inExistingGroup = false;
|
||||
|
||||
// Pointer to (necessarily unique) empty group which could be left
|
||||
// after removing the last radio button from it.
|
||||
Ranges::iterator itEmptyGroup = m_ranges.end();
|
||||
|
||||
for ( Ranges::iterator it = m_ranges.begin();
|
||||
it != m_ranges.end();
|
||||
++it )
|
||||
{
|
||||
Range& r = *it;
|
||||
|
||||
if ( pos < r.start )
|
||||
{
|
||||
// Removed item was positioned before this range, update its
|
||||
// indices.
|
||||
r.start--;
|
||||
r.end--;
|
||||
}
|
||||
else if ( pos <= r.end )
|
||||
{
|
||||
// Removed item belongs to this radio group (it is a radio
|
||||
// button), update index of its end.
|
||||
r.end--;
|
||||
|
||||
// Check if empty group left after removal.
|
||||
// If so, it will be deleted later on.
|
||||
if ( r.end < r.start )
|
||||
itEmptyGroup = it;
|
||||
|
||||
inExistingGroup = true;
|
||||
}
|
||||
//else: Removed item was after this range, nothing to do for it.
|
||||
}
|
||||
|
||||
// Remove empty group from the list.
|
||||
if ( itEmptyGroup != m_ranges.end() )
|
||||
m_ranges.erase(itEmptyGroup);
|
||||
|
||||
return inExistingGroup;
|
||||
}
|
||||
|
||||
private:
|
||||
// Contains the inclusive positions of the range start and end.
|
||||
struct Range
|
||||
{
|
||||
int start;
|
||||
int end;
|
||||
};
|
||||
|
||||
typedef wxVector<Range> Ranges;
|
||||
Ranges m_ranges;
|
||||
};
|
||||
|
||||
#endif // WX_PRIVATE_MENURADIO_H_
|
||||
54
libs/wxWidgets-3.3.1/include/wx/private/notifmsg.h
Normal file
54
libs/wxWidgets-3.3.1/include/wx/private/notifmsg.h
Normal file
@@ -0,0 +1,54 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/notifmsg.h
|
||||
// Purpose: wxNotificationMessage declarations
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2015-08-04
|
||||
// Copyright: (c) 2015 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_NOTIFMSG_H_
|
||||
#define _WX_PRIVATE_NOTIFMSG_H_
|
||||
|
||||
class wxNotificationMessageImpl
|
||||
{
|
||||
public:
|
||||
wxNotificationMessageImpl(wxNotificationMessageBase* notification):
|
||||
m_notification(notification)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
virtual ~wxNotificationMessageImpl() = default;
|
||||
|
||||
virtual bool Show(int timeout) = 0;
|
||||
|
||||
virtual bool Close() = 0;
|
||||
|
||||
virtual void SetTitle(const wxString& title) = 0;
|
||||
|
||||
virtual void SetMessage(const wxString& message) = 0;
|
||||
|
||||
virtual void SetParent(wxWindow *parent) = 0;
|
||||
|
||||
virtual void SetFlags(int flags) = 0;
|
||||
|
||||
virtual void SetIcon(const wxIcon& icon) = 0;
|
||||
|
||||
virtual bool AddAction(wxWindowID actionid, const wxString &label) = 0;
|
||||
|
||||
bool ProcessNotificationEvent(wxEvent& event)
|
||||
{
|
||||
return m_notification->ProcessEvent(event);
|
||||
}
|
||||
|
||||
wxNotificationMessageBase* GetNotification() const
|
||||
{
|
||||
return m_notification;
|
||||
}
|
||||
|
||||
protected:
|
||||
wxNotificationMessageBase* m_notification;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_NOTIFMSG_H_
|
||||
44
libs/wxWidgets-3.3.1/include/wx/private/overlay.h
Normal file
44
libs/wxWidgets-3.3.1/include/wx/private/overlay.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/overlay.h
|
||||
// Purpose: wxOverlayImpl declaration
|
||||
// Author: Stefan Csomor
|
||||
// Created: 2006-10-20
|
||||
// Copyright: (c) wxWidgets team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_OVERLAY_H_
|
||||
#define _WX_PRIVATE_OVERLAY_H_
|
||||
|
||||
#include "wx/overlay.h"
|
||||
|
||||
#if defined(__WXDFB__)
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#elif defined(__WXOSX__) && wxOSX_USE_COCOA
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#elif defined(__WXMSW__)
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#elif defined(__WXGTK3__)
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#define wxHAS_GENERIC_OVERLAY 1
|
||||
#elif defined(__WXQT__)
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#else
|
||||
#define wxHAS_GENERIC_OVERLAY 1
|
||||
#endif
|
||||
|
||||
class wxOverlay::Impl
|
||||
{
|
||||
public:
|
||||
virtual ~Impl();
|
||||
virtual bool IsNative() const;
|
||||
virtual bool IsOk() = 0;
|
||||
virtual void Init(wxDC* dc, int x, int y, int width, int height) = 0;
|
||||
virtual void BeginDrawing(wxDC* dc) = 0;
|
||||
virtual void EndDrawing(wxDC* dc) = 0;
|
||||
virtual void Clear(wxDC* dc) = 0;
|
||||
virtual void Reset() = 0;
|
||||
virtual void SetOpacity(int WXUNUSED(alpha)) { }
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_OVERLAY_H_
|
||||
29
libs/wxWidgets-3.3.1/include/wx/private/pipestream.h
Normal file
29
libs/wxWidgets-3.3.1/include/wx/private/pipestream.h
Normal file
@@ -0,0 +1,29 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/pipestream.h
|
||||
// Purpose: Declares wxPipeInputStream and wxPipeOutputStream.
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by: Rob Bresalier
|
||||
// Created: 2013-04-27
|
||||
// Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// (c) 2013 Rob Bresalier
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_PIPESTREAM_H_
|
||||
#define _WX_PRIVATE_PIPESTREAM_H_
|
||||
|
||||
#include "wx/platform.h"
|
||||
|
||||
// wxPipeInputStream is a platform-dependent input stream class (i.e. deriving,
|
||||
// possible indirectly, from wxInputStream) for reading from a pipe, i.e. a
|
||||
// pipe FD under Unix or a pipe HANDLE under MSW. It provides a single extra
|
||||
// IsOpened() method.
|
||||
//
|
||||
// wxPipeOutputStream is similar but has no additional methods at all.
|
||||
#if defined(__UNIX__) && !defined(__WINDOWS__)
|
||||
#include "wx/unix/private/pipestream.h"
|
||||
#elif defined(__WINDOWS__)
|
||||
#include "wx/msw/private/pipestream.h"
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_PIPESTREAM_H_
|
||||
40
libs/wxWidgets-3.3.1/include/wx/private/preferences.h
Normal file
40
libs/wxWidgets-3.3.1/include/wx/private/preferences.h
Normal file
@@ -0,0 +1,40 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/preferences.h
|
||||
// Purpose: wxPreferencesEditorImpl declaration.
|
||||
// Author: Vaclav Slavik
|
||||
// Created: 2013-02-19
|
||||
// Copyright: (c) 2013 Vaclav Slavik <vslavik@fastmail.fm>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_PREFERENCES_H_
|
||||
#define _WX_PRIVATE_PREFERENCES_H_
|
||||
|
||||
#include "wx/preferences.h"
|
||||
|
||||
#if wxUSE_TOOLBAR && defined(__WXOSX_COCOA__) && wxOSX_USE_NATIVE_TOOLBAR
|
||||
#define wxHAS_PREF_EDITOR_NATIVE
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxPreferencesEditorImpl: defines wxPreferencesEditor implementation.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxPreferencesEditorImpl
|
||||
{
|
||||
public:
|
||||
// This is implemented in a platform-specific way.
|
||||
static wxPreferencesEditorImpl* Create(const wxString& title);
|
||||
|
||||
// These methods simply mirror the public wxPreferencesEditor ones.
|
||||
virtual void AddPage(wxPreferencesPage* page) = 0;
|
||||
virtual void Show(wxWindow* parent) = 0;
|
||||
virtual void Dismiss() = 0;
|
||||
|
||||
virtual ~wxPreferencesEditorImpl() = default;
|
||||
|
||||
protected:
|
||||
wxPreferencesEditorImpl() = default;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_PREFERENCES_H_
|
||||
61
libs/wxWidgets-3.3.1/include/wx/private/print.h
Normal file
61
libs/wxWidgets-3.3.1/include/wx/private/print.h
Normal file
@@ -0,0 +1,61 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/print.h
|
||||
// Purpose: Private printing-related helpers.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2024-12-28
|
||||
// Copyright: (c) 2024 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_PRINT_H_
|
||||
#define _WX_PRIVATE_PRINT_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// RAII helper ensuring OnEndPrinting() is called on scope exit
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxPrintingGuard
|
||||
{
|
||||
public:
|
||||
explicit wxPrintingGuard(wxPrintout *printout)
|
||||
: m_printout(printout)
|
||||
{
|
||||
m_printout->OnBeginPrinting();
|
||||
}
|
||||
|
||||
~wxPrintingGuard()
|
||||
{
|
||||
m_printout->OnEndPrinting();
|
||||
}
|
||||
|
||||
private:
|
||||
wxPrintout * const m_printout;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxPrintingGuard);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Another helper ensuring EndPage() is called on scope exit
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxPrintingPageGuard
|
||||
{
|
||||
public:
|
||||
explicit wxPrintingPageGuard(wxDC& dc)
|
||||
: m_dc(dc)
|
||||
{
|
||||
m_dc.StartPage();
|
||||
}
|
||||
|
||||
~wxPrintingPageGuard()
|
||||
{
|
||||
m_dc.EndPage();
|
||||
}
|
||||
|
||||
private:
|
||||
wxDC& m_dc;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxPrintingPageGuard);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_PRINT_H_
|
||||
42
libs/wxWidgets-3.3.1/include/wx/private/refcountermt.h
Normal file
42
libs/wxWidgets-3.3.1/include/wx/private/refcountermt.h
Normal file
@@ -0,0 +1,42 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/refcountermt.h
|
||||
// Purpose: wxRefCounterMT class: MT-safe version of wxRefCounter
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2021-01-11
|
||||
// Copyright: (c) 2021 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_REFCOUNTERMT_H_
|
||||
#define _WX_PRIVATE_REFCOUNTERMT_H_
|
||||
|
||||
#include "wx/atomic.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Version of wxRefCounter with MT-safe count
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxRefCounterMT
|
||||
{
|
||||
public:
|
||||
wxRefCounterMT() { m_count = 1; }
|
||||
|
||||
void IncRef() { wxAtomicInc(m_count); }
|
||||
void DecRef()
|
||||
{
|
||||
if ( wxAtomicDec(m_count) == 0 )
|
||||
delete this;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual ~wxRefCounterMT() = default;
|
||||
|
||||
private:
|
||||
// Ref count is atomic to allow IncRef() and DecRef() to be concurrently
|
||||
// called from different threads.
|
||||
wxAtomicInt m_count;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxRefCounterMT);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_REFCOUNTERMT_H_
|
||||
146
libs/wxWidgets-3.3.1/include/wx/private/rescale.h
Normal file
146
libs/wxWidgets-3.3.1/include/wx/private/rescale.h
Normal file
@@ -0,0 +1,146 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/rescale.h
|
||||
// Purpose: Helpers for rescaling coordinates
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2021-07-13
|
||||
// Copyright: (c) 2021 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_RESCALE_H_
|
||||
#define _WX_PRIVATE_RESCALE_H_
|
||||
|
||||
#include "wx/gdicmn.h"
|
||||
#include "wx/math.h"
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
// Required in order to use wxMulDivInt32().
|
||||
#include "wx/msw/wrapwin.h"
|
||||
#endif
|
||||
|
||||
// wxRescaleCoord is used to scale the components of the given wxSize by the
|
||||
// ratio between 2 scales, with rounding. It doesn't scale the components
|
||||
// if they're set to -1 (wxDefaultCoord), as this value is special in wxSize.
|
||||
//
|
||||
// The way it's used is special because we want to ensure there is no confusion
|
||||
// between the scale being converted from and the scale being converted to, so
|
||||
// instead of just using a single function, we use an intermediate object,
|
||||
// which is not supposed to be used directly, but is only returned by From() in
|
||||
// order to allow calling To() on it.
|
||||
//
|
||||
// Another complication is that we want this to work for both wxSize and
|
||||
// wxPoint, as well as for just plain coordinate values, so wxRescaleCoord() is
|
||||
// an overloaded function and the helper classes are templates, with their
|
||||
// template parameter being either wxSize, wxPoint or int.
|
||||
|
||||
namespace wxPrivate
|
||||
{
|
||||
|
||||
template <typename T> class wxRescaleCoordWithValue;
|
||||
|
||||
template <typename T>
|
||||
class wxRescaleCoordWithFrom
|
||||
{
|
||||
public:
|
||||
T To(wxSize newScale) const
|
||||
{
|
||||
T value(m_value);
|
||||
|
||||
if ( value.x != wxDefaultCoord )
|
||||
value.x = wxMulDivInt32(value.x, newScale.x, m_oldScale.x);
|
||||
|
||||
if ( value.y != wxDefaultCoord )
|
||||
value.y = wxMulDivInt32(value.y, newScale.y, m_oldScale.y);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
T To(int newScaleX, int newScaleY) const
|
||||
{
|
||||
return To(wxSize(newScaleX, newScaleY));
|
||||
}
|
||||
|
||||
private:
|
||||
wxRescaleCoordWithFrom(T value, wxSize oldScale)
|
||||
: m_value(value), m_oldScale(oldScale)
|
||||
{
|
||||
}
|
||||
|
||||
const T m_value;
|
||||
const wxSize m_oldScale;
|
||||
|
||||
// Only it can create objects of this class.
|
||||
friend class wxRescaleCoordWithValue<T>;
|
||||
};
|
||||
|
||||
// Specialization for just a single value.
|
||||
template <>
|
||||
class wxRescaleCoordWithFrom<int>
|
||||
{
|
||||
public:
|
||||
int To(wxSize newScale) const
|
||||
{
|
||||
return m_value == wxDefaultCoord
|
||||
? wxDefaultCoord
|
||||
: wxMulDivInt32(m_value, newScale.x, m_oldScale.x);
|
||||
}
|
||||
|
||||
private:
|
||||
wxRescaleCoordWithFrom(int value, wxSize oldScale)
|
||||
: m_value(value), m_oldScale(oldScale)
|
||||
{
|
||||
}
|
||||
|
||||
const int m_value;
|
||||
const wxSize m_oldScale;
|
||||
|
||||
// Only it can create objects of this class.
|
||||
friend class wxRescaleCoordWithValue<int>;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
class wxRescaleCoordWithValue
|
||||
{
|
||||
public:
|
||||
explicit wxRescaleCoordWithValue(T value)
|
||||
: m_value(value)
|
||||
{
|
||||
}
|
||||
|
||||
wxRescaleCoordWithFrom<T> From(wxSize oldScale)
|
||||
{
|
||||
return wxRescaleCoordWithFrom<T>(m_value, oldScale);
|
||||
}
|
||||
|
||||
wxRescaleCoordWithFrom<T> From(int oldScaleX, int oldScaleY)
|
||||
{
|
||||
return From(wxSize(oldScaleX, oldScaleY));
|
||||
}
|
||||
|
||||
private:
|
||||
const T m_value;
|
||||
};
|
||||
|
||||
} // namespace wxPrivate
|
||||
|
||||
inline wxPrivate::wxRescaleCoordWithValue<int> wxRescaleCoord(int coord)
|
||||
{
|
||||
return wxPrivate::wxRescaleCoordWithValue<int>(coord);
|
||||
}
|
||||
|
||||
inline wxPrivate::wxRescaleCoordWithValue<wxSize> wxRescaleCoord(wxSize sz)
|
||||
{
|
||||
return wxPrivate::wxRescaleCoordWithValue<wxSize>(sz);
|
||||
}
|
||||
|
||||
inline wxPrivate::wxRescaleCoordWithValue<wxSize> wxRescaleCoord(int x, int y)
|
||||
{
|
||||
return wxPrivate::wxRescaleCoordWithValue<wxSize>(wxSize(x, y));
|
||||
}
|
||||
|
||||
inline wxPrivate::wxRescaleCoordWithValue<wxPoint> wxRescaleCoord(wxPoint pt)
|
||||
{
|
||||
return wxPrivate::wxRescaleCoordWithValue<wxPoint>(pt);
|
||||
}
|
||||
|
||||
#endif // _WX_PRIVATE_RESCALE_H_
|
||||
44
libs/wxWidgets-3.3.1/include/wx/private/richtooltip.h
Normal file
44
libs/wxWidgets-3.3.1/include/wx/private/richtooltip.h
Normal file
@@ -0,0 +1,44 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/richtooltip.h
|
||||
// Purpose: wxRichToolTipImpl declaration.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2011-10-18
|
||||
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_RICHTOOLTIP_H_
|
||||
#define _WX_PRIVATE_RICHTOOLTIP_H_
|
||||
|
||||
#include "wx/richtooltip.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxRichToolTipImpl: defines wxRichToolTip implementation.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxRichToolTipImpl
|
||||
{
|
||||
public:
|
||||
// This is implemented in a platform-specific way.
|
||||
static wxRichToolTipImpl* Create(const wxString& title,
|
||||
const wxString& message);
|
||||
|
||||
// These methods simply mirror the public wxRichToolTip ones.
|
||||
virtual void SetBackgroundColour(const wxColour& col,
|
||||
const wxColour& colEnd) = 0;
|
||||
virtual void SetCustomIcon(const wxBitmapBundle& icon) = 0;
|
||||
virtual void SetStandardIcon(int icon) = 0;
|
||||
virtual void SetTimeout(unsigned milliseconds,
|
||||
unsigned millisecondsShowdelay = 0) = 0;
|
||||
virtual void SetTipKind(wxTipKind tipKind) = 0;
|
||||
virtual void SetTitleFont(const wxFont& font) = 0;
|
||||
|
||||
virtual void ShowFor(wxWindow* win, const wxRect* rect = nullptr) = 0;
|
||||
|
||||
virtual ~wxRichToolTipImpl() = default;
|
||||
|
||||
protected:
|
||||
wxRichToolTipImpl() = default;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_RICHTOOLTIP_H_
|
||||
73
libs/wxWidgets-3.3.1/include/wx/private/safecall.h
Normal file
73
libs/wxWidgets-3.3.1/include/wx/private/safecall.h
Normal file
@@ -0,0 +1,73 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/safecall.h
|
||||
// Purpose: Call a function "safely", i.e. potentially catching exceptions.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2025-03-20
|
||||
// Copyright: (c) 2025 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_SAFECALL_H_
|
||||
#define _WX_PRIVATE_SAFECALL_H_
|
||||
|
||||
#include "wx/app.h"
|
||||
|
||||
#if wxUSE_EXCEPTIONS
|
||||
|
||||
// Returns true if a special system option disabling catching unhandled
|
||||
// exceptions is set.
|
||||
//
|
||||
// This function is implemented in sysopt.cpp.
|
||||
extern bool WXDLLIMPEXP_BASE wxIsCatchUnhandledExceptionsDisabled();
|
||||
|
||||
// General version calls the given function or function-like object and
|
||||
// executes the provided handler if an exception is thrown.
|
||||
//
|
||||
// Both the function and the handler must return the value of the same type R,
|
||||
// possibly void.
|
||||
template <typename R, typename T1, typename T2>
|
||||
inline R wxSafeCall(const T1& func, const T2& handler)
|
||||
{
|
||||
#if wxUSE_SYSTEM_OPTIONS
|
||||
if ( wxIsCatchUnhandledExceptionsDisabled() )
|
||||
{
|
||||
return func();
|
||||
}
|
||||
#endif // wxUSE_SYSTEM_OPTIONS
|
||||
|
||||
try
|
||||
{
|
||||
return func();
|
||||
}
|
||||
catch ( ... )
|
||||
{
|
||||
return handler();
|
||||
}
|
||||
}
|
||||
|
||||
// Simplified version for the common case when the function doesn't return
|
||||
// anything and we just want to call wxApp::OnUnhandledException() if it
|
||||
// throws.
|
||||
template <typename T>
|
||||
inline void wxSafeCall(const T& func)
|
||||
{
|
||||
wxSafeCall<void>(func, wxApp::CallOnUnhandledException);
|
||||
}
|
||||
|
||||
#else // !wxUSE_EXCEPTIONS
|
||||
|
||||
template <typename R, typename T1, typename T2>
|
||||
inline R wxSafeCall(const T1& func, const T2& WXUNUSED(handler))
|
||||
{
|
||||
return func();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline void wxSafeCall(const T& func)
|
||||
{
|
||||
func();
|
||||
}
|
||||
|
||||
#endif // wxUSE_EXCEPTIONS/!wxUSE_EXCEPTIONS
|
||||
|
||||
#endif // _WX_PRIVATE_SAFECALL_H_
|
||||
316
libs/wxWidgets-3.3.1/include/wx/private/sckaddr.h
Normal file
316
libs/wxWidgets-3.3.1/include/wx/private/sckaddr.h
Normal file
@@ -0,0 +1,316 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/sckaddr.h
|
||||
// Purpose: wxSockAddressImpl
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2008-12-28
|
||||
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_SOCKADDR_H_
|
||||
#define _WX_PRIVATE_SOCKADDR_H_
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
#include "wx/msw/wrapwin.h"
|
||||
|
||||
#if wxUSE_IPV6
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
#elif defined(__VMS__)
|
||||
#include <socket.h>
|
||||
|
||||
struct sockaddr_un
|
||||
{
|
||||
u_char sun_len; /* sockaddr len including null */
|
||||
u_char sun_family; /* AF_UNIX */
|
||||
char sun_path[108]; /* path name (gag) */
|
||||
};
|
||||
#include <in.h>
|
||||
#else // generic Unix
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/un.h>
|
||||
#endif // platform
|
||||
|
||||
#include <stdlib.h> // for calloc()
|
||||
|
||||
// this is a wrapper for sockaddr_storage if it's available or just sockaddr
|
||||
// otherwise
|
||||
union wxSockAddressStorage
|
||||
{
|
||||
#if wxUSE_IPV6
|
||||
sockaddr_storage addr_storage;
|
||||
#endif
|
||||
sockaddr addr;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// helpers for wxSockAddressImpl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// helper class mapping sockaddr_xxx types to corresponding AF_XXX values
|
||||
template <class T> struct AddressFamily;
|
||||
|
||||
template <> struct AddressFamily<sockaddr_in> { enum { value = AF_INET }; };
|
||||
|
||||
#if wxUSE_IPV6
|
||||
template <> struct AddressFamily<sockaddr_in6> { enum { value = AF_INET6 }; };
|
||||
#endif // wxUSE_IPV6
|
||||
|
||||
#ifdef wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
template <> struct AddressFamily<sockaddr_un> { enum { value = AF_UNIX }; };
|
||||
#endif // wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxSockAddressImpl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Represents a socket endpoint, e.g. an (address, port) pair for PF_INET
|
||||
// sockets. It can be initialized from an existing sockaddr struct and also
|
||||
// provides access to sockaddr stored internally so that it can be easily used
|
||||
// with e.g. connect(2).
|
||||
//
|
||||
// This class also performs (synchronous, hence potentially long) name lookups
|
||||
// if necessary, i.e. if the host name strings don't contain addresses in
|
||||
// numerical form (quad dotted for IPv4 or standard hexadecimal for IPv6).
|
||||
// Notice that internally the potentially Unicode host names are encoded as
|
||||
// UTF-8 before being passed to the lookup function but the host names should
|
||||
// really be ASCII anyhow.
|
||||
class wxSockAddressImpl
|
||||
{
|
||||
public:
|
||||
// as this is passed to socket() it should be a PF_XXX and not AF_XXX (even
|
||||
// though they're the same in practice)
|
||||
enum Family
|
||||
{
|
||||
FAMILY_INET = PF_INET,
|
||||
#if wxUSE_IPV6
|
||||
FAMILY_INET6 = PF_INET6,
|
||||
#endif
|
||||
#ifdef wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
FAMILY_UNIX = PF_UNIX,
|
||||
#endif
|
||||
FAMILY_UNSPEC = PF_UNSPEC
|
||||
};
|
||||
|
||||
// default ctor creates uninitialized object, use one of CreateXXX() below
|
||||
wxSockAddressImpl()
|
||||
{
|
||||
InitUnspec();
|
||||
}
|
||||
|
||||
// ctor from an existing sockaddr
|
||||
wxSockAddressImpl(const sockaddr& addr, int len)
|
||||
{
|
||||
switch ( addr.sa_family )
|
||||
{
|
||||
case PF_INET:
|
||||
#if wxUSE_IPV6
|
||||
case PF_INET6:
|
||||
#endif
|
||||
#ifdef wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
case PF_UNIX:
|
||||
#endif
|
||||
m_family = static_cast<Family>(addr.sa_family);
|
||||
break;
|
||||
|
||||
default:
|
||||
wxFAIL_MSG( "unsupported socket address family" );
|
||||
InitUnspec();
|
||||
return;
|
||||
}
|
||||
|
||||
InitFromSockaddr(addr, len);
|
||||
}
|
||||
|
||||
// copy ctor and assignment operators
|
||||
wxSockAddressImpl(const wxSockAddressImpl& other)
|
||||
{
|
||||
InitFromOther(other);
|
||||
}
|
||||
|
||||
wxSockAddressImpl& operator=(const wxSockAddressImpl& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
free(m_addr);
|
||||
InitFromOther(other);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
// dtor frees the memory used by m_addr
|
||||
~wxSockAddressImpl()
|
||||
{
|
||||
free(m_addr);
|
||||
}
|
||||
|
||||
|
||||
// reset the address to the initial uninitialized state
|
||||
void Clear()
|
||||
{
|
||||
free(m_addr);
|
||||
|
||||
InitUnspec();
|
||||
}
|
||||
|
||||
// initialize the address to be of specific address family, it must be
|
||||
// currently uninitialized (you may call Clear() to achieve this)
|
||||
void CreateINET();
|
||||
void CreateINET6();
|
||||
#ifdef wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
void CreateUnix();
|
||||
#endif // wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
void Create(Family family)
|
||||
{
|
||||
switch ( family )
|
||||
{
|
||||
case FAMILY_INET:
|
||||
CreateINET();
|
||||
break;
|
||||
|
||||
#if wxUSE_IPV6
|
||||
case FAMILY_INET6:
|
||||
CreateINET6();
|
||||
break;
|
||||
#endif // wxUSE_IPV6
|
||||
|
||||
#ifdef wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
case FAMILY_UNIX:
|
||||
CreateUnix();
|
||||
break;
|
||||
#endif // wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
|
||||
default:
|
||||
wxFAIL_MSG( "unsupported socket address family" );
|
||||
}
|
||||
}
|
||||
|
||||
// simple accessors
|
||||
Family GetFamily() const { return m_family; }
|
||||
bool Is(Family family) const { return m_family == family; }
|
||||
bool IsOk() const { return m_family != FAMILY_UNSPEC; }
|
||||
const sockaddr *GetAddr() const { return m_addr; }
|
||||
sockaddr *GetWritableAddr() { return m_addr; }
|
||||
int GetLen() const { return m_len; }
|
||||
|
||||
// accessors for INET or INET6 address families
|
||||
#if wxUSE_IPV6
|
||||
#define CALL_IPV4_OR_6(func, args) \
|
||||
Is(FAMILY_INET6) ? func##6(args) : func##4(args)
|
||||
#define CALL_IPV4_OR_6_VOID(func) \
|
||||
Is(FAMILY_INET6) ? func##6() : func##4()
|
||||
#else
|
||||
#define CALL_IPV4_OR_6(func, args) func##4(args)
|
||||
#define CALL_IPV4_OR_6_VOID(func) func##4()
|
||||
#endif // IPv6 support on/off
|
||||
|
||||
wxString GetHostName() const;
|
||||
bool SetHostName(const wxString& name)
|
||||
{
|
||||
return CALL_IPV4_OR_6(SetHostName, (name));
|
||||
}
|
||||
|
||||
wxUint16 GetPort() const { return CALL_IPV4_OR_6_VOID(GetPort); }
|
||||
bool SetPort(wxUint16 port) { return CALL_IPV4_OR_6(SetPort, (port)); }
|
||||
bool SetPortName(const wxString& name, const char *protocol);
|
||||
|
||||
bool SetToAnyAddress() { return CALL_IPV4_OR_6_VOID(SetToAnyAddress); }
|
||||
|
||||
#undef CALL_IPV4_OR_6
|
||||
|
||||
// accessors for INET addresses only
|
||||
bool GetHostAddress(wxUint32 *address) const;
|
||||
bool SetHostAddress(wxUint32 address);
|
||||
|
||||
bool SetToBroadcastAddress() { return SetHostAddress(INADDR_BROADCAST); }
|
||||
|
||||
// accessors for INET6 addresses only
|
||||
#if wxUSE_IPV6
|
||||
bool GetHostAddress(in6_addr *address) const;
|
||||
bool SetHostAddress(const in6_addr& address);
|
||||
#endif // wxUSE_IPV6
|
||||
|
||||
#ifdef wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
// methods valid for Unix address family addresses only
|
||||
bool SetPath(const wxString& path);
|
||||
wxString GetPath() const;
|
||||
#endif // wxHAS_UNIX_DOMAIN_SOCKETS
|
||||
|
||||
private:
|
||||
void DoAlloc(int len)
|
||||
{
|
||||
m_addr = static_cast<sockaddr *>(calloc(1, len));
|
||||
m_len = len;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
T *Alloc()
|
||||
{
|
||||
DoAlloc(sizeof(T));
|
||||
|
||||
return reinterpret_cast<T *>(m_addr);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
T *Get() const
|
||||
{
|
||||
wxCHECK_MSG( static_cast<int>(m_family) == AddressFamily<T>::value,
|
||||
nullptr,
|
||||
"socket address family mismatch" );
|
||||
|
||||
return reinterpret_cast<T *>(m_addr);
|
||||
}
|
||||
|
||||
void InitUnspec()
|
||||
{
|
||||
m_family = FAMILY_UNSPEC;
|
||||
m_addr = nullptr;
|
||||
m_len = 0;
|
||||
}
|
||||
|
||||
void InitFromSockaddr(const sockaddr& addr, int len)
|
||||
{
|
||||
DoAlloc(len);
|
||||
memcpy(m_addr, &addr, len);
|
||||
}
|
||||
|
||||
void InitFromOther(const wxSockAddressImpl& other)
|
||||
{
|
||||
m_family = other.m_family;
|
||||
|
||||
if ( other.m_addr )
|
||||
{
|
||||
InitFromSockaddr(*other.m_addr, other.m_len);
|
||||
}
|
||||
else // no address to copy
|
||||
{
|
||||
m_addr = nullptr;
|
||||
m_len = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// IPv4/6 implementations of public functions
|
||||
bool SetHostName4(const wxString& name);
|
||||
|
||||
bool SetPort4(wxUint16 port);
|
||||
wxUint16 GetPort4() const;
|
||||
|
||||
bool SetToAnyAddress4() { return SetHostAddress(INADDR_ANY); }
|
||||
|
||||
#if wxUSE_IPV6
|
||||
bool SetHostName6(const wxString& name);
|
||||
|
||||
bool SetPort6(wxUint16 port);
|
||||
wxUint16 GetPort6() const;
|
||||
|
||||
bool SetToAnyAddress6();
|
||||
#endif // wxUSE_IPV6
|
||||
|
||||
Family m_family;
|
||||
sockaddr *m_addr;
|
||||
int m_len;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_SOCKADDR_H_
|
||||
95
libs/wxWidgets-3.3.1/include/wx/private/secretstore.h
Normal file
95
libs/wxWidgets-3.3.1/include/wx/private/secretstore.h
Normal file
@@ -0,0 +1,95 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/secretstore.h
|
||||
// Purpose: Classes used in wxSecretStore implementation only.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2016-05-27
|
||||
// Copyright: (c) 2016 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_SECRETSTORE_H_
|
||||
#define _WX_PRIVATE_SECRETSTORE_H_
|
||||
|
||||
#include "wx/object.h" // wxRefCounter
|
||||
|
||||
// Both of the implementation classes here are ref-counted so that the
|
||||
// corresponding public objects could be copied cheaply and, in the case of
|
||||
// wxSecretValue, also to avoid having the secret in more than one place in
|
||||
// memory at a time.
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Class holding wxSecretValue data
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This is a common base class for our own and libsecret-based implementations.
|
||||
class wxSecretValueImpl : public wxRefCounter
|
||||
{
|
||||
public:
|
||||
wxSecretValueImpl()
|
||||
{
|
||||
}
|
||||
|
||||
virtual size_t GetSize() const = 0;
|
||||
virtual const void *GetData() const = 0;
|
||||
};
|
||||
|
||||
// Trivial common implementation of wxSecretValueImpl used under MSW and OS X.
|
||||
#if defined(__WINDOWS__) || defined(__DARWIN__)
|
||||
|
||||
class wxSecretValueGenericImpl : public wxSecretValueImpl
|
||||
{
|
||||
public:
|
||||
wxSecretValueGenericImpl(size_t size, const void *data)
|
||||
: m_size(size),
|
||||
m_data(new char[size])
|
||||
{
|
||||
memcpy(m_data, data, size);
|
||||
}
|
||||
|
||||
virtual ~wxSecretValueGenericImpl()
|
||||
{
|
||||
if ( m_data )
|
||||
{
|
||||
wxSecretValue::Wipe(m_size, m_data);
|
||||
delete [] m_data;
|
||||
}
|
||||
}
|
||||
|
||||
virtual size_t GetSize() const override { return m_size; }
|
||||
virtual const void *GetData() const override { return m_data; }
|
||||
|
||||
private:
|
||||
const size_t m_size;
|
||||
char* const m_data;
|
||||
};
|
||||
|
||||
#endif // MSW or OSX
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Base class for wxSecretStore implementations
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// All its methods are similar to the methods of the public class except that
|
||||
// they work with the implementation rather than public objects and they all
|
||||
// take an extra "wxString&" output parameter which is filled with the low
|
||||
// level error message in case of an error. This message will be logged by
|
||||
// wxSecretStore itself, wxSecretStoreImpl methods shouldn't do any logging on
|
||||
// their own.
|
||||
class wxSecretStoreImpl : public wxRefCounter
|
||||
{
|
||||
public:
|
||||
virtual bool IsOk(wxString* WXUNUSED(errmsg)) const { return true; }
|
||||
|
||||
virtual bool Save(const wxString& service,
|
||||
const wxString& username,
|
||||
const wxSecretValueImpl& password,
|
||||
wxString& errmsg) = 0;
|
||||
virtual bool Load(const wxString& service,
|
||||
wxString* username,
|
||||
wxSecretValueImpl** password,
|
||||
wxString& errmsg) const = 0;
|
||||
virtual bool Delete(const wxString& service,
|
||||
wxString& errmsg) = 0;
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_SECRETSTORE_H_
|
||||
125
libs/wxWidgets-3.3.1/include/wx/private/selectdispatcher.h
Normal file
125
libs/wxWidgets-3.3.1/include/wx/private/selectdispatcher.h
Normal file
@@ -0,0 +1,125 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/selectdispatcher.h
|
||||
// Purpose: wxSelectDispatcher class
|
||||
// Authors: Lukasz Michalski and Vadim Zeitlin
|
||||
// Created: December 2006
|
||||
// Copyright: (c) Lukasz Michalski
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_SELECTDISPATCHER_H_
|
||||
#define _WX_PRIVATE_SELECTDISPATCHER_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_SELECT_DISPATCHER
|
||||
|
||||
#if defined(HAVE_SYS_SELECT_H)
|
||||
#include <sys/time.h>
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "wx/thread.h"
|
||||
#include "wx/private/fdiodispatcher.h"
|
||||
|
||||
// helper class storing all the select() fd sets
|
||||
class WXDLLIMPEXP_BASE wxSelectSets
|
||||
{
|
||||
public:
|
||||
// ctor zeroes out all fd_sets
|
||||
wxSelectSets();
|
||||
|
||||
// default copy ctor, assignment operator and dtor are ok
|
||||
|
||||
|
||||
// return true if fd appears in any of the sets
|
||||
bool HasFD(int fd) const;
|
||||
|
||||
// add or remove FD to our sets depending on whether flags contains
|
||||
// wxFDIO_INPUT/OUTPUT/EXCEPTION bits
|
||||
bool SetFD(int fd, int flags);
|
||||
|
||||
// same as SetFD() except it unsets the bits set in the flags for the given
|
||||
// fd
|
||||
bool ClearFD(int fd)
|
||||
{
|
||||
return SetFD(fd, 0);
|
||||
}
|
||||
|
||||
|
||||
// call select() with our sets: the other parameters are the same as for
|
||||
// select() itself
|
||||
int Select(int nfds, struct timeval *tv);
|
||||
|
||||
// call the handler methods corresponding to the sets having this fd if it
|
||||
// is present in any set and return true if it is
|
||||
bool Handle(int fd, wxFDIOHandler& handler) const;
|
||||
|
||||
private:
|
||||
typedef void (wxFDIOHandler::*Callback)();
|
||||
|
||||
// the FD sets indices
|
||||
enum
|
||||
{
|
||||
Read,
|
||||
Write,
|
||||
Except,
|
||||
Max
|
||||
};
|
||||
|
||||
// the sets used with select()
|
||||
fd_set m_fds[Max];
|
||||
|
||||
// the wxFDIO_XXX flags, functions and names (used for debug messages only)
|
||||
// corresponding to the FD sets above
|
||||
static int ms_flags[Max];
|
||||
static const char *ms_names[Max];
|
||||
static Callback ms_handlers[Max];
|
||||
};
|
||||
|
||||
class WXDLLIMPEXP_BASE wxSelectDispatcher : public wxMappedFDIODispatcher
|
||||
{
|
||||
public:
|
||||
// default ctor
|
||||
wxSelectDispatcher() { m_maxFD = -1; }
|
||||
|
||||
// implement pure virtual methods of the base class
|
||||
virtual bool RegisterFD(int fd, wxFDIOHandler *handler, int flags = wxFDIO_ALL) override;
|
||||
virtual bool ModifyFD(int fd, wxFDIOHandler *handler, int flags = wxFDIO_ALL) override;
|
||||
virtual bool UnregisterFD(int fd) override;
|
||||
virtual bool HasPending() const override;
|
||||
virtual int Dispatch(int timeout = TIMEOUT_INFINITE) override;
|
||||
|
||||
private:
|
||||
// common part of RegisterFD() and ModifyFD()
|
||||
bool DoUpdateFDAndHandler(int fd, wxFDIOHandler *handler, int flags);
|
||||
|
||||
// call the handlers for the fds present in the given sets, return the
|
||||
// number of handlers we called
|
||||
int ProcessSets(const wxSelectSets& sets);
|
||||
|
||||
// helper of ProcessSets(): call the handler if its fd is in the set
|
||||
void DoProcessFD(int fd, const fd_set& fds, wxFDIOHandler *handler,
|
||||
const char *name);
|
||||
|
||||
// common part of HasPending() and Dispatch(): calls select() with the
|
||||
// specified timeout
|
||||
int DoSelect(wxSelectSets& sets, int timeout) const;
|
||||
|
||||
|
||||
#if wxUSE_THREADS
|
||||
wxCriticalSection m_cs;
|
||||
#endif // wxUSE_THREADS
|
||||
|
||||
// the select sets containing all the registered fds
|
||||
wxSelectSets m_sets;
|
||||
|
||||
// the highest registered fd value or -1 if none
|
||||
int m_maxFD;
|
||||
};
|
||||
|
||||
#endif // wxUSE_SELECT_DISPATCHER
|
||||
|
||||
#endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_
|
||||
387
libs/wxWidgets-3.3.1/include/wx/private/socket.h
Normal file
387
libs/wxWidgets-3.3.1/include/wx/private/socket.h
Normal file
@@ -0,0 +1,387 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/socket.h
|
||||
// Purpose: wxSocketImpl and related declarations
|
||||
// Authors: Guilhem Lavaux, Vadim Zeitlin
|
||||
// Created: April 1997
|
||||
// Copyright: (c) 1997 Guilhem Lavaux
|
||||
// (c) 2008 Vadim Zeitlin
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
Brief overview of different socket classes:
|
||||
|
||||
- wxSocketBase is the public class representing a socket ("Base" here
|
||||
refers to the fact that wxSocketClient and wxSocketServer are derived
|
||||
from it and predates the convention of using "Base" for common base
|
||||
classes for platform-specific classes in wxWidgets) with implementation
|
||||
common to all platforms and forwarding methods whose implementation
|
||||
differs between platforms to wxSocketImpl which it contains.
|
||||
|
||||
- wxSocketImpl is actually just an abstract base class having only code
|
||||
common to all platforms, the concrete implementation classes derive from
|
||||
it and are created by wxSocketImpl::Create().
|
||||
|
||||
- Some socket operations have different implementations in console-mode and
|
||||
GUI applications. wxSocketManager class exists to abstract this in such
|
||||
way that console applications (using wxBase) don't depend on wxNet. An
|
||||
object of this class is made available via wxApp and GUI applications set
|
||||
up a different kind of global socket manager from console ones.
|
||||
|
||||
TODO: it looks like wxSocketManager could be eliminated by providing
|
||||
methods for registering/unregistering sockets directly in
|
||||
wxEventLoop.
|
||||
*/
|
||||
|
||||
#ifndef _WX_PRIVATE_SOCKET_H_
|
||||
#define _WX_PRIVATE_SOCKET_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_SOCKETS
|
||||
|
||||
#include "wx/socket.h"
|
||||
#include "wx/private/sckaddr.h"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/*
|
||||
Including sys/types.h under Cygwin results in the warnings about "fd_set
|
||||
having been defined in sys/types.h" when winsock.h is included later and
|
||||
doesn't seem to be necessary anyhow. It's not needed under Mac either.
|
||||
*/
|
||||
#if !defined(__WXMAC__) && !defined(__WXMSW__)
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
// include the header defining timeval: under Windows this struct is used only
|
||||
// with sockets so we need to include winsock.h which we do via windows.h
|
||||
#ifdef __WINDOWS__
|
||||
#include "wx/msw/wrapwin.h"
|
||||
#else
|
||||
#include <sys/time.h> // for timeval
|
||||
#endif
|
||||
|
||||
// 64 bit Cygwin can't use the standard struct timeval because it has long
|
||||
// fields, which are supposed to be 32 bits in Win64 API, but long is 64 bits
|
||||
// in 64 bit Cygwin, so we need to use its special __ms_timeval instead.
|
||||
#if defined(__CYGWIN__) && defined(__LP64__) && defined(__WINDOWS__)
|
||||
typedef __ms_timeval wxTimeVal_t;
|
||||
#else
|
||||
typedef timeval wxTimeVal_t;
|
||||
#endif
|
||||
|
||||
// these definitions are for MSW when we don't use configure, otherwise these
|
||||
// symbols are defined by configure
|
||||
#ifndef WX_SOCKLEN_T
|
||||
#define WX_SOCKLEN_T int
|
||||
#endif
|
||||
|
||||
#ifndef SOCKOPTLEN_T
|
||||
#define SOCKOPTLEN_T int
|
||||
#endif
|
||||
|
||||
// define some symbols which winsock.h defines but traditional BSD headers
|
||||
// don't
|
||||
#ifndef INVALID_SOCKET
|
||||
#define INVALID_SOCKET (-1)
|
||||
#endif
|
||||
|
||||
#ifndef SOCKET_ERROR
|
||||
#define SOCKET_ERROR (-1)
|
||||
#endif
|
||||
|
||||
typedef int wxSocketEventFlags;
|
||||
|
||||
class wxSocketImpl;
|
||||
|
||||
/*
|
||||
Class providing hooks abstracting the differences between console and GUI
|
||||
applications for socket code.
|
||||
|
||||
We also have different implementations of this class for different platforms
|
||||
allowing us to keep more things in the common code but the main reason for
|
||||
its existence is that we want the same socket code work differently
|
||||
depending on whether it's used from a console or a GUI program. This is
|
||||
achieved by implementing the virtual methods of this class differently in
|
||||
the objects returned by wxConsoleAppTraits::GetSocketManager() and the same
|
||||
method in wxGUIAppTraits.
|
||||
*/
|
||||
class wxSocketManager
|
||||
{
|
||||
public:
|
||||
// set the manager to use, we don't take ownership of it
|
||||
//
|
||||
// this should be called before creating the first wxSocket object,
|
||||
// otherwise the manager returned by wxAppTraits::GetSocketManager() will
|
||||
// be used
|
||||
static void Set(wxSocketManager *manager);
|
||||
|
||||
// return the manager to use
|
||||
//
|
||||
// this initializes the manager at first use
|
||||
static wxSocketManager *Get()
|
||||
{
|
||||
if ( !ms_manager )
|
||||
Init();
|
||||
|
||||
return ms_manager;
|
||||
}
|
||||
|
||||
// called before the first wxSocket is created and should do the
|
||||
// initializations needed in order to use the network
|
||||
//
|
||||
// return true if initialized successfully; if this returns false sockets
|
||||
// can't be used at all
|
||||
virtual bool OnInit() = 0;
|
||||
|
||||
// undo the initializations of OnInit()
|
||||
virtual void OnExit() = 0;
|
||||
|
||||
|
||||
// create the socket implementation object matching this manager
|
||||
virtual wxSocketImpl *CreateSocket(wxSocketBase& wxsocket) = 0;
|
||||
|
||||
// these functions enable or disable monitoring of the given socket for the
|
||||
// specified events inside the currently running event loop (but notice
|
||||
// that both BSD and Winsock implementations actually use socket->m_server
|
||||
// value to determine what exactly should be monitored so it needs to be
|
||||
// set before calling these functions)
|
||||
//
|
||||
// the default event value is used just for the convenience of wxMSW
|
||||
// implementation which doesn't use this parameter anyhow, it doesn't make
|
||||
// sense to pass wxSOCKET_LOST for the Unix implementation which does use
|
||||
// this parameter
|
||||
virtual void Install_Callback(wxSocketImpl *socket,
|
||||
wxSocketNotify event = wxSOCKET_LOST) = 0;
|
||||
virtual void Uninstall_Callback(wxSocketImpl *socket,
|
||||
wxSocketNotify event = wxSOCKET_LOST) = 0;
|
||||
|
||||
virtual ~wxSocketManager() = default;
|
||||
|
||||
private:
|
||||
// get the manager to use if we don't have it yet
|
||||
static void Init();
|
||||
|
||||
static wxSocketManager *ms_manager;
|
||||
};
|
||||
|
||||
/*
|
||||
Base class for all socket implementations providing functionality common to
|
||||
BSD and Winsock sockets.
|
||||
|
||||
Objects of this class are not created directly but only via the factory
|
||||
function wxSocketManager::CreateSocket().
|
||||
*/
|
||||
class wxSocketImpl
|
||||
{
|
||||
public:
|
||||
virtual ~wxSocketImpl();
|
||||
|
||||
// set various socket properties: all of those can only be called before
|
||||
// creating the socket
|
||||
void SetTimeout(unsigned long millisec);
|
||||
void SetReusable() { m_reusable = true; }
|
||||
void SetBroadcast() { m_broadcast = true; }
|
||||
void DontDoBind() { m_dobind = false; }
|
||||
void SetInitialSocketBuffers(int recv, int send)
|
||||
{
|
||||
m_initialRecvBufferSize = recv;
|
||||
m_initialSendBufferSize = send;
|
||||
}
|
||||
|
||||
wxSocketError SetLocal(const wxSockAddressImpl& address);
|
||||
wxSocketError SetPeer(const wxSockAddressImpl& address);
|
||||
|
||||
// accessors
|
||||
// ---------
|
||||
|
||||
bool IsServer() const { return m_server; }
|
||||
|
||||
const wxSockAddressImpl& GetLocal(); // non const as may update m_local
|
||||
const wxSockAddressImpl& GetPeer() const { return m_peer; }
|
||||
|
||||
wxSocketError GetError() const { return m_error; }
|
||||
bool IsOk() const { return m_error == wxSOCKET_NOERROR; }
|
||||
|
||||
// creating/closing the socket
|
||||
// --------------------------
|
||||
|
||||
// notice that SetLocal() must be called before creating the socket using
|
||||
// any of the functions below
|
||||
//
|
||||
// all of Create() functions return wxSOCKET_NOERROR if the operation
|
||||
// completed successfully or one of:
|
||||
// wxSOCKET_INVSOCK - the socket is in use.
|
||||
// wxSOCKET_INVADDR - the local (server) or peer (client) address has not
|
||||
// been set.
|
||||
// wxSOCKET_IOERR - any other error.
|
||||
|
||||
// create a socket listening on the local address specified by SetLocal()
|
||||
// (notice that DontDoBind() is ignored by this function)
|
||||
wxSocketError CreateServer();
|
||||
|
||||
// create a socket connected to the peer address specified by SetPeer()
|
||||
// (notice that DontDoBind() is ignored by this function)
|
||||
//
|
||||
// this function may return wxSOCKET_WOULDBLOCK in addition to the return
|
||||
// values listed above if wait is false
|
||||
wxSocketError CreateClient(bool wait);
|
||||
|
||||
// create (and bind unless DontDoBind() had been called) an UDP socket
|
||||
// associated with the given local address
|
||||
wxSocketError CreateUDP();
|
||||
|
||||
// may be called whether the socket was created or not, calls DoClose() if
|
||||
// it was indeed created
|
||||
void Close();
|
||||
|
||||
// shuts down the writing end of the socket and closes it, this is a more
|
||||
// graceful way to close
|
||||
//
|
||||
// does nothing if the socket wasn't created
|
||||
void Shutdown();
|
||||
|
||||
|
||||
// IO operations
|
||||
// -------------
|
||||
|
||||
// basic IO, work for both TCP and UDP sockets
|
||||
//
|
||||
// return the number of bytes read/written (possibly 0) or -1 on error
|
||||
int Read(void *buffer, int size);
|
||||
int Write(const void *buffer, int size);
|
||||
|
||||
// basically a wrapper for select(): returns the condition of the socket,
|
||||
// blocking for not longer than timeout if it is specified (otherwise just
|
||||
// poll without blocking at all)
|
||||
//
|
||||
// flags defines what kind of conditions we're interested in, the return
|
||||
// value is composed of a (possibly empty) subset of the bits set in flags
|
||||
wxSocketEventFlags Select(wxSocketEventFlags flags,
|
||||
wxTimeVal_t *timeout = nullptr);
|
||||
|
||||
// convenient wrapper calling Select() with our default timeout
|
||||
wxSocketEventFlags SelectWithTimeout(wxSocketEventFlags flags)
|
||||
{
|
||||
return Select(flags, &m_timeout);
|
||||
}
|
||||
|
||||
// just a wrapper for accept(): it is called to create a new wxSocketImpl
|
||||
// corresponding to a new server connection represented by the given
|
||||
// wxSocketBase, returns nullptr on error (including immediately if there are
|
||||
// no pending connections as our sockets are non-blocking)
|
||||
wxSocketImpl *Accept(wxSocketBase& wxsocket);
|
||||
|
||||
|
||||
// notifications
|
||||
// -------------
|
||||
|
||||
// Update the socket depending on the presence or absence of wxSOCKET_BLOCK
|
||||
// in GetSocketFlags(): if it's present, make the socket blocking and
|
||||
// ensure that we don't get any asynchronous event for it, otherwise put
|
||||
// it into non-blocking mode and enable monitoring it in the event loop.
|
||||
virtual void UpdateBlockingState() = 0;
|
||||
|
||||
// notify m_wxsocket about the given socket event by calling its (inaptly
|
||||
// named) OnRequest() method
|
||||
void NotifyOnStateChange(wxSocketNotify event);
|
||||
|
||||
// called after reading/writing the data from/to the socket and should
|
||||
// enable back the wxSOCKET_INPUT/OUTPUT_FLAG notifications if they were
|
||||
// turned off when this data was first detected
|
||||
virtual void ReenableEvents(wxSocketEventFlags flags) = 0;
|
||||
|
||||
// TODO: make these fields protected and provide accessors for those of
|
||||
// them that wxSocketBase really needs
|
||||
//protected:
|
||||
wxSOCKET_T m_fd;
|
||||
|
||||
int m_initialRecvBufferSize;
|
||||
int m_initialSendBufferSize;
|
||||
|
||||
wxSockAddressImpl m_local,
|
||||
m_peer;
|
||||
wxSocketError m_error;
|
||||
|
||||
bool m_stream;
|
||||
bool m_establishing;
|
||||
bool m_reusable;
|
||||
bool m_broadcast;
|
||||
bool m_dobind;
|
||||
|
||||
wxTimeVal_t m_timeout;
|
||||
|
||||
protected:
|
||||
wxSocketImpl(wxSocketBase& wxsocket);
|
||||
|
||||
// get the associated socket flags
|
||||
wxSocketFlags GetSocketFlags() const { return m_wxsocket->GetFlags(); }
|
||||
|
||||
// set m_error to the outcome of the last operation and return it
|
||||
wxSocketError UpdateLastError() { m_error = GetLastError(); return m_error; }
|
||||
|
||||
// true if we're a listening stream socket
|
||||
bool m_server;
|
||||
|
||||
private:
|
||||
// get the error code corresponding to the last operation
|
||||
//
|
||||
// this is private because it's only used by UpdateLastError()
|
||||
virtual wxSocketError GetLastError() const = 0;
|
||||
|
||||
// called by Close() if we have a valid m_fd
|
||||
virtual void DoClose() = 0;
|
||||
|
||||
// check that the socket wasn't created yet and that the given address
|
||||
// (either m_local or m_peer depending on the socket kind) is valid and
|
||||
// set m_error and return false if this is not the case
|
||||
bool PreCreateCheck(const wxSockAddressImpl& addr);
|
||||
|
||||
// set the given socket option: this just wraps setsockopt(SOL_SOCKET)
|
||||
int SetSocketOption(int optname, int optval)
|
||||
{
|
||||
// although modern Unix systems use "const void *" for the 4th
|
||||
// parameter here, old systems and Winsock still use "const char *"
|
||||
return setsockopt(m_fd, SOL_SOCKET, optname,
|
||||
reinterpret_cast<const char *>(&optval),
|
||||
sizeof(optval));
|
||||
}
|
||||
|
||||
// set the given socket option to true value: this is an even simpler
|
||||
// wrapper for setsockopt(SOL_SOCKET) for boolean options
|
||||
int EnableSocketOption(int optname)
|
||||
{
|
||||
return SetSocketOption(optname, 1);
|
||||
}
|
||||
|
||||
// apply the options to the (just created) socket and register it with the
|
||||
// event loop by calling UpdateBlockingState()
|
||||
void PostCreation();
|
||||
|
||||
// update local address after binding/connecting
|
||||
wxSocketError UpdateLocalAddress();
|
||||
|
||||
// functions used to implement Read/Write()
|
||||
int RecvStream(void *buffer, int size);
|
||||
int RecvDgram(void *buffer, int size);
|
||||
int SendStream(const void *buffer, int size);
|
||||
int SendDgram(const void *buffer, int size);
|
||||
|
||||
|
||||
// set in ctor and never changed except that it's reset to nullptr when the
|
||||
// socket is shut down
|
||||
wxSocketBase *m_wxsocket;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxSocketImpl);
|
||||
};
|
||||
|
||||
#if defined(__WINDOWS__)
|
||||
#include "wx/msw/private/sockmsw.h"
|
||||
#else
|
||||
#include "wx/unix/private/sockunix.h"
|
||||
#endif
|
||||
|
||||
#endif /* wxUSE_SOCKETS */
|
||||
|
||||
#endif /* _WX_PRIVATE_SOCKET_H_ */
|
||||
41
libs/wxWidgets-3.3.1/include/wx/private/spinctrl.h
Normal file
41
libs/wxWidgets-3.3.1/include/wx/private/spinctrl.h
Normal file
@@ -0,0 +1,41 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/spinctrl.h
|
||||
// Purpose: Private functions used in wxSpinCtrl implementation.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2019-11-13
|
||||
// Copyright: (c) 2019 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_SPINCTRL_H_
|
||||
#define _WX_PRIVATE_SPINCTRL_H_
|
||||
|
||||
namespace wxSpinCtrlImpl
|
||||
{
|
||||
|
||||
// This is an internal helper function currently used by all ports: return the
|
||||
// string containing hexadecimal representation of the given number.
|
||||
extern wxString FormatAsHex(long val, long maxVal);
|
||||
|
||||
// Another helper returning the maximum length of a string representing a value
|
||||
// valid in the given control.
|
||||
extern int GetMaxValueLength(int minVal, int maxVal, int base);
|
||||
|
||||
// The helper function to determine the best size for the given control.
|
||||
// We can't implement this function in the wxSpinCtrlBase because MSW implementation
|
||||
// of wxSpinCtrl is derived from wxSpinButton but uses the same algorithm.
|
||||
extern wxSize GetBestSize(const wxControl* spin, int minVal, int maxVal, int base);
|
||||
|
||||
// Helper function to check if given combination of range and base is valid.
|
||||
extern bool IsBaseCompatibleWithRange(int minVal, int maxVal, int base);
|
||||
|
||||
// Maximum number of digits returned by DetermineDigits().
|
||||
const unsigned SPINCTRLDBL_MAX_DIGITS = 20;
|
||||
|
||||
// Return the number of digits required to show the numbers using the
|
||||
// specified increment without loss of precision.
|
||||
extern unsigned DetermineDigits(double inc);
|
||||
|
||||
} // namespace wxSpinCtrlImpl
|
||||
|
||||
#endif // _WX_PRIVATE_SPINCTRL_H_
|
||||
129
libs/wxWidgets-3.3.1/include/wx/private/streamtempinput.h
Normal file
129
libs/wxWidgets-3.3.1/include/wx/private/streamtempinput.h
Normal file
@@ -0,0 +1,129 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/streamtempinput.h
|
||||
// Purpose: defines wxStreamTempInputBuffer which is used by Unix and MSW
|
||||
// implementations of wxExecute; this file is only used by the
|
||||
// library and never by the user code
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by: Rob Bresalier
|
||||
// Created: 2013-05-04
|
||||
// Copyright: (c) 2002 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_STREAMTEMPINPUT_H
|
||||
#define _WX_PRIVATE_STREAMTEMPINPUT_H
|
||||
|
||||
#include "wx/private/pipestream.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxStreamTempInputBuffer
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
wxStreamTempInputBuffer is a hack which we need to solve the problem of
|
||||
executing a child process synchronously with IO redirecting: when we do
|
||||
this, the child writes to a pipe we open to it but when the pipe buffer
|
||||
(which has finite capacity, e.g. commonly just 4Kb) becomes full we have to
|
||||
read data from it because the child blocks in its write() until then and if
|
||||
it blocks we are never going to return from wxExecute() so we dead lock.
|
||||
|
||||
So here is the fix: we now read the output as soon as it appears into a temp
|
||||
buffer (wxStreamTempInputBuffer object) and later just stuff it back into
|
||||
the stream when the process terminates. See supporting code in wxExecute()
|
||||
itself as well.
|
||||
|
||||
Note that this is horribly inefficient for large amounts of output (count
|
||||
the number of times we copy the data around) and so a better API is badly
|
||||
needed! However it's not easy to devise a way to do this keeping backwards
|
||||
compatibility with the existing wxExecute(wxEXEC_SYNC)...
|
||||
*/
|
||||
class wxStreamTempInputBuffer
|
||||
{
|
||||
public:
|
||||
wxStreamTempInputBuffer() = default;
|
||||
|
||||
// call to associate a stream with this buffer, otherwise nothing happens
|
||||
// at all
|
||||
void Init(wxPipeInputStream *stream)
|
||||
{
|
||||
wxASSERT_MSG( !m_stream, wxS("Can only initialize once") );
|
||||
|
||||
m_stream = stream;
|
||||
}
|
||||
|
||||
// check for input on our stream and cache it in our buffer if any
|
||||
//
|
||||
// return true if anything was done
|
||||
bool Update()
|
||||
{
|
||||
if ( !m_stream || !m_stream->CanRead() )
|
||||
return false;
|
||||
|
||||
// realloc in blocks of 4Kb: this is the default (and minimal) buffer
|
||||
// size of the Unix pipes so it should be the optimal step
|
||||
//
|
||||
// NB: don't use "static int" in this inline function, some compilers
|
||||
// (e.g. IBM xlC) don't like it
|
||||
enum { incSize = 4096 };
|
||||
|
||||
void *buf = realloc(m_buffer, m_size + incSize);
|
||||
if ( !buf )
|
||||
return false;
|
||||
|
||||
m_buffer = buf;
|
||||
m_stream->Read((char *)m_buffer + m_size, incSize);
|
||||
m_size += m_stream->LastRead();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// check if can continue reading from the stream, this is used to disable
|
||||
// the callback once we can't read anything more
|
||||
bool Eof() const
|
||||
{
|
||||
// If we have no stream, always return true as we can't read any more.
|
||||
return !m_stream || m_stream->Eof();
|
||||
}
|
||||
|
||||
// read everything remaining until the EOF, this should only be called once
|
||||
// the child process terminates and we know that no more data is coming
|
||||
bool ReadAll()
|
||||
{
|
||||
while ( !Eof() )
|
||||
{
|
||||
if ( !Update() )
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// dtor puts the data buffered during this object lifetime into the
|
||||
// associated stream
|
||||
~wxStreamTempInputBuffer()
|
||||
{
|
||||
if ( m_buffer )
|
||||
{
|
||||
m_stream->Ungetch(m_buffer, m_size);
|
||||
free(m_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
const void *GetBuffer() const { return m_buffer; }
|
||||
|
||||
size_t GetSize() const { return m_size; }
|
||||
|
||||
private:
|
||||
// the stream we're buffering, if nullptr we don't do anything at all
|
||||
wxPipeInputStream *m_stream = nullptr;
|
||||
|
||||
// the buffer of size m_size (nullptr if m_size == 0)
|
||||
void *m_buffer = nullptr;
|
||||
|
||||
// the size of the buffer
|
||||
size_t m_size = 0;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxStreamTempInputBuffer);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_STREAMTEMPINPUT_H
|
||||
47
libs/wxWidgets-3.3.1/include/wx/private/terminal.h
Normal file
47
libs/wxWidgets-3.3.1/include/wx/private/terminal.h
Normal file
@@ -0,0 +1,47 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/terminal.h
|
||||
// Purpose: Helpers for working with terminal output
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2024-11-22
|
||||
// Copyright: (c) 2024 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_TERMINAL_H_
|
||||
#define _WX_PRIVATE_TERMINAL_H_
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
#include "wx/utils.h"
|
||||
|
||||
#include "wx/msw/wrapwin.h"
|
||||
#endif
|
||||
|
||||
#ifdef __UNIX__
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
|
||||
namespace wxTerminal
|
||||
{
|
||||
|
||||
// Return the current terminal width or 0 if we couldn't find it.
|
||||
inline int GetWidth()
|
||||
{
|
||||
#ifdef __WINDOWS__
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
if ( ::GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi) )
|
||||
return csbi.srWindow.Right - csbi.srWindow.Left + 1;
|
||||
#elif defined TIOCGWINSZ
|
||||
winsize w;
|
||||
int fd = fileno(stdout);
|
||||
if ( fd != -1 && ioctl(fd, TIOCGWINSZ, &w) == 0 )
|
||||
return w.ws_col;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace wxTerminal
|
||||
|
||||
#endif // _WX_PRIVATE_TERMINAL_H_
|
||||
176
libs/wxWidgets-3.3.1/include/wx/private/textmeasure.h
Normal file
176
libs/wxWidgets-3.3.1/include/wx/private/textmeasure.h
Normal file
@@ -0,0 +1,176 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/textmeasure.h
|
||||
// Purpose: declaration of wxTextMeasure class
|
||||
// Author: Manuel Martin
|
||||
// Created: 2012-10-05
|
||||
// Copyright: (c) 1997-2012 wxWidgets team
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_TEXTMEASURE_H_
|
||||
#define _WX_PRIVATE_TEXTMEASURE_H_
|
||||
|
||||
class WXDLLIMPEXP_FWD_CORE wxDC;
|
||||
class WXDLLIMPEXP_FWD_CORE wxFont;
|
||||
class WXDLLIMPEXP_FWD_CORE wxWindow;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxTextMeasure: class used to measure text extent.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxTextMeasureBase
|
||||
{
|
||||
public:
|
||||
// The first ctor argument must be non-null, i.e. each object of this class
|
||||
// is associated with either a valid wxDC or a valid wxWindow. The font can
|
||||
// be null to use the current DC/window font or can be specified explicitly.
|
||||
wxTextMeasureBase(const wxDC *dc, const wxFont *theFont);
|
||||
wxTextMeasureBase(const wxWindow *win, const wxFont *theFont);
|
||||
|
||||
// Even though this class is not supposed to be used polymorphically, give
|
||||
// it a virtual dtor to avoid compiler warnings.
|
||||
virtual ~wxTextMeasureBase() = default;
|
||||
|
||||
|
||||
// Return the extent of a single line string.
|
||||
void GetTextExtent(const wxString& string,
|
||||
wxCoord *width,
|
||||
wxCoord *height,
|
||||
wxCoord *descent = nullptr,
|
||||
wxCoord *externalLeading = nullptr);
|
||||
|
||||
// The same for a multiline (with '\n') string.
|
||||
void GetMultiLineTextExtent(const wxString& text,
|
||||
wxCoord *width,
|
||||
wxCoord *height,
|
||||
wxCoord *heightOneLine = nullptr);
|
||||
|
||||
// Find the dimensions of the largest string.
|
||||
wxSize GetLargestStringExtent(size_t n, const wxString* strings);
|
||||
wxSize GetLargestStringExtent(const wxArrayString& strings)
|
||||
{
|
||||
return GetLargestStringExtent(strings.size(), &strings[0]);
|
||||
}
|
||||
|
||||
// Fill the array with the widths for each "0..N" substrings for N from 1
|
||||
// to text.length().
|
||||
//
|
||||
// The scaleX argument is the horizontal scale used by wxDC and is only
|
||||
// used in the generic implementation.
|
||||
bool GetPartialTextExtents(const wxString& text,
|
||||
wxArrayInt& widths,
|
||||
double scaleX);
|
||||
|
||||
|
||||
// This is another method which is only used by MeasuringGuard.
|
||||
bool IsUsingDCImpl() const { return m_useDCImpl; }
|
||||
|
||||
protected:
|
||||
// RAII wrapper for the two methods above.
|
||||
class MeasuringGuard
|
||||
{
|
||||
public:
|
||||
MeasuringGuard(wxTextMeasureBase& tm) : m_tm(tm)
|
||||
{
|
||||
// BeginMeasuring() should only be called if we have a native DC,
|
||||
// so don't call it if we delegate to a DC of unknown type.
|
||||
if ( !m_tm.IsUsingDCImpl() )
|
||||
m_tm.BeginMeasuring();
|
||||
}
|
||||
|
||||
~MeasuringGuard()
|
||||
{
|
||||
if ( !m_tm.IsUsingDCImpl() )
|
||||
m_tm.EndMeasuring();
|
||||
}
|
||||
|
||||
private:
|
||||
wxTextMeasureBase& m_tm;
|
||||
};
|
||||
|
||||
|
||||
// These functions are called by our public methods before and after each
|
||||
// call to DoGetTextExtent(). Derived classes may override them to prepare
|
||||
// for -- possibly several -- subsequent calls to DoGetTextExtent().
|
||||
//
|
||||
// As these calls must be always paired, they're never called directly but
|
||||
// only by our friend MeasuringGuard class.
|
||||
virtual void BeginMeasuring() { }
|
||||
virtual void EndMeasuring() { }
|
||||
|
||||
|
||||
// The main function of this class, to be implemented in platform-specific
|
||||
// way used by all our public methods.
|
||||
//
|
||||
// The width and height pointers here are never null and the input string
|
||||
// is not empty.
|
||||
virtual void DoGetTextExtent(const wxString& string,
|
||||
wxCoord *width,
|
||||
wxCoord *height,
|
||||
wxCoord *descent = nullptr,
|
||||
wxCoord *externalLeading = nullptr) = 0;
|
||||
|
||||
// The real implementation of GetPartialTextExtents().
|
||||
//
|
||||
// On input, widths array contains text.length() zero elements and the text
|
||||
// is guaranteed to be non-empty.
|
||||
virtual bool DoGetPartialTextExtents(const wxString& text,
|
||||
wxArrayInt& widths,
|
||||
double scaleX) = 0;
|
||||
|
||||
// Call either DoGetTextExtent() or wxDC::GetTextExtent() depending on the
|
||||
// value of m_useDCImpl.
|
||||
//
|
||||
// This must be always used instead of calling DoGetTextExtent() directly!
|
||||
void CallGetTextExtent(const wxString& string,
|
||||
wxCoord *width,
|
||||
wxCoord *height,
|
||||
wxCoord *descent = nullptr,
|
||||
wxCoord *externalLeading = nullptr);
|
||||
|
||||
// Get line height: used when the line is empty because CallGetTextExtent()
|
||||
// would just return (0, 0) in this case.
|
||||
int GetEmptyLineHeight();
|
||||
|
||||
// Return a valid font: if one was given to us in the ctor, use this one,
|
||||
// otherwise use the current font of the associated wxDC or wxWindow.
|
||||
wxFont GetFont() const;
|
||||
|
||||
|
||||
// Exactly one of m_dc and m_win is non-null for any given object of this
|
||||
// class.
|
||||
const wxDC* const m_dc;
|
||||
const wxWindow* const m_win;
|
||||
|
||||
// If this is true, simply forward to wxDC::GetTextExtent() from our
|
||||
// CallGetTextExtent() instead of calling our own DoGetTextExtent().
|
||||
//
|
||||
// We need this because our DoGetTextExtent() typically only works with
|
||||
// native DCs, i.e. those having an HDC under Windows or using Pango under
|
||||
// GTK+. However wxTextMeasure object can be constructed for any wxDC, not
|
||||
// necessarily a native one and in this case we must call back into the DC
|
||||
// implementation of text measuring itself.
|
||||
bool m_useDCImpl;
|
||||
|
||||
// This one can be null or not.
|
||||
const wxFont* const m_font;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxTextMeasureBase);
|
||||
};
|
||||
|
||||
// Include the platform dependent class declaration, if any.
|
||||
#if defined(__WXGTK__)
|
||||
#include "wx/gtk/private/textmeasure.h"
|
||||
#elif defined(__WXMSW__)
|
||||
#include "wx/msw/private/textmeasure.h"
|
||||
#else // no platform-specific implementation of wxTextMeasure yet
|
||||
#include "wx/generic/private/textmeasure.h"
|
||||
|
||||
#define wxUSE_GENERIC_TEXTMEASURE 1
|
||||
#endif
|
||||
|
||||
#ifndef wxUSE_GENERIC_TEXTMEASURE
|
||||
#define wxUSE_GENERIC_TEXTMEASURE 0
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_TEXTMEASURE_H_
|
||||
72
libs/wxWidgets-3.3.1/include/wx/private/timer.h
Normal file
72
libs/wxWidgets-3.3.1/include/wx/private/timer.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/timer.h
|
||||
// Purpose: Base class for wxTimer implementations
|
||||
// Author: Lukasz Michalski <lmichalski@sf.net>
|
||||
// Created: 31.10.2006
|
||||
// Copyright: (c) 2006-2007 wxWidgets dev team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_TIMERIMPL_H_BASE_
|
||||
#define _WX_TIMERIMPL_H_BASE_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/event.h"
|
||||
#include "wx/timer.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxTimerImpl: abstract base class for wxTimer implementations
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_BASE wxTimerImpl
|
||||
{
|
||||
public:
|
||||
// default ctor, SetOwner() must be called after it (wxTimer does it)
|
||||
wxTimerImpl(wxTimer *owner);
|
||||
|
||||
// this must be called initially but may be also called later
|
||||
void SetOwner(wxEvtHandler *owner, int timerid);
|
||||
|
||||
// empty but virtual base class dtor, the caller is responsible for
|
||||
// stopping the timer before it's destroyed (it can't be done from here as
|
||||
// it's too late)
|
||||
virtual ~wxTimerImpl() = default;
|
||||
|
||||
|
||||
// start the timer. When overriding call base version first.
|
||||
virtual bool Start(int milliseconds = -1, bool oneShot = false);
|
||||
|
||||
// stop the timer, only called if the timer is really running (unlike
|
||||
// wxTimer::Stop())
|
||||
virtual void Stop() = 0;
|
||||
|
||||
// return true if the timer is running
|
||||
virtual bool IsRunning() const = 0;
|
||||
|
||||
// this should be called by the port-specific code when the timer expires
|
||||
virtual void Notify() { m_timer->Notify(); }
|
||||
|
||||
// the default implementation of wxTimer::Notify(): generate a wxEVT_TIMER
|
||||
void SendEvent();
|
||||
|
||||
|
||||
// accessors for wxTimer:
|
||||
wxEvtHandler *GetOwner() const { return m_owner; }
|
||||
int GetId() const { return m_idTimer; }
|
||||
int GetInterval() const { return m_milli; }
|
||||
bool IsOneShot() const { return m_oneShot; }
|
||||
|
||||
protected:
|
||||
wxTimer *m_timer;
|
||||
|
||||
wxEvtHandler *m_owner;
|
||||
|
||||
int m_idTimer; // id passed to wxTimerEvent
|
||||
int m_milli; // the timer interval
|
||||
bool m_oneShot; // true if one shot
|
||||
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxTimerImpl);
|
||||
};
|
||||
|
||||
#endif // _WX_TIMERIMPL_H_BASE_
|
||||
184
libs/wxWidgets-3.3.1/include/wx/private/tlwgeom.h
Normal file
184
libs/wxWidgets-3.3.1/include/wx/private/tlwgeom.h
Normal file
@@ -0,0 +1,184 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/tlwgeom.h
|
||||
// Purpose: Declaration of platform-specific and private wxTLWGeometry.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2018-04-29
|
||||
// Copyright: (c) 2018 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_TLWGEOM_H_
|
||||
#define _WX_PRIVATE_TLWGEOM_H_
|
||||
|
||||
#include "wx/display.h"
|
||||
#include "wx/toplevel.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxTLWGeometryBase: abstract base class for platform-specific classes
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// wxTLWGeometry contains full information about the window geometry, which may
|
||||
// include things other than the obvious ones like its current position and
|
||||
// size (e.g. under MSW it also stores the position of the maximized window,
|
||||
// under GTK the size of non-client decorations etc). It is private to wx and
|
||||
// is only used indirectly, via wxTopLevelWindow::SaveGeometry() and
|
||||
// RestoreToGeometry() methods, in the public API.
|
||||
|
||||
class wxTLWGeometryBase
|
||||
{
|
||||
public:
|
||||
typedef wxTopLevelWindow::GeometrySerializer Serializer;
|
||||
|
||||
wxTLWGeometryBase() = default;
|
||||
virtual ~wxTLWGeometryBase() = default;
|
||||
|
||||
// Initialize from the given window.
|
||||
virtual bool GetFrom(const wxTopLevelWindow* tlw) = 0;
|
||||
|
||||
// Resize the window to use this geometry.
|
||||
virtual bool ApplyTo(wxTopLevelWindow* tlw) = 0;
|
||||
|
||||
// Serialize or deserialize the object by using the provided object for
|
||||
// writing/reading the values of the different fields of this object.
|
||||
virtual bool Save(const Serializer& ser) const = 0;
|
||||
virtual bool Restore(Serializer& ser) = 0;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxTLWGeometryGeneric: simplest possible generic implementation
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// names for various persistent options
|
||||
#define wxPERSIST_TLW_X "x"
|
||||
#define wxPERSIST_TLW_Y "y"
|
||||
#define wxPERSIST_TLW_W "w"
|
||||
#define wxPERSIST_TLW_H "h"
|
||||
|
||||
#define wxPERSIST_TLW_MAXIMIZED "Maximized"
|
||||
#define wxPERSIST_TLW_ICONIZED "Iconized"
|
||||
|
||||
// MSW has its own native implementation and doesn't use this class.
|
||||
#ifndef __WXMSW__
|
||||
|
||||
class wxTLWGeometryGeneric : public wxTLWGeometryBase
|
||||
{
|
||||
public:
|
||||
wxTLWGeometryGeneric()
|
||||
{
|
||||
m_hasPos =
|
||||
m_hasSize =
|
||||
m_iconized =
|
||||
m_maximized = false;
|
||||
}
|
||||
|
||||
virtual bool Save(const Serializer& ser) const override
|
||||
{
|
||||
if ( !ser.SaveField(wxPERSIST_TLW_X, m_rectScreen.x) ||
|
||||
!ser.SaveField(wxPERSIST_TLW_Y, m_rectScreen.y) )
|
||||
return false;
|
||||
|
||||
if ( !ser.SaveField(wxPERSIST_TLW_W, m_rectScreen.width) ||
|
||||
!ser.SaveField(wxPERSIST_TLW_H, m_rectScreen.height) )
|
||||
return false;
|
||||
|
||||
if ( !ser.SaveField(wxPERSIST_TLW_MAXIMIZED, m_maximized) )
|
||||
return false;
|
||||
|
||||
if ( !ser.SaveField(wxPERSIST_TLW_ICONIZED, m_iconized) )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool Restore(Serializer& ser) override
|
||||
{
|
||||
m_hasPos = ser.RestoreField(wxPERSIST_TLW_X, &m_rectScreen.x) &&
|
||||
ser.RestoreField(wxPERSIST_TLW_Y, &m_rectScreen.y);
|
||||
|
||||
m_hasSize = ser.RestoreField(wxPERSIST_TLW_W, &m_rectScreen.width) &&
|
||||
ser.RestoreField(wxPERSIST_TLW_H, &m_rectScreen.height);
|
||||
|
||||
int tmp;
|
||||
if ( ser.RestoreField(wxPERSIST_TLW_MAXIMIZED, &tmp) )
|
||||
m_maximized = tmp != 0;
|
||||
|
||||
if ( ser.RestoreField(wxPERSIST_TLW_ICONIZED, &tmp) )
|
||||
m_iconized = tmp != 0;
|
||||
|
||||
// If we restored at least something, return true.
|
||||
return m_hasPos || m_hasSize || m_maximized || m_iconized;
|
||||
}
|
||||
|
||||
virtual bool GetFrom(const wxTopLevelWindow* tlw) override
|
||||
{
|
||||
m_rectScreen = tlw->GetScreenRect();
|
||||
m_hasPos =
|
||||
m_hasSize = true;
|
||||
m_iconized = tlw->IsIconized();
|
||||
m_maximized = tlw->IsMaximized();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool ApplyTo(wxTopLevelWindow* tlw) override
|
||||
{
|
||||
if ( m_hasPos )
|
||||
{
|
||||
// to avoid making the window completely invisible if it had been
|
||||
// shown on a monitor which was disconnected since the last run
|
||||
// (this is pretty common for notebook with external displays)
|
||||
//
|
||||
// NB: we should allow window position to be (slightly) off screen,
|
||||
// it's not uncommon to position the window so that its upper
|
||||
// left corner has slightly negative coordinate
|
||||
if ( wxDisplay::GetFromPoint(m_rectScreen.GetTopLeft()) != wxNOT_FOUND ||
|
||||
(m_hasSize &&
|
||||
wxDisplay::GetFromPoint(m_rectScreen.GetBottomRight()) != wxNOT_FOUND) )
|
||||
{
|
||||
tlw->Move(m_rectScreen.GetTopLeft(), wxSIZE_ALLOW_MINUS_ONE);
|
||||
}
|
||||
//else: should we try to adjust position/size somehow?
|
||||
}
|
||||
|
||||
if ( m_hasSize )
|
||||
{
|
||||
// a previous version of the program could have saved the window
|
||||
// size which used to be big enough, but which is not big enough
|
||||
// any more for the new version, so check that the size we restore
|
||||
// doesn't cut off parts of the window
|
||||
wxSize size = m_rectScreen.GetSize();
|
||||
size.IncTo(tlw->GetBestSize());
|
||||
tlw->SetSize(size);
|
||||
}
|
||||
|
||||
// note that the window can be both maximized and iconized
|
||||
if ( m_maximized )
|
||||
tlw->Maximize();
|
||||
|
||||
if ( m_iconized )
|
||||
tlw->Iconize();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
wxRect m_rectScreen;
|
||||
bool m_hasPos;
|
||||
bool m_hasSize;
|
||||
bool m_iconized;
|
||||
bool m_maximized;
|
||||
};
|
||||
|
||||
#endif // !__WXMSW__
|
||||
|
||||
#ifdef __WXGTK__
|
||||
#include "wx/gtk/private/tlwgeom.h"
|
||||
#elif defined(__WXMSW__)
|
||||
#include "wx/msw/private/tlwgeom.h"
|
||||
#else
|
||||
class wxTLWGeometry : public wxTLWGeometryGeneric
|
||||
{
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // _WX_PRIVATE_TLWGEOM_H_
|
||||
44
libs/wxWidgets-3.3.1/include/wx/private/uiaction.h
Normal file
44
libs/wxWidgets-3.3.1/include/wx/private/uiaction.h
Normal file
@@ -0,0 +1,44 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/uiaction.h
|
||||
// Purpose: wxUIActionSimulatorImpl declaration
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2016-05-21
|
||||
// Copyright: (c) 2016 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_UIACTION_H_
|
||||
#define _WX_PRIVATE_UIACTION_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Platform-specific implementation of wxUIActionSimulator
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxUIActionSimulatorImpl
|
||||
{
|
||||
public:
|
||||
wxUIActionSimulatorImpl() = default;
|
||||
virtual ~wxUIActionSimulatorImpl() = default;
|
||||
|
||||
// Low level mouse methods which must be implemented in the derived class.
|
||||
virtual bool MouseMove(long x, long y) = 0;
|
||||
virtual bool MouseDown(int button = wxMOUSE_BTN_LEFT) = 0;
|
||||
virtual bool MouseUp(int button = wxMOUSE_BTN_LEFT) = 0;
|
||||
|
||||
// Higher level mouse methods which have default implementation in the base
|
||||
// class but can be overridden if necessary.
|
||||
virtual bool MouseClick(int button = wxMOUSE_BTN_LEFT);
|
||||
virtual bool MouseDblClick(int button = wxMOUSE_BTN_LEFT);
|
||||
virtual bool MouseDragDrop(long x1, long y1, long x2, long y2,
|
||||
int button = wxMOUSE_BTN_LEFT);
|
||||
|
||||
// The low-level port-specific function which really generates the key
|
||||
// presses. It should generate exactly one key event with the given
|
||||
// parameters.
|
||||
virtual bool DoKey(int keycode, int modifiers, bool isDown) = 0;
|
||||
|
||||
private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxUIActionSimulatorImpl);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_UIACTION_H_
|
||||
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_
|
||||
16
libs/wxWidgets-3.3.1/include/wx/private/unicode.h
Normal file
16
libs/wxWidgets-3.3.1/include/wx/private/unicode.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/unicode.h
|
||||
// Purpose: Unicode private declsrations
|
||||
// Author: Pavel Tyunin
|
||||
// Created: 2020-10-06
|
||||
// Copyright: (c) 2020 Pavel Tyunin
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_UNICODEH__
|
||||
#define _WX_PRIVATE_UNICODEH__
|
||||
|
||||
// this table gives the length of the UTF-8 encoding from its first character:
|
||||
extern const unsigned char tableUtf8Lengths[256];
|
||||
|
||||
#endif // _WX_PRIVATE_UNICODEH__
|
||||
365
libs/wxWidgets-3.3.1/include/wx/private/webrequest.h
Normal file
365
libs/wxWidgets-3.3.1/include/wx/private/webrequest.h
Normal file
@@ -0,0 +1,365 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/webrequest.h
|
||||
// Purpose: wxWebRequest implementation classes
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2020-12-26
|
||||
// Copyright: (c) 2020 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_WEBREQUEST_H_
|
||||
#define _WX_PRIVATE_WEBREQUEST_H_
|
||||
|
||||
#include "wx/ffile.h"
|
||||
|
||||
#include "wx/private/refcountermt.h"
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
|
||||
class WXDLLIMPEXP_FWD_BASE wxURI;
|
||||
|
||||
using wxWebRequestHeaderMap = std::unordered_map<wxString, wxString>;
|
||||
|
||||
// Trace mask used for the messages in wxWebRequest code.
|
||||
#define wxTRACE_WEBREQUEST "webrequest"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWebAuthChallengeImpl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxWebAuthChallengeImpl : public wxRefCounterMT
|
||||
{
|
||||
public:
|
||||
virtual ~wxWebAuthChallengeImpl() = default;
|
||||
|
||||
wxWebAuthChallenge::Source GetSource() const { return m_source; }
|
||||
|
||||
virtual void SetCredentials(const wxWebCredentials& cred) = 0;
|
||||
|
||||
protected:
|
||||
explicit wxWebAuthChallengeImpl(wxWebAuthChallenge::Source source)
|
||||
: m_source(source) { }
|
||||
|
||||
private:
|
||||
const wxWebAuthChallenge::Source m_source;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebAuthChallengeImpl);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWebRequestImpl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxWebRequestImpl : public wxRefCounterMT
|
||||
{
|
||||
public:
|
||||
using Result = wxWebRequest::Result;
|
||||
|
||||
// Return true if this is an async request, false if it's synchronous.
|
||||
bool IsAsync() const { return m_session != nullptr; }
|
||||
|
||||
virtual ~wxWebRequestImpl() = default;
|
||||
|
||||
void SetHeader(const wxString& name, const wxString& value)
|
||||
{ m_headers[name] = value; }
|
||||
|
||||
void SetMethod(const wxString& method) { m_method = method; }
|
||||
|
||||
void SetData(const wxString& text, const wxString& contentType, const wxMBConv& conv = wxConvUTF8);
|
||||
|
||||
bool SetData(std::unique_ptr<wxInputStream> dataStream, const wxString& contentType, wxFileOffset dataSize = wxInvalidOffset);
|
||||
|
||||
void SetStorage(wxWebRequest::Storage storage) { m_storage = storage; }
|
||||
|
||||
wxWebRequest::Storage GetStorage() const { return m_storage; }
|
||||
|
||||
// This method is called to execute the request in a synchronous way.
|
||||
virtual Result Execute() = 0;
|
||||
|
||||
// This method is called to start execution of an asynchronous request.
|
||||
//
|
||||
// Precondition for this method checked by caller: current state is idle.
|
||||
virtual void Start() = 0;
|
||||
|
||||
// This method can be called to cancel execution of an asynchronous request.
|
||||
//
|
||||
// Precondition for this method checked by caller: not idle and not already
|
||||
// cancelled.
|
||||
void Cancel();
|
||||
|
||||
virtual wxWebResponseImplPtr GetResponse() const = 0;
|
||||
|
||||
virtual wxWebAuthChallengeImplPtr GetAuthChallenge() const = 0;
|
||||
|
||||
int GetId() const { return m_id; }
|
||||
|
||||
// This one is only valid for async requests.
|
||||
wxWebSession& GetSession() const { return *m_session; }
|
||||
|
||||
// This one can be always called.
|
||||
wxWebSessionImpl& GetSessionImpl() const { return *m_sessionImpl; }
|
||||
|
||||
wxWebRequest::State GetState() const { return m_state; }
|
||||
|
||||
virtual wxFileOffset GetBytesSent() const = 0;
|
||||
|
||||
virtual wxFileOffset GetBytesExpectedToSend() const = 0;
|
||||
|
||||
virtual wxFileOffset GetBytesReceived() const;
|
||||
|
||||
virtual wxFileOffset GetBytesExpectedToReceive() const;
|
||||
|
||||
virtual wxWebRequestHandle GetNativeHandle() const = 0;
|
||||
|
||||
void MakeInsecure(int flags) { m_securityFlags = flags; }
|
||||
|
||||
int GetSecurityFlags() const { return m_securityFlags; }
|
||||
|
||||
void SetState(wxWebRequest::State state, const wxString& failMsg = wxString());
|
||||
|
||||
void ReportDataReceived(size_t sizeReceived);
|
||||
|
||||
wxEvtHandler* GetHandler() const { return m_handler; }
|
||||
|
||||
protected:
|
||||
wxString m_method;
|
||||
wxWebRequest::Storage m_storage = wxWebRequest::Storage_Memory;
|
||||
wxWebRequestHeaderMap m_headers;
|
||||
wxFileOffset m_dataSize = 0;
|
||||
std::unique_ptr<wxInputStream> m_dataStream;
|
||||
int m_securityFlags = 0;
|
||||
|
||||
// Ctor for async requests.
|
||||
wxWebRequestImpl(wxWebSession& session,
|
||||
wxWebSessionImpl& sessionImpl,
|
||||
wxEvtHandler* handler,
|
||||
int id);
|
||||
|
||||
// Ctor for sync requests.
|
||||
explicit wxWebRequestImpl(wxWebSessionImpl& sessionImpl);
|
||||
|
||||
bool WasCancelled() const { return m_cancelled; }
|
||||
|
||||
// Get the HTTP method to use: this will be m_method if it's non-empty,
|
||||
// POST is we have any data to send, and GET otherwise.
|
||||
//
|
||||
// Returned string is always in upper case.
|
||||
wxString GetHTTPMethod() const;
|
||||
|
||||
// Get wxWebRequest::State and, optionally, error message corresponding to
|
||||
// the given response (response must be valid here).
|
||||
static Result GetResultFromHTTPStatus(const wxWebResponseImplPtr& response);
|
||||
|
||||
// Call SetState() with either State_Failed or State_Completed appropriate
|
||||
// for the response status.
|
||||
void SetFinalStateFromStatus()
|
||||
{
|
||||
HandleResult(GetResultFromHTTPStatus(GetResponse()));
|
||||
}
|
||||
|
||||
// Unconditionally call SetState() with the parameters corresponding to the
|
||||
// given result.
|
||||
void HandleResult(const Result& result)
|
||||
{
|
||||
SetState(result.state, result.error);
|
||||
}
|
||||
|
||||
// Call SetState() if the result is an error (State_Failed) and return
|
||||
// false in this case, otherwise just return true.
|
||||
bool CheckResult(const Result& result)
|
||||
{
|
||||
if ( !result )
|
||||
{
|
||||
HandleResult(result);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
// Called from public Cancel() at most once per object.
|
||||
virtual void DoCancel() = 0;
|
||||
|
||||
// Called to notify about the state change in the main thread by SetState()
|
||||
// (which can itself be called from a different one).
|
||||
//
|
||||
// It also releases a reference added when switching to the active state by
|
||||
// SetState() when leaving it.
|
||||
void ProcessStateEvent(wxWebRequest::State state, const wxString& failMsg);
|
||||
|
||||
// This is a shared pointer and not just a reference to ensure that the
|
||||
// session stays alive as long as there are any requests using it, as
|
||||
// allowing it to die first would result in a crash when destroying the
|
||||
// request later.
|
||||
wxWebSessionImplPtr m_sessionImpl;
|
||||
|
||||
// These parameters are only valid for async requests.
|
||||
wxWebSession* const m_session;
|
||||
wxEvtHandler* const m_handler;
|
||||
const int m_id;
|
||||
wxWebRequest::State m_state = wxWebRequest::State_Idle;
|
||||
wxFileOffset m_bytesReceived = 0;
|
||||
wxCharBuffer m_dataText;
|
||||
|
||||
// Initially false, set to true after the first call to Cancel().
|
||||
bool m_cancelled = false;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebRequestImpl);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWebResponseImpl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxWebResponseImpl : public wxRefCounterMT
|
||||
{
|
||||
public:
|
||||
virtual ~wxWebResponseImpl();
|
||||
|
||||
virtual wxFileOffset GetContentLength() const = 0;
|
||||
|
||||
virtual wxString GetURL() const = 0;
|
||||
|
||||
virtual wxString GetHeader(const wxString& name) const = 0;
|
||||
|
||||
virtual std::vector<wxString> GetAllHeaderValues(const wxString& name) const = 0;
|
||||
|
||||
virtual wxString GetMimeType() const;
|
||||
|
||||
virtual wxString GetContentType() const;
|
||||
|
||||
virtual int GetStatus() const = 0;
|
||||
|
||||
virtual wxString GetStatusText() const = 0;
|
||||
|
||||
virtual wxInputStream* GetStream() const;
|
||||
|
||||
virtual wxString GetSuggestedFileName() const;
|
||||
|
||||
wxString AsString() const;
|
||||
|
||||
virtual wxString GetDataFile() const;
|
||||
|
||||
// Open data file if necessary, i.e. if using wxWebRequest::Storage_File.
|
||||
//
|
||||
// Returns result with State_Failed if the file is needed but couldn't be
|
||||
// opened.
|
||||
wxNODISCARD wxWebRequest::Result InitFileStorage();
|
||||
|
||||
void ReportDataReceived(size_t sizeReceived);
|
||||
|
||||
protected:
|
||||
wxWebRequestImpl& m_request;
|
||||
|
||||
explicit wxWebResponseImpl(wxWebRequestImpl& request);
|
||||
|
||||
void* GetDataBuffer(size_t sizeNeeded);
|
||||
|
||||
// This function can optionally be called to preallocate the read buffer,
|
||||
// if the total amount of data to be downloaded is known in advance.
|
||||
void PreAllocBuffer(size_t sizeNeeded);
|
||||
|
||||
private:
|
||||
// Called by wxWebRequestImpl only.
|
||||
friend class wxWebRequestImpl;
|
||||
void Finalize();
|
||||
|
||||
wxMemoryBuffer m_readBuffer;
|
||||
mutable wxFFile m_file;
|
||||
mutable std::unique_ptr<wxInputStream> m_stream;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebResponseImpl);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWebSessionFactory
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxWebSessionFactory
|
||||
{
|
||||
public:
|
||||
virtual wxWebSessionImpl* Create() = 0;
|
||||
virtual wxWebSessionImpl* CreateSync() = 0;
|
||||
|
||||
virtual bool Initialize() { return true; }
|
||||
|
||||
virtual ~wxWebSessionFactory() = default;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWebSessionImpl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxWebSessionImpl : public wxRefCounterMT
|
||||
{
|
||||
public:
|
||||
// This session class can be used either synchronously or asynchronously,
|
||||
// but the mode must be chosen at the time of the object creation and
|
||||
// cannot be changed later.
|
||||
enum class Mode
|
||||
{
|
||||
Async,
|
||||
Sync
|
||||
};
|
||||
|
||||
virtual ~wxWebSessionImpl();
|
||||
|
||||
// Only one of these functions is actually implemented in async/sync
|
||||
// session implementation classes respectively. This is ugly, but allows to
|
||||
// add support for sync requests/sessions without completely rewriting
|
||||
// wxWebRequest code.
|
||||
|
||||
virtual wxWebRequestImplPtr
|
||||
CreateRequest(wxWebSession& session,
|
||||
wxEvtHandler* handler,
|
||||
const wxString& url,
|
||||
int id) = 0;
|
||||
|
||||
virtual wxWebRequestImplPtr
|
||||
CreateRequestSync(wxWebSessionSync& session, const wxString& url) = 0;
|
||||
|
||||
virtual wxVersionInfo GetLibraryVersionInfo() const = 0;
|
||||
|
||||
bool SetBaseURL(const wxString& url);
|
||||
const wxURI* GetBaseURL() const;
|
||||
|
||||
void AddCommonHeader(const wxString& name, const wxString& value)
|
||||
{ m_headers[name] = value; }
|
||||
|
||||
void SetTempDir(const wxString& dir) { m_tempDir = dir; }
|
||||
|
||||
wxString GetTempDir() const;
|
||||
|
||||
virtual bool SetProxy(const wxWebProxy& proxy)
|
||||
{ m_proxy = proxy; return true; }
|
||||
const wxWebProxy& GetProxy() const { return m_proxy; }
|
||||
|
||||
const wxWebRequestHeaderMap& GetHeaders() const { return m_headers; }
|
||||
|
||||
virtual wxWebSessionHandle GetNativeHandle() const = 0;
|
||||
|
||||
virtual bool EnablePersistentStorage(bool WXUNUSED(enable)) { return false; }
|
||||
|
||||
protected:
|
||||
explicit wxWebSessionImpl(Mode mode);
|
||||
|
||||
bool IsAsync() const { return m_mode == Mode::Async; }
|
||||
|
||||
private:
|
||||
// Make it a friend to allow accessing our m_headers.
|
||||
friend class wxWebRequest;
|
||||
|
||||
const Mode m_mode;
|
||||
|
||||
std::unique_ptr<wxURI> m_baseURL;
|
||||
wxWebRequestHeaderMap m_headers;
|
||||
wxString m_tempDir;
|
||||
wxWebProxy m_proxy{wxWebProxy::Default()};
|
||||
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebSessionImpl);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_WEBREQUEST_H_
|
||||
291
libs/wxWidgets-3.3.1/include/wx/private/webrequest_curl.h
Normal file
291
libs/wxWidgets-3.3.1/include/wx/private/webrequest_curl.h
Normal file
@@ -0,0 +1,291 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/webrequest_curl.h
|
||||
// Purpose: wxWebRequest implementation using libcurl
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2018-10-25
|
||||
// Copyright: (c) 2018 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_WEBREQUEST_CURL_H
|
||||
#define _WX_WEBREQUEST_CURL_H
|
||||
|
||||
#if wxUSE_WEBREQUEST_CURL
|
||||
|
||||
#include "wx/private/webrequest.h"
|
||||
|
||||
#include "wx/thread.h"
|
||||
#include "wx/vector.h"
|
||||
#include "wx/timer.h"
|
||||
|
||||
#include "curl/curl.h"
|
||||
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
class wxWebRequestCURL;
|
||||
class wxWebResponseCURL;
|
||||
class wxWebSessionCURL;
|
||||
class wxWebSessionSyncCURL;
|
||||
class SocketPoller;
|
||||
|
||||
class wxWebAuthChallengeCURL : public wxWebAuthChallengeImpl
|
||||
{
|
||||
public:
|
||||
wxWebAuthChallengeCURL(wxWebAuthChallenge::Source source,
|
||||
wxWebRequestCURL& request);
|
||||
|
||||
void SetCredentials(const wxWebCredentials& cred) override;
|
||||
|
||||
private:
|
||||
wxWebRequestCURL& m_request;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebAuthChallengeCURL);
|
||||
};
|
||||
|
||||
class wxWebRequestCURL : public wxWebRequestImpl
|
||||
{
|
||||
public:
|
||||
// Ctor for async requests: creates a new libcurl handle and owns it.
|
||||
wxWebRequestCURL(wxWebSession& session,
|
||||
wxWebSessionCURL& sessionImpl,
|
||||
wxEvtHandler* handler,
|
||||
const wxString& url,
|
||||
int id);
|
||||
|
||||
// Ctor for sync requests: uses the libcurl handle from the session and
|
||||
// doesn't own it.
|
||||
wxWebRequestCURL(wxWebSessionSyncCURL& sessionImpl,
|
||||
const wxString& url);
|
||||
|
||||
~wxWebRequestCURL();
|
||||
|
||||
wxWebRequest::Result Execute() override;
|
||||
|
||||
void Start() override;
|
||||
|
||||
wxWebResponseImplPtr GetResponse() const override
|
||||
{ return m_response; }
|
||||
|
||||
wxWebAuthChallengeImplPtr GetAuthChallenge() const override
|
||||
{ return m_authChallenge; }
|
||||
|
||||
wxFileOffset GetBytesSent() const override;
|
||||
|
||||
wxFileOffset GetBytesExpectedToSend() const override;
|
||||
|
||||
CURL* GetHandle() const { return m_handle; }
|
||||
|
||||
wxWebRequestHandle GetNativeHandle() const override
|
||||
{
|
||||
return (wxWebRequestHandle)GetHandle();
|
||||
}
|
||||
|
||||
bool StartRequest();
|
||||
|
||||
void HandleCompletion();
|
||||
|
||||
wxString GetError() const;
|
||||
|
||||
// Method called from libcurl callback
|
||||
size_t CURLOnRead(char* buffer, size_t size);
|
||||
|
||||
private:
|
||||
// Common initialization for sync and async requests performed when the
|
||||
// request is created.
|
||||
void DoStartPrepare(const wxString& url);
|
||||
|
||||
// This function is again common for sync and async requests, but is called
|
||||
// right before starting, or executing, the request.
|
||||
//
|
||||
// If it returns result with State_Failed, the request should be aborted.
|
||||
wxWebRequest::Result DoFinishPrepare();
|
||||
|
||||
// Convert the status of the completed request to our result structure and,
|
||||
// if necessary, initialize m_authChallenge.
|
||||
wxWebRequest::Result DoHandleCompletion();
|
||||
|
||||
void DoCancel() override;
|
||||
|
||||
// This is only used for async requests.
|
||||
wxWebSessionCURL* const m_sessionCURL;
|
||||
|
||||
// This pointer is only owned by this object when using async requests.
|
||||
CURL* const m_handle;
|
||||
char m_errorBuffer[CURL_ERROR_SIZE];
|
||||
struct curl_slist *m_headerList = nullptr;
|
||||
wxObjectDataPtr<wxWebResponseCURL> m_response;
|
||||
wxObjectDataPtr<wxWebAuthChallengeCURL> m_authChallenge;
|
||||
wxFileOffset m_bytesSent;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebRequestCURL);
|
||||
};
|
||||
|
||||
class wxWebResponseCURL : public wxWebResponseImpl
|
||||
{
|
||||
public:
|
||||
explicit wxWebResponseCURL(wxWebRequestCURL& request);
|
||||
|
||||
wxFileOffset GetContentLength() const override;
|
||||
|
||||
wxString GetURL() const override;
|
||||
|
||||
wxString GetHeader(const wxString& name) const override;
|
||||
|
||||
std::vector<wxString> GetAllHeaderValues(const wxString& name) const override;
|
||||
|
||||
int GetStatus() const override;
|
||||
|
||||
wxString GetStatusText() const override { return m_statusText; }
|
||||
|
||||
|
||||
// Methods called from libcurl callbacks
|
||||
size_t CURLOnWrite(void *buffer, size_t size);
|
||||
size_t CURLOnHeader(const char* buffer, size_t size);
|
||||
int CURLOnProgress(curl_off_t);
|
||||
|
||||
private:
|
||||
// We can receive multiple headers with the same name (classic example is
|
||||
// "Set-Cookie:"), so we can't use wxWebRequestHeaderMap here and need to
|
||||
// define our own "multi-map" for headers: it maps the header name to a
|
||||
// collection of all its values, possibly from multiple header lines.
|
||||
using AllHeadersMap = std::unordered_map<wxString, std::vector<wxString>>;
|
||||
AllHeadersMap m_headers;
|
||||
wxString m_statusText;
|
||||
wxFileOffset m_knownDownloadSize;
|
||||
|
||||
CURL* GetHandle() const
|
||||
{ return static_cast<wxWebRequestCURL&>(m_request).GetHandle(); }
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebResponseCURL);
|
||||
};
|
||||
|
||||
// Common base class for synchronous and asynchronous sessions.
|
||||
class wxWebSessionBaseCURL : public wxWebSessionImpl
|
||||
{
|
||||
public:
|
||||
explicit wxWebSessionBaseCURL(Mode mode);
|
||||
~wxWebSessionBaseCURL();
|
||||
|
||||
wxVersionInfo GetLibraryVersionInfo() const override;
|
||||
|
||||
static bool CurlRuntimeAtLeastVersion(unsigned int, unsigned int,
|
||||
unsigned int);
|
||||
|
||||
protected:
|
||||
static int ms_activeSessions;
|
||||
static unsigned int ms_runtimeVersion;
|
||||
};
|
||||
|
||||
// Sync session implementation uses libcurl "easy" API.
|
||||
class wxWebSessionSyncCURL : public wxWebSessionBaseCURL
|
||||
{
|
||||
public:
|
||||
wxWebSessionSyncCURL();
|
||||
~wxWebSessionSyncCURL();
|
||||
|
||||
wxWebRequestImplPtr
|
||||
CreateRequest(wxWebSession& WXUNUSED(session),
|
||||
wxEvtHandler* WXUNUSED(handler),
|
||||
const wxString& WXUNUSED(url),
|
||||
int WXUNUSED(id)) override
|
||||
{
|
||||
wxFAIL_MSG("This method should not be called for synchronous sessions");
|
||||
|
||||
return wxWebRequestImplPtr{};
|
||||
}
|
||||
|
||||
wxWebRequestImplPtr
|
||||
CreateRequestSync(wxWebSessionSync& session, const wxString& url) override;
|
||||
|
||||
wxWebSessionHandle GetNativeHandle() const override
|
||||
{
|
||||
return (wxWebSessionHandle)m_handle;
|
||||
}
|
||||
|
||||
CURL* GetHandle() const { return m_handle; }
|
||||
|
||||
private:
|
||||
CURL* m_handle = nullptr;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebSessionSyncCURL);
|
||||
};
|
||||
|
||||
// Async session implementation uses libcurl "multi" API.
|
||||
class wxWebSessionCURL : public wxEvtHandler, public wxWebSessionBaseCURL
|
||||
{
|
||||
public:
|
||||
wxWebSessionCURL();
|
||||
|
||||
~wxWebSessionCURL();
|
||||
|
||||
wxWebRequestImplPtr
|
||||
CreateRequest(wxWebSession& session,
|
||||
wxEvtHandler* handler,
|
||||
const wxString& url,
|
||||
int id = wxID_ANY) override;
|
||||
|
||||
wxWebRequestImplPtr
|
||||
CreateRequestSync(wxWebSessionSync& WXUNUSED(session),
|
||||
const wxString& WXUNUSED(url)) override
|
||||
{
|
||||
wxFAIL_MSG("This method should not be called for asynchronous sessions");
|
||||
|
||||
return wxWebRequestImplPtr{};
|
||||
}
|
||||
|
||||
wxWebSessionHandle GetNativeHandle() const override
|
||||
{
|
||||
return (wxWebSessionHandle)m_handle;
|
||||
}
|
||||
|
||||
bool StartRequest(wxWebRequestCURL& request);
|
||||
|
||||
void CancelRequest(wxWebRequestCURL* request);
|
||||
|
||||
void RequestHasTerminated(wxWebRequestCURL* request);
|
||||
|
||||
private:
|
||||
static int TimerCallback(CURLM*, long, void*);
|
||||
static int SocketCallback(CURL*, curl_socket_t, int, void*, void*);
|
||||
|
||||
void ProcessTimerCallback(long);
|
||||
void TimeoutNotification(wxTimerEvent&);
|
||||
void ProcessTimeoutNotification();
|
||||
void ProcessSocketCallback(CURL*, curl_socket_t, int);
|
||||
void ProcessSocketPollerResult(wxThreadEvent&);
|
||||
void CheckForCompletedTransfers();
|
||||
void FailRequest(CURL*, const wxString&);
|
||||
void StopActiveTransfer(CURL*);
|
||||
void RemoveActiveSocket(CURL*);
|
||||
|
||||
using TransferSet = std::unordered_map<CURL*, wxWebRequestCURL*>;
|
||||
using CurlSocketMap = std::unordered_map<CURL*, curl_socket_t>;
|
||||
|
||||
TransferSet m_activeTransfers;
|
||||
CurlSocketMap m_activeSockets;
|
||||
|
||||
SocketPoller* m_socketPoller = nullptr;
|
||||
wxTimer m_timeoutTimer;
|
||||
CURLM* m_handle = nullptr;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebSessionCURL);
|
||||
};
|
||||
|
||||
class wxWebSessionFactoryCURL : public wxWebSessionFactory
|
||||
{
|
||||
public:
|
||||
wxWebSessionImpl* Create() override
|
||||
{
|
||||
return new wxWebSessionCURL();
|
||||
}
|
||||
|
||||
wxWebSessionImpl* CreateSync() override
|
||||
{
|
||||
return new wxWebSessionSyncCURL();
|
||||
}
|
||||
};
|
||||
|
||||
#endif // wxUSE_WEBREQUEST_CURL
|
||||
|
||||
#endif
|
||||
23
libs/wxWidgets-3.3.1/include/wx/private/webview.h
Normal file
23
libs/wxWidgets-3.3.1/include/wx/private/webview.h
Normal file
@@ -0,0 +1,23 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/webview.h
|
||||
// Purpose: wxWebView implementation classes
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2023-03-16
|
||||
// Copyright: (c) 2023 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_WEBVIEW_H_
|
||||
#define _WX_PRIVATE_WEBVIEW_H_
|
||||
|
||||
class WXDLLIMPEXP_WEBVIEW wxWebViewConfigurationImpl
|
||||
{
|
||||
public:
|
||||
virtual ~wxWebViewConfigurationImpl() = default;
|
||||
virtual void* GetNativeConfiguration() const { return nullptr; }
|
||||
virtual void SetDataPath(const wxString& WXUNUSED(path)) {}
|
||||
virtual wxString GetDataPath() const { return wxString{}; }
|
||||
virtual bool EnablePersistentStorage(bool WXUNUSED(enable)) { return false; }
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_WEBVIEW_H_
|
||||
100
libs/wxWidgets-3.3.1/include/wx/private/window.h
Normal file
100
libs/wxWidgets-3.3.1/include/wx/private/window.h
Normal file
@@ -0,0 +1,100 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/window.h
|
||||
// Purpose: misc wxWindow helpers
|
||||
// Author: Vaclav Slavik
|
||||
// Created: 2010-01-21
|
||||
// Copyright: (c) 2010 Vaclav Slavik
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_WINDOW_H_
|
||||
#define _WX_PRIVATE_WINDOW_H_
|
||||
|
||||
#include "wx/gdicmn.h"
|
||||
#include "wx/dynlib.h"
|
||||
|
||||
namespace wxPrivate
|
||||
{
|
||||
|
||||
// Windows' computes dialog units using average character width over upper-
|
||||
// and lower-case ASCII alphabet and not using the average character width
|
||||
// metadata stored in the font; see
|
||||
// http://support.microsoft.com/default.aspx/kb/145994 for detailed discussion.
|
||||
//
|
||||
// This helper function computes font dimensions in the same way. It works with
|
||||
// either wxDC or wxWindow argument.
|
||||
template<typename T>
|
||||
inline wxSize GetAverageASCIILetterSize(const T& of_what)
|
||||
{
|
||||
const wxStringCharType *TEXT_TO_MEASURE =
|
||||
wxS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
|
||||
|
||||
wxSize s = of_what.GetTextExtent(TEXT_TO_MEASURE);
|
||||
s.x = (s.x / 26 + 1) / 2;
|
||||
return s;
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
inline bool SupportsPerMonitorDPI()
|
||||
{
|
||||
static bool s_checkDPI =
|
||||
#if defined(__WXMSW__)
|
||||
// Only check the DPI when GetDpiForWindow is available because the old
|
||||
// method (GetDeviceCaps) is a lot slower (about 1500 times).
|
||||
// And when GetDpiForWindow is not available (for example older Windows
|
||||
// versions), per-monitor DPI (V2) is also not available.
|
||||
wxLoadedDLL("user32.dll").HasSymbol("GetDpiForWindow");
|
||||
#else
|
||||
false;
|
||||
#endif
|
||||
return s_checkDPI;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
class DpiDependentValue
|
||||
{
|
||||
public:
|
||||
// Explicit initialization is needed if T is a primitive type.
|
||||
DpiDependentValue()
|
||||
: m_value(), m_dpi()
|
||||
{ }
|
||||
|
||||
bool HasChanged(const wxWindowBase* win)
|
||||
{
|
||||
if ( win && SupportsPerMonitorDPI() )
|
||||
{
|
||||
const wxSize dpi = win->GetDPI();
|
||||
if ( dpi != m_dpi )
|
||||
{
|
||||
m_dpi = dpi;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure that we return true the first time we're called,
|
||||
// assuming that the value will always be set to a non-default value.
|
||||
return m_value == T();
|
||||
}
|
||||
|
||||
void SetAtNewDPI(const T& value)
|
||||
{
|
||||
m_value = value;
|
||||
}
|
||||
|
||||
T& Get()
|
||||
{
|
||||
return m_value;
|
||||
}
|
||||
|
||||
private:
|
||||
T m_value;
|
||||
wxSize m_dpi;
|
||||
};
|
||||
|
||||
} // namespace wxPrivate
|
||||
|
||||
#endif // _WX_PRIVATE_WINDOW_H_
|
||||
78
libs/wxWidgets-3.3.1/include/wx/private/wordwrap.h
Normal file
78
libs/wxWidgets-3.3.1/include/wx/private/wordwrap.h
Normal file
@@ -0,0 +1,78 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/wordwrap.h
|
||||
// Purpose: Simple helper for string word wrapping.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2024-11-22
|
||||
// Copyright: (c) 2024 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_WORDWRAP_H_
|
||||
#define _WX_PRIVATE_WORDWRAP_H_
|
||||
|
||||
#include "wx/string.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWordWrap helper for wxCmdLineParser
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
inline std::vector<wxString> wxWordWrap(const wxString& text, int widthMax)
|
||||
{
|
||||
std::vector<wxString> lines;
|
||||
|
||||
wxString line;
|
||||
int lastSpace = -1; // No space in the current line yet.
|
||||
for ( auto ch : text )
|
||||
{
|
||||
// Always honour explicit line breaks.
|
||||
if ( ch == '\n' )
|
||||
{
|
||||
lines.push_back(line);
|
||||
line.clear();
|
||||
lastSpace = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
const int lineLength = line.length();
|
||||
if ( lineLength == widthMax )
|
||||
{
|
||||
// Can't continue this line.
|
||||
if ( lastSpace == -1 )
|
||||
{
|
||||
// No space in the line, just break it.
|
||||
lines.push_back(line);
|
||||
line.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Break at the last space.
|
||||
lines.push_back(line.substr(0, lastSpace));
|
||||
|
||||
// Also skip all the spaces following it, we don't want to
|
||||
// start the new line with spaces.
|
||||
while ( lastSpace < lineLength && line[lastSpace] == ' ' )
|
||||
lastSpace++;
|
||||
|
||||
line = line.substr(lastSpace);
|
||||
lastSpace = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( ch == ' ' )
|
||||
lastSpace = line.length();
|
||||
}
|
||||
|
||||
line += ch;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !line.empty() )
|
||||
lines.push_back(line);
|
||||
|
||||
return lines;
|
||||
}
|
||||
|
||||
#endif // _WX_PRIVATE_WORDWRAP_H_
|
||||
928
libs/wxWidgets-3.3.1/include/wx/private/wxprintf.h
Normal file
928
libs/wxWidgets-3.3.1/include/wx/private/wxprintf.h
Normal file
@@ -0,0 +1,928 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/wxprintf.h
|
||||
// Purpose: wxWidgets wxPrintf() implementation
|
||||
// Author: Ove Kaven
|
||||
// Modified by: Ron Lee, Francesco Montorsi
|
||||
// Created: 09/04/99
|
||||
// Copyright: (c) wxWidgets copyright
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_WXPRINTF_H_
|
||||
#define _WX_PRIVATE_WXPRINTF_H_
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// headers and macros
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#include "wx/crt.h"
|
||||
#include "wx/log.h"
|
||||
#include "wx/utils.h"
|
||||
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
|
||||
// prefer snprintf over sprintf
|
||||
#if defined(__VISUALC__)
|
||||
#define system_sprintf(buff, max, flags, data) \
|
||||
::_snprintf(buff, max, flags, data)
|
||||
#elif defined(HAVE_SNPRINTF)
|
||||
#define system_sprintf(buff, max, flags, data) \
|
||||
::snprintf(buff, max, flags, data)
|
||||
#else // NB: at least sprintf() should always be available
|
||||
// since 'max' is not used in this case, wxVsnprintf() should always
|
||||
// ensure that 'buff' is big enough for all common needs
|
||||
// (see wxMAX_SVNPRINTF_FLAGBUFFER_LEN and wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN)
|
||||
#define system_sprintf(buff, max, flags, data) \
|
||||
::sprintf(buff, flags, data)
|
||||
|
||||
#define SYSTEM_SPRINTF_IS_UNSAFE
|
||||
#endif
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// printf format string parsing
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// some limits of our implementation
|
||||
#define wxMAX_SVNPRINTF_ARGUMENTS 64
|
||||
#define wxMAX_SVNPRINTF_FLAGBUFFER_LEN 32
|
||||
#define wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN 512
|
||||
|
||||
|
||||
// the conversion specifiers accepted by wxCRT_VsnprintfW
|
||||
enum wxPrintfArgType
|
||||
{
|
||||
wxPAT_INVALID = -1,
|
||||
|
||||
wxPAT_INT, // %d, %i, %o, %u, %x, %X
|
||||
wxPAT_LONGINT, // %ld, etc
|
||||
wxPAT_LONGLONGINT, // %Ld, etc
|
||||
wxPAT_SIZET, // %zd, etc
|
||||
|
||||
wxPAT_DOUBLE, // %e, %E, %f, %g, %G
|
||||
wxPAT_LONGDOUBLE, // %le, etc
|
||||
|
||||
wxPAT_POINTER, // %p
|
||||
|
||||
wxPAT_CHAR, // %hc (in ANSI mode: %c, too)
|
||||
wxPAT_WCHAR, // %lc (in Unicode mode: %c, too)
|
||||
|
||||
wxPAT_PCHAR, // %s (related to a char *)
|
||||
wxPAT_PWCHAR, // %s (related to a wchar_t *)
|
||||
|
||||
wxPAT_NINT, // %n
|
||||
wxPAT_NSHORTINT, // %hn
|
||||
wxPAT_NLONGINT, // %ln
|
||||
|
||||
wxPAT_STAR // '*' used for width or precision
|
||||
};
|
||||
|
||||
// an argument passed to wxCRT_VsnprintfW
|
||||
union wxPrintfArg
|
||||
{
|
||||
int pad_int; // %d, %i, %o, %u, %x, %X
|
||||
long int pad_longint; // %ld, etc
|
||||
wxLongLong_t pad_longlongint; // %Ld, etc
|
||||
size_t pad_sizet; // %zd, etc
|
||||
|
||||
double pad_double; // %e, %E, %f, %g, %G
|
||||
long double pad_longdouble; // %le, etc
|
||||
|
||||
void *pad_pointer; // %p
|
||||
|
||||
char pad_char; // %hc (in ANSI mode: %c, too)
|
||||
wchar_t pad_wchar; // %lc (in Unicode mode: %c, too)
|
||||
|
||||
void *pad_str; // %s
|
||||
|
||||
int *pad_nint; // %n
|
||||
short int *pad_nshortint; // %hn
|
||||
long int *pad_nlongint; // %ln
|
||||
};
|
||||
|
||||
// helper for converting string into either char* or wchar_t* depending
|
||||
// on the type of wxPrintfConvSpec<T> instantiation:
|
||||
template<typename CharType> struct wxPrintfStringHelper {};
|
||||
|
||||
template<> struct wxPrintfStringHelper<char>
|
||||
{
|
||||
typedef const wxWX2MBbuf ConvertedType;
|
||||
static ConvertedType Convert(const wxString& s) { return s.mb_str(); }
|
||||
};
|
||||
|
||||
template<> struct wxPrintfStringHelper<wchar_t>
|
||||
{
|
||||
typedef const wxWX2WCbuf ConvertedType;
|
||||
static ConvertedType Convert(const wxString& s) { return s.wc_str(); }
|
||||
};
|
||||
|
||||
|
||||
// Contains parsed data relative to a conversion specifier given to
|
||||
// wxCRT_VsnprintfW and parsed from the format string
|
||||
// NOTE: in C++ there is almost no difference between struct & classes thus
|
||||
// there is no performance gain by using a struct here...
|
||||
template<typename CharType>
|
||||
class wxPrintfConvSpec
|
||||
{
|
||||
public:
|
||||
|
||||
// the position of the argument relative to this conversion specifier
|
||||
size_t m_pos;
|
||||
|
||||
// the type of this conversion specifier
|
||||
wxPrintfArgType m_type;
|
||||
|
||||
// the minimum and maximum width
|
||||
// when one of this var is set to -1 it means: use the following argument
|
||||
// in the stack as minimum/maximum width for this conversion specifier
|
||||
int m_nMinWidth, m_nMaxWidth;
|
||||
|
||||
// does the argument need to the be aligned to left ?
|
||||
bool m_bAlignLeft;
|
||||
|
||||
// pointer to the '%' of this conversion specifier in the format string
|
||||
// NOTE: this points somewhere in the string given to the Parse() function -
|
||||
// it's task of the caller ensure that memory is still valid !
|
||||
const CharType *m_pArgPos;
|
||||
|
||||
// pointer to the last character of this conversion specifier in the
|
||||
// format string
|
||||
// NOTE: this points somewhere in the string given to the Parse() function -
|
||||
// it's task of the caller ensure that memory is still valid !
|
||||
const CharType *m_pArgEnd;
|
||||
|
||||
// a little buffer where formatting flags like #+\.hlqLz are stored by Parse()
|
||||
// for use in Process()
|
||||
char m_szFlags[wxMAX_SVNPRINTF_FLAGBUFFER_LEN];
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// we don't declare this as a constructor otherwise it would be called
|
||||
// automatically and we don't want this: to be optimized, wxCRT_VsnprintfW
|
||||
// calls this function only on really-used instances of this class.
|
||||
void Init();
|
||||
|
||||
// Parses the first conversion specifier in the given string, which must
|
||||
// begin with a '%'. Returns false if the first '%' does not introduce a
|
||||
// (valid) conversion specifier and thus should be ignored.
|
||||
bool Parse(const CharType *format);
|
||||
|
||||
// Process this conversion specifier and puts the result in the given
|
||||
// buffer. Returns the number of characters written in 'buf' or -1 if
|
||||
// there's not enough space.
|
||||
int Process(CharType *buf, size_t lenMax, wxPrintfArg *p, size_t written);
|
||||
|
||||
// Loads the argument of this conversion specifier from given va_list.
|
||||
bool LoadArg(wxPrintfArg *p, va_list &argptr);
|
||||
|
||||
private:
|
||||
// A helper function of LoadArg() which is used to handle the '*' flag
|
||||
void ReplaceAsteriskWith(int w);
|
||||
};
|
||||
|
||||
template<typename CharType>
|
||||
void wxPrintfConvSpec<CharType>::Init()
|
||||
{
|
||||
m_nMinWidth = 0;
|
||||
m_nMaxWidth = INT_MAX;
|
||||
m_pos = 0;
|
||||
m_bAlignLeft = false;
|
||||
m_pArgPos = m_pArgEnd = nullptr;
|
||||
m_type = wxPAT_INVALID;
|
||||
|
||||
memset(m_szFlags, 0, sizeof(m_szFlags));
|
||||
// this character will never be removed from m_szFlags array and
|
||||
// is important when calling sprintf() in wxPrintfConvSpec::Process() !
|
||||
m_szFlags[0] = '%';
|
||||
}
|
||||
|
||||
template<typename CharType>
|
||||
bool wxPrintfConvSpec<CharType>::Parse(const CharType *format)
|
||||
{
|
||||
bool done = false;
|
||||
|
||||
// temporary parse data
|
||||
size_t flagofs = 1;
|
||||
bool in_prec, // true if we found the dot in some previous iteration
|
||||
prec_dot; // true if the dot has been already added to m_szFlags
|
||||
int ilen = 0;
|
||||
|
||||
m_bAlignLeft = in_prec = prec_dot = false;
|
||||
m_pArgPos = m_pArgEnd = format;
|
||||
do
|
||||
{
|
||||
#define CHECK_PREC \
|
||||
if (in_prec && !prec_dot) \
|
||||
{ \
|
||||
m_szFlags[flagofs++] = '.'; \
|
||||
prec_dot = true; \
|
||||
}
|
||||
|
||||
// what follows '%'?
|
||||
const CharType ch = *(++m_pArgEnd);
|
||||
switch ( ch )
|
||||
{
|
||||
case wxT('\0'):
|
||||
return false; // not really an argument
|
||||
|
||||
case wxT('%'):
|
||||
return false; // not really an argument
|
||||
|
||||
case wxT('#'):
|
||||
case wxT('0'):
|
||||
case wxT(' '):
|
||||
case wxT('+'):
|
||||
case wxT('\''):
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
break;
|
||||
|
||||
case wxT('-'):
|
||||
CHECK_PREC
|
||||
m_bAlignLeft = true;
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
break;
|
||||
|
||||
case wxT('.'):
|
||||
// don't use CHECK_PREC here to avoid warning about the value
|
||||
// assigned to prec_dot inside it being never used (because
|
||||
// overwritten just below)
|
||||
if (in_prec && !prec_dot)
|
||||
m_szFlags[flagofs++] = '.';
|
||||
in_prec = true;
|
||||
prec_dot = false;
|
||||
m_nMaxWidth = 0;
|
||||
// dot will be auto-added to m_szFlags if non-negative
|
||||
// number follows
|
||||
break;
|
||||
|
||||
case wxT('h'):
|
||||
ilen = -1;
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
break;
|
||||
|
||||
case wxT('l'):
|
||||
// NB: it's safe to use flagofs-1 as flagofs always start from 1
|
||||
if (m_szFlags[flagofs-1] == 'l') // 'll' modifier is the same as 'L' or 'q'
|
||||
ilen = 2;
|
||||
else
|
||||
ilen = 1;
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
break;
|
||||
|
||||
case wxT('q'):
|
||||
case wxT('L'):
|
||||
ilen = 2;
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
break;
|
||||
#ifdef __WINDOWS__
|
||||
// under Windows we support the special '%I64' notation as longlong
|
||||
// integer conversion specifier for MSVC compatibility
|
||||
// (it behaves exactly as '%lli' or '%Li' or '%qi')
|
||||
case wxT('I'):
|
||||
if (*(m_pArgEnd+1) == wxT('6') &&
|
||||
*(m_pArgEnd+2) == wxT('4'))
|
||||
{
|
||||
m_pArgEnd++;
|
||||
m_pArgEnd++;
|
||||
|
||||
ilen = 2;
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
m_szFlags[flagofs++] = '6';
|
||||
m_szFlags[flagofs++] = '4';
|
||||
break;
|
||||
}
|
||||
// else: fall-through, 'I' is MSVC equivalent of C99 'z'
|
||||
wxFALLTHROUGH;
|
||||
#endif // __WINDOWS__
|
||||
|
||||
case wxT('z'):
|
||||
case wxT('Z'):
|
||||
// 'z' is C99 standard for size_t and ptrdiff_t, 'Z' was used
|
||||
// for this purpose in libc5 and by wx <= 2.8
|
||||
ilen = 3;
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
break;
|
||||
|
||||
case wxT('*'):
|
||||
if (in_prec)
|
||||
{
|
||||
CHECK_PREC
|
||||
|
||||
// tell Process() to use the next argument
|
||||
// in the stack as maxwidth...
|
||||
m_nMaxWidth = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// tell Process() to use the next argument
|
||||
// in the stack as minwidth...
|
||||
m_nMinWidth = -1;
|
||||
}
|
||||
|
||||
// save the * in our formatting buffer...
|
||||
// will be replaced later by Process()
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
break;
|
||||
|
||||
case wxT('1'): case wxT('2'): case wxT('3'):
|
||||
case wxT('4'): case wxT('5'): case wxT('6'):
|
||||
case wxT('7'): case wxT('8'): case wxT('9'):
|
||||
{
|
||||
int len = 0;
|
||||
CHECK_PREC
|
||||
while ( (*m_pArgEnd >= CharType('0')) &&
|
||||
(*m_pArgEnd <= CharType('9')) )
|
||||
{
|
||||
m_szFlags[flagofs++] = char(*m_pArgEnd);
|
||||
len = len*10 + (*m_pArgEnd - wxT('0'));
|
||||
m_pArgEnd++;
|
||||
}
|
||||
|
||||
if (in_prec)
|
||||
m_nMaxWidth = len;
|
||||
else
|
||||
m_nMinWidth = len;
|
||||
|
||||
m_pArgEnd--; // the main loop pre-increments n again
|
||||
}
|
||||
break;
|
||||
|
||||
case wxT('$'): // a positional parameter (e.g. %2$s) ?
|
||||
{
|
||||
if (m_nMinWidth <= 0)
|
||||
break; // ignore this formatting flag as no
|
||||
// numbers are preceding it
|
||||
|
||||
// remove from m_szFlags all digits previously added
|
||||
do {
|
||||
flagofs--;
|
||||
} while (m_szFlags[flagofs] >= '1' &&
|
||||
m_szFlags[flagofs] <= '9');
|
||||
|
||||
// re-adjust the offset making it point to the
|
||||
// next free char of m_szFlags
|
||||
flagofs++;
|
||||
|
||||
m_pos = m_nMinWidth;
|
||||
m_nMinWidth = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case wxT('d'):
|
||||
case wxT('i'):
|
||||
case wxT('o'):
|
||||
case wxT('u'):
|
||||
case wxT('x'):
|
||||
case wxT('X'):
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
if (ilen == 0)
|
||||
m_type = wxPAT_INT;
|
||||
else if (ilen == -1)
|
||||
// NB: 'short int' value passed through '...'
|
||||
// is promoted to 'int', so we have to get
|
||||
// an int from stack even if we need a short
|
||||
m_type = wxPAT_INT;
|
||||
else if (ilen == 1)
|
||||
m_type = wxPAT_LONGINT;
|
||||
else if (ilen == 2)
|
||||
m_type = wxPAT_LONGLONGINT;
|
||||
else if (ilen == 3)
|
||||
m_type = wxPAT_SIZET;
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case wxT('e'):
|
||||
case wxT('E'):
|
||||
case wxT('f'):
|
||||
case wxT('g'):
|
||||
case wxT('G'):
|
||||
CHECK_PREC
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
if (ilen == 2)
|
||||
m_type = wxPAT_LONGDOUBLE;
|
||||
else
|
||||
m_type = wxPAT_DOUBLE;
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case wxT('p'):
|
||||
m_type = wxPAT_POINTER;
|
||||
m_szFlags[flagofs++] = char(ch);
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case wxT('c'):
|
||||
if (ilen == -1)
|
||||
{
|
||||
// %hc == ANSI character
|
||||
m_type = wxPAT_CHAR;
|
||||
}
|
||||
else
|
||||
{
|
||||
// %lc == %c == Unicode character
|
||||
m_type = wxPAT_WCHAR;
|
||||
}
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case wxT('s'):
|
||||
if (ilen == -1)
|
||||
{
|
||||
// wx extension: we'll let %hs mean non-Unicode strings
|
||||
m_type = wxPAT_PCHAR;
|
||||
}
|
||||
else
|
||||
{
|
||||
// %ls == %s == Unicode string
|
||||
m_type = wxPAT_PWCHAR;
|
||||
}
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case wxT('n'):
|
||||
if (ilen == 0)
|
||||
m_type = wxPAT_NINT;
|
||||
else if (ilen == -1)
|
||||
m_type = wxPAT_NSHORTINT;
|
||||
else if (ilen >= 1)
|
||||
m_type = wxPAT_NLONGINT;
|
||||
done = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
// bad format, don't consider this an argument;
|
||||
// leave it unchanged
|
||||
return false;
|
||||
}
|
||||
|
||||
if (flagofs == wxMAX_SVNPRINTF_FLAGBUFFER_LEN)
|
||||
{
|
||||
wxLogDebug(wxT("Too many flags specified for a single conversion specifier!"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
while (!done);
|
||||
|
||||
return true; // parsing was successful
|
||||
}
|
||||
|
||||
template<typename CharType>
|
||||
void wxPrintfConvSpec<CharType>::ReplaceAsteriskWith(int width)
|
||||
{
|
||||
char temp[wxMAX_SVNPRINTF_FLAGBUFFER_LEN];
|
||||
|
||||
// find the first * in our flag buffer
|
||||
char *pwidth = strchr(m_szFlags, '*');
|
||||
wxCHECK_RET(pwidth, wxT("field width must be specified"));
|
||||
|
||||
// save what follows the * (the +1 is to skip the asterisk itself!)
|
||||
strcpy(temp, pwidth+1);
|
||||
if (width < 0)
|
||||
{
|
||||
pwidth[0] = wxT('-');
|
||||
pwidth++;
|
||||
}
|
||||
|
||||
// replace * with the actual integer given as width
|
||||
#ifndef SYSTEM_SPRINTF_IS_UNSAFE
|
||||
int maxlen = (m_szFlags + wxMAX_SVNPRINTF_FLAGBUFFER_LEN - pwidth) /
|
||||
sizeof(*m_szFlags);
|
||||
#endif
|
||||
int offset = system_sprintf(pwidth, maxlen, "%d", abs(width));
|
||||
|
||||
// restore after the expanded * what was following it
|
||||
strcpy(pwidth+offset, temp);
|
||||
}
|
||||
|
||||
template<typename CharType>
|
||||
bool wxPrintfConvSpec<CharType>::LoadArg(wxPrintfArg *p, va_list &argptr)
|
||||
{
|
||||
// did the '*' width/precision specifier was used ?
|
||||
if (m_nMaxWidth == -1)
|
||||
{
|
||||
// take the maxwidth specifier from the stack
|
||||
m_nMaxWidth = va_arg(argptr, int);
|
||||
if (m_nMaxWidth < 0)
|
||||
m_nMaxWidth = 0;
|
||||
else
|
||||
ReplaceAsteriskWith(m_nMaxWidth);
|
||||
}
|
||||
|
||||
if (m_nMinWidth == -1)
|
||||
{
|
||||
// take the minwidth specifier from the stack
|
||||
m_nMinWidth = va_arg(argptr, int);
|
||||
|
||||
ReplaceAsteriskWith(m_nMinWidth);
|
||||
if (m_nMinWidth < 0)
|
||||
{
|
||||
m_bAlignLeft = !m_bAlignLeft;
|
||||
m_nMinWidth = -m_nMinWidth;
|
||||
}
|
||||
}
|
||||
|
||||
switch (m_type) {
|
||||
case wxPAT_INT:
|
||||
p->pad_int = va_arg(argptr, int);
|
||||
break;
|
||||
case wxPAT_LONGINT:
|
||||
p->pad_longint = va_arg(argptr, long int);
|
||||
break;
|
||||
case wxPAT_LONGLONGINT:
|
||||
p->pad_longlongint = va_arg(argptr, wxLongLong_t);
|
||||
break;
|
||||
case wxPAT_SIZET:
|
||||
p->pad_sizet = va_arg(argptr, size_t);
|
||||
break;
|
||||
case wxPAT_DOUBLE:
|
||||
p->pad_double = va_arg(argptr, double);
|
||||
break;
|
||||
case wxPAT_LONGDOUBLE:
|
||||
p->pad_longdouble = va_arg(argptr, long double);
|
||||
break;
|
||||
case wxPAT_POINTER:
|
||||
p->pad_pointer = va_arg(argptr, void *);
|
||||
break;
|
||||
|
||||
case wxPAT_CHAR:
|
||||
p->pad_char = (char)va_arg(argptr, int); // char is promoted to int when passed through '...'
|
||||
break;
|
||||
case wxPAT_WCHAR:
|
||||
p->pad_wchar = (wchar_t)va_arg(argptr, int); // char is promoted to int when passed through '...'
|
||||
break;
|
||||
|
||||
case wxPAT_PCHAR:
|
||||
case wxPAT_PWCHAR:
|
||||
p->pad_str = va_arg(argptr, void *);
|
||||
break;
|
||||
|
||||
case wxPAT_NINT:
|
||||
p->pad_nint = va_arg(argptr, int *);
|
||||
break;
|
||||
case wxPAT_NSHORTINT:
|
||||
p->pad_nshortint = va_arg(argptr, short int *);
|
||||
break;
|
||||
case wxPAT_NLONGINT:
|
||||
p->pad_nlongint = va_arg(argptr, long int *);
|
||||
break;
|
||||
|
||||
case wxPAT_STAR:
|
||||
// this will be handled as part of the next argument
|
||||
return true;
|
||||
|
||||
case wxPAT_INVALID:
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return true; // loading was successful
|
||||
}
|
||||
|
||||
template<typename CharType>
|
||||
int wxPrintfConvSpec<CharType>::Process(CharType *buf, size_t lenMax, wxPrintfArg *p, size_t written)
|
||||
{
|
||||
// buffer to avoid dynamic memory allocation each time for small strings;
|
||||
// note that this buffer is used only to hold results of number formatting,
|
||||
// %s directly writes user's string in buf, without using szScratch
|
||||
char szScratch[wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN];
|
||||
size_t lenScratch = 0, lenCur = 0;
|
||||
|
||||
#define APPEND_CH(ch) \
|
||||
{ \
|
||||
if ( lenCur == lenMax ) \
|
||||
return -1; \
|
||||
\
|
||||
buf[lenCur++] = ch; \
|
||||
}
|
||||
|
||||
switch ( m_type )
|
||||
{
|
||||
case wxPAT_INT:
|
||||
lenScratch = system_sprintf(szScratch, wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN, m_szFlags, p->pad_int);
|
||||
break;
|
||||
|
||||
case wxPAT_LONGINT:
|
||||
lenScratch = system_sprintf(szScratch, wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN, m_szFlags, p->pad_longint);
|
||||
break;
|
||||
|
||||
case wxPAT_LONGLONGINT:
|
||||
lenScratch = system_sprintf(szScratch, wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN, m_szFlags, p->pad_longlongint);
|
||||
break;
|
||||
|
||||
case wxPAT_SIZET:
|
||||
lenScratch = system_sprintf(szScratch, wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN, m_szFlags, p->pad_sizet);
|
||||
break;
|
||||
|
||||
case wxPAT_LONGDOUBLE:
|
||||
lenScratch = system_sprintf(szScratch, wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN, m_szFlags, p->pad_longdouble);
|
||||
break;
|
||||
|
||||
case wxPAT_DOUBLE:
|
||||
lenScratch = system_sprintf(szScratch, wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN, m_szFlags, p->pad_double);
|
||||
break;
|
||||
|
||||
case wxPAT_POINTER:
|
||||
lenScratch = system_sprintf(szScratch, wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN, m_szFlags, p->pad_pointer);
|
||||
break;
|
||||
|
||||
case wxPAT_CHAR:
|
||||
case wxPAT_WCHAR:
|
||||
{
|
||||
wxUniChar ch;
|
||||
if (m_type == wxPAT_CHAR)
|
||||
ch = p->pad_char;
|
||||
else // m_type == wxPAT_WCHAR
|
||||
ch = p->pad_wchar;
|
||||
|
||||
CharType val = ch;
|
||||
|
||||
size_t i;
|
||||
|
||||
if (!m_bAlignLeft)
|
||||
for (i = 1; i < (size_t)m_nMinWidth; i++)
|
||||
APPEND_CH(wxT(' '));
|
||||
|
||||
APPEND_CH(val);
|
||||
|
||||
if (m_bAlignLeft)
|
||||
for (i = 1; i < (size_t)m_nMinWidth; i++)
|
||||
APPEND_CH(wxT(' '));
|
||||
}
|
||||
break;
|
||||
|
||||
case wxPAT_PCHAR:
|
||||
case wxPAT_PWCHAR:
|
||||
{
|
||||
wxString s;
|
||||
if ( !p->pad_str )
|
||||
{
|
||||
if ( m_nMaxWidth >= 6 )
|
||||
s = wxT("(null)");
|
||||
}
|
||||
else if (m_type == wxPAT_PCHAR)
|
||||
s.assign(static_cast<const char *>(p->pad_str));
|
||||
else // m_type == wxPAT_PWCHAR
|
||||
s.assign(static_cast<const wchar_t *>(p->pad_str));
|
||||
|
||||
typename wxPrintfStringHelper<CharType>::ConvertedType strbuf(
|
||||
wxPrintfStringHelper<CharType>::Convert(s));
|
||||
|
||||
// at this point we are sure that m_nMaxWidth is positive or
|
||||
// null (see top of wxPrintfConvSpec::LoadArg)
|
||||
int len = wxMin((unsigned int)m_nMaxWidth, wxStrlen(strbuf));
|
||||
|
||||
int i;
|
||||
|
||||
if (!m_bAlignLeft)
|
||||
{
|
||||
for (i = len; i < m_nMinWidth; i++)
|
||||
APPEND_CH(wxT(' '));
|
||||
}
|
||||
|
||||
len = wxMin((unsigned int)len, lenMax-lenCur);
|
||||
wxStrncpy(buf+lenCur, strbuf, len);
|
||||
lenCur += len;
|
||||
|
||||
if (m_bAlignLeft)
|
||||
{
|
||||
for (i = len; i < m_nMinWidth; i++)
|
||||
APPEND_CH(wxT(' '));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case wxPAT_NINT:
|
||||
*p->pad_nint = written;
|
||||
break;
|
||||
|
||||
case wxPAT_NSHORTINT:
|
||||
*p->pad_nshortint = (short int)written;
|
||||
break;
|
||||
|
||||
case wxPAT_NLONGINT:
|
||||
*p->pad_nlongint = written;
|
||||
break;
|
||||
|
||||
case wxPAT_INVALID:
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
// if we used system's sprintf() then we now need to append the s_szScratch
|
||||
// buffer to the given one...
|
||||
switch (m_type)
|
||||
{
|
||||
case wxPAT_INT:
|
||||
case wxPAT_LONGINT:
|
||||
case wxPAT_LONGLONGINT:
|
||||
case wxPAT_SIZET:
|
||||
case wxPAT_LONGDOUBLE:
|
||||
case wxPAT_DOUBLE:
|
||||
case wxPAT_POINTER:
|
||||
wxASSERT(lenScratch < wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN);
|
||||
// NB: 1) we can compare lenMax (for CharType*, i.e. possibly
|
||||
// wchar_t*) with lenScratch (char*) because this code is
|
||||
// formatting integers and that will have the same length
|
||||
// even in UTF-8 (the only case when char* length may be
|
||||
// more than wchar_t* length of the same string)
|
||||
// 2) wxStrncpy converts the 2nd argument to 1st argument's
|
||||
// type transparently if their types differ, so this code
|
||||
// works for both instantiations
|
||||
if (lenMax < lenScratch)
|
||||
{
|
||||
// fill output buffer and then return -1
|
||||
wxStrncpy(buf, szScratch, lenMax);
|
||||
return -1;
|
||||
}
|
||||
wxStrncpy(buf, szScratch, lenScratch);
|
||||
lenCur += lenScratch;
|
||||
break;
|
||||
|
||||
default:
|
||||
break; // all other cases were completed previously
|
||||
}
|
||||
|
||||
return lenCur;
|
||||
}
|
||||
|
||||
|
||||
// helper that parses format string
|
||||
template<typename CharType>
|
||||
struct wxPrintfConvSpecParser
|
||||
{
|
||||
typedef wxPrintfConvSpec<CharType> ConvSpec;
|
||||
|
||||
wxPrintfConvSpecParser(const CharType *fmt)
|
||||
{
|
||||
nspecs =
|
||||
nargs = 0;
|
||||
posarg_present =
|
||||
nonposarg_present = false;
|
||||
|
||||
memset(pspec, 0, sizeof(pspec));
|
||||
|
||||
// parse the format string
|
||||
for ( const CharType *toparse = fmt; *toparse != wxT('\0'); toparse++ )
|
||||
{
|
||||
// skip everything except format specifications
|
||||
if ( *toparse != '%' )
|
||||
continue;
|
||||
|
||||
// also skip escaped percent signs
|
||||
if ( toparse[1] == '%' )
|
||||
{
|
||||
toparse++;
|
||||
continue;
|
||||
}
|
||||
|
||||
ConvSpec *spec = &specs[nspecs];
|
||||
spec->Init();
|
||||
|
||||
// attempt to parse this format specification
|
||||
if ( !spec->Parse(toparse) )
|
||||
continue;
|
||||
|
||||
// advance to the end of this specifier
|
||||
toparse = spec->m_pArgEnd;
|
||||
|
||||
// special handling for specifications including asterisks: we need
|
||||
// to reserve an extra slot (or two if asterisks were used for both
|
||||
// width and precision) in specs array in this case
|
||||
if ( const char *f = strchr(spec->m_szFlags, '*') )
|
||||
{
|
||||
unsigned numAsterisks = 1;
|
||||
if ( strchr(++f, '*') )
|
||||
numAsterisks++;
|
||||
|
||||
for ( unsigned n = 0; n < numAsterisks; n++ )
|
||||
{
|
||||
if ( ++nspecs == wxMAX_SVNPRINTF_ARGUMENTS )
|
||||
break;
|
||||
|
||||
// TODO: we need to support specifiers of the form "%2$*1$s"
|
||||
// (this is the same as "%*s") as if any positional arguments
|
||||
// are used all asterisks must be positional as well but this
|
||||
// requires a lot of changes in this code (basically we'd need
|
||||
// to rewrite Parse() to return "*" and conversion itself as
|
||||
// separate entries)
|
||||
if ( posarg_present )
|
||||
{
|
||||
wxFAIL_MSG
|
||||
(
|
||||
wxString::Format
|
||||
(wxASCII_STR(
|
||||
"Format string \"%s\" uses both positional "
|
||||
"parameters and '*' but this is not currently "
|
||||
"supported by this implementation, sorry."),
|
||||
fmt
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
specs[nspecs] = *spec;
|
||||
|
||||
// make an entry for '*' and point to it from pspec
|
||||
spec->Init();
|
||||
spec->m_type = wxPAT_STAR;
|
||||
pspec[nargs++] = spec;
|
||||
|
||||
spec = &specs[nspecs];
|
||||
}
|
||||
|
||||
// If we hit the maximal number of arguments inside the inner
|
||||
// loop, break out of the outer one as well.
|
||||
if ( nspecs == wxMAX_SVNPRINTF_ARGUMENTS )
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// check if this is a positional or normal argument
|
||||
if ( spec->m_pos > 0 )
|
||||
{
|
||||
// the positional arguments start from number 1 so we need
|
||||
// to adjust the index
|
||||
spec->m_pos--;
|
||||
|
||||
// We could be reusing an already existing argument, only
|
||||
// increment their number if it's really a new one.
|
||||
if ( spec->m_pos >= nargs )
|
||||
{
|
||||
nargs = spec->m_pos + 1;
|
||||
}
|
||||
else if ( pspec[spec->m_pos] ) // Had we seen it before?
|
||||
{
|
||||
// Check that the type specified this time is compatible
|
||||
// with the previously-specified type.
|
||||
wxASSERT_MSG
|
||||
(
|
||||
pspec[spec->m_pos]->m_type == spec->m_type,
|
||||
"Positional parameter specified multiple times "
|
||||
"with incompatible types."
|
||||
);
|
||||
}
|
||||
|
||||
posarg_present = true;
|
||||
}
|
||||
else // not a positional argument...
|
||||
{
|
||||
spec->m_pos = nargs++;
|
||||
nonposarg_present = true;
|
||||
}
|
||||
|
||||
// this conversion specifier is tied to the pos-th argument...
|
||||
pspec[spec->m_pos] = spec;
|
||||
|
||||
if ( ++nspecs == wxMAX_SVNPRINTF_ARGUMENTS )
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// warn if we lost any arguments (the program probably will crash
|
||||
// anyhow because of stack corruption...)
|
||||
if ( nspecs == wxMAX_SVNPRINTF_ARGUMENTS )
|
||||
{
|
||||
wxFAIL_MSG
|
||||
(
|
||||
wxString::Format
|
||||
(wxASCII_STR(
|
||||
"wxVsnprintf() currently supports only %d arguments, "
|
||||
"but format string \"%s\" defines more of them.\n"
|
||||
"You need to change wxMAX_SVNPRINTF_ARGUMENTS and "
|
||||
"recompile if more are really needed."),
|
||||
fmt, wxMAX_SVNPRINTF_ARGUMENTS
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// total number of valid elements in specs
|
||||
unsigned nspecs;
|
||||
|
||||
// total number of arguments, also number of valid elements in pspec, and
|
||||
// always less than or (usually) equal to nspecs
|
||||
unsigned nargs;
|
||||
|
||||
// all format specifications in this format string in order of their
|
||||
// appearance (which may be different from arguments order)
|
||||
ConvSpec specs[wxMAX_SVNPRINTF_ARGUMENTS];
|
||||
|
||||
// pointer to specs array element for the N-th argument
|
||||
ConvSpec *pspec[wxMAX_SVNPRINTF_ARGUMENTS];
|
||||
|
||||
// true if any positional/non-positional parameters are used
|
||||
bool posarg_present,
|
||||
nonposarg_present;
|
||||
};
|
||||
|
||||
#undef APPEND_CH
|
||||
#undef CHECK_PREC
|
||||
|
||||
#endif // _WX_PRIVATE_WXPRINTF_H_
|
||||
Reference in New Issue
Block a user