122 lines
3.5 KiB
C++
122 lines
3.5 KiB
C++
#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
|