#include <precomp.h> #include <api/skin/widgets.h> #include <api/skin/widgets/group.h> #ifdef WASABI_WIDGETS_LAYER #include <api/skin/widgets/layer.h> #endif #ifdef WASABI_WIDGETS_ANIMLAYER #include <api/skin/widgets/animlayer.h> #endif #ifdef WASABI_WIDGETS_BUTTON #include <api/skin/widgets/button.h> #endif #ifdef WASABI_WIDGETS_TGBUTTON #include <api/skin/widgets/tgbutton.h> #endif #ifdef WASABI_WIDGETS_GUIOBJECT #include <api/script/objects/guiobj.h> #endif #ifdef WASABI_WIDGETS_GROUPLIST #include <api/skin/widgets/grouplist.h> #endif #ifdef WASABI_WIDGETS_MOUSEREDIR #include <api/skin/widgets/mouseredir.h> #endif #ifdef WASABI_WIDGETS_SLIDER #include <api/skin/widgets/pslider.h> #endif #ifdef WASABI_WIDGETS_MEDIASLIDERS #include <api/skin/widgets/seqband.h> #include <api/skin/widgets/seqpreamp.h> #include <api/skin/widgets/svolbar.h> #include <api/skin/widgets/sseeker.h> #include <api/skin/widgets/spanbar.h> #endif #ifdef WASABI_WIDGETS_MEDIAVIS #include <api/skin/widgets/sa.h> #endif #ifdef WASABI_WIDGETS_MEDIAEQCURVE #include <api/skin/widgets/seqvis.h> #endif #ifdef WASABI_WIDGETS_MEDIASTATUS #include <api/skin/widgets/sstatus.h> #endif #ifdef _WIN32 #include <api/skin/widgets/wa2/xuiwa2slider.h> #endif #ifdef WASABI_WIDGETS_SVCWND #include <api/skin/widgets/script/svcwnd.h> #endif #ifdef WASABI_WIDGETS_TEXT #include <api/skin/widgets/text.h> #endif #ifdef WASABI_WIDGETS_EDIT #include <api/skin/widgets/edit.h> #endif #ifdef WASABI_WIDGETS_TITLEBAR #include <api/skin/widgets/title.h> #endif #ifdef WASABI_WIDGETS_COMPBUCK #include <api/skin/widgets/compbuck2.h> #endif #ifdef WASABI_WIDGETS_BROWSER #include <api/skin/widgets/mb/xuibrowser.h> #ifdef WASABI_WIDGETS_BROWSERSVC #include <api/skin/widgets/mb/iebrowser.h> #include <api/skin/widgets/mb/mbsvc.h> #endif #endif #ifdef WASABI_WIDGETS_FRAME #include <api/skin/widgets/xuiframe.h> #endif #ifdef WASABI_WIDGETS_GRID #include <api/skin/widgets/xuigrid.h> #endif #ifdef WASABI_WIDGETS_QUERYDRAG #include <api/skin/widgets/xuiquerydrag.h> #endif #ifdef WASABI_WIDGETS_QUERYLIST #include <api/skin/widgets/db/xuiquerylist.h> #endif #ifdef WASABI_WIDGETS_FILTERLIST #include <api/skin/widgets/db/xuifilterlist.h> #endif #ifdef WASABI_WIDGETS_QUERYLINE #include <api/skin/widgets/db/xuiqueryline.h> #endif #ifdef WASABI_WIDGETS_WNDHOLDER #include <api/skin/widgets/xuiwndholder.h> #endif #ifdef WASABI_COMPILE_WNDMGR #ifdef WASABI_WIDGETS_LAYOUTSTATUS #include <api/skin/widgets/xuistatus.h> #endif #endif // wndmgr #ifdef WASABI_WIDGETS_TABSHEET #include <api/skin/widgets/xuitabsheet.h> #endif #ifdef WASABI_WIDGETS_CHECKBOX #include <api/skin/widgets/xuicheckbox.h> #endif #ifdef WASABI_WIDGETS_TITLEBOX #include <api/skin/widgets/xuititlebox.h> #endif #ifdef WASABI_WIDGETS_CUSTOMOBJECT #include <api/skin/widgets/xuicustomobject.h> #endif #ifdef WASABI_WIDGETS_OSWNDHOST #include <api/skin/widgets/xuioswndhost.h> #endif #ifdef WASABI_WIDGETS_RADIOGROUP #include <api/skin/widgets/xuiradiogroup.h> #endif #ifdef WASABI_TOOLOBJECT_HIDEOBJECT #include <api/skin/widgets/xuihideobject.h> #endif #ifdef WASABI_TOOLOBJECT_SENDPARAMS #include <api/skin/widgets/xuisendparams.h> #endif #ifdef WASABI_TOOLOBJECT_ADDPARAMS #include <api/skin/widgets/xuiaddparams.h> #endif #ifdef WASABI_WIDGETS_LIST #include <api/skin/widgets/xuilist.h> #endif #ifdef WASABI_WIDGETS_TREE #include <api/skin/widgets/xuitree.h> #endif #ifdef WASABI_WIDGETS_DROPDOWNLIST #include <api/skin/widgets/xuidropdownlist.h> #endif #ifdef WASABI_WIDGETS_COMBOBOX #include <api/skin/widgets/xuicombobox.h> #endif #ifdef WASABI_WIDGETS_HISTORYEDITBOX #include <api/skin/widgets/xuihistoryedit.h> #endif #ifdef WASABI_WIDGETS_OBJECTDIRECTORY #include <api/skin/widgets/xuiobjdirwnd.h> #endif #ifdef WASABI_WIDGETS_RECTANGLE #include <api/skin/widgets/xuirect.h> #endif #ifdef WASABI_WIDGETS_PATHPICKER #include <api/skin/widgets/xuipathpicker.h> #endif #ifdef WASABI_WIDGETS_GRADIENT #include <api/skin/widgets/xuigradientwnd.h> #endif #ifdef WASABI_WIDGETS_MENU #include <api/skin/widgets/xuimenu.h> #endif #include <api/skin/widgets/xuidownloadslist.h> #ifdef WASABI_COMPILE_STATSWND #include <api/skin/widgets/stats/xuistats.h> #include <api/skin/widgets/stats/statswnd.h> #endif extern StringW g_resourcepath; Widgets::Widgets() { count = 0; registerService(new XuiObjectCreator<GuiObjectXuiSvc>); #ifdef WASABI_WIDGETS_LAYER registerService(new XuiObjectCreator<LayerXuiSvc>); #endif #ifdef WASABI_WIDGETS_ANIMLAYER registerService(new XuiObjectCreator<AnimLayerXuiSvc>); #endif #ifdef WASABI_WIDGETS_BUTTON registerService(new XuiObjectCreator<ButtonXuiSvc>); #endif #ifdef WASABI_WIDGETS_TGBUTTON registerService(new XuiObjectCreator<ToggleButtonXuiSvc>); registerService(new XuiObjectCreator<nStatesTgButtonXuiSvc>); #endif #ifdef WASABI_WIDGETS_GROUPLIST registerService(new XuiObjectCreator<GroupListXuiSvc>); #endif #ifdef WASABI_WIDGETS_MOUSEREDIR registerService(new XuiObjectCreator<MouseRedirXuiSvc>); #endif #ifdef WASABI_WIDGETS_SLIDER registerService(new XuiObjectCreator<SliderXuiSvc>); #endif #ifdef _WIN32 registerService(new XuiObjectCreator<Wa2SliderXuiSvc>); #endif #ifdef WASABI_WIDGETS_MEDIASLIDERS registerService(new XuiObjectCreator<EqBandXuiSvc>); registerService(new XuiObjectCreator<EqPreAmpXuiSvc>); registerService(new XuiObjectCreator<VolBarXuiSvc>); registerService(new XuiObjectCreator<SeekBarXuiSvc>); registerService(new XuiObjectCreator<PanBarXuiSvc>); #endif #ifdef WASABI_WIDGETS_MEDIAVIS registerService(new XuiObjectCreator<VisXuiSvc>); #endif #ifdef WASABI_WIDGETS_MEDIAEQCURVE registerService(new XuiObjectCreator<EqVisXuiSvc>); #endif #ifdef WASABI_WIDGETS_MEDIASTATUS registerService(new XuiObjectCreator<StatusXuiSvc>); #endif #ifdef WASABI_WIDGETS_SVCWND registerService(new XuiObjectCreator<SvcWndXuiSvc>); #endif #ifdef WASABI_WIDGETS_TEXT registerService(new XuiObjectCreator<TextXuiSvc>); #endif #ifdef WASABI_WIDGETS_EDIT registerService(new XuiObjectCreator<EditXuiSvc>); #endif #ifdef WASABI_WIDGETS_TITLEBAR registerService(new XuiObjectCreator<TitleBarXuiSvc>); #endif #ifdef WASABI_WIDGETS_COMPBUCK registerService(new XuiObjectCreator<ComponentBucketXuiSvc>); #endif #ifdef WASABI_WIDGETS_BROWSER registerService(new XuiObjectCreator<BrowserXuiSvc>); #ifdef WASABI_WIDGETS_BROWSERSVC registerService(new waServiceFactoryT<svc_miniBrowser, MbSvc>); #endif #endif #ifdef WASABI_WIDGETS_FRAME registerService(new XuiObjectCreator<FrameXuiSvc>); #endif #ifdef WASABI_WIDGETS_GRID registerService(new XuiObjectCreator<GridXuiSvc>); #endif #ifdef WASABI_WIDGETS_QUERYDRAG registerService(new XuiObjectCreator<QueryDragXuiSvc>); #endif #ifdef WASABI_COMPILE_METADB #ifdef WASABI_WIDGETS_QUERYLIST registerService(new XuiObjectCreator<QueryListXuiSvc>); #endif #ifdef WASABI_WIDGETS_FILTERLIST registerService(new XuiObjectCreator<FilterListXuiSvc>); #endif #ifdef WASABI_WIDGETS_QUERYLINE registerService(new XuiObjectCreator<QueryLineXuiSvc>); #endif #endif // metadb #ifdef WASABI_WIDGETS_WNDHOLDER registerService(new XuiObjectCreator<WindowHolderXuiSvc>); registerService(new XuiObjectCreator<WindowHolderXuiSvc2>); #endif // components #ifdef WASABI_COMPILE_WNDMGR #ifdef WASABI_WIDGETS_LAYOUTSTATUS registerService(new XuiObjectCreator<LayoutStatusXuiSvc>); #endif #endif // wndmgr #ifdef WASABI_WIDGETS_TABSHEET registerService(new XuiObjectCreator<ScriptTabSheetXuiSvc>); #endif #ifdef WASABI_WIDGETS_CHECKBOX registerService(new XuiObjectCreator<ScriptCheckBoxXuiSvc>); #endif #ifdef WASABI_WIDGETS_TITLEBOX registerService(new XuiObjectCreator<ScriptTitleBoxXuiSvc>); #endif #ifdef WASABI_WIDGETS_CUSTOMOBJECT registerService(new XuiObjectCreator<CustomObjectXuiSvc>); #endif #ifdef WASABI_WIDGETS_OSWNDHOST registerService(new XuiObjectCreator<OSWndHostXuiSvc>); #endif #ifdef WASABI_WIDGETS_RADIOGROUP registerService(new XuiObjectCreator<ScriptRadioGroupXuiSvc>); #endif #ifdef WASABI_TOOLOBJECT_HIDEOBJECT registerService(new XuiObjectCreator<HideObjectXuiSvc>); #endif #ifdef WASABI_TOOLOBJECT_SENDPARAMS registerService(new XuiObjectCreator<SendParamsXuiSvc>); #endif #ifdef WASABI_TOOLOBJECT_ADDPARAMS registerService(new XuiObjectCreator<AddParamsXuiSvc>); #endif #ifdef WASABI_WIDGETS_LIST registerService(new XuiObjectCreator<ScriptListXuiSvc>); #endif #ifdef WASABI_WIDGETS_TREE registerService(new XuiObjectCreator<ScriptTreeXuiSvc>); #endif #ifdef WASABI_WIDGETS_DROPDOWNLIST registerService(new XuiObjectCreator<DropDownListXuiSvc>); #endif #ifdef WASABI_WIDGETS_COMBOBOX registerService(new XuiObjectCreator<ComboBoxXuiSvc>); #endif #ifdef WASABI_WIDGETS_HISTORYEDITBOX registerService(new XuiObjectCreator<HistoryEditXuiSvc>); #endif #ifdef WASABI_WIDGETS_OBJECTDIRECTORY registerService(new XuiObjectCreator<ScriptObjDirWndXuiSvc>); #endif #ifdef WASABI_WIDGETS_RECTANGLE registerService(new XuiObjectCreator<ScriptRectXuiSvc>); #endif #ifdef WASABI_WIDGETS_PATHPICKER registerService(new XuiObjectCreator<PathPickerXuiSvc>); #endif #ifdef WASABI_WIDGETS_GRADIENT registerService(new XuiObjectCreator<GradientWndXuiSvc>); #endif #ifdef WASABI_WIDGETS_MENU registerService(new XuiObjectCreator<MenuXuiSvc>); #endif //registerService(new XuiObjectCreator<DownloadsListXuiSvc>); #ifdef WASABI_COMPILE_WNDMGR //registerSkinFile("xml/msgbox/msgbox.xml"); #endif #ifdef WASABI_WIDGETS_TOOLTIPS //registerSkinFile("xml/tooltips/tooltips.xml"); #endif #ifdef WASABI_COMPILE_STATSWND registerService(new XuiObjectCreator<XuiStatsXuiSvc>); statswnd = new StatsWnd(); #endif //loadResources(); WASABI_API_SYSCB->syscb_registerCallback(static_cast<SysCallbackI *>(this)); } Widgets::~Widgets() { #ifdef WASABI_COMPILE_STATSWND delete statswnd; #endif WASABI_API_SYSCB->syscb_deregisterCallback(static_cast<SysCallbackI *>(this)); if (WASABI_API_SVC != NULL) { int i=factories.getNumItems(); while (i--) WASABI_API_SVC->service_deregister(factories[i]); } factories.deleteAll(); } void Widgets::registerService(waServiceFactoryI *f) { WASABI_API_SVC->service_register(f); factories.addItem(f); } int Widgets::skincb_onBeforeLoadingElements() { if (count++ > 0) // if 0, we're already loaded so that the lib is usable without 'a skin' loadResources(); return 1; } void Widgets::loadResources() { // TODO: benski> want to put this into gen_ff somewhere, instead. WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\winamp\\cover\\cover.xml")); WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\winamp\\thinger\\thinger.xml")); #ifndef WA3COMPATIBILITY // ifNdef WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\wasabi\\wasabi.xml")); #endif #ifdef WASABI_WIDGETS_PATHPICKER WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\pathpicker\\pathpicker.xml")); #endif #ifdef WASABI_WIDGETS_LAYOUTSTATUS WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\statusbar\\statusbar.xml")); #endif #ifdef WASABI_WIDGETS_TABSHEET WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\tabsheet\\tabsheet.xml")); #endif #ifdef WASABI_WIDGETS_CHECKBOX WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\checkbox\\checkbox.xml")); #endif #ifdef WASABI_WIDGETS_TITLEBOX WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\titlebox\\titlebox.xml")); #endif #ifdef WASABI_WIDGETS_DROPDOWNLIST WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\dropdownlist\\dropdownlist.xml")); #endif #ifdef WASABI_WIDGETS_COMBOBOX WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\combobox\\combobox.xml")); #endif #ifdef WASABI_WIDGETS_HISTORYEDITBOX WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\historyeditbox\\historyeditbox.xml")); #endif #ifdef WASABI_WIDGETS_TOOLTIPS WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\tooltips\\tooltips.xml")); #endif #ifdef WASABI_COMPILE_WNDMGR //WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,"xml\\msgbox\\msgbox.xml")); #endif WASABI_API_SKIN->loadSkinFile(StringPathCombine(g_resourcepath,L"xml\\about\\about.xml")); }