Files
Work/common/Opendlg.hpp
2024-08-07 09:09:36 -04:00

121 lines
4.1 KiB
C++

#ifndef _COMMON_OPENDIALOG_HPP_
#define _COMMON_OPENDIALOG_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMDLG_HPP_
#include <common/commdlg.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _COMMON_BLOCK_HPP_
#include <common/block.hpp>
#endif
class GUIWindow;
class OpenDialog : private OPENFILENAME
{
public:
enum Flags{ALLOWMULTISELECT=OFN_ALLOWMULTISELECT,
CREATEPROMPT=OFN_CREATEPROMPT,
ENABLEHOOK=OFN_ENABLEHOOK,
ENABLETEMPLATE=OFN_ENABLETEMPLATE,
ENABLETEMPLATEHANDLE=OFN_ENABLETEMPLATEHANDLE,
EXPLORER=OFN_EXPLORER,
EXTENSIONDIFFERENT=OFN_EXTENSIONDIFFERENT,
FILEMUSTEXIST=OFN_FILEMUSTEXIST,
HIDEREADONLY=OFN_HIDEREADONLY,
LONGNAMES=OFN_LONGNAMES,
NOCHANGEDIR=OFN_NOCHANGEDIR,
NODEREFERENCELINKS=OFN_NODEREFERENCELINKS,
NOLONGNAMES=OFN_NOLONGNAMES,
NONETWORKBUTTON=OFN_NONETWORKBUTTON,
NOREADONLYRETURN=OFN_NOREADONLYRETURN,
NOTESTFILECREATE=OFN_NOTESTFILECREATE,
NOVALIDATE=OFN_NOVALIDATE,
OVERWRITEPROMPT=OFN_OVERWRITEPROMPT,
PATHMUSTEXIST=OFN_PATHMUSTEXIST,
READONLY=OFN_READONLY,
SHAREAWARE=OFN_SHAREAWARE,
SHOWHELP=OFN_SHOWHELP};
OpenDialog(void);
OpenDialog(const OpenDialog &someOpenDialog);
virtual ~OpenDialog();
OpenDialog &operator=(const OpenDialog &someOpenDialog);
BOOL operator==(const OpenDialog &someOpenDialog)const;
BOOL getOpenFileName(GUIWindow &parentWindow,const String &filterPatternString,const String &titleString,const String &fileTitleString,String &pathFileName);
BOOL getSaveFileName(GUIWindow &parentWindow,const String &filterPatternString,const String &titleString,const String &fileTitleString,String &pathFileName);
BOOL getOpenFileName(const String &filterPatternString,const String &titleString,const String &fileTitleString,String &pathFileName);
BOOL getOpenFileName(const String &filterPatternString,const String &titleString,const String &fileTitleString,Block<String> &strFileNames);
BOOL getSaveFileName(const String &filterPatternString,const String &titleString,const String &fileTitleString,String &pathFileName);
BOOL getSaveFileName(void);
BOOL getOpenFileName(void);
HWND owner(void)const;
void owner(HWND hwndOwner);
HINSTANCE instance(void)const;
void instance(HINSTANCE hInstance);
const String &filter(void)const;
void filter(const String &filter);
const String &filterPattern(void)const;
void filterPattern(const String &filterPattern);
const String &customFilter(void)const;
void customFilter(const String &customFilter);
DWORD filterIndex(void)const;
void filterIndex(DWORD filterIndex);
const String &fileName(void)const;
void fileName(const String &fileName);
const String &fileTitle(void)const;
void fileTitle(const String &fileTitle);
const String &initialDirectory(void)const;
void initialDirectory(const String &initialDirectory);
const String &title(void)const;
void title(const String &title);
DWORD creationFlags(void)const;
void creationFlags(DWORD creationFlags);
const String &defaultExtension(void)const;
void defaultExtension(const String &defaultExtension);
const String &templateName(void)const;
void templateName(const String &templateName);
LPOFNHOOKPROC hookProc(void)const;
void hookProc(LPOFNHOOKPROC pHookProc);
DWORD customData(void)const;
void customData(DWORD customData);
int size(void)const;
const String &operator[](int index);
private:
enum {MaxLength=32768,MaxMultiSelect=65536,MaxTitle=512,MaxSaveLength=512};
void setZero(void);
void setLength(void);
void parseFileNames(const String &nameBuffer,Block<String> &fileNames);
String parseLine(int &index,const String &strLine);
String mFilter;
String mFilterPattern;
String mCustomFilter;
String mFileName;
String mFileTitle;
String mTitle;
String mInitialDirectory;
String mDefaultExtension;
String mTemplateName;
String mFileNameBuffer;
String mFileTitleBuffer;
Block<String> mFileNames;
};
inline
int OpenDialog::size(void)const
{
return mFileNames.size();
}
inline
const String &OpenDialog::operator[](int index)
{
return mFileNames[index];
}
#endif