mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-19 17:35:55 +01:00
247 lines
3.7 KiB
C++
247 lines
3.7 KiB
C++
#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
|