1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-18 16:41:14 +02:00

Additional changes for wx3

These are mostly for getting it to build on Linux, but I've
also created new configs in Visual Studio to make it easier
to switch between wx2 and wx3.

For Linux, you have to tell configure where to find the wx3
version of the wx-config script and, since some distros build
wxWidgets v3 against GTK+ v3, you may also need to enable
gtk3 with something like:

./configure --enable-gtk3 WX_CONFIG=/usr/bin/wx-config-3.0

On Windows, I've added "wx3-Debug" and "wx3-Release" to the
existing "Debug" and "Release" configurations.

They depend on you having your WXWIN environment variable
pointing to your wx2 directory and a new WXWIN3 environment
variable pointing to your wx3 directory.  For instance, I
have:

WXWIN=C:\Users\yam\Documents\wxWidgets-2.8.13
WXWIN3=C:\Users\yam\Documents\wxWidgets-3.0.2

Doing this allows you to switch freely among the 4 configurations
without having to get out of Visual Studio and monkey around with
the environment.

The project files will also add the location of the wxWidgets DLLs
to the PATH when running Audacity from within Visual Studio.  They
add %WXWIN%\lib\vc_dll or %WXWIN3%\lib\vc_dll at the beginning
of the PATH variable as appropriate.

I expect that once we convert to wx3 we'll just drop back down to
the normal Debug and Release configurations, but this should make
switching between wx2 and wx3 much easier during the transition.
This commit is contained in:
lllucius
2014-10-16 16:18:04 +00:00
parent 4cf7b2665d
commit c512822138
51 changed files with 3048 additions and 629 deletions

View File

