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:
Robert Roebling 2005-03-29 23:15:54 +00:00
parent be108f9665
commit 66bf009984
5 changed files with 37 additions and 26 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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();

View File

@ -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();