123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- //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
|