wxWidgets/interface/wx/dirctrl.h
Vadim Zeitlin 4d623b67ee Add wxEVT_DIRCTRL_FILEACTIVATED wxDirCtrl event.
Allow processing double clicks on the files in the directory control.

Closes #15208.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74003 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-05-16 14:33:07 +00:00

286 lines
8.2 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: dirctrl.h
// Purpose: interface of wxGenericDirCtrl
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
enum
{
// Only allow directory viewing/selection, no files
wxDIRCTRL_DIR_ONLY = 0x0010,
// When setting the default path, select the first file in the directory
wxDIRCTRL_SELECT_FIRST = 0x0020,
// Show the filter list
wxDIRCTRL_SHOW_FILTERS = 0x0040,
// Use 3D borders on internal controls
wxDIRCTRL_3D_INTERNAL = 0x0080,
// Editable labels
wxDIRCTRL_EDIT_LABELS = 0x0100,
// Allow multiple selection
wxDIRCTRL_MULTIPLE = 0x0200
};
/**
@class wxGenericDirCtrl
This control can be used to place a directory listing (with optional
files) on an arbitrary window.
The control contains a wxTreeCtrl window representing the directory
hierarchy, and optionally, a wxChoice window containing a list of filters.
@beginStyleTable
@style{wxDIRCTRL_DIR_ONLY}
Only show directories, and not files.
@style{wxDIRCTRL_3D_INTERNAL}
Use 3D borders for internal controls.
@style{wxDIRCTRL_SELECT_FIRST}
When setting the default path, select the first file in the
directory.
@style{wxDIRCTRL_SHOW_FILTERS}
Show the drop-down filter list.
@style{wxDIRCTRL_EDIT_LABELS}
Allow the folder and file labels to be editable.
@style{wxDIRCTRL_MULTIPLE}
Allows multiple files and folders to be selected.
@endStyleTable
@library{wxcore}
@category{ctrl}
@appearance{genericdirctrl}
@event{EVT_DIRCTRL_SELECTIONCHANGED(id, func)}
Selected directory has changed.
Processes a @c wxEVT_DIRCTRL_SELECTIONCHANGED event type.
Notice that this event is generated even for the changes done by the
program itself and not only those done by the user.
@since 2.9.5
@event{EVT_DIRCTRL_FILEACTIVATED(id, func)}
The user activated a file by double-clicking or pressing Enter.
@since 2.9.5
*/
class wxGenericDirCtrl : public wxControl
{
public:
/**
Default constructor.
*/
wxGenericDirCtrl();
/**
Main constructor.
@param parent
Parent window.
@param id
Window identifier.
@param dir
Initial folder.
@param pos
Position.
@param size
Size.
@param style
Window style. Please see wxGenericDirCtrl for a list of possible
styles.
@param filter
A filter string, using the same syntax as that for wxFileDialog.
This may be empty if filters are not being used. Example:
@c "All files (*.*)|*.*|JPEG files (*.jpg)|*.jpg"
@param defaultFilter
The zero-indexed default filter setting.
@param name
The window name.
*/
wxGenericDirCtrl(wxWindow* parent, const wxWindowID id = wxID_ANY,
const wxString& dir = wxDirDialogDefaultFolderStr,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDIRCTRL_3D_INTERNAL,
const wxString& filter = wxEmptyString,
int defaultFilter = 0,
const wxString& name = wxTreeCtrlNameStr);
/**
Destructor.
*/
virtual ~wxGenericDirCtrl();
/**
Collapse the given @a path.
*/
virtual bool CollapsePath(const wxString& path);
/**
Collapses the entire tree.
*/
virtual void CollapseTree();
/**
Create function for two-step construction. See wxGenericDirCtrl() for
details.
*/
bool Create(wxWindow* parent, const wxWindowID id = wxID_ANY,
const wxString& dir = wxDirDialogDefaultFolderStr,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDIRCTRL_3D_INTERNAL,
const wxString& filter = wxEmptyString, int defaultFilter = 0,
const wxString& name = wxTreeCtrlNameStr);
/**
Tries to expand as much of the given @a path as possible, so that the
filename or directory is visible in the tree control.
*/
virtual bool ExpandPath(const wxString& path);
/**
Gets the default path.
*/
virtual wxString GetDefaultPath() const;
/**
Gets selected filename path only (else empty string).
This function doesn't count a directory as a selection.
*/
virtual wxString GetFilePath() const;
/**
Fills the array @a paths with the currently selected filepaths.
This function doesn't count a directory as a selection.
*/
virtual void GetFilePaths(wxArrayString& paths) const;
/**
Returns the filter string.
*/
virtual wxString GetFilter() const;
/**
Returns the current filter index (zero-based).
*/
virtual int GetFilterIndex() const;
/**
Returns a pointer to the filter list control (if present).
*/
virtual wxDirFilterListCtrl* GetFilterListCtrl() const;
/**
Gets the currently-selected directory or filename.
*/
virtual wxString GetPath() const;
/**
Gets the path corresponding to the given tree control item.
@since 2.9.5
*/
wxString GetPath(wxTreeItemId itemId) const;
/**
Fills the array @a paths with the selected directories and filenames.
*/
virtual void GetPaths(wxArrayString& paths) const;
/**
Returns the root id for the tree control.
*/
virtual wxTreeItemId GetRootId();
/**
Returns a pointer to the tree control.
*/
virtual wxTreeCtrl* GetTreeCtrl() const;
/**
Initializes variables.
*/
virtual void Init();
/**
Collapse and expand the tree, thus re-creating it from scratch. May be
used to update the displayed directory content.
*/
virtual void ReCreateTree();
/**
Sets the default path.
*/
virtual void SetDefaultPath(const wxString& path);
/**
Sets the filter string.
*/
virtual void SetFilter(const wxString& filter);
/**
Sets the current filter index (zero-based).
*/
virtual void SetFilterIndex(int n);
/**
Sets the current path.
*/
virtual void SetPath(const wxString& path);
/**
@param show
If @true, hidden folders and files will be displayed by the
control. If @false, they will not be displayed.
*/
virtual void ShowHidden(bool show);
/**
Selects the given item.
In multiple selection controls, can be also used to deselect a
currently selected item if the value of @a select is false.
Existing selections are not changed. Only visible items can be
(de)selected, otherwise use ExpandPath().
*/
virtual void SelectPath(const wxString& path, bool select = true);
/**
Selects only the specified paths, clearing any previous selection.
Only supported when wxDIRCTRL_MULTIPLE is set.
*/
virtual void SelectPaths(const wxArrayString& paths);
/**
Removes the selection from all currently selected items.
*/
virtual void UnselectAll();
};
class wxDirFilterListCtrl: public wxChoice
{
public:
wxDirFilterListCtrl();
wxDirFilterListCtrl(wxGenericDirCtrl* parent, const wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0);
bool Create(wxGenericDirCtrl* parent, const wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0);
virtual ~wxDirFilterListCtrl() {}
void Init();
//// Operations
void FillFilterList(const wxString& filter, int defaultFilter);
};
wxEventType wxEVT_DIRCTRL_SELECTIONCHANGED;
wxEventType wxEVT_DIRCTRL_FILEACTIVATED;