mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-26 07:39:45 -06:00
Import r67258 of the wxWidgets trunk, which I expect will before
long become wxWidgets 2.9.2, which in turn is expected to be the last 2.9 release before the 3.0 stable release. Since the full wxWidgets distribution is rather large, I have imported only the parts that we use, on a subdirectory basis: art include/wx/*.* include/wx/aui include/wx/cocoa include/wx/generic include/wx/gtk include/wx/meta include/wx/msw include/wx/osx include/wx/persist include/wx/private include/wx/protocol include/wx/unix src/aui src/common src/generic src/gtk src/msw src/osx src/unix git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7380 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
421
Externals/wxWidgets3/include/wx/filepicker.h
vendored
Normal file
421
Externals/wxWidgets3/include/wx/filepicker.h
vendored
Normal file
@ -0,0 +1,421 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/filepicker.h
|
||||
// Purpose: wxFilePickerCtrl, wxDirPickerCtrl base header
|
||||
// Author: Francesco Montorsi
|
||||
// Modified by:
|
||||
// Created: 14/4/2006
|
||||
// Copyright: (c) Francesco Montorsi
|
||||
// RCS-ID: $Id: filepicker.h 58849 2009-02-12 21:09:20Z RR $
|
||||
// Licence: wxWindows Licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_FILEDIRPICKER_H_BASE_
|
||||
#define _WX_FILEDIRPICKER_H_BASE_
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
|
||||
|
||||
#include "wx/pickerbase.h"
|
||||
#include "wx/filename.h"
|
||||
|
||||
class WXDLLIMPEXP_FWD_CORE wxDialog;
|
||||
class WXDLLIMPEXP_FWD_CORE wxFileDirPickerEvent;
|
||||
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxFilePickerWidgetLabel[];
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxFilePickerWidgetNameStr[];
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxFilePickerCtrlNameStr[];
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxFileSelectorPromptStr[];
|
||||
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxDirPickerWidgetLabel[];
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxDirPickerWidgetNameStr[];
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxDirPickerCtrlNameStr[];
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxDirSelectorPromptStr[];
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFileDirPickerEvent: used by wxFilePickerCtrl and wxDirPickerCtrl only
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxFileDirPickerEvent : public wxCommandEvent
|
||||
{
|
||||
public:
|
||||
wxFileDirPickerEvent() {}
|
||||
wxFileDirPickerEvent(wxEventType type, wxObject *generator, int id, const wxString &path)
|
||||
: wxCommandEvent(type, id),
|
||||
m_path(path)
|
||||
{
|
||||
SetEventObject(generator);
|
||||
}
|
||||
|
||||
wxString GetPath() const { return m_path; }
|
||||
void SetPath(const wxString &p) { m_path = p; }
|
||||
|
||||
// default copy ctor, assignment operator and dtor are ok
|
||||
virtual wxEvent *Clone() const { return new wxFileDirPickerEvent(*this); }
|
||||
|
||||
private:
|
||||
wxString m_path;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxFileDirPickerEvent)
|
||||
};
|
||||
|
||||
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEvent );
|
||||
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_DIRPICKER_CHANGED, wxFileDirPickerEvent );
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// event types and macros
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
typedef void (wxEvtHandler::*wxFileDirPickerEventFunction)(wxFileDirPickerEvent&);
|
||||
|
||||
#define wxFileDirPickerEventHandler(func) \
|
||||
wxEVENT_HANDLER_CAST(wxFileDirPickerEventFunction, func)
|
||||
|
||||
#define EVT_FILEPICKER_CHANGED(id, fn) \
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_FILEPICKER_CHANGED, id, wxFileDirPickerEventHandler(fn))
|
||||
#define EVT_DIRPICKER_CHANGED(id, fn) \
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_DIRPICKER_CHANGED, id, wxFileDirPickerEventHandler(fn))
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFileDirPickerWidgetBase: a generic abstract interface which must be
|
||||
// implemented by controls used by wxFileDirPickerCtrlBase
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxFileDirPickerWidgetBase
|
||||
{
|
||||
public:
|
||||
wxFileDirPickerWidgetBase() { }
|
||||
virtual ~wxFileDirPickerWidgetBase() { }
|
||||
|
||||
wxString GetPath() const { return m_path; }
|
||||
virtual void SetPath(const wxString &str) { m_path=str; }
|
||||
|
||||
// returns the picker widget cast to wxControl
|
||||
virtual wxControl *AsControl() = 0;
|
||||
|
||||
protected:
|
||||
virtual void UpdateDialogPath(wxDialog *) = 0;
|
||||
virtual void UpdatePathFromDialog(wxDialog *) = 0;
|
||||
|
||||
wxString m_path;
|
||||
};
|
||||
|
||||
// Styles which must be supported by all controls implementing wxFileDirPickerWidgetBase
|
||||
// NB: these styles must be defined to carefully-chosen values to
|
||||
// avoid conflicts with wxButton's styles
|
||||
|
||||
#define wxFLP_OPEN 0x0400
|
||||
#define wxFLP_SAVE 0x0800
|
||||
#define wxFLP_OVERWRITE_PROMPT 0x1000
|
||||
#define wxFLP_FILE_MUST_EXIST 0x2000
|
||||
#define wxFLP_CHANGE_DIR 0x4000
|
||||
|
||||
// NOTE: wxMULTIPLE is not supported !
|
||||
|
||||
|
||||
#define wxDIRP_DIR_MUST_EXIST 0x0008
|
||||
#define wxDIRP_CHANGE_DIR 0x0010
|
||||
|
||||
|
||||
// map platform-dependent controls which implement the wxFileDirPickerWidgetBase
|
||||
// under the name "wxFilePickerWidget" and "wxDirPickerWidget".
|
||||
// NOTE: wxFileDirPickerCtrlBase will allocate a wx{File|Dir}PickerWidget and this
|
||||
// requires that all classes being mapped as wx{File|Dir}PickerWidget have the
|
||||
// same prototype for the contructor...
|
||||
// since GTK >= 2.6, there is GtkFileButton
|
||||
#if defined(__WXGTK26__) && !defined(__WXUNIVERSAL__)
|
||||
#include "wx/gtk/filepicker.h"
|
||||
#define wxFilePickerWidget wxFileButton
|
||||
#define wxDirPickerWidget wxDirButton
|
||||
#else
|
||||
#include "wx/generic/filepickerg.h"
|
||||
#define wxFilePickerWidget wxGenericFileButton
|
||||
#define wxDirPickerWidget wxGenericDirButton
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFileDirPickerCtrlBase
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxFileDirPickerCtrlBase : public wxPickerBase
|
||||
{
|
||||
public:
|
||||
wxFileDirPickerCtrlBase() : m_bIgnoreNextTextCtrlUpdate(false) {}
|
||||
|
||||
protected:
|
||||
// NB: no default values since this function will never be used
|
||||
// directly by the user and derived classes wouldn't use them
|
||||
bool CreateBase(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& path,
|
||||
const wxString &message,
|
||||
const wxString &wildcard,
|
||||
const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
long style,
|
||||
const wxValidator& validator,
|
||||
const wxString& name);
|
||||
|
||||
public: // public API
|
||||
|
||||
wxString GetPath() const;
|
||||
void SetPath(const wxString &str);
|
||||
|
||||
public: // internal functions
|
||||
|
||||
void UpdatePickerFromTextCtrl();
|
||||
void UpdateTextCtrlFromPicker();
|
||||
|
||||
// event handler for our picker
|
||||
void OnFileDirChange(wxFileDirPickerEvent &);
|
||||
|
||||
// Returns TRUE if the current path is a valid one
|
||||
// (i.e. a valid file for a wxFilePickerWidget or a valid
|
||||
// folder for a wxDirPickerWidget).
|
||||
virtual bool CheckPath(const wxString &str) const = 0;
|
||||
|
||||
// TRUE if any textctrl change should update the current working directory
|
||||
virtual bool IsCwdToUpdate() const = 0;
|
||||
|
||||
// Returns the event type sent by this picker
|
||||
virtual wxEventType GetEventType() const = 0;
|
||||
|
||||
virtual void DoConnect( wxControl *sender, wxFileDirPickerCtrlBase *eventSink ) = 0;
|
||||
|
||||
// Returns the filtered value currently placed in the text control (if present).
|
||||
virtual wxString GetTextCtrlValue() const = 0;
|
||||
|
||||
protected:
|
||||
// creates the picker control
|
||||
virtual
|
||||
wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
|
||||
const wxString& path,
|
||||
const wxString& message,
|
||||
const wxString& wildcard) = 0;
|
||||
|
||||
protected:
|
||||
|
||||
// true if the next UpdateTextCtrl() call is to ignore
|
||||
bool m_bIgnoreNextTextCtrlUpdate;
|
||||
|
||||
// m_picker object as wxFileDirPickerWidgetBase interface
|
||||
wxFileDirPickerWidgetBase *m_pickerIface;
|
||||
};
|
||||
|
||||
#endif // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
|
||||
|
||||
|
||||
#if wxUSE_FILEPICKERCTRL
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFilePickerCtrl: platform-independent class which embeds the
|
||||
// platform-dependent wxFilePickerWidget and, if wxFLP_USE_TEXTCTRL style is
|
||||
// used, a textctrl next to it.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define wxFLP_USE_TEXTCTRL (wxPB_USE_TEXTCTRL)
|
||||
|
||||
#ifdef __WXGTK__
|
||||
// GTK apps usually don't have a textctrl next to the picker
|
||||
#define wxFLP_DEFAULT_STYLE (wxFLP_OPEN|wxFLP_FILE_MUST_EXIST)
|
||||
#else
|
||||
#define wxFLP_DEFAULT_STYLE (wxFLP_USE_TEXTCTRL|wxFLP_OPEN|wxFLP_FILE_MUST_EXIST)
|
||||
#endif
|
||||
|
||||
class WXDLLIMPEXP_CORE wxFilePickerCtrl : public wxFileDirPickerCtrlBase
|
||||
{
|
||||
public:
|
||||
wxFilePickerCtrl() {}
|
||||
|
||||
wxFilePickerCtrl(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& path = wxEmptyString,
|
||||
const wxString& message = wxFileSelectorPromptStr,
|
||||
const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxFLP_DEFAULT_STYLE,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxFilePickerCtrlNameStr)
|
||||
{
|
||||
Create(parent, id, path, message, wildcard, pos, size, style,
|
||||
validator, name);
|
||||
}
|
||||
|
||||
bool Create(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& path = wxEmptyString,
|
||||
const wxString& message = wxFileSelectorPromptStr,
|
||||
const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxFLP_DEFAULT_STYLE,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxFilePickerCtrlNameStr)
|
||||
{
|
||||
return wxFileDirPickerCtrlBase::CreateBase(parent, id, path,
|
||||
message, wildcard,
|
||||
pos, size, style,
|
||||
validator, name);
|
||||
}
|
||||
|
||||
void SetFileName(const wxFileName &filename)
|
||||
{ SetPath(filename.GetFullPath()); }
|
||||
|
||||
wxFileName GetFileName() const
|
||||
{ return wxFileName(GetPath()); }
|
||||
|
||||
public: // overrides
|
||||
|
||||
// return true if the given path is valid for this control
|
||||
bool CheckPath(const wxString& path) const;
|
||||
|
||||
// return the text control value in canonical form
|
||||
wxString GetTextCtrlValue() const;
|
||||
|
||||
bool IsCwdToUpdate() const
|
||||
{ return HasFlag(wxFLP_CHANGE_DIR); }
|
||||
|
||||
wxEventType GetEventType() const
|
||||
{ return wxEVT_COMMAND_FILEPICKER_CHANGED; }
|
||||
|
||||
virtual void DoConnect( wxControl *sender, wxFileDirPickerCtrlBase *eventSink )
|
||||
{
|
||||
sender->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED,
|
||||
wxFileDirPickerEventHandler( wxFileDirPickerCtrlBase::OnFileDirChange ),
|
||||
NULL, eventSink );
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
virtual
|
||||
wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
|
||||
const wxString& path,
|
||||
const wxString& message,
|
||||
const wxString& wildcard)
|
||||
{
|
||||
return new wxFilePickerWidget(parent, wxID_ANY,
|
||||
wxGetTranslation(wxFilePickerWidgetLabel),
|
||||
path, message, wildcard,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
GetPickerStyle(GetWindowStyle()));
|
||||
}
|
||||
|
||||
// extracts the style for our picker from wxFileDirPickerCtrlBase's style
|
||||
long GetPickerStyle(long style) const
|
||||
{
|
||||
return (style & (wxFLP_OPEN|wxFLP_SAVE|wxFLP_OVERWRITE_PROMPT|
|
||||
wxFLP_FILE_MUST_EXIST|wxFLP_CHANGE_DIR|wxFLP_USE_TEXTCTRL));
|
||||
}
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxFilePickerCtrl)
|
||||
};
|
||||
|
||||
#endif // wxUSE_FILEPICKERCTRL
|
||||
|
||||
|
||||
#if wxUSE_DIRPICKERCTRL
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDirPickerCtrl: platform-independent class which embeds the
|
||||
// platform-dependent wxDirPickerWidget and eventually a textctrl
|
||||
// (see wxDIRP_USE_TEXTCTRL) next to it.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define wxDIRP_USE_TEXTCTRL (wxPB_USE_TEXTCTRL)
|
||||
|
||||
#ifdef __WXGTK__
|
||||
// GTK apps usually don't have a textctrl next to the picker
|
||||
#define wxDIRP_DEFAULT_STYLE (wxDIRP_DIR_MUST_EXIST)
|
||||
#else
|
||||
#define wxDIRP_DEFAULT_STYLE (wxDIRP_USE_TEXTCTRL|wxDIRP_DIR_MUST_EXIST)
|
||||
#endif
|
||||
|
||||
class WXDLLIMPEXP_CORE wxDirPickerCtrl : public wxFileDirPickerCtrlBase
|
||||
{
|
||||
public:
|
||||
wxDirPickerCtrl() {}
|
||||
|
||||
wxDirPickerCtrl(wxWindow *parent, wxWindowID id,
|
||||
const wxString& path = wxEmptyString,
|
||||
const wxString& message = wxDirSelectorPromptStr,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDIRP_DEFAULT_STYLE,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxDirPickerCtrlNameStr)
|
||||
{
|
||||
Create(parent, id, path, message, pos, size, style, validator, name);
|
||||
}
|
||||
|
||||
bool Create(wxWindow *parent, wxWindowID id,
|
||||
const wxString& path = wxEmptyString,
|
||||
const wxString& message = wxDirSelectorPromptStr,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDIRP_DEFAULT_STYLE,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxDirPickerCtrlNameStr)
|
||||
{
|
||||
return wxFileDirPickerCtrlBase::CreateBase
|
||||
(
|
||||
parent, id, path, message, wxEmptyString,
|
||||
pos, size, style, validator, name
|
||||
);
|
||||
}
|
||||
|
||||
void SetDirName(const wxFileName &dirname)
|
||||
{ SetPath(dirname.GetPath()); }
|
||||
|
||||
wxFileName GetDirName() const
|
||||
{ return wxFileName::DirName(GetPath()); }
|
||||
|
||||
public: // overrides
|
||||
|
||||
bool CheckPath(const wxString &path) const;
|
||||
|
||||
wxString GetTextCtrlValue() const;
|
||||
|
||||
bool IsCwdToUpdate() const
|
||||
{ return HasFlag(wxDIRP_CHANGE_DIR); }
|
||||
|
||||
wxEventType GetEventType() const
|
||||
{ return wxEVT_COMMAND_DIRPICKER_CHANGED; }
|
||||
|
||||
virtual void DoConnect( wxControl *sender, wxFileDirPickerCtrlBase *eventSink )
|
||||
{
|
||||
sender->Connect( wxEVT_COMMAND_DIRPICKER_CHANGED,
|
||||
wxFileDirPickerEventHandler( wxFileDirPickerCtrlBase::OnFileDirChange ),
|
||||
NULL, eventSink );
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
virtual
|
||||
wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
|
||||
const wxString& path,
|
||||
const wxString& message,
|
||||
const wxString& WXUNUSED(wildcard))
|
||||
{
|
||||
return new wxDirPickerWidget(parent, wxID_ANY,
|
||||
wxGetTranslation(wxDirPickerWidgetLabel),
|
||||
path, message,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
GetPickerStyle(GetWindowStyle()));
|
||||
}
|
||||
|
||||
// extracts the style for our picker from wxFileDirPickerCtrlBase's style
|
||||
long GetPickerStyle(long style) const
|
||||
{ return (style & (wxDIRP_DIR_MUST_EXIST|wxDIRP_CHANGE_DIR|wxDIRP_USE_TEXTCTRL)); }
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxDirPickerCtrl)
|
||||
};
|
||||
|
||||
#endif // wxUSE_DIRPICKERCTRL
|
||||
|
||||
#endif // _WX_FILEDIRPICKER_H_BASE_
|
||||
|
Reference in New Issue
Block a user