413abb066e
Add wxFileDialog::GetCurrentlySelectedFilterIndex() similar to the existing GetCurrentlySelectedFilename(), which can be used to retrieve the index of the currently selected filter and update the state of the extra controls in wxFileDialog accordingly. Implement this for wxMSW only by updating the internally stored value from the native CDN_TYPECHANGE notification and also generating a wxEVT_UPDATE_UI event to allow the extra controls to update themselves. Closes https://github.com/wxWidgets/wxWidgets/pull/1310
71 lines
2.4 KiB
C++
71 lines
2.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/filedlg.h
|
|
// Purpose: wxFileDialog class
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 01/02/97
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_FILEDLG_H_
|
|
#define _WX_FILEDLG_H_
|
|
|
|
//-------------------------------------------------------------------------
|
|
// wxFileDialog
|
|
//-------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxFileDialog: public wxFileDialogBase
|
|
{
|
|
public:
|
|
wxFileDialog(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 void GetPaths(wxArrayString& paths) const wxOVERRIDE;
|
|
virtual void GetFilenames(wxArrayString& files) const wxOVERRIDE;
|
|
virtual bool SupportsExtraControl() const wxOVERRIDE { return true; }
|
|
void MSWOnInitDialogHook(WXHWND hwnd);
|
|
|
|
virtual int ShowModal() wxOVERRIDE;
|
|
|
|
// wxMSW-specific implementation from now on
|
|
// -----------------------------------------
|
|
|
|
// called from the hook procedure on CDN_INITDONE reception
|
|
virtual void MSWOnInitDone(WXHWND hDlg);
|
|
|
|
// called from the hook procedure on CDN_SELCHANGE.
|
|
void MSWOnSelChange(WXHWND hDlg);
|
|
|
|
// called from the hook procedure on CDN_TYPECHANGE.
|
|
void MSWOnTypeChange(WXHWND hDlg, int nFilterIndex);
|
|
|
|
protected:
|
|
|
|
virtual void DoMoveWindow(int x, int y, int width, int height) wxOVERRIDE;
|
|
virtual void DoCentre(int dir) wxOVERRIDE;
|
|
virtual void DoGetSize( int *width, int *height ) const wxOVERRIDE;
|
|
virtual void DoGetPosition( int *x, int *y ) const wxOVERRIDE;
|
|
|
|
private:
|
|
wxArrayString m_fileNames;
|
|
|
|
// remember if our SetPosition() or Centre() (which requires special
|
|
// treatment) was called
|
|
bool m_bMovedWindow;
|
|
int m_centreDir; // nothing to do if 0
|
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxFileDialog);
|
|
wxDECLARE_NO_COPY_CLASS(wxFileDialog);
|
|
};
|
|
|
|
#endif // _WX_FILEDLG_H_
|
|
|