#pragma once #include #include #include #include #include #include #include "wa2playlist.h" #include #include class PlDirObject; extern ScriptObjectController *pldirController; // ----------------------------------------------------------------------------------------------------- // ScriptObject Service class PlDirScriptObjectSvc : public svc_scriptObjectI { public: PlDirScriptObjectSvc() {}; virtual ~PlDirScriptObjectSvc() {}; static const char *getServiceName() { return "PlDir script object"; } virtual ScriptObjectController *getController(int n); }; // ----------------------------------------------------------------------------------------------------- // Script classe GUIDS // {61A7ABAD-7D79-41f6-B1D0-E1808603A4F4} static const GUID PLDIR_SCRIPTOBJECT_GUID = { 0x61a7abad, 0x7d79, 0x41f6, { 0xb1, 0xd0, 0xe1, 0x80, 0x86, 0x3, 0xa4, 0xf4 } }; // ----------------------------------------------------------------------------------------------------- // ScriptObject Interface // PlDir class PlDirObject : public ListWnd, public PlaylistCallbackI { public: PlDirObject(); virtual ~PlDirObject(); virtual int onInit(); //virtual int onResize(); virtual int wantResizeCols() { return 0; } virtual int wantHScroll() { return 0; } virtual void onDoubleClick(int itemnum); virtual Wa2Playlist *getPlaylist(int itemnum); /* PlaylistCallbackI method overrides */ int playlistcb_added(size_t index); int playlistcb_saved(size_t index); int onDeferredCallback(intptr_t p1, intptr_t p2); void Populate(); private: PtrList playlists; }; // ----------------------------------------------------------------------------------------------------- // ScriptObjectControllers for our script classes // PlDir class PlDirScriptObjectController : public ScriptObjectControllerI { public: virtual const wchar_t *getClassName() { return L"PlDir"; } virtual const wchar_t *getAncestorClassName() { return L"Object"; } virtual ScriptObjectController *getAncestorController() { return NULL; } virtual int getNumFunctions(); virtual const function_descriptor_struct *getExportedFunctions() { return exportedFunction; } virtual GUID getClassGuid() { return PLDIR_SCRIPTOBJECT_GUID; } virtual int getInstantiable() { return 0; } virtual int getReferenceable() { return 0; } virtual ScriptObject *instantiate(); virtual void destroy(ScriptObject *o); virtual void *encapsulate(ScriptObject *o); virtual void deencapsulate(void *o); virtual ~PlDirScriptObjectController(); // Maki functions table static scriptVar pldir_showCurrentlyPlayingEntry(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); static scriptVar pldir_getNumItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); static scriptVar pldir_renameItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item, scriptVar name); static scriptVar pldir_getItemName(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item); static scriptVar pldir_playItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item); static scriptVar pldir_enqueueItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item); static scriptVar pldir_refresh(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); PtrList mylist; private: static function_descriptor_struct exportedFunction[]; }; extern const wchar_t plDirXuiObjectStr[]; extern char plDirXuiSvcName[]; class PlDirXuiSvc : public XuiObjectSvc {};