diff options
Diffstat (limited to 'Src/Wasabi/api/wnd/wndclass/editwnd.h')
-rw-r--r-- | Src/Wasabi/api/wnd/wndclass/editwnd.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wnd/wndclass/editwnd.h b/Src/Wasabi/api/wnd/wndclass/editwnd.h new file mode 100644 index 00000000..735debc2 --- /dev/null +++ b/Src/Wasabi/api/wnd/wndclass/editwnd.h @@ -0,0 +1,134 @@ +//NONPORTABLE +#ifndef _EDITWND_H +#define _EDITWND_H + +#include <api/wnd/wndclass/guiobjwnd.h> +#include <tataki/color/skinclr.h> +#include <api/wnd/usermsg.h> +#include <bfc/common.h> + +#define EDITWND_PARENT GuiObjectWnd +class EditWnd : public EDITWND_PARENT { +public: + EditWnd(wchar_t *buffer=NULL, int buflen=0); + virtual ~EditWnd(); + + virtual int onInit(); + virtual int onPaint(Canvas *canvas); + virtual int onResize(); +#ifdef WIN32 + virtual LRESULT wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +#endif + + // mig: Made these virtual to allow to be accessed by + // EditWndString object in editwndstring.h + virtual void setBuffer(wchar_t *buffer, int len); + virtual void getBuffer(wchar_t *outbuf, int len); + + virtual const wchar_t *getBufferPtr() { return outbuf; } + virtual int getBufferLength() { return maxlen; } + virtual void setBackgroundColor(ARGB32 c); + virtual void setTextColor(ARGB32 c); + + void setModal(int modal); //if modal, deletes self on enter + void setAutoEnter(int a); //fake an onEnter event when lose focus + int getAutoEnter() { return autoenter; } + void setAutoSelect(int a); //true==grab the focus on init + void setIdleTimerLen(int ms); // how many ms keys are idle before send msg + virtual void onSetVisible(int show); + virtual int onGetFocus(); + virtual int wantFocus(); + virtual void setWantFocus(int w) { wantfocus = w; } + virtual void selectAll(); + virtual void enter(); + virtual void setIdleEnabled(int i) { idleenabled = i; } + virtual int getIdleEnabled() { return idleenabled; } + + void setBorder(int border); + int getTextLength(); + + HWND getEditWnd(); + virtual int handleRatio() { return 0; } + virtual int getAutoSelect() { return autoselect; } + + void setMultiline(int ml); + void setReadOnly(int ro); + void setPassword(int pw); + void setAutoHScroll(int hs); + void setAutoVScroll(int vs); + void setVScroll(int vs); + int isEditorKey(int vk); + virtual void invalidate(); + + virtual int gotFocus(); + + // the wndproc for the edit box + virtual LRESULT editWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + +protected: + virtual void timerCallback(int id); + + // call down on these if you override them + virtual void onEditUpdate(); + virtual void onIdleEditUpdate(); + virtual int onEnter(); // user hit enter.. return 1 to close window + virtual int onAbort(); // user hit escape.. return 1 to close window + virtual int onLoseFocus(); // different from onKillFocus() from BaseWnd! + + void setStyle(LONG style, int set); + +#ifdef LINUX + virtual int onLeftButtonDown( int x, int y ); + virtual int onLeftButtonUp( int x, int y ); + virtual int onMouseMove( int x, int y ); + virtual int onKeyDown(int key); +#endif + +private: +#ifdef LINUX + int textposFromCoord( int x, int y ); +#endif + + HWND editWnd; + WNDPROC prevWndProc; + int maxlen; + int retcode; + int idletimelen; + int modal; + int bordered; + int autoenter; + int beforefirstresize; + int autoselect; + int multiline; + int readonly; + int password; + int idleenabled; + int autohscroll,autovscroll,vscroll; + int nextenterfaked; + SkinColor backgroundcolor, textcolor, selectioncolor; +#ifdef LINUX + int selstart, selend; + int cursorpos; + int selectmode; + int viewstart; +#endif +#ifdef WIN32 + HBRUSH oldbrush; +#endif + + // Basically, we're redoing the functionality of EditWndString + // (the bigger version), so we'll probably erase EditWndString + // completely as an object. + MemBlock<wchar_t> buffer8; + wchar_t *outbuf; + int wantfocus; +#ifdef LINUX + StringW inbuf; +#endif +}; + +#define EDITWND_RETURN_NOTHING 0 // user didn't do nothing +#define EDITWND_RETURN_OK 1 // user hit return +#define EDITWND_RETURN_CANCEL 2 // user hit escape or something + +#endif |