[ 1823588 ] gtk filedlg - droping support for gtk 2.2

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49649 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-11-05 18:43:14 +00:00
parent e815120e41
commit 700d08c109
7 changed files with 47 additions and 140 deletions

View File

@@ -3,11 +3,10 @@
You have downloaded the GTK+ port of the wxWidgets GUI library. You have downloaded the GTK+ port of the wxWidgets GUI library.
It is recommended to use at least GTK+ 2.2.3 to get the It is required to use at least GTK+ 2.4 and some features are
most out of wxWidgets and some features are only available only available when using GTK+ 2.8 or higher. Note that if you
when using GTK+ 2.4 or even from GTK+ 2.8. Note that if you
compile wxWidgets against GTK+ 2.8 your app will still work compile wxWidgets against GTK+ 2.8 your app will still work
with older GTK+ version down to version 2.2 as wxWidgets with older GTK+ version down to version 2.4 as wxWidgets
tests for the presence of newer features at run-time and it tests for the presence of newer features at run-time and it
will fall back to a generic implementation if these features will fall back to a generic implementation if these features
are not present in the GTK+ version used. are not present in the GTK+ version used.

View File

@@ -101,10 +101,7 @@ new file dialog</FONT></FONT></P>
<P>Previously, wxGTK application made use of a file dialog written in <P>Previously, wxGTK application made use of a file dialog written in
wxWidgets itself, since the default GTK+ file dialog was simplistic wxWidgets itself, since the default GTK+ file dialog was simplistic
to say the least. This has changed with version GTK+ 2.4, where a to say the least. This has changed with version GTK+ 2.4, where a
nice and powerful dialog has been added. We now query the GTK+ nice and powerful dialog has been added. wxGTK is using it now.</P>
library, if the new file dialog functions are available and wxGTK
applications will show and use them if that is the case, otherwise,
they will fall back to the old generic one.</P>
<P STYLE="margin-top: 0.42cm; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>File <P STYLE="margin-top: 0.42cm; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>File
configuration and preferences</FONT></FONT></P> configuration and preferences</FONT></FONT></P>
<P>The usual Unix way of saving file configuration and preferences is <P>The usual Unix way of saving file configuration and preferences is

View File

