aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/skin/widgets.cpp')
-rw-r--r--Src/Wasabi/api/skin/widgets.cpp451
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"));
+}