mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-18 16:41:14 +02:00
Round 5 of wx3 changes
FileDialog now complete on Linux. Needs some fine tuning on Windows and OSX. Builds with wx3 and gtk2 or gtk3. Still more effect work to do.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,81 +1,89 @@
|
||||
//
|
||||
// Copied from wxWidgets 3.0.2 and modified for Audacity
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: filedlg.h
|
||||
// Name: wx/gtk/filedlg.h
|
||||
// Purpose:
|
||||
// Author: Robert Roebling
|
||||
// Id: $Id: FileDialogPrivate.h,v 1.2 2008-05-24 02:57:39 llucius Exp $
|
||||
// Copyright: (c) 1998 Robert Roebling
|
||||
// Licence: wxWindows licence
|
||||
//
|
||||
// Modified for Audacity to support an additional button on Save dialogs
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _GTK_FILEDIALOGPRIVATE_H_
|
||||
#define _GTK_FILEDIALOGPRIVATE_H_
|
||||
|
||||
#ifndef __FILEDIALOGGTKH__
|
||||
#define __FILEDIALOGGTKH__
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#define GENERIC_FILEDIALOG 1
|
||||
#include "../generic/FileDialogPrivate.h"
|
||||
#include <wx/gtk/filectrl.h> // for wxGtkFileChooser
|
||||
#include <wx/panel.h>
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// FileDialog
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
class FileDialog: public GenericFileDialog
|
||||
class WXDLLIMPEXP_CORE FileDialog: public FileDialogBase
|
||||
{
|
||||
public:
|
||||
FileDialog() { }
|
||||
|
||||
FileDialog(wxWindow *parent,
|
||||
const wxString& message = wxFileSelectorPromptStr,
|
||||
const wxString& defaultDir = wxEmptyString,
|
||||
const wxString& defaultFile = wxEmptyString,
|
||||
const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
|
||||
long style = 0,
|
||||
const wxPoint& pos = wxDefaultPosition);
|
||||
|
||||
virtual ~FileDialog();
|
||||
|
||||
virtual wxString GetPath() const;
|
||||
virtual void GetPaths(wxArrayString& paths) const;
|
||||
virtual wxString GetDirectory() const;
|
||||
virtual wxString GetFilename() const;
|
||||
virtual void GetFilenames(wxArrayString& files) const;
|
||||
virtual int GetFilterIndex() const;
|
||||
|
||||
virtual void SetMessage(const wxString& message);
|
||||
virtual void SetPath(const wxString& path);
|
||||
virtual void SetDirectory(const wxString& dir);
|
||||
virtual void SetFilename(const wxString& name);
|
||||
virtual void SetWildcard(const wxString& wildCard);
|
||||
virtual void SetFilterIndex(int filterIndex);
|
||||
|
||||
virtual int ShowModal();
|
||||
virtual bool Show( bool show = true );
|
||||
|
||||
//private:
|
||||
bool m_destroyed_by_delete;
|
||||
|
||||
// override this from wxTLW since the native
|
||||
// form doesn't have any m_wxwindow
|
||||
virtual void DoSetSize(int x, int y,
|
||||
int width, int height,
|
||||
int sizeFlags = wxSIZE_AUTO);
|
||||
|
||||
virtual void EnableButton(wxString label, fdCallback cb, void *cbdata);
|
||||
virtual void ClickButton(int index);
|
||||
|
||||
FileDialog() { }
|
||||
|
||||
FileDialog(wxWindow *parent,
|
||||
const wxString& message = wxFileSelectorPromptStr,
|
||||
const wxString& defaultDir = wxEmptyString,
|
||||
const wxString& defaultFile = wxEmptyString,
|
||||
const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
|
||||
long style = wxFD_DEFAULT_STYLE,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& sz = wxDefaultSize,
|
||||
const wxString& name = wxFileDialogNameStr);
|
||||
bool Create(wxWindow *parent,
|
||||
const wxString& message = wxFileSelectorPromptStr,
|
||||
const wxString& defaultDir = wxEmptyString,
|
||||
const wxString& defaultFile = wxEmptyString,
|
||||
const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
|
||||
long style = wxFD_DEFAULT_STYLE,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& sz = wxDefaultSize,
|
||||
const wxString& name = wxFileDialogNameStr);
|
||||
virtual ~FileDialog();
|
||||
|
||||
virtual wxString GetPath() const;
|
||||
virtual void GetPaths(wxArrayString& paths) const;
|
||||
virtual wxString GetFilename() const;
|
||||
virtual void GetFilenames(wxArrayString& files) const;
|
||||
virtual int GetFilterIndex() const;
|
||||
|
||||
virtual void SetMessage(const wxString& message);
|
||||
virtual void SetPath(const wxString& path);
|
||||
virtual void SetDirectory(const wxString& dir);
|
||||
virtual void SetFilename(const wxString& name);
|
||||
virtual void SetWildcard(const wxString& wildCard);
|
||||
virtual void SetFilterIndex(int filterIndex);
|
||||
|
||||
virtual int ShowModal();
|
||||
|
||||
virtual bool SupportsExtraControl() const { return true; }
|
||||
|
||||
// Implementation only.
|
||||
void GTKSelectionChanged(const wxString& filename);
|
||||
void GTKFolderChanged();
|
||||
void GTKFilterChanged();
|
||||
|
||||
|
||||
protected:
|
||||
// override this from wxTLW since the native
|
||||
// form doesn't have any m_wxwindow
|
||||
virtual void DoSetSize(int x, int y,
|
||||
int width, int height,
|
||||
int sizeFlags = wxSIZE_AUTO);
|
||||
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(FileDialog)
|
||||
DECLARE_EVENT_TABLE()
|
||||
void OnFakeOk( wxCommandEvent &event );
|
||||
|
||||
wxString m_buttonlabel;
|
||||
fdCallback m_callback;
|
||||
void *m_cbdata;
|
||||
wxArrayString m_patterns;
|
||||
void OnFakeOk( wxCommandEvent &event );
|
||||
void OnSize(wxSizeEvent&);
|
||||
virtual void AddChildGTK(wxWindowGTK* child);
|
||||
|
||||
wxGtkFileChooser m_fc;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(FileDialog)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -1,156 +0,0 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/gtk/private.h
|
||||
// Purpose: wxGTK private macros, functions &c
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by: Leland Lucius
|
||||
// Created: 12.03.02
|
||||
// RCS-ID: $Id: private.h,v 1.3 2008-05-24 02:57:39 llucius Exp $
|
||||
// Copyright: (c) 2002 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
//
|
||||
// Modified for Audacity to support an additional button on Save dialogs
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_GTK_PRIVATE_H_
|
||||
#define _WX_GTK_PRIVATE_H_
|
||||
|
||||
#include <gdk/gdk.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "wx/event.h"
|
||||
|
||||
// fail all version tests if the GTK+ version is so ancient that it doesn't
|
||||
// even have GTK_CHECK_VERSION
|
||||
#ifndef GTK_CHECK_VERSION
|
||||
#define GTK_CHECK_VERSION(a, b, c) 0
|
||||
#endif
|
||||
|
||||
#if defined(__WXGTK20__)
|
||||
#if wxUSE_UNICODE
|
||||
#define wxGTK_CONV(s) wxConvUTF8.cWX2MB(s)
|
||||
#define wxGTK_CONV_BACK(s) wxConvUTF8.cMB2WX(s)
|
||||
#else
|
||||
#define wxGTK_CONV(s) wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC(s) )
|
||||
#define wxGTK_CONV_BACK(s) wxConvLocal.cWC2WX( (wxConvUTF8.cMB2WC( s ) ) )
|
||||
#endif
|
||||
#else
|
||||
#define wxGTK_CONV(s) s.c_str()
|
||||
#define wxGTK_CONV_BACK(s) s
|
||||
#endif
|
||||
|
||||
|
||||
// GTK+ 2.0 compatibility define is broken when used from C++ as it
|
||||
// casts enum to int implicitly
|
||||
#ifdef __WXGTK20__
|
||||
#undef gtk_signal_disconnect_by_func
|
||||
#define gtk_signal_disconnect_by_func(object,func,data) \
|
||||
gtk_signal_compat_matched((object), (func), (data), \
|
||||
(GSignalMatchType)(G_SIGNAL_MATCH_FUNC | \
|
||||
G_SIGNAL_MATCH_DATA), 0)
|
||||
#endif
|
||||
|
||||
// child is not a member of GTK_BUTTON() any more in GTK+ 2.0
|
||||
#ifdef __WXGTK20__
|
||||
#define BUTTON_CHILD(w) GTK_BIN((w))->child
|
||||
#else
|
||||
#define BUTTON_CHILD(w) GTK_BUTTON((w))->child
|
||||
#endif
|
||||
|
||||
// event_window has disappeared from GtkToggleButton in GTK+ 2.0
|
||||
#ifdef __WXGTK20__
|
||||
#define TOGGLE_BUTTON_EVENT_WIN(w) GTK_BUTTON((w))->event_window
|
||||
#else
|
||||
#define TOGGLE_BUTTON_EVENT_WIN(w) GTK_TOGGLE_BUTTON((w))->event_window
|
||||
#endif
|
||||
|
||||
// gtk_editable_{copy|cut|paste}_clipboard() had an extra argument under
|
||||
// previous GTK+ versions but no more
|
||||
#if defined(__WXGTK20__) || (GTK_MINOR_VERSION > 0)
|
||||
#define DUMMY_CLIPBOARD_ARG
|
||||
#else
|
||||
#define DUMMY_CLIPBOARD_ARG ,0
|
||||
#endif
|
||||
|
||||
// _GtkEditable is now private
|
||||
#ifdef __WXGTK20__
|
||||
#define GET_EDITABLE_POS(w) gtk_editable_get_position(GTK_EDITABLE(w))
|
||||
#define SET_EDITABLE_POS(w, pos) \
|
||||
gtk_editable_set_position(GTK_EDITABLE(w), (pos))
|
||||
#else
|
||||
#define GET_EDITABLE_POS(w) GTK_EDITABLE((w))->current_pos
|
||||
#define SET_EDITABLE_POS(w, pos) \
|
||||
GTK_EDITABLE((w))->current_pos = (pos)
|
||||
#endif
|
||||
|
||||
// this GtkNotebook struct field has been renamed
|
||||
#ifdef __WXGTK20__
|
||||
#define NOTEBOOK_PANEL(nb) GTK_NOTEBOOK(nb)->event_window
|
||||
#else
|
||||
#define NOTEBOOK_PANEL(nb) GTK_NOTEBOOK(nb)->panel
|
||||
#endif
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
#define SCROLLBAR_CBACK_ARG
|
||||
#define GET_SCROLL_TYPE(w) GTK_SCROLL_JUMP
|
||||
#else
|
||||
#define SCROLLBAR_CBACK_ARG
|
||||
#define GET_SCROLL_TYPE(w) GTK_RANGE((w))->scroll_type
|
||||
#endif
|
||||
|
||||
// translate a GTK+ scroll type to a wxEventType
|
||||
inline wxEventType GtkScrollTypeToWx(guint scrollType)
|
||||
{
|
||||
wxEventType command;
|
||||
switch ( scrollType )
|
||||
{
|
||||
case GTK_SCROLL_STEP_BACKWARD:
|
||||
command = wxEVT_SCROLL_LINEUP;
|
||||
break;
|
||||
|
||||
case GTK_SCROLL_STEP_FORWARD:
|
||||
command = wxEVT_SCROLL_LINEDOWN;
|
||||
break;
|
||||
|
||||
case GTK_SCROLL_PAGE_BACKWARD:
|
||||
command = wxEVT_SCROLL_PAGEUP;
|
||||
break;
|
||||
|
||||
case GTK_SCROLL_PAGE_FORWARD:
|
||||
command = wxEVT_SCROLL_PAGEDOWN;
|
||||
break;
|
||||
|
||||
default:
|
||||
command = wxEVT_SCROLL_THUMBTRACK;
|
||||
}
|
||||
|
||||
return command;
|
||||
}
|
||||
|
||||
inline wxEventType GtkScrollWinTypeToWx(guint scrollType)
|
||||
{
|
||||
// GtkScrollTypeToWx() returns SCROLL_XXX, not SCROLLWIN_XXX as we need
|
||||
return GtkScrollTypeToWx(scrollType) +
|
||||
wxEVT_SCROLLWIN_TOP - wxEVT_SCROLL_TOP;
|
||||
}
|
||||
|
||||
// Needed for implementing e.g. combobox on wxGTK within a modal dialog.
|
||||
void wxAddGrab(wxWindow* window);
|
||||
void wxRemoveGrab(wxWindow* window);
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
// Escapes string so that it is valid Pango markup XML string:
|
||||
wxString wxEscapeStringForPangoMarkup(const wxString& str);
|
||||
#endif
|
||||
|
||||
// The declaration for gtk_icon_size_lookup was accidentally ifdefed out in
|
||||
// GTK+ 2.1.0 which Sun seem to have shipped with some versions of JDS
|
||||
// for Solaris 9 x86.
|
||||
#ifdef NEED_GTK_ICON_SIZE_LOOKUP
|
||||
extern "C" gboolean gtk_icon_size_lookup (GtkIconSize size,
|
||||
gint *width,
|
||||
gint *height);
|
||||
#endif
|
||||
|
||||
#endif // _WX_GTK_PRIVATE_H_
|
||||
|
Reference in New Issue
Block a user