@@ -18,8 +18,6 @@
#include "../FileDialog.h"
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
#include <gtk/gtk.h>
#include "private.h"
@@ -32,6 +30,12 @@
#include "wx/msgdlg.h" // wxMessageDialog
#include "wx/version.h"
//-----------------------------------------------------------------------------
// Pull in generic file dialog
//-----------------------------------------------------------------------------
#include "../generic/FileDialogPrivate.cpp"
//-----------------------------------------------------------------------------
// idle system
//-----------------------------------------------------------------------------
@@ -130,7 +134,9 @@ extern "C" {
gint response,
FileDialog *dialog)
{
#if !wxCHECK_VERSION(3, 0, 0)
wxapp_install_idle_handler();
#endif
if (response == GTK_RESPONSE_ACCEPT)
gtk_filedialog_ok_callback(w, dialog);
@@ -156,15 +162,13 @@ extern "C" {
}
}
#endif // __WXGTK24__
//-----------------------------------------------------------------------------
// FileDialog
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(FileDialog,wxGenericFileDialog)
IMPLEMENT_DYNAMIC_CLASS(FileDialog, GenericFileDialog)
BEGIN_EVENT_TABLE(FileDialog,wxGenericFileDialog)
BEGIN_EVENT_TABLE(FileDialog, GenericFileDialog)
EVT_BUTTON(wxID_OK, FileDialog::OnFakeOk)
END_EVENT_TABLE()
@@ -173,133 +177,116 @@ FileDialog::FileDialog(wxWindow *parent, const wxString& message,
const wxString& defaultFileName,
const wxString& wildCard,
long style, const wxPoint& pos)
: wxGenericFileDialog(parent, message, defaultDir, defaultFileName,
wildCard, style, pos,
#if wxCHECK_VERSION(2,8,0)
wxDefaultSize,
wxFileDialogNameStr,
#endif
true )
: GenericFileDialog(parent, message, defaultDir, defaultFileName,
wildCard, style, pos,
wxDefaultSize,
wxFileDialogNameStr,
true )
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
{
wxASSERT_MSG( !( (style & wxFD_SAVE) && (style & wxFD_MULTIPLE) ), wxT("FileDialog - wxFD_MULTIPLE used on a save dialog" ) );
m_needParent = false;
m_destroyed_by_delete = false;
if (!PreCreation(parent, pos, wxDefaultSize) ||
!CreateBase(parent, wxID_ANY, pos, wxDefaultSize, style,
wxDefaultValidator, wxT("filedialog")))
{
wxFAIL_MSG( wxT("FileDialog creation failed") );
return;
}
GtkFileChooserAction gtk_action;
GtkWindow* gtk_parent = NULL;
if (parent)
gtk_parent = GTK_WINDOW( gtk_widget_get_toplevel(parent->m_widget) );
const gchar* ok_btn_stock;
if ( style & wxFD_SAVE )
{
gtk_action = GTK_FILE_CHOOSER_ACTION_SAVE;
ok_btn_stock = GTK_STOCK_SAVE;
}
else
{
gtk_action = GTK_FILE_CHOOSER_ACTION_OPEN;
ok_btn_stock = GTK_STOCK_OPEN;
}
m_widget = gtk_file_chooser_dialog_new(
wxGTK_CONV(m_message),
gtk_parent,
gtk_action,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
ok_btn_stock, GTK_RESPONSE_ACCEPT,
NULL);
// Allow pressing "Enter" key for default action
gtk_dialog_set_default_response(GTK_DIALOG(m_widget), GTK_RESPONSE_ACCEPT);
if ( style & wxFD_MULTIPLE )
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(m_widget), true);
// local-only property could be set to false to allow non-local files to be loaded.
// In that case get/set_uri(s) should be used instead of get/set_filename(s) everywhere
// and the GtkFileChooserDialog should probably also be created with a backend,
// e.g "gnome-vfs", "default", ... (gtk_file_chooser_dialog_new_with_backend).
// Currently local-only is kept as the default - true:
// gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(m_widget), true);
g_signal_connect(G_OBJECT(m_widget), "response",
GTK_SIGNAL_FUNC(gtk_filedialog_response_callback), (gpointer)this);
g_signal_connect(G_OBJECT(m_widget), "show",
GTK_SIGNAL_FUNC(gtk_filedialog_show_callback), (gpointer)this);
SetWildcard(wildCard);
if ( style & wxFD_SAVE )
{
if ( !defaultDir.empty() )
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB(defaultDir));
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB(defaultFileName));
#if GTK_CHECK_VERSION(2,7,3)
if (!gtk_check_version(2,7,3))
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(m_widget), FALSE);
wxASSERT_MSG( !( (style & wxFD_SAVE) && (style & wxFD_MULTIPLE) ), wxT("FileDialog - wxFD_MULTIPLE used on a save dialog" ) );
#if !wxCHECK_VERSION(3, 0, 0)
m_needParent = false;
#endif
}
else
{
if ( !defaultFileName.empty() )
{
wxString dir;
if ( defaultDir.empty() )
dir = ::wxGetCwd();
else
dir = defaultDir;
gtk_file_chooser_set_filename(
GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB( wxFileName(dir, defaultFileName).GetFullPath() ) );
}
else if ( !defaultDir.empty() )
gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB(defaultDir) );
}
m_destroyed_by_delete = false;
if (!PreCreation(parent, pos, wxDefaultSize) ||
!CreateBase(parent, wxID_ANY, pos, wxDefaultSize, style,
wxDefaultValidator, wxT("filedialog")))
{
wxFAIL_MSG( wxT("FileDialog creation failed") );
return;
}
GtkFileChooserAction gtk_action;
GtkWindow* gtk_parent = NULL;
if (parent)
gtk_parent = GTK_WINDOW( gtk_widget_get_toplevel(parent->m_widget) );
const gchar* ok_btn_stock;
if ( style & wxFD_SAVE )
{
gtk_action = GTK_FILE_CHOOSER_ACTION_SAVE;
ok_btn_stock = GTK_STOCK_SAVE;
}
else
{
gtk_action = GTK_FILE_CHOOSER_ACTION_OPEN;
ok_btn_stock = GTK_STOCK_OPEN;
}
m_widget = gtk_file_chooser_dialog_new(
wxGTK_CONV(m_message),
gtk_parent,
gtk_action,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
ok_btn_stock, GTK_RESPONSE_ACCEPT,
NULL);
// Allow pressing "Enter" key for default action
gtk_dialog_set_default_response(GTK_DIALOG(m_widget), GTK_RESPONSE_ACCEPT);
if ( style & wxFD_MULTIPLE )
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(m_widget), true);
// local-only property could be set to false to allow non-local files to be loaded.
// In that case get/set_uri(s) should be used instead of get/set_filename(s) everywhere
// and the GtkFileChooserDialog should probably also be created with a backend,
// e.g "gnome-vfs", "default", ... (gtk_file_chooser_dialog_new_with_backend).
// Currently local-only is kept as the default - true:
// gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(m_widget), true);
g_signal_connect(G_OBJECT(m_widget), "response",
G_CALLBACK(gtk_filedialog_response_callback), (gpointer)this);
g_signal_connect(G_OBJECT(m_widget), "show",
G_CALLBACK(gtk_filedialog_show_callback), (gpointer)this);
SetWildcard(wildCard);
if ( style & wxFD_SAVE )
{
if ( !defaultDir.empty() )
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB(defaultDir));
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB(defaultFileName));
#if GTK_CHECK_VERSION(2,7,3)
if (!gtk_check_version(2,7,3))
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(m_widget), FALSE);
#endif
wxGenericFileDialog::Create( parent, message, defaultDir, defaultFileName, wildCard, style, pos );
}
else
{
if ( !defaultFileName.empty() )
{
wxString dir;
if ( defaultDir.empty() )
dir = ::wxGetCwd();
else
dir = defaultDir;
gtk_file_chooser_set_filename(
GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB( wxFileName(dir, defaultFileName).GetFullPath() ) );
}
else if ( !defaultDir.empty() )
gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(m_widget),
wxConvFileName->cWX2MB(defaultDir) );
}
}
FileDialog::~FileDialog()
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
{
if (m_destroyed_by_delete)
m_widget = NULL;
}
#endif
if (m_destroyed_by_delete)
m_widget = NULL;
}
void FileDialog::OnFakeOk( wxCommandEvent &event )
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
{
if (Validate() && TransferDataFromWindow())
EndModal(wxID_OK);
} else
#endif
wxGenericFileDialog::OnListOk( event );
if (Validate() && TransferDataFromWindow())
EndModal(wxID_OK);
}
int FileDialog::ShowModal()
@@ -310,29 +297,19 @@ int FileDialog::ShowModal()
wxString label = m_buttonlabel;
label.Replace(wxT("&"), wxT("_"));
widget = gtk_button_new_with_mnemonic(wxGTK_CONV(label));
gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(m_widget), widget);
g_signal_connect(G_OBJECT(widget), "clicked",
GTK_SIGNAL_FUNC(gtk_filedialog_extra_callback), (gpointer)this);
G_CALLBACK(gtk_filedialog_extra_callback), (gpointer)this);
}
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
return wxDialog::ShowModal();
else
#endif
return wxGenericFileDialog::ShowModal();
return wxDialog::ShowModal();
}
bool FileDialog::Show( bool show )
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
return wxDialog::Show( show );
else
#endif
return wxGenericFileDialog::Show( show );
return wxDialog::Show( show );
}
void FileDialog::DoSetSize(int x, int y, int width, int height, int sizeFlags )
@@ -340,250 +317,170 @@ void FileDialog::DoSetSize(int x, int y, int width, int height, int sizeFlags )
if (!m_wxwindow)
return;
else
wxGenericFileDialog::DoSetSize( x, y, width, height, sizeFlags );
GenericFileDialog::DoSetSize( x, y, width, height, sizeFlags );
}
wxString FileDialog::GetPath() const
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0)) {
char *f = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget));
wxString path = wxConvFileName->cMB2WX(f);
g_free(f);
return path;
}
else
#endif
return wxGenericFileDialog::GetPath();
char *f = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget));
wxString path = wxConvFileName->cMB2WX(f);
g_free(f);
return path;
}
void FileDialog::GetFilenames(wxArrayString& files) const
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
GetPaths(files);
for (size_t n = 0; n < files.GetCount(); ++n )
{
GetPaths(files);
for (size_t n = 0; n < files.GetCount(); ++n )
{
wxFileName file(files[n]);
files[n] = file.GetFullName();
}
wxFileName file(files[n]);
files[n] = file.GetFullName();
}
else
#endif
wxGenericFileDialog::GetFilenames( files );
}
void FileDialog::GetPaths(wxArrayString& paths) const
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
paths.Empty();
if (gtk_file_chooser_get_select_multiple(GTK_FILE_CHOOSER(m_widget)))
{
paths.Empty();
if (gtk_file_chooser_get_select_multiple(GTK_FILE_CHOOSER(m_widget)))
GSList *gpathsi = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(m_widget));
GSList *gpaths = gpathsi;
while (gpathsi)
{
GSList *gpathsi = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(m_widget));
GSList *gpaths = gpathsi;
while (gpathsi)
{
wxString file(wxConvFileName->cMB2WX((gchar*) gpathsi->data));
paths.Add(file);
g_free(gpathsi->data);
gpathsi = gpathsi->next;
}
g_slist_free(gpaths);
wxString file(wxConvFileName->cMB2WX((gchar*) gpathsi->data));
paths.Add(file);
g_free(gpathsi->data);
gpathsi = gpathsi->next;
}
else
paths.Add(GetPath());
g_slist_free(gpaths);
}
else
#endif
wxGenericFileDialog::GetPaths( paths );
paths.Add(GetPath());
}
void FileDialog::SetMessage(const wxString& message)
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
{
m_message = message;
SetTitle(message);
}
else
#endif
wxGenericFileDialog::SetMessage( message );
m_message = message;
SetTitle(message);
}
void FileDialog::SetPath(const wxString& path)
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
{
if (path.empty()) return;
if (path.empty()) return;
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(path));
}
else
#endif
wxGenericFileDialog::SetPath( path );
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(path));
}
void FileDialog::SetDirectory(const wxString& dir)
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
if (wxDirExists(dir))
{
if (wxDirExists(dir))
{
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(dir));
}
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(dir));
}
else
#endif
wxGenericFileDialog::SetDirectory( dir );
}
wxString FileDialog::GetDirectory() const
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
return wxConvFileName->cMB2WX(gtk_file_chooser_get_current_folder( GTK_FILE_CHOOSER(m_widget) ) );
else
#endif
return wxGenericFileDialog::GetDirectory();
return wxConvFileName->cMB2WX(gtk_file_chooser_get_current_folder( GTK_FILE_CHOOSER(m_widget) ) );
}
void FileDialog::SetFilename(const wxString& name)
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
{
if (GetWindowStyle() & wxFD_SAVE)
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(name));
else
SetPath(wxFileName(GetDirectory(), name).GetFullPath());
}
if (GetWindowStyle() & wxFD_SAVE)
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(m_widget), wxConvFileName->cWX2MB(name));
else
#endif
wxGenericFileDialog::SetFilename( name );
SetPath(wxFileName(GetDirectory(), name).GetFullPath());
}
wxString FileDialog::GetFilename() const
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0)) {
char *f = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget));
wxFileName name(wxConvFileName->cMB2WX(f));
g_free(f);
return name.GetFullName();
}
else
#endif
return wxGenericFileDialog::GetFilename();
char *f = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(m_widget));
wxFileName name(wxConvFileName->cMB2WX(f));
g_free(f);
return name.GetFullName();
}
void FileDialog::SetWildcard(const wxString& wildCard)
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
// parse filters
wxArrayString wildDescriptions, wildFilters;
if (!wxParseCommonDialogsFilter(wildCard, wildDescriptions, wildFilters))
{
// parse filters
wxArrayString wildDescriptions, wildFilters;
if (!wxParseCommonDialogsFilter(wildCard, wildDescriptions, wildFilters))
{
wxFAIL_MSG( wxT("FileDialog::SetWildCard - bad wildcard string") );
}
else
{
// Parsing went fine. Set m_wildCard to be returned by FileDialogBase::GetWildcard
m_wildCard = wildCard;
GtkFileChooser* chooser = GTK_FILE_CHOOSER(m_widget);
// empty current filter list:
GSList* ifilters = gtk_file_chooser_list_filters(chooser);
GSList* filters = ifilters;
while (ifilters)
{
gtk_file_chooser_remove_filter(chooser,GTK_FILE_FILTER(ifilters->data));
ifilters = ifilters->next;
}
g_slist_free(filters);
// add parsed to GtkChooser
for (size_t n = 0; n < wildFilters.GetCount(); ++n)
{
GtkFileFilter* filter = gtk_file_filter_new();
gtk_file_filter_set_name(filter, wxGTK_CONV(wildDescriptions[n]));
wxStringTokenizer exttok(wildFilters[n], wxT(";"));
while (exttok.HasMoreTokens())
{
wxString token = exttok.GetNextToken();
gtk_file_filter_add_pattern(filter, wxGTK_CONV(token));
}
gtk_file_chooser_add_filter(chooser, filter);
}
// Reset the filter index
SetFilterIndex(0);
}
wxFAIL_MSG( wxT("FileDialog::SetWildCard - bad wildcard string") );
}
else
#endif
wxGenericFileDialog::SetWildcard( wildCard );
{
// Parsing went fine. Set m_wildCard to be returned by FileDialogBase::GetWildcard
m_wildCard = wildCard;
GtkFileChooser* chooser = GTK_FILE_CHOOSER(m_widget);
// empty current filter list:
GSList* ifilters = gtk_file_chooser_list_filters(chooser);
GSList* filters = ifilters;
while (ifilters)
{
gtk_file_chooser_remove_filter(chooser,GTK_FILE_FILTER(ifilters->data));
ifilters = ifilters->next;
}
g_slist_free(filters);
// add parsed to GtkChooser
for (size_t n = 0; n < wildFilters.GetCount(); ++n)
{
GtkFileFilter* filter = gtk_file_filter_new();
gtk_file_filter_set_name(filter, wxGTK_CONV(wildDescriptions[n]));
wxStringTokenizer exttok(wildFilters[n], wxT(";"));
while (exttok.HasMoreTokens())
{
wxString token = exttok.GetNextToken();
gtk_file_filter_add_pattern(filter, wxGTK_CONV(token));
}
gtk_file_chooser_add_filter(chooser, filter);
}
// Reset the filter index
SetFilterIndex(0);
}
}
void FileDialog::SetFilterIndex(int filterIndex)
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
gpointer filter;
GtkFileChooser *chooser = GTK_FILE_CHOOSER(m_widget);
GSList *filters = gtk_file_chooser_list_filters(chooser);
filter = g_slist_nth_data(filters, filterIndex);
if (filter != NULL)
{
gpointer filter;
GtkFileChooser *chooser = GTK_FILE_CHOOSER(m_widget);
GSList *filters = gtk_file_chooser_list_filters(chooser);
filter = g_slist_nth_data(filters, filterIndex);
if (filter != NULL)
{
gtk_file_chooser_set_filter(chooser, GTK_FILE_FILTER(filter));
}
else
{
wxFAIL_MSG( wxT("FileDialog::SetFilterIndex - bad filter index") );
}
g_slist_free(filters);
gtk_file_chooser_set_filter(chooser, GTK_FILE_FILTER(filter));
}
else
#endif
wxGenericFileDialog::SetFilterIndex( filterIndex );
{
wxFAIL_MSG( wxT("FileDialog::SetFilterIndex - bad filter index") );
}
g_slist_free(filters);
}
int FileDialog::GetFilterIndex() const
{
#if defined(__WXGTK24__) && (!defined(__WXGPE__))
if (!gtk_check_version(2,4,0))
GtkFileChooser *chooser = GTK_FILE_CHOOSER(m_widget);
GtkFileFilter *filter = gtk_file_chooser_get_filter(chooser);
GSList *filters = gtk_file_chooser_list_filters(chooser);
gint index = g_slist_index(filters, filter);
g_slist_free(filters);
if (index == -1)
{
GtkFileChooser *chooser = GTK_FILE_CHOOSER(m_widget);
GtkFileFilter *filter = gtk_file_chooser_get_filter(chooser);
GSList *filters = gtk_file_chooser_list_filters(chooser);
gint index = g_slist_index(filters, filter);
g_slist_free(filters);
if (index == -1)
{
wxFAIL_MSG( wxT("FileDialog::GetFilterIndex - bad filter index returned by gtk+") );
return 0;
}
else
return index;
wxFAIL_MSG( wxT("FileDialog::GetFilterIndex - bad filter index returned by gtk+") );
return 0;
}
else
#endif
return wxGenericFileDialog::GetFilterIndex();
return index;
}

View File

@@ -14,13 +14,16 @@
#ifndef __FILEDIALOGGTKH__
#define __FILEDIALOGGTKH__
#include "wx/generic/filedlgg.h"
#include "wx/defs.h"
#define GENERIC_FILEDIALOG 1
#include "../generic/FileDialogPrivate.h"
//-------------------------------------------------------------------------
// FileDialog
//-------------------------------------------------------------------------
class FileDialog: public wxGenericFileDialog
class FileDialog: public GenericFileDialog
{
public:
FileDialog() { }

View File

@@ -26,7 +26,7 @@
#define GTK_CHECK_VERSION(a, b, c) 0
#endif
#ifdef __WXGTK20__
#if defined(__WXGTK20__)
#if wxUSE_UNICODE
#define wxGTK_CONV(s) wxConvUTF8.cWX2MB(s)
#define wxGTK_CONV_BACK(s) wxConvUTF8.cMB2WX(s)