#ifndef TW_MESSAGE_INCLUDED
#define TW_MESSAGE_INCLUDED
#include "tcommon.h"
#undef DVAPI
#undef DVVAR
#ifdef TWIN_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
class TFilePath;
namespace TMessage
{
class DVAPI Arg
{
TString m_arg;
public:
/*
#if defined(MACOSX)
Arg(const string &arg) {}
Arg(const wstring &arg) {}
Arg(const TFilePath &arg){}
#else
*/
Arg(const string &arg);
Arg(const wstring &arg);
Arg(const TFilePath &arg);
/*#endif*/
TString getString() const { return m_arg; }
};
#ifdef WIN32
#pragma warning(push)
#pragma warning(disable : 4251)
#endif
class DVAPI ArgList
{
vector<Arg> m_args;
public:
ArgList() {}
ArgList(const Arg &arg) { m_args.push_back(arg); }
ArgList(const Arg &arg0, const Arg &arg1)
{
m_args.push_back(arg0);
m_args.push_back(arg1);
}
ArgList(const Arg &arg0, const Arg &arg1, const Arg &arg2)
{
m_args.push_back(arg0);
m_args.push_back(arg1);
m_args.push_back(arg2);
}
int getCount() const { return m_args.size(); }
TString getString(int index) const
{
assert(0 <= index && index < getCount());
return m_args[index].getString();
}
};
#ifdef WIN32
#pragma warning(pop)
#endif
enum Answer { NO = 0,
YES = 1,
CANCEL = -1 };
/*
#if defined(MACOSX)
DVAPI void error(const string &str, const ArgList &lst){}
DVAPI Answer question(const string &str, const ArgList &lst);
DVAPI Answer yesNoCancel(const string &str, const ArgList &lst);
#else
*/
DVAPI void error(const string &str, const ArgList &lst);
DVAPI void info(const string &str, const ArgList &lst);
DVAPI Answer question(const string &str, const ArgList &lst);
DVAPI Answer yesNoCancel(const string &str, const ArgList &lst);
//#endif
inline void info(const string &str)
{
info(str, ArgList());
}
inline void error(const string &str)
{
error(str, ArgList());
}
inline void error(const string &str, const Arg &arg0)
{
error(str, ArgList(arg0));
}
inline void error(const string &str, const Arg &arg0, const Arg &arg1)
{
error(str, ArgList(arg0, arg1));
}
inline void error(const string &str, const Arg &arg0, const Arg &arg1, const Arg &arg2)
{
error(str, ArgList(arg0, arg1, arg2));
}
inline Answer question(const string &str)
{
return question(str, ArgList());
}
inline Answer question(const string &str, const Arg &arg0)
{
return question(str, ArgList(arg0));
}
inline Answer question(const string &str, const Arg &arg0, const Arg &arg1)
{
return question(str, ArgList(arg0, arg1));
}
inline Answer question(const string &str, const Arg &arg0, const Arg &arg1, const Arg &arg2)
{
return question(str, ArgList(arg0, arg1, arg2));
}
inline Answer yesNoCancel(const string &str)
{
return yesNoCancel(str, ArgList());
}
inline Answer yesNoCancel(const string &str, const Arg &arg0)
{
return yesNoCancel(str, ArgList(arg0));
}
inline Answer yesNoCancel(const string &str, const Arg &arg0, const Arg &arg1)
{
return yesNoCancel(str, ArgList(arg0, arg1));
}
inline Answer yesNoCancel(const string &str, const Arg &arg0, const Arg &arg1, const Arg &arg2)
{
return yesNoCancel(str, ArgList(arg0, arg1, arg2));
}
DVAPI int multipleChoicesQuestion(
const string &question,
const ArgList &argLst,
std::vector<string> &buttons);
} // namespace
#endif