diff options
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/combobox.h')
-rw-r--r-- | Src/Wasabi/api/skin/widgets/combobox.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/combobox.h b/Src/Wasabi/api/skin/widgets/combobox.h new file mode 100644 index 00000000..08ec11bf --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/combobox.h @@ -0,0 +1,121 @@ +#ifndef __COMBOBOX_H +#define __COMBOBOX_H + +#include <api/skin/widgets/dropdownlist.h> +#include <api/script/objects/c_script/h_edit.h> +#include <api/script/objects/c_script/c_edit.h> + +#define COMBOBOX_PARENT DropDownList + +class XmlObject; +class HEBKeysCallback; + +class ComboBox : public COMBOBOX_PARENT { + + public: + + ComboBox(); + virtual ~ComboBox(); + + virtual int wantTrapButton() { return 1; } + virtual int wantTrapText() { return 0; } + virtual int wantTrapEdit() { return 1; } + + virtual void abstract_onNewContent(); + virtual void trapControls(); + + virtual const wchar_t *dropdownlist_getMainGroupId() { return L"wasabi.combobox.main.group"; } + virtual const wchar_t *dropdownlist_getListGroupId() { return L"wasabi.combobox.list.group"; } + virtual const wchar_t *dropdownlist_getButtonId() { return L"combobox.button"; } + virtual const wchar_t *dropdownlist_getListId() { return L"combobox.list"; } + + virtual const wchar_t *combobox_getEditId() { return L"combobox.edit"; } + + virtual const wchar_t *embeddedxui_getEmbeddedObjectId() { return combobox_getEditId(); } + + virtual void dropdownlist_onCloseList(); + virtual void dropdownlist_onOpenList(); + + virtual void setText(const wchar_t *text, int hover=0); // use this to set the content of the edit box + virtual const wchar_t *getText(int fromcontrol=0); // use this one to ask for the currently displayed entry + + virtual const wchar_t *getCustomText() { return NULL; } + + virtual void dropdownlist_onConfigureList(GuiObject *o); + virtual void onSelect(int id, int hover); + virtual void enter(); + + void selectEditor(); + virtual int onAction(const wchar_t *action, const wchar_t *param=NULL, int x=-1, int y=-1, intptr_t p1=0, intptr_t p2=0, void *data=NULL, size_t datalen=0, ifc_window *source=NULL); + + virtual void onEditKeyDown(int vk); + virtual void onEditKeyUp(int vk); + virtual void onEditEnter(const wchar_t *txt); + virtual void onEditChar(int c); + + virtual int wantTransferDownToList() { return 1; } + virtual int wantTransferUpToList() { return 1; } + virtual int wantTransferHomeToList() { return 1; } + virtual int wantTransferEndToList() { return 1; } + virtual int wantTransferPgUpToList() { return 1; } + virtual int wantTransferPgDnToList() { return 1; } + virtual int wantTransferEnterToList() { return 1; } + virtual int wantDownOpenList() { return 1; } + virtual int wantCloseListOnChar() { return 1; } + virtual int wantEnterOnSelect() { return 1; } + + virtual void listDown(); + virtual void listUp(); + virtual void listHome(); + virtual void listEnd(); + virtual void listPageDown(); + virtual void listPageUp(); + virtual void listSelect(); + + virtual void onPreCloseList(); + + private: + + virtual void updateTextInControl(const wchar_t *text); + + HEBKeysCallback *keys_edit; + GuiObject *lastlist; + StringW curtxt; + + int savedidle, savedautoenter; + int disable_getselection; +}; + +class HEBKeysCallback : public H_Edit { + public: + + HEBKeysCallback(ScriptObject *trap, ComboBox *_callback) : + callback(_callback), H_Edit(trap), o(trap) { + } + + virtual void hook_onKeyDown(int vk) { + callback->onEditKeyDown(vk); + } + + virtual void hook_onKeyUp(int vk) { + callback->onEditKeyUp(vk); + } + + virtual void hook_onEnter() + { + C_Edit e(o); + callback->onEditEnter(e.getText()); + } + + + virtual void hook_onChar(wchar_t c) { + callback->onEditChar(c); + } + + private: + ComboBox *callback; + ScriptObject *o; +}; + + +#endif |