Made wxConvBrokenFileNames public.
Made use of it from GTK+'s wxApp. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
be108f9665
commit
66bf009984
@ -16,6 +16,7 @@
|
||||
|
||||
#include "wx/frame.h"
|
||||
#include "wx/icon.h"
|
||||
#include "wx/strconv.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// classes
|
||||
@ -67,6 +68,11 @@ public:
|
||||
// This returns the current visual: either that used by wxRootWindow
|
||||
// or the XVisualInfo* for SGI.
|
||||
GdkVisual *GetGdkVisual();
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
wxConvBrokenFileNames *m_convBrokenFileNames;
|
||||
wxMBConv *m_oldConvFileName;
|
||||
#endif
|
||||
|
||||
private:
|
||||
// true if we're inside an assert modal dialog
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include "wx/frame.h"
|
||||
#include "wx/icon.h"
|
||||
#include "wx/strconv.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// classes
|
||||
@ -67,6 +68,11 @@ public:
|
||||
// This returns the current visual: either that used by wxRootWindow
|
||||
// or the XVisualInfo* for SGI.
|
||||
GdkVisual *GetGdkVisual();
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
wxConvBrokenFileNames *m_convBrokenFileNames;
|
||||
wxMBConv *m_oldConvFileName;
|
||||
#endif
|
||||
|
||||
private:
|
||||
// true if we're inside an assert modal dialog
|
||||
|
@ -360,29 +360,12 @@ size_t wxMBConvLibc::WC2MB(char *buf, const wchar_t *psz, size_t n) const
|
||||
return wxWC2MB(buf, psz, n);
|
||||
}
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
#ifdef __UNIX__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxConvBrokenFileNames is made for GTK2 in Unicode mode when
|
||||
// files are accidentally written in an encoding which is not
|
||||
// the system encoding. Typically, the system encoding will be
|
||||
// UTF8 but there might be files stored in ISO8859-1 on disk.
|
||||
// wxConvBrokenFileNames
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxConvBrokenFileNames : public wxMBConv
|
||||
{
|
||||
public:
|
||||
wxConvBrokenFileNames();
|
||||
virtual ~wxConvBrokenFileNames() { delete m_conv; }
|
||||
|
||||
virtual size_t MB2WC(wchar_t *outputBuf, const char *psz, size_t outputSize) const;
|
||||
virtual size_t WC2MB(char *outputBuf, const wchar_t *psz, size_t outputSize) const;
|
||||
|
||||
private:
|
||||
// the conversion object we forward to
|
||||
wxMBConv *m_conv;
|
||||
};
|
||||
|
||||
wxConvBrokenFileNames::wxConvBrokenFileNames()
|
||||
{
|
||||
// decide which conversion to use for the file names
|
||||
@ -429,7 +412,7 @@ wxConvBrokenFileNames::WC2MB(char *outputBuf,
|
||||
return m_conv->WC2MB( outputBuf, psz, outputSize );
|
||||
}
|
||||
|
||||
#endif // __WXGTK20__
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// UTF-7
|
||||
@ -2764,10 +2747,6 @@ static wxCSConv wxConvISO8859_1Obj(wxFONTENCODING_ISO8859_1);
|
||||
static wxMBConvUTF7 wxConvUTF7Obj;
|
||||
static wxMBConvUTF8 wxConvUTF8Obj;
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
static wxConvBrokenFileNames wxConvBrokenFileNamesObj;
|
||||
#endif
|
||||
|
||||
WXDLLIMPEXP_DATA_BASE(wxMBConv&) wxConvLibc = wxConvLibcObj;
|
||||
WXDLLIMPEXP_DATA_BASE(wxCSConv&) wxConvLocal = wxConvLocalObj;
|
||||
WXDLLIMPEXP_DATA_BASE(wxCSConv&) wxConvISO8859_1 = wxConvISO8859_1Obj;
|
||||
@ -2777,8 +2756,6 @@ WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvCurrent = &wxConvLibcObj;
|
||||
WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvFileName = &
|
||||
#ifdef __WXOSX__
|
||||
wxConvUTF8Obj;
|
||||
#elif __WXGTK20__
|
||||
wxConvBrokenFileNamesObj;
|
||||
#else
|
||||
wxConvLibcObj;
|
||||
#endif
|
||||
|
@ -606,6 +606,12 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
wxConvCurrent = (wxMBConv*) NULL;
|
||||
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
m_convBrokenFileNames = new wxConvBrokenFileNames;
|
||||
m_oldConvFileName = wxConvFileName;
|
||||
wxConvFileName = m_convBrokenFileNames;
|
||||
#endif
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
// gtk_init() wants UTF-8, not wchar_t, so convert
|
||||
int i;
|
||||
@ -680,6 +686,11 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
|
||||
void wxApp::CleanUp()
|
||||
{
|
||||
#ifdef __WXGTK20__
|
||||
delete m_convBrokenFileNames;
|
||||
wxConvFileName = m_oldConvFileName;
|
||||
#endif
|
||||
|
||||
gdk_threads_leave();
|
||||
|
||||
wxAppBase::CleanUp();
|
||||
|
@ -606,6 +606,12 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
wxConvCurrent = (wxMBConv*) NULL;
|
||||
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
m_convBrokenFileNames = new wxConvBrokenFileNames;
|
||||
m_oldConvFileName = wxConvFileName;
|
||||
wxConvFileName = m_convBrokenFileNames;
|
||||
#endif
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
// gtk_init() wants UTF-8, not wchar_t, so convert
|
||||
int i;
|
||||
@ -680,6 +686,11 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
|
||||
void wxApp::CleanUp()
|
||||
{
|
||||
#ifdef __WXGTK20__
|
||||
delete m_convBrokenFileNames;
|
||||
wxConvFileName = m_oldConvFileName;
|
||||
#endif
|
||||
|
||||
gdk_threads_leave();
|
||||
|
||||
wxAppBase::CleanUp();
|
||||
|
Loading…
Reference in New Issue
Block a user