diff options
Diffstat (limited to 'Src/Wasabi/api/skin/widgets.cpp')
-rw-r--r-- | Src/Wasabi/api/skin/widgets.cpp | 451 |
1 files changed, 451 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets.cpp b/Src/Wasabi/api/skin/widgets.cpp new file mode 100644 index 00000000..86fe0f05 --- /dev/null +++ b/Src/Wasabi/api/skin/widgets.cpp @@ -0,0 +1,451 @@ +#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")); +} |