aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/combobox.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/combobox.h')
-rw-r--r--Src/Wasabi/api/skin/widgets/combobox.h121
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