うーむ、イベントよくわかんのぅ
PPGEventContext使わない?
というわけで中途半端にうp
#define READONLY (siReadOnly | siPersistable)
#define ANIMATABLE (siAnimatable | siPersistable | siKeyable)
static Application app;
static Factory factory = app.GetFactory();
... 他省略 ...
XSIPLUGINCALLBACK CStatus hoge_Execute( CRef& in_ctxt )
{
Context ctxt( in_ctxt );
CValueArray args = ctxt.GetAttribute(L"Arguments");
//
// TODO: Put your command implementation here.
CustomProperty oPSet = factory.CreateObject(L"CustomProperty");
oPSet.PutName(L"hoge");
oSel = app.GetSelection().GetItem(0);
app.LogMessage(oSel.GetAsText());
Parameter oParam;
Parameter txtParam;
Parameter btnParam;
oPSet.AddParameter(L"Instance", CValue::siString, READONLY, L"", L"", L"instance here.", txtParam);
oPSet.AddParameter(L"Count", CValue::siInt2, ANIMATABLE, L"", L"", 0, oParam);
oPSet.AddParameter(L"Position", CValue::siInt1, siPersistable, L"", L"", 0, btnParam);
PPGLayout oLayout = oPSet.GetPPGLayout();
oLayout.Clear();
oLayout.AddGroup(L"Duplicate");
oLayout.AddItem(L"Instance", L"Target");
oLayout.AddItem(L"Count", 0);
oLayout.EndGroup();
CValueArray radio(6);
radio[0] = L"Left"; radio[1] = 0;
radio[2] = L"Center"; radio[3] = 1;
radio[4] = L"Right"; radio[5] = 2;
oLayout.AddGroup(L"Position");
oLayout.AddEnumControl(L"Position", radio, L"Change", siControlRadio);
oLayout.EndGroup();
// Logic
oLayout.PutLanguage(L"JScript");
oLayout.PutLogic(L"LogMessage(\"test\");");
CValueArray wParam(5);
wParam[0] = oPSet;
wParam[1] = L"Duplicate Item";
wParam[2] = (LONG)siRecycle;
wParam[3] = false;
CValue retval;
app.ExecuteCommand(L"InspectObj", wParam, retval);
//
// Return a value by setting this attribute:
ctxt.PutAttribute( L"ReturnValue", true );
// Return CStatus::Fail if you want to raise a script error
return CStatus::OK;
}