@@ -194,9 +194,6 @@ wxSaveFileSelector(const wxString& what,
#include "wx/motif/filedlg.h" #include "wx/motif/filedlg.h"
#elif defined(__WXGTK24__) #elif defined(__WXGTK24__)
#include "wx/gtk/filedlg.h" // GTK+ > 2.4 has native version #include "wx/gtk/filedlg.h" // GTK+ > 2.4 has native version
#elif defined(__WXGTK20__)
#define wxHAS_GENERIC_FILEDIALOG
#include "wx/generic/filedlgg.h"
#elif defined(__WXGTK__) #elif defined(__WXGTK__)
#include "wx/gtk1/filedlg.h" #include "wx/gtk1/filedlg.h"
#elif defined(__WXMAC__) #elif defined(__WXMAC__)

View File

@@ -9,10 +9,12 @@
// Licence: wxWindows licence // Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#ifndef FILECTRL_H
#define FILECTRL_H #ifndef _WX_GTK_FILECTRL_H_
#define _WX_GTK_FILECTRL_H_
#include "wx/control.h" #include "wx/control.h"
#include "wx/filectrl.h"
extern WXDLLEXPORT_DATA(const wxChar) wxFileSelectorDefaultWildcardStr[]; extern WXDLLEXPORT_DATA(const wxChar) wxFileSelectorDefaultWildcardStr[];
@@ -115,5 +117,5 @@ protected:
#endif // wxUSE_FILECTRL #endif // wxUSE_FILECTRL
#endif // FILECTRL_H #endif // _WX_GTK_FILECTRL_H_

View File

@@ -10,14 +10,13 @@
#ifndef __GTKFILEDLGH__ #ifndef __GTKFILEDLGH__
#define __GTKFILEDLGH__ #define __GTKFILEDLGH__
#include "wx/generic/filedlgg.h"
#include "wx/gtk/filectrl.h" // for wxGtkFileChooser #include "wx/gtk/filectrl.h" // for wxGtkFileChooser
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
// wxFileDialog // wxFileDialog
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxFileDialog: public wxGenericFileDialog class WXDLLIMPEXP_CORE wxFileDialog: public wxFileDialogBase
{ {
public: public:
wxFileDialog() { } wxFileDialog() { }

View File

@@ -369,18 +369,13 @@ bool wxGtkFileCtrl::SetDirectory( const wxString& dir )
bool wxGtkFileCtrl::SetFilename( const wxString& name ) bool wxGtkFileCtrl::SetFilename( const wxString& name )
{ {
if ( !gtk_check_version( 2, 4, 0 ) ) if ( HasFlag( wxFC_SAVE ) )
{ {
if ( HasFlag( wxFC_SAVE ) ) gtk_file_chooser_set_current_name( m_fcWidget, wxGTK_CONV( name ) );
{ return true;
gtk_file_chooser_set_current_name( m_fcWidget, wxGTK_CONV( name ) );
return true;
}
else
return SetPath( wxFileName( GetDirectory(), name ).GetFullPath() );
} }
else
return false; return SetPath( wxFileName( GetDirectory(), name ).GetFullPath() );
} }
void wxGtkFileCtrl::SetWildcard( const wxString& wildCard ) void wxGtkFileCtrl::SetWildcard( const wxString& wildCard )
@@ -422,12 +417,8 @@ void wxGtkFileCtrl::GetFilenames( wxArrayString& files ) const
void wxGtkFileCtrl::ShowHidden(bool show) void wxGtkFileCtrl::ShowHidden(bool show)
{ {
#ifdef __WXGTK26__ // gtk_file_chooser_set_show_hidden() is new in 2.6
gtk_file_chooser_set_show_hidden(m_fcWidget, show);
#else
// gtk_file_chooser_set_show_hidden only in 2.6
g_object_set (G_OBJECT (m_fcWidget), "show-hidden", show, NULL); g_object_set (G_OBJECT (m_fcWidget), "show-hidden", show, NULL);
#endif
} }
#endif #endif

View File

@@ -10,7 +10,7 @@
// For compilers that support precompilation, includes "wx.h". // For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h" #include "wx/wxprec.h"
#if wxUSE_FILEDLG && defined(__WXGTK24__) #if wxUSE_FILEDLG
#include "wx/filedlg.h" #include "wx/filedlg.h"
@@ -112,7 +112,6 @@ static void gtk_filedialog_response_callback(GtkWidget *w,
static void gtk_filedialog_update_preview_callback(GtkFileChooser *chooser, static void gtk_filedialog_update_preview_callback(GtkFileChooser *chooser,
gpointer user_data) gpointer user_data)
{ {
#if GTK_CHECK_VERSION(2,4,0)
GtkWidget *preview = GTK_WIDGET(user_data); GtkWidget *preview = GTK_WIDGET(user_data);
wxGtkString filename(gtk_file_chooser_get_preview_filename(chooser)); wxGtkString filename(gtk_file_chooser_get_preview_filename(chooser));
@@ -128,10 +127,6 @@ static void gtk_filedialog_update_preview_callback(GtkFileChooser *chooser,
g_object_unref (pixbuf); g_object_unref (pixbuf);
gtk_file_chooser_set_preview_widget_active(chooser, have_preview); gtk_file_chooser_set_preview_widget_active(chooser, have_preview);
#else
wxUnusedVar(chooser);
wxUnusedVar(user_data);
#endif // GTK+ 2.4+
} }
} // extern "C" } // extern "C"
@@ -141,9 +136,9 @@ static void gtk_filedialog_update_preview_callback(GtkFileChooser *chooser,
// wxFileDialog // wxFileDialog
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxFileDialog,wxGenericFileDialog) IMPLEMENT_DYNAMIC_CLASS(wxFileDialog,wxFileDialogBase)
BEGIN_EVENT_TABLE(wxFileDialog,wxGenericFileDialog) BEGIN_EVENT_TABLE(wxFileDialog,wxFileDialogBase)
EVT_BUTTON(wxID_OK, wxFileDialog::OnFakeOk) EVT_BUTTON(wxID_OK, wxFileDialog::OnFakeOk)
END_EVENT_TABLE() END_EVENT_TABLE()
@@ -154,18 +149,16 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
long style, const wxPoint& pos, long style, const wxPoint& pos,
const wxSize& sz, const wxSize& sz,
const wxString& name) const wxString& name)
: wxGenericFileDialog(parent, message, defaultDir, defaultFileName, : wxFileDialogBase()
wildCard, style, pos, sz, name, true )
{ {
if (gtk_check_version(2,4,0)) parent = GetParentForModalDialog(parent);
if (!wxFileDialogBase::Create(parent, message, defaultDir, defaultFileName,
wildCard, style, pos, sz, name))
{ {
wxGenericFileDialog::Create( parent, message, defaultDir,
defaultFileName, wildCard, style, pos );
return; return;
} }
parent = GetParentForModalDialog(parent);
if (!PreCreation(parent, pos, wxDefaultSize) || if (!PreCreation(parent, pos, wxDefaultSize) ||
!CreateBase(parent, wxID_ANY, pos, wxDefaultSize, style, !CreateBase(parent, wxID_ANY, pos, wxDefaultSize, style,
wxDefaultValidator, wxT("filedialog"))) wxDefaultValidator, wxT("filedialog")))
@@ -271,7 +264,6 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
} }
} }
#if GTK_CHECK_VERSION(2,4,0)
if ( style & wxFD_PREVIEW ) if ( style & wxFD_PREVIEW )
{ {
GtkWidget *previewImage = gtk_image_new(); GtkWidget *previewImage = gtk_image_new();
@@ -282,162 +274,92 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
G_CALLBACK(gtk_filedialog_update_preview_callback), G_CALLBACK(gtk_filedialog_update_preview_callback),
previewImage); previewImage);
} }
#endif // GTK+ 2.4+
} }
void wxFileDialog::OnFakeOk( wxCommandEvent &event ) void wxFileDialog::OnFakeOk( wxCommandEvent &event )
{ {
if (!gtk_check_version(2,4,0)) EndDialog(wxID_OK);
EndDialog(wxID_OK);
else
wxGenericFileDialog::OnOk( event );
} }
int wxFileDialog::ShowModal() int wxFileDialog::ShowModal()
{ {
if (!gtk_check_version(2,4,0)) return wxDialog::ShowModal();
return wxDialog::ShowModal();
else
return wxGenericFileDialog::ShowModal();
} }
bool wxFileDialog::Show( bool show ) bool wxFileDialog::Show( bool show )
{ {
if (!gtk_check_version(2,4,0)) return wxDialog::Show( show );
return wxDialog::Show( show );
else
return wxGenericFileDialog::Show( show );
} }
void wxFileDialog::DoSetSize(int x, int y, int width, int height, int sizeFlags ) void wxFileDialog::DoSetSize(int WXUNUSED(x), int WXUNUSED(y),
int WXUNUSED(width), int WXUNUSED(height),
int WXUNUSED(sizeFlags))
{ {
if (!m_wxwindow)
return;
else
wxGenericFileDialog::DoSetSize( x, y, width, height, sizeFlags );
} }
wxString wxFileDialog::GetPath() const wxString wxFileDialog::GetPath() const
{ {
if (!gtk_check_version(2,4,0)) return m_fc.GetPath();
{
return m_fc.GetPath();
}
return wxGenericFileDialog::GetPath();
} }
void wxFileDialog::GetFilenames(wxArrayString& files) const void wxFileDialog::GetFilenames(wxArrayString& files) const
{ {
if (!gtk_check_version(2,4,0)) m_fc.GetFilenames( files );
{
m_fc.GetFilenames( files );
}
else
wxGenericFileDialog::GetFilenames( files );
} }
void wxFileDialog::GetPaths(wxArrayString& paths) const void wxFileDialog::GetPaths(wxArrayString& paths) const
{ {
if (!gtk_check_version(2,4,0)) m_fc.GetPaths( paths );
{
m_fc.GetPaths( paths );
}
else
wxGenericFileDialog::GetPaths( paths );
} }
void wxFileDialog::SetMessage(const wxString& message) void wxFileDialog::SetMessage(const wxString& message)
{ {
if (!gtk_check_version(2,4,0)) m_message = message;
{ SetTitle(message);
m_message = message;
SetTitle(message);
}
else
wxGenericFileDialog::SetMessage( message );
} }
void wxFileDialog::SetPath(const wxString& path) void wxFileDialog::SetPath(const wxString& path)
{ {
if (!gtk_check_version(2,4,0)) m_fc.SetPath( path );
{
m_fc.SetPath( path );
}
else
wxGenericFileDialog::SetPath( path );
} }
void wxFileDialog::SetDirectory(const wxString& dir) void wxFileDialog::SetDirectory(const wxString& dir)
{ {
if (!gtk_check_version(2,4,0)) m_fc.SetDirectory( dir );
{
m_fc.SetDirectory( dir );
}
else
wxGenericFileDialog::SetDirectory( dir );
} }
wxString wxFileDialog::GetDirectory() const wxString wxFileDialog::GetDirectory() const
{ {
if (!gtk_check_version(2,4,0)) return m_fc.GetDirectory();
{
m_fc.GetDirectory();
}
return wxGenericFileDialog::GetDirectory();
} }
void wxFileDialog::SetFilename(const wxString& name) void wxFileDialog::SetFilename(const wxString& name)
{ {
if (!gtk_check_version(2,4,0)) if (HasFdFlag(wxFD_SAVE))
{ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(m_widget), wxGTK_CONV(name));
if (HasFdFlag(wxFD_SAVE))
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(m_widget), wxGTK_CONV(name));
else
SetPath(wxFileName(GetDirectory(), name).GetFullPath());
}
else else
wxGenericFileDialog::SetFilename( name ); SetPath(wxFileName(GetDirectory(), name).GetFullPath());
} }
wxString wxFileDialog::GetFilename() const wxString wxFileDialog::GetFilename() const
{ {
if (!gtk_check_version(2,4,0)) return m_fc.GetFilename();
return m_fc.GetFilename();
else
return wxGenericFileDialog::GetFilename();
} }
void wxFileDialog::SetWildcard(const wxString& wildCard) void wxFileDialog::SetWildcard(const wxString& wildCard)
{ {
if (!gtk_check_version(2,4,0)) m_fc.SetWildcard( wildCard );
{
m_fc.SetWildcard( wildCard );
}
else
wxGenericFileDialog::SetWildcard( wildCard );
} }
void wxFileDialog::SetFilterIndex(int filterIndex) void wxFileDialog::SetFilterIndex(int filterIndex)
{ {
if (!gtk_check_version(2,4,0)) m_fc.SetFilterIndex( filterIndex);
{
m_fc.SetFilterIndex( filterIndex);
}
else
wxGenericFileDialog::SetFilterIndex( filterIndex );
} }
int wxFileDialog::GetFilterIndex() const int wxFileDialog::GetFilterIndex() const
{ {
if (!gtk_check_version(2,4,0)) return m_fc.GetFilterIndex();
{
return m_fc.GetFilterIndex();
}
else
return wxGenericFileDialog::GetFilterIndex();
} }
#endif // wxUSE_FILEDLG && __WXGTK24__ #endif // wxUSE_FILEDLG