mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-27 22:03:12 +01:00
452 lines
12 KiB
C++
452 lines
12 KiB
C++
|
#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"));
|
||
|
}
|