Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
371
Src/Wasabi/api/skin/widgets/pslider.cpp
Normal file
371
Src/Wasabi/api/skin/widgets/pslider.cpp
Normal file
|
@ -0,0 +1,371 @@
|
|||
#include <precomp.h>
|
||||
#include <wasabicfg.h>
|
||||
#include "pslider.h"
|
||||
#include <api/script/scriptmgr.h>
|
||||
#include <api/script/vcpu.h>
|
||||
#include <api/skin/skinparse.h>
|
||||
|
||||
#ifdef WASABI_WIDGETS_MEDIASLIDERS
|
||||
#include "seqband.h"
|
||||
#include "seqpreamp.h"
|
||||
#include "svolbar.h"
|
||||
#include "sseeker.h"
|
||||
#include "spanbar.h"
|
||||
#endif
|
||||
|
||||
char sliderObjectStr[] = "Slider"; // This is the xml tag
|
||||
char sliderXuiSvcName[] = "Slider xui object"; // this is the name of the xuiservice
|
||||
XMLParamPair PSliderWnd::params[] =
|
||||
{
|
||||
{PSLIDER_SETBARLEFT, L"BARLEFT"},
|
||||
{PSLIDER_SETBARMIDDLE, L"BARMIDDLE"},
|
||||
{PSLIDER_SETBARRIGHT, L"BARRIGHT"},
|
||||
{PSLIDER_SETDOWNTHUMB, L"DOWNTHUMB"},
|
||||
{PSLIDER_SETHIGH, L"HIGH"},
|
||||
{PSLIDER_SETHOTPOS, L"HOTPOS"},
|
||||
{PSLIDER_SETHOTRANGE, L"HOTRANGE"},
|
||||
{PSLIDER_SETHOVERTHUMB, L"HOVERTHUMB"},
|
||||
{PSLIDER_SETLOW, L"LOW"},
|
||||
{PSLIDER_SETORIENTATION, L"ORIENTATION"},
|
||||
{PSLIDER_SETTHUMB, L"THUMB"},
|
||||
{PSLIDER_SETSTRETCHTHUMB, L"STRETCHTHUMB"},
|
||||
};
|
||||
|
||||
PSliderWnd::PSliderWnd()
|
||||
{
|
||||
setLimits(0, 255);
|
||||
getScriptObject()->vcpu_setInterface(sliderGuid, (void *)static_cast<PSliderWnd *>(this));
|
||||
getScriptObject()->vcpu_setClassName(L"Slider");
|
||||
getScriptObject()->vcpu_setController(sliderController);
|
||||
|
||||
xuihandle = newXuiHandle();
|
||||
CreateXMLParameters(xuihandle);
|
||||
}
|
||||
|
||||
void PSliderWnd::CreateXMLParameters(int master_handle)
|
||||
{
|
||||
//PSLIDER_PARENT::CreateXMLParameters(master_handle);
|
||||
int numParams = sizeof(params) / sizeof(params[0]);
|
||||
hintNumberOfParams(xuihandle, numParams);
|
||||
for (int i = 0;i < numParams;i++)
|
||||
addParam(xuihandle, params[i], XUI_ATTRIBUTE_IMPLIED);
|
||||
}
|
||||
|
||||
PSliderWnd::~PSliderWnd()
|
||||
{}
|
||||
|
||||
int PSliderWnd::setXuiParam(int _xuihandle, int attrid, const wchar_t *paramname, const wchar_t *strvalue)
|
||||
{
|
||||
if (xuihandle != _xuihandle) return PSLIDER_PARENT::setXuiParam(_xuihandle, attrid, paramname, strvalue);
|
||||
switch (attrid)
|
||||
{
|
||||
case PSLIDER_SETBARLEFT:
|
||||
setLeftBmp(strvalue);
|
||||
break;
|
||||
case PSLIDER_SETBARMIDDLE:
|
||||
setMiddleBmp(strvalue);
|
||||
break;
|
||||
case PSLIDER_SETBARRIGHT:
|
||||
setRightBmp(strvalue);
|
||||
break;
|
||||
case PSLIDER_SETTHUMB:
|
||||
setThumbBmp(strvalue);
|
||||
break;
|
||||
case PSLIDER_SETDOWNTHUMB:
|
||||
setThumbDownBmp(strvalue);
|
||||
break;
|
||||
case PSLIDER_SETHOVERTHUMB:
|
||||
setThumbHiliteBmp(strvalue);
|
||||
break;
|
||||
case PSLIDER_SETSTRETCHTHUMB:
|
||||
setThumbStretched(_wtoi(strvalue));
|
||||
break;
|
||||
case PSLIDER_SETORIENTATION:
|
||||
setOrientation(SkinParser::getOrientation(strvalue));
|
||||
break;
|
||||
case PSLIDER_SETLOW:
|
||||
{
|
||||
int mx = getMaxLimit();
|
||||
setLimits(WTOI(strvalue), mx);
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
reloadConfig();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case PSLIDER_SETHIGH:
|
||||
{
|
||||
int mn = getMinLimit();
|
||||
setLimits(mn, WTOI(strvalue));
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
reloadConfig();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case PSLIDER_SETHOTPOS:
|
||||
{
|
||||
int a = WTOI(strvalue);
|
||||
setHotPosition(a);
|
||||
break;
|
||||
}
|
||||
case PSLIDER_SETHOTRANGE:
|
||||
{
|
||||
int a = WTOI(strvalue);
|
||||
setHotPosRange(a);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PSliderWnd::onInit()
|
||||
{
|
||||
setNoDefaultBackground(1);
|
||||
PSLIDER_PARENT::onInit();
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
void PSliderWnd::reloadConfig()
|
||||
{
|
||||
if (getGuiObject()->guiobject_hasCfgAttrib())
|
||||
onReloadConfig();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
int PSliderWnd::onReloadConfig()
|
||||
{
|
||||
int newVal = getGuiObject()->guiobject_getCfgInt();
|
||||
setPosition(newVal, 0);
|
||||
|
||||
return PSLIDER_PARENT::onReloadConfig();
|
||||
}
|
||||
#endif
|
||||
|
||||
int PSliderWnd::onSetPosition()
|
||||
{
|
||||
int r = PSLIDER_PARENT::onSetPosition();
|
||||
scriptVar p = SOM::makeVar(SCRIPT_INT);
|
||||
int intVal = getSliderPosition();
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
getGuiObject()->guiobject_setCfgInt(intVal);
|
||||
#endif
|
||||
SOM::assign(&p, intVal / scriptDivisor());
|
||||
script_onSetPosition(SCRIPT_CALL, getScriptObject(), p);
|
||||
return r;
|
||||
}
|
||||
|
||||
int PSliderWnd::onPostedPosition(int pp)
|
||||
{
|
||||
scriptVar p = SOM::makeVar(SCRIPT_INT);
|
||||
int intVal = getSliderPosition();
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
getGuiObject()->guiobject_setCfgInt(intVal);
|
||||
#endif
|
||||
SOM::assign(&p, intVal / scriptDivisor());
|
||||
script_onPostedPosition(SCRIPT_CALL, getScriptObject(), p);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PSliderWnd::onSetFinalPosition()
|
||||
{
|
||||
int r = PSLIDER_PARENT::onSetPosition();
|
||||
scriptVar p = SOM::makeVar(SCRIPT_INT);
|
||||
int intVal = getSliderPosition();
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
getGuiObject()->guiobject_setCfgInt(intVal);
|
||||
#endif
|
||||
SOM::assign(&p, intVal / scriptDivisor());
|
||||
script_onSetFinalPosition(SCRIPT_CALL, getScriptObject(), p);
|
||||
return r;
|
||||
}
|
||||
|
||||
SliderScriptController _sliderController;
|
||||
SliderScriptController *sliderController = &_sliderController;
|
||||
|
||||
// -- Functions table -------------------------------------
|
||||
function_descriptor_struct SliderScriptController::exportedFunction[] = {
|
||||
{L"setPosition", 1, (void*)PSliderWnd::script_setPosition },
|
||||
{L"getPosition", 0, (void*)PSliderWnd::script_getPosition },
|
||||
{L"onSetPosition", 1, (void*)PSliderWnd::script_onSetPosition },
|
||||
{L"onPostedPosition", 1, (void*)PSliderWnd::script_onPostedPosition },
|
||||
{L"onSetFinalPosition", 1, (void*)PSliderWnd::script_onSetFinalPosition },
|
||||
{L"lock", 0, (void*)PSliderWnd::script_lock},
|
||||
{L"unlock", 0, (void*)PSliderWnd::script_unlock},
|
||||
};
|
||||
// --------------------------------------------------------
|
||||
|
||||
const wchar_t *SliderScriptController::getClassName()
|
||||
{
|
||||
return L"Slider";
|
||||
}
|
||||
|
||||
const wchar_t *SliderScriptController::getAncestorClassName()
|
||||
{
|
||||
return L"GuiObject";
|
||||
}
|
||||
|
||||
ScriptObject *SliderScriptController::instantiate()
|
||||
{
|
||||
PSliderWnd *s = new PSliderWnd;
|
||||
ASSERT(s != NULL);
|
||||
return s->getScriptObject();
|
||||
}
|
||||
|
||||
void SliderScriptController::destroy(ScriptObject *o)
|
||||
{
|
||||
PSliderWnd *s = static_cast<PSliderWnd *>(o->vcpu_getInterface(sliderGuid));
|
||||
ASSERT(s != NULL);
|
||||
delete s;
|
||||
}
|
||||
|
||||
void *SliderScriptController::encapsulate(ScriptObject *o)
|
||||
{
|
||||
return NULL; // no encapsulation for sliders yet
|
||||
}
|
||||
|
||||
void SliderScriptController::deencapsulate(void *o)
|
||||
{}
|
||||
|
||||
int SliderScriptController::getNumFunctions()
|
||||
{
|
||||
return sizeof(exportedFunction) / sizeof(function_descriptor_struct);
|
||||
}
|
||||
|
||||
const function_descriptor_struct *SliderScriptController::getExportedFunctions()
|
||||
{
|
||||
return exportedFunction;
|
||||
}
|
||||
|
||||
GUID SliderScriptController::getClassGuid()
|
||||
{
|
||||
return sliderGuid;
|
||||
}
|
||||
|
||||
|
||||
const wchar_t *PSliderWnd::vcpu_getClassName()
|
||||
{
|
||||
return L"Slider";
|
||||
}
|
||||
|
||||
void PSliderWnd::lock ()
|
||||
{}
|
||||
|
||||
void PSliderWnd::unlock()
|
||||
{}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
scriptVar PSliderWnd::script_onSetPosition(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar p)
|
||||
{
|
||||
SCRIPT_FUNCTION_INIT;
|
||||
PROCESS_HOOKS1(o, sliderController, p);
|
||||
SCRIPT_FUNCTION_CHECKABORTEVENT;
|
||||
SCRIPT_EXEC_EVENT1(o, p);
|
||||
}
|
||||
|
||||
scriptVar PSliderWnd::script_onPostedPosition(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar p)
|
||||
{
|
||||
SCRIPT_FUNCTION_INIT;
|
||||
PROCESS_HOOKS1(o, sliderController, p);
|
||||
SCRIPT_FUNCTION_CHECKABORTEVENT;
|
||||
SCRIPT_EXEC_EVENT1(o, p);
|
||||
}
|
||||
|
||||
scriptVar PSliderWnd::script_onSetFinalPosition(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar p)
|
||||
{
|
||||
SCRIPT_FUNCTION_INIT;
|
||||
PROCESS_HOOKS1(o, sliderController, p);
|
||||
SCRIPT_FUNCTION_CHECKABORTEVENT;
|
||||
SCRIPT_EXEC_EVENT1(o, p);
|
||||
}
|
||||
|
||||
scriptVar PSliderWnd::script_setPosition(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v)
|
||||
{
|
||||
SCRIPT_FUNCTION_INIT
|
||||
ASSERT(SOM::isNumeric(&v));
|
||||
PSliderWnd *s = static_cast<PSliderWnd *>(o->vcpu_getInterface(sliderGuid));
|
||||
if (s) s->setPosition(GET_SCRIPT_INT(v) * s->scriptDivisor());
|
||||
RETURN_SCRIPT_VOID;
|
||||
}
|
||||
|
||||
scriptVar PSliderWnd::script_getPosition(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
|
||||
{
|
||||
SCRIPT_FUNCTION_INIT
|
||||
PSliderWnd *s = static_cast<PSliderWnd *>(o->vcpu_getInterface(sliderGuid));
|
||||
if (s) return MAKE_SCRIPT_INT(s->getSliderPosition() / s->scriptDivisor());
|
||||
return MAKE_SCRIPT_FLOAT(0);
|
||||
}
|
||||
|
||||
scriptVar PSliderWnd::script_lock(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
|
||||
{
|
||||
SCRIPT_FUNCTION_INIT
|
||||
PSliderWnd *s = static_cast<PSliderWnd *>(o->vcpu_getInterface(sliderGuid));
|
||||
if (s) s->lock ();
|
||||
RETURN_SCRIPT_VOID;
|
||||
}
|
||||
|
||||
scriptVar PSliderWnd::script_unlock(SCRIPT_FUNCTION_PARAMS, ScriptObject *o)
|
||||
{
|
||||
SCRIPT_FUNCTION_INIT
|
||||
PSliderWnd *s = static_cast<PSliderWnd *>(o->vcpu_getInterface(sliderGuid));
|
||||
if (s) s->unlock();
|
||||
RETURN_SCRIPT_VOID;
|
||||
}
|
||||
|
||||
GuiObject *SliderXuiSvc::instantiate(const wchar_t *xmltag, ifc_xmlreaderparams *params)
|
||||
{
|
||||
#ifdef WASABI_WIDGETS_MEDIASLIDERS
|
||||
if (!params)
|
||||
{
|
||||
PSliderWnd *r = new PSliderWnd;
|
||||
return r->getGuiObject();
|
||||
}
|
||||
const wchar_t *action = params->getItemValue(L"action");
|
||||
const wchar_t *param = params->getItemValue(L"param");
|
||||
if (!action)
|
||||
action=L"";
|
||||
PSliderWnd *r = NULL;
|
||||
#ifdef WASABI_WIDGETS_MEDIASLIDERS
|
||||
if (!_wcsicmp(action, L"seek"))
|
||||
r = new SSeeker;
|
||||
else if (!_wcsicmp(action, L"volume"))
|
||||
r = new SVolBar;
|
||||
else if (!_wcsicmp(action, L"pan"))
|
||||
r = new SPanBar;
|
||||
else if (!_wcsicmp(action, L"eq_band"))
|
||||
{
|
||||
if (!_wcsicmp(param, L"preamp"))
|
||||
r = new SEQPreamp;
|
||||
else
|
||||
r = new SEQBand;
|
||||
}
|
||||
else if (!_wcsicmp(action, L"eq_preamp"))
|
||||
{
|
||||
r = new SEQPreamp;
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif
|
||||
|
||||
r = new PSliderWnd;
|
||||
|
||||
#ifdef WASABI_WIDGETS_MEDIASLIDERS
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
return r->getGuiObject();
|
||||
#else
|
||||
PSliderWnd *r = new PSliderWnd;
|
||||
return r->getGuiObject();
|
||||
#endif
|
||||
}
|
||||
|
||||
void SliderXuiSvc::destroy(GuiObject *g)
|
||||
{
|
||||
PSliderWnd *obj = static_cast<PSliderWnd *>(g->guiobject_getRootWnd());
|
||||
delete obj;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue