#pragma once #ifndef MAINSHELL_INCLUDED #define MAINSHELL_INCLUDED //#include "tcommon.h" #include "menubar.h" //#include "toolbar.h" //#include "label.h" //#include "panel.h" // #include "tcli.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 TGenericCommandAction; namespace TCli { class Usage; } class DVAPI TMainshell : public TWidget { protected: static TMainshell *theShell; virtual void create(); public: #ifndef WIN32 bool m_ending; #endif static TMainshell *getMainshell() { return theShell; } static TMainshell *instance() { return theShell; } TMainshell(string name); virtual void init() {} virtual void atExit() {} virtual bool beforeShow() { return true; } virtual void close(); virtual void closeWithoutQuestion(); // void pushStatusMessage(string ); // virtual void pushStatusMessage(std::wstring ) {} // virtual void popStatusMessage() {}; // static void errorMessage(const string &str); // static bool questionMessage(const string &str); // static int multipleChoicesMessage(const string &str, vector // &choices); // brutto (ma veloce da implementare :-) // restituisce 0=yes, 1=no, 2=cancel // static int yesNoCancelMessage(const string &str); virtual TDimension getPreferredSize() { return TDimension(800, 600); } virtual bool isResizable() const { return true; } virtual int getMainIconId() { return 0; } // ha senso solo su NT virtual int getSplashScreenBitmapId() { return 0; } // ha senso solo su NT // void setAccelerator( // string acc, // TGenericCommandAction *onKeyDown); void setAccelerator(string acc, string guiCommandName); string getAccelerator(string guiCommandName); virtual void forwardMessage(string msg) {} void contextHelp(); virtual void onContextHelp(string reference) {} virtual string getAppId() const = 0; virtual void defineUsage(TCli::Usage &usage); }; class DVAPI TKeyListener { string m_keyName; public: TKeyListener(string keyName); virtual ~TKeyListener(); virtual void onKeyDown() = 0; virtual void onKeyUp(bool mouseEventReceived) = 0; virtual bool autoreatIsEnabled() { return false; } string getKeyName() const { return m_keyName; } }; //------------------------------------------------------------------- template class TCommandKey : public TKeyListener { typedef void (T::*Method)(); T *m_target; Method m_method; public: TCommandKey(string keyName, T *target, Method method) : TKeyListener(keyName), m_target(target), m_method(method) {} void onKeyDown() { (m_target->*m_method)(); } void onKeyUp(bool mouseEventReceived) {} }; DVAPI void enableShortcuts(bool on); DVAPI void enableShortcuts(bool on); DVAPI void enableShortcuts(bool on); #endif