aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/checkbox.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/checkbox.h')
-rw-r--r--Src/Wasabi/api/skin/widgets/checkbox.h246
1 files changed, 246 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/checkbox.h b/Src/Wasabi/api/skin/widgets/checkbox.h
new file mode 100644
index 00000000..213d25a0
--- /dev/null
+++ b/Src/Wasabi/api/skin/widgets/checkbox.h
@@ -0,0 +1,246 @@
+#ifndef __CHECKBOX_H
+#define __CHECKBOX_H
+
+#include <api/wnd/wndclass/guiobjwnd.h>
+#include <api/script/objects/c_script/h_guiobject.h>
+#include <api/script/objects/c_script/h_button.h>
+
+#define CHECKBOX_PARENT GuiObjectWnd
+
+class TextClicks;
+class ToggleClicks;
+
+
+/**
+ Class
+
+ @short
+ @author Nullsoft
+ @ver 1.0
+ @see
+*/
+class CheckBox : public CHECKBOX_PARENT {
+
+ public:
+
+ CheckBox(const wchar_t *_text = L"ERROR", const wchar_t *_radioid = NULL);
+ virtual ~CheckBox();
+
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ virtual int onInit();
+
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ virtual int getPreferences(int what);
+
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ void toggle(int self_switch); // this is called by the click catchers.
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ void setActivated(int activated, int writetocfg=1);
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ int isActivated();
+
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ void setText(const wchar_t *_text);
+ const wchar_t *getText();
+ void setRadioid(const wchar_t *_radioid);
+ const wchar_t *getRadioid() { return radioid; }
+ void setRadioVal(const wchar_t *val, int use_radioval=TRUE);
+ const wchar_t *getRadioVal() { return radioval; }
+
+
+#ifdef WASABI_COMPILE_CONFIG
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ virtual int onReloadConfig();
+#endif
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ virtual void onNewContent();
+
+ virtual int wantFocus() { return 1; }
+ virtual int onChar(unsigned int c);
+
+ virtual void setAction(const wchar_t *str);
+ virtual void setActionTarget(const wchar_t *target);
+ virtual void setActionParam(const wchar_t *param);
+ virtual const wchar_t *getActionParam();
+
+ protected:
+ virtual void onToggle(); //override to catch toggles
+
+ private:
+
+ void doAction();
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ void updateText();
+
+ TextClicks *textclicks;
+ ToggleClicks *toggleclicks;
+ StringW text;
+ StringW radioid;
+ GuiObject *buttonGuiObj;
+ StringW radioval;
+ int use_radioval;
+ StringW action, action_target, action_param;
+};
+
+
+/**
+ Class
+
+ @short
+ @author Nullsoft
+ @ver 1.0
+ @see
+*/
+class TextClicks : public H_GuiObject {
+ public:
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ TextClicks(ScriptObject *textobj, CheckBox *_callback) :
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ callback(_callback), H_GuiObject(textobj) {
+ }
+
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ virtual void hook_onLeftButtonDown(int x, int y) {
+ callback->toggle(0);
+ }
+ private:
+ CheckBox *callback;
+};
+
+
+/**
+ Class
+
+ @short
+ @author Nullsoft
+ @ver 1.0
+ @see
+*/
+class ToggleClicks : public H_Button {
+ public:
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ ToggleClicks(ScriptObject *button, CheckBox *_callback) :
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ callback(_callback), H_Button(button) {
+ inhere=0;
+ }
+
+
+ /**
+ Method
+
+ @see
+ @ret
+ @param
+ */
+ virtual void hook_onActivate(int activate) {
+ if (inhere) return;
+ inhere=1;
+ callback->toggle(1);
+ inhere=0;
+ }
+
+ private:
+ CheckBox *callback;
+ int inhere;
+};
+
+
+#endif