From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Wasabi/api/skin/widgets/animlayer.cpp | 880 +++++++ Src/Wasabi/api/skin/widgets/animlayer.h | 214 ++ Src/Wasabi/api/skin/widgets/button.cpp | 508 ++++ Src/Wasabi/api/skin/widgets/button.h | 134 + Src/Wasabi/api/skin/widgets/checkbox.cpp | 262 ++ Src/Wasabi/api/skin/widgets/checkbox.h | 246 ++ Src/Wasabi/api/skin/widgets/combobox.cpp | 270 ++ Src/Wasabi/api/skin/widgets/combobox.h | 121 + Src/Wasabi/api/skin/widgets/compbuck2.cpp | 611 +++++ Src/Wasabi/api/skin/widgets/compbuck2.h | 156 ++ Src/Wasabi/api/skin/widgets/customobject.cpp | 8 + Src/Wasabi/api/skin/widgets/customobject.h | 78 + Src/Wasabi/api/skin/widgets/db/autofilterlist.cpp | 406 +++ Src/Wasabi/api/skin/widgets/db/autofilterlist.h | 447 ++++ Src/Wasabi/api/skin/widgets/db/autoquerylist.cpp | 111 + Src/Wasabi/api/skin/widgets/db/autoquerylist.h | 109 + Src/Wasabi/api/skin/widgets/db/queryline.cpp | 32 + Src/Wasabi/api/skin/widgets/db/queryline.h | 64 + Src/Wasabi/api/skin/widgets/db/xuiquerydrag.cpp | 103 + Src/Wasabi/api/skin/widgets/db/xuiquerydrag.h | 53 + Src/Wasabi/api/skin/widgets/db/xuiqueryline.cpp | 73 + Src/Wasabi/api/skin/widgets/db/xuiqueryline.h | 35 + Src/Wasabi/api/skin/widgets/db/xuiquerylist.cpp | 119 + Src/Wasabi/api/skin/widgets/db/xuiquerylist.h | 72 + Src/Wasabi/api/skin/widgets/dropdownlist.cpp | 747 ++++++ Src/Wasabi/api/skin/widgets/dropdownlist.h | 531 ++++ Src/Wasabi/api/skin/widgets/edit.cpp | 312 +++ Src/Wasabi/api/skin/widgets/edit.h | 100 + Src/Wasabi/api/skin/widgets/fx.h | 12 + Src/Wasabi/api/skin/widgets/fx_dmove.cpp | 409 +++ Src/Wasabi/api/skin/widgets/fx_dmove.h | 48 + Src/Wasabi/api/skin/widgets/group.cpp | 1753 +++++++++++++ Src/Wasabi/api/skin/widgets/group.h | 365 +++ Src/Wasabi/api/skin/widgets/groupclickwnd.cpp | 84 + Src/Wasabi/api/skin/widgets/groupclickwnd.h | 226 ++ Src/Wasabi/api/skin/widgets/grouplist.cpp | 228 ++ Src/Wasabi/api/skin/widgets/grouplist.h | 79 + Src/Wasabi/api/skin/widgets/grouptgbutton.cpp | 109 + Src/Wasabi/api/skin/widgets/grouptgbutton.h | 101 + Src/Wasabi/api/skin/widgets/grouptips.cpp | 92 + Src/Wasabi/api/skin/widgets/grouptips.h | 23 + Src/Wasabi/api/skin/widgets/guiradiogroup.cpp | 36 + Src/Wasabi/api/skin/widgets/guiradiogroup.h | 53 + Src/Wasabi/api/skin/widgets/historyeditbox.cpp | 152 ++ Src/Wasabi/api/skin/widgets/historyeditbox.h | 58 + Src/Wasabi/api/skin/widgets/layer.cpp | 1727 +++++++++++++ Src/Wasabi/api/skin/widgets/layer.h | 287 +++ Src/Wasabi/api/skin/widgets/mb/iebrowser.cpp | 637 +++++ Src/Wasabi/api/skin/widgets/mb/iebrowser.h | 102 + Src/Wasabi/api/skin/widgets/mb/mainminibrowser.cpp | 70 + Src/Wasabi/api/skin/widgets/mb/mainminibrowser.h | 24 + Src/Wasabi/api/skin/widgets/mb/mbsvc.cpp | 48 + Src/Wasabi/api/skin/widgets/mb/mbsvc.h | 26 + Src/Wasabi/api/skin/widgets/mb/mbsvcwac.cpp | 26 + Src/Wasabi/api/skin/widgets/mb/mbsvcwac.h | 24 + Src/Wasabi/api/skin/widgets/mb/minibrowser.cpp | 36 + Src/Wasabi/api/skin/widgets/mb/minibrowser.h | 215 ++ Src/Wasabi/api/skin/widgets/mb/minibrowserwnd.cpp | 173 ++ Src/Wasabi/api/skin/widgets/mb/minibrowserwnd.h | 57 + Src/Wasabi/api/skin/widgets/mb/scriptbrowser.cpp | 180 ++ Src/Wasabi/api/skin/widgets/mb/scriptbrowser.h | 63 + .../api/skin/widgets/mb/sharedminibrowser.cpp | 39 + Src/Wasabi/api/skin/widgets/mb/sharedminibrowser.h | 33 + Src/Wasabi/api/skin/widgets/mb/xuibrowser.cpp | 385 +++ Src/Wasabi/api/skin/widgets/mb/xuibrowser.h | 106 + Src/Wasabi/api/skin/widgets/mouseredir.cpp | 221 ++ Src/Wasabi/api/skin/widgets/mouseredir.h | 88 + Src/Wasabi/api/skin/widgets/objdirwnd.cpp | 227 ++ Src/Wasabi/api/skin/widgets/objdirwnd.h | 90 + Src/Wasabi/api/skin/widgets/pathpicker.cpp | 111 + Src/Wasabi/api/skin/widgets/pathpicker.h | 183 ++ Src/Wasabi/api/skin/widgets/pslider.cpp | 371 +++ Src/Wasabi/api/skin/widgets/pslider.h | 110 + Src/Wasabi/api/skin/widgets/sa.cpp | 735 ++++++ Src/Wasabi/api/skin/widgets/sa.h | 157 ++ Src/Wasabi/api/skin/widgets/seeker.h | 22 + Src/Wasabi/api/skin/widgets/seqband.cpp | 121 + Src/Wasabi/api/skin/widgets/seqband.h | 47 + Src/Wasabi/api/skin/widgets/seqpreamp.cpp | 44 + Src/Wasabi/api/skin/widgets/seqpreamp.h | 28 + Src/Wasabi/api/skin/widgets/seqvis.cpp | 367 +++ Src/Wasabi/api/skin/widgets/seqvis.h | 104 + Src/Wasabi/api/skin/widgets/spanbar.cpp | 58 + Src/Wasabi/api/skin/widgets/spanbar.h | 31 + Src/Wasabi/api/skin/widgets/sseeker.cpp | 128 + Src/Wasabi/api/skin/widgets/sseeker.h | 56 + Src/Wasabi/api/skin/widgets/sstatus.cpp | 172 ++ Src/Wasabi/api/skin/widgets/sstatus.h | 100 + Src/Wasabi/api/skin/widgets/stats/statswnd.cpp | 38 + Src/Wasabi/api/skin/widgets/stats/statswnd.h | 18 + Src/Wasabi/api/skin/widgets/stats/xuistats.cpp | 149 ++ Src/Wasabi/api/skin/widgets/stats/xuistats.h | 43 + Src/Wasabi/api/skin/widgets/svolbar.cpp | 55 + Src/Wasabi/api/skin/widgets/svolbar.h | 30 + Src/Wasabi/api/skin/widgets/text.cpp | 1767 +++++++++++++ Src/Wasabi/api/skin/widgets/text.h | 240 ++ Src/Wasabi/api/skin/widgets/textbase.cpp | 345 +++ Src/Wasabi/api/skin/widgets/textbase.h | 95 + Src/Wasabi/api/skin/widgets/tgbutton.cpp | 313 +++ Src/Wasabi/api/skin/widgets/tgbutton.h | 136 + Src/Wasabi/api/skin/widgets/title.cpp | 261 ++ Src/Wasabi/api/skin/widgets/title.h | 87 + Src/Wasabi/api/skin/widgets/titlebox.cpp | 183 ++ Src/Wasabi/api/skin/widgets/titlebox.h | 95 + Src/Wasabi/api/skin/widgets/wa2/xuiwa2slider.cpp | 186 ++ Src/Wasabi/api/skin/widgets/wa2/xuiwa2slider.h | 63 + Src/Wasabi/api/skin/widgets/xuiaddparams.cpp | 41 + Src/Wasabi/api/skin/widgets/xuiaddparams.h | 34 + Src/Wasabi/api/skin/widgets/xuibookmarklist.cpp | 50 + Src/Wasabi/api/skin/widgets/xuibookmarklist.h | 36 + Src/Wasabi/api/skin/widgets/xuicheckbox.cpp | 165 ++ Src/Wasabi/api/skin/widgets/xuicheckbox.h | 81 + Src/Wasabi/api/skin/widgets/xuicombobox.cpp | 7 + Src/Wasabi/api/skin/widgets/xuicombobox.h | 10 + Src/Wasabi/api/skin/widgets/xuicustomobject.cpp | 64 + Src/Wasabi/api/skin/widgets/xuicustomobject.h | 40 + Src/Wasabi/api/skin/widgets/xuidownloadslist.cpp | 411 +++ Src/Wasabi/api/skin/widgets/xuidownloadslist.h | 77 + Src/Wasabi/api/skin/widgets/xuidropdownlist.cpp | 7 + Src/Wasabi/api/skin/widgets/xuidropdownlist.h | 10 + Src/Wasabi/api/skin/widgets/xuieditbox.cpp | 6 + Src/Wasabi/api/skin/widgets/xuieditbox.h | 21 + Src/Wasabi/api/skin/widgets/xuiframe.cpp | 241 ++ Src/Wasabi/api/skin/widgets/xuiframe.h | 97 + Src/Wasabi/api/skin/widgets/xuigradientwnd.cpp | 66 + Src/Wasabi/api/skin/widgets/xuigradientwnd.h | 26 + Src/Wasabi/api/skin/widgets/xuigrid.cpp | 297 +++ Src/Wasabi/api/skin/widgets/xuigrid.h | 59 + Src/Wasabi/api/skin/widgets/xuigroupxfade.cpp | 120 + Src/Wasabi/api/skin/widgets/xuigroupxfade.h | 40 + Src/Wasabi/api/skin/widgets/xuihideobject.cpp | 50 + Src/Wasabi/api/skin/widgets/xuihideobject.h | 40 + Src/Wasabi/api/skin/widgets/xuihistoryedit.cpp | 7 + Src/Wasabi/api/skin/widgets/xuihistoryedit.h | 10 + Src/Wasabi/api/skin/widgets/xuilist.cpp | 1734 +++++++++++++ Src/Wasabi/api/skin/widgets/xuilist.h | 221 ++ Src/Wasabi/api/skin/widgets/xuimenu.cpp | 384 +++ Src/Wasabi/api/skin/widgets/xuimenu.h | 110 + Src/Wasabi/api/skin/widgets/xuimenuso.cpp | 271 ++ Src/Wasabi/api/skin/widgets/xuimenuso.h | 76 + Src/Wasabi/api/skin/widgets/xuiobjdirwnd.cpp | 57 + Src/Wasabi/api/skin/widgets/xuiobjdirwnd.h | 32 + Src/Wasabi/api/skin/widgets/xuioswndhost.cpp | 306 +++ Src/Wasabi/api/skin/widgets/xuioswndhost.h | 78 + Src/Wasabi/api/skin/widgets/xuipathpicker.cpp | 73 + Src/Wasabi/api/skin/widgets/xuipathpicker.h | 53 + Src/Wasabi/api/skin/widgets/xuiprogressgrid.cpp | 162 ++ Src/Wasabi/api/skin/widgets/xuiprogressgrid.h | 59 + Src/Wasabi/api/skin/widgets/xuiradiogroup.cpp | 17 + Src/Wasabi/api/skin/widgets/xuiradiogroup.h | 30 + Src/Wasabi/api/skin/widgets/xuirect.cpp | 186 ++ Src/Wasabi/api/skin/widgets/xuirect.h | 43 + Src/Wasabi/api/skin/widgets/xuisendparams.cpp | 37 + Src/Wasabi/api/skin/widgets/xuisendparams.h | 36 + Src/Wasabi/api/skin/widgets/xuistatus.cpp | 98 + Src/Wasabi/api/skin/widgets/xuistatus.h | 54 + Src/Wasabi/api/skin/widgets/xuitabsheet.cpp | 217 ++ Src/Wasabi/api/skin/widgets/xuitabsheet.h | 91 + Src/Wasabi/api/skin/widgets/xuithemeslist.cpp | 365 +++ Src/Wasabi/api/skin/widgets/xuithemeslist.h | 128 + Src/Wasabi/api/skin/widgets/xuititlebox.cpp | 59 + Src/Wasabi/api/skin/widgets/xuititlebox.h | 44 + Src/Wasabi/api/skin/widgets/xuitree.cpp | 2644 ++++++++++++++++++++ Src/Wasabi/api/skin/widgets/xuitree.h | 326 +++ Src/Wasabi/api/skin/widgets/xuiwndholder.cpp | 272 ++ Src/Wasabi/api/skin/widgets/xuiwndholder.h | 80 + 166 files changed, 33019 insertions(+) create mode 100644 Src/Wasabi/api/skin/widgets/animlayer.cpp create mode 100644 Src/Wasabi/api/skin/widgets/animlayer.h create mode 100644 Src/Wasabi/api/skin/widgets/button.cpp create mode 100644 Src/Wasabi/api/skin/widgets/button.h create mode 100644 Src/Wasabi/api/skin/widgets/checkbox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/checkbox.h create mode 100644 Src/Wasabi/api/skin/widgets/combobox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/combobox.h create mode 100644 Src/Wasabi/api/skin/widgets/compbuck2.cpp create mode 100644 Src/Wasabi/api/skin/widgets/compbuck2.h create mode 100644 Src/Wasabi/api/skin/widgets/customobject.cpp create mode 100644 Src/Wasabi/api/skin/widgets/customobject.h create mode 100644 Src/Wasabi/api/skin/widgets/db/autofilterlist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/db/autofilterlist.h create mode 100644 Src/Wasabi/api/skin/widgets/db/autoquerylist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/db/autoquerylist.h create mode 100644 Src/Wasabi/api/skin/widgets/db/queryline.cpp create mode 100644 Src/Wasabi/api/skin/widgets/db/queryline.h create mode 100644 Src/Wasabi/api/skin/widgets/db/xuiquerydrag.cpp create mode 100644 Src/Wasabi/api/skin/widgets/db/xuiquerydrag.h create mode 100644 Src/Wasabi/api/skin/widgets/db/xuiqueryline.cpp create mode 100644 Src/Wasabi/api/skin/widgets/db/xuiqueryline.h create mode 100644 Src/Wasabi/api/skin/widgets/db/xuiquerylist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/db/xuiquerylist.h create mode 100644 Src/Wasabi/api/skin/widgets/dropdownlist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/dropdownlist.h create mode 100644 Src/Wasabi/api/skin/widgets/edit.cpp create mode 100644 Src/Wasabi/api/skin/widgets/edit.h create mode 100644 Src/Wasabi/api/skin/widgets/fx.h create mode 100644 Src/Wasabi/api/skin/widgets/fx_dmove.cpp create mode 100644 Src/Wasabi/api/skin/widgets/fx_dmove.h create mode 100644 Src/Wasabi/api/skin/widgets/group.cpp create mode 100644 Src/Wasabi/api/skin/widgets/group.h create mode 100644 Src/Wasabi/api/skin/widgets/groupclickwnd.cpp create mode 100644 Src/Wasabi/api/skin/widgets/groupclickwnd.h create mode 100644 Src/Wasabi/api/skin/widgets/grouplist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/grouplist.h create mode 100644 Src/Wasabi/api/skin/widgets/grouptgbutton.cpp create mode 100644 Src/Wasabi/api/skin/widgets/grouptgbutton.h create mode 100644 Src/Wasabi/api/skin/widgets/grouptips.cpp create mode 100644 Src/Wasabi/api/skin/widgets/grouptips.h create mode 100644 Src/Wasabi/api/skin/widgets/guiradiogroup.cpp create mode 100644 Src/Wasabi/api/skin/widgets/guiradiogroup.h create mode 100644 Src/Wasabi/api/skin/widgets/historyeditbox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/historyeditbox.h create mode 100644 Src/Wasabi/api/skin/widgets/layer.cpp create mode 100644 Src/Wasabi/api/skin/widgets/layer.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/iebrowser.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/iebrowser.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/mainminibrowser.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/mainminibrowser.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/mbsvc.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/mbsvc.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/mbsvcwac.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/mbsvcwac.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/minibrowser.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/minibrowser.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/minibrowserwnd.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/minibrowserwnd.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/scriptbrowser.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/scriptbrowser.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/sharedminibrowser.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/sharedminibrowser.h create mode 100644 Src/Wasabi/api/skin/widgets/mb/xuibrowser.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mb/xuibrowser.h create mode 100644 Src/Wasabi/api/skin/widgets/mouseredir.cpp create mode 100644 Src/Wasabi/api/skin/widgets/mouseredir.h create mode 100644 Src/Wasabi/api/skin/widgets/objdirwnd.cpp create mode 100644 Src/Wasabi/api/skin/widgets/objdirwnd.h create mode 100644 Src/Wasabi/api/skin/widgets/pathpicker.cpp create mode 100644 Src/Wasabi/api/skin/widgets/pathpicker.h create mode 100644 Src/Wasabi/api/skin/widgets/pslider.cpp create mode 100644 Src/Wasabi/api/skin/widgets/pslider.h create mode 100644 Src/Wasabi/api/skin/widgets/sa.cpp create mode 100644 Src/Wasabi/api/skin/widgets/sa.h create mode 100644 Src/Wasabi/api/skin/widgets/seeker.h create mode 100644 Src/Wasabi/api/skin/widgets/seqband.cpp create mode 100644 Src/Wasabi/api/skin/widgets/seqband.h create mode 100644 Src/Wasabi/api/skin/widgets/seqpreamp.cpp create mode 100644 Src/Wasabi/api/skin/widgets/seqpreamp.h create mode 100644 Src/Wasabi/api/skin/widgets/seqvis.cpp create mode 100644 Src/Wasabi/api/skin/widgets/seqvis.h create mode 100644 Src/Wasabi/api/skin/widgets/spanbar.cpp create mode 100644 Src/Wasabi/api/skin/widgets/spanbar.h create mode 100644 Src/Wasabi/api/skin/widgets/sseeker.cpp create mode 100644 Src/Wasabi/api/skin/widgets/sseeker.h create mode 100644 Src/Wasabi/api/skin/widgets/sstatus.cpp create mode 100644 Src/Wasabi/api/skin/widgets/sstatus.h create mode 100644 Src/Wasabi/api/skin/widgets/stats/statswnd.cpp create mode 100644 Src/Wasabi/api/skin/widgets/stats/statswnd.h create mode 100644 Src/Wasabi/api/skin/widgets/stats/xuistats.cpp create mode 100644 Src/Wasabi/api/skin/widgets/stats/xuistats.h create mode 100644 Src/Wasabi/api/skin/widgets/svolbar.cpp create mode 100644 Src/Wasabi/api/skin/widgets/svolbar.h create mode 100644 Src/Wasabi/api/skin/widgets/text.cpp create mode 100644 Src/Wasabi/api/skin/widgets/text.h create mode 100644 Src/Wasabi/api/skin/widgets/textbase.cpp create mode 100644 Src/Wasabi/api/skin/widgets/textbase.h create mode 100644 Src/Wasabi/api/skin/widgets/tgbutton.cpp create mode 100644 Src/Wasabi/api/skin/widgets/tgbutton.h create mode 100644 Src/Wasabi/api/skin/widgets/title.cpp create mode 100644 Src/Wasabi/api/skin/widgets/title.h create mode 100644 Src/Wasabi/api/skin/widgets/titlebox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/titlebox.h create mode 100644 Src/Wasabi/api/skin/widgets/wa2/xuiwa2slider.cpp create mode 100644 Src/Wasabi/api/skin/widgets/wa2/xuiwa2slider.h create mode 100644 Src/Wasabi/api/skin/widgets/xuiaddparams.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuiaddparams.h create mode 100644 Src/Wasabi/api/skin/widgets/xuibookmarklist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuibookmarklist.h create mode 100644 Src/Wasabi/api/skin/widgets/xuicheckbox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuicheckbox.h create mode 100644 Src/Wasabi/api/skin/widgets/xuicombobox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuicombobox.h create mode 100644 Src/Wasabi/api/skin/widgets/xuicustomobject.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuicustomobject.h create mode 100644 Src/Wasabi/api/skin/widgets/xuidownloadslist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuidownloadslist.h create mode 100644 Src/Wasabi/api/skin/widgets/xuidropdownlist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuidropdownlist.h create mode 100644 Src/Wasabi/api/skin/widgets/xuieditbox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuieditbox.h create mode 100644 Src/Wasabi/api/skin/widgets/xuiframe.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuiframe.h create mode 100644 Src/Wasabi/api/skin/widgets/xuigradientwnd.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuigradientwnd.h create mode 100644 Src/Wasabi/api/skin/widgets/xuigrid.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuigrid.h create mode 100644 Src/Wasabi/api/skin/widgets/xuigroupxfade.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuigroupxfade.h create mode 100644 Src/Wasabi/api/skin/widgets/xuihideobject.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuihideobject.h create mode 100644 Src/Wasabi/api/skin/widgets/xuihistoryedit.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuihistoryedit.h create mode 100644 Src/Wasabi/api/skin/widgets/xuilist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuilist.h create mode 100644 Src/Wasabi/api/skin/widgets/xuimenu.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuimenu.h create mode 100644 Src/Wasabi/api/skin/widgets/xuimenuso.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuimenuso.h create mode 100644 Src/Wasabi/api/skin/widgets/xuiobjdirwnd.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuiobjdirwnd.h create mode 100644 Src/Wasabi/api/skin/widgets/xuioswndhost.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuioswndhost.h create mode 100644 Src/Wasabi/api/skin/widgets/xuipathpicker.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuipathpicker.h create mode 100644 Src/Wasabi/api/skin/widgets/xuiprogressgrid.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuiprogressgrid.h create mode 100644 Src/Wasabi/api/skin/widgets/xuiradiogroup.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuiradiogroup.h create mode 100644 Src/Wasabi/api/skin/widgets/xuirect.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuirect.h create mode 100644 Src/Wasabi/api/skin/widgets/xuisendparams.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuisendparams.h create mode 100644 Src/Wasabi/api/skin/widgets/xuistatus.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuistatus.h create mode 100644 Src/Wasabi/api/skin/widgets/xuitabsheet.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuitabsheet.h create mode 100644 Src/Wasabi/api/skin/widgets/xuithemeslist.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuithemeslist.h create mode 100644 Src/Wasabi/api/skin/widgets/xuititlebox.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuititlebox.h create mode 100644 Src/Wasabi/api/skin/widgets/xuitree.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuitree.h create mode 100644 Src/Wasabi/api/skin/widgets/xuiwndholder.cpp create mode 100644 Src/Wasabi/api/skin/widgets/xuiwndholder.h (limited to 'Src/Wasabi/api/skin/widgets') diff --git a/Src/Wasabi/api/skin/widgets/animlayer.cpp b/Src/Wasabi/api/skin/widgets/animlayer.cpp new file mode 100644 index 00000000..10c7da1a --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/animlayer.cpp @@ -0,0 +1,880 @@ +#include "precomp.h" +#include +#include +#include +#include + +const wchar_t animLayerXuiObjectStr[] = L"AnimatedLayer"; // This is the xml tag +char animLayerXuiSvcName[] = "Animated Layer xui object"; // this is the name of the xuiservice + +AnimLayerScriptController _animlayerController; +AnimLayerScriptController *animlayerController = &_animlayerController; + +// -- Functions table ------------------------------------- +function_descriptor_struct AnimLayerScriptController::exportedFunction[] = { + {L"setSpeed", 1, (void*)AnimatedLayer::script_vcpu_setSpeed }, + {L"gotoFrame", 1, (void*)AnimatedLayer::script_vcpu_gotoFrame }, + {L"setStartFrame", 1, (void*)AnimatedLayer::script_vcpu_setStartFrame }, + {L"setEndFrame", 1, (void*)AnimatedLayer::script_vcpu_setEndFrame }, + {L"setAutoReplay", 1, (void*)AnimatedLayer::script_vcpu_setAutoReplay }, + {L"play", 0, (void*)AnimatedLayer::script_vcpu_play }, + {L"togglePause", 0, (void*)AnimatedLayer::script_vcpu_pause }, + {L"stop", 0, (void*)AnimatedLayer::script_vcpu_stop }, + {L"pause", 0, (void*)AnimatedLayer::script_vcpu_pause }, + {L"isPlaying", 0, (void*)AnimatedLayer::script_vcpu_isPlaying }, + {L"isPaused", 0, (void*)AnimatedLayer::script_vcpu_isPaused }, + {L"isStopped", 0, (void*)AnimatedLayer::script_vcpu_isStopped }, + {L"getStartFrame", 0, (void*)AnimatedLayer::script_vcpu_getStartFrame }, + {L"getEndFrame", 0, (void*)AnimatedLayer::script_vcpu_getEndFrame }, + {L"getLength", 0, (void*)AnimatedLayer::script_vcpu_getLength }, + {L"getDirection", 0, (void*)AnimatedLayer::script_vcpu_getDirection }, + {L"getAutoReplay", 0, (void*)AnimatedLayer::script_vcpu_getAutoReplay }, + {L"getCurFrame", 0, (void*)AnimatedLayer::script_vcpu_getCurFrame }, + {L"onPlay", 0, (void*)AnimatedLayer::script_vcpu_onPlay }, + {L"onPause", 0, (void*)AnimatedLayer::script_vcpu_onPause }, + {L"onResume", 0, (void*)AnimatedLayer::script_vcpu_onResume }, + {L"onStop", 0, (void*)AnimatedLayer::script_vcpu_onStop }, + {L"onFrame", 1, (void*)AnimatedLayer::script_vcpu_onFrame }, + {L"setRealtime", 1, (void*)AnimatedLayer::script_vcpu_setRealtime }, + }; +// -------------------------------------------------------- + +const wchar_t *AnimLayerScriptController::getClassName() +{ + return L"AnimatedLayer"; +} + +const wchar_t *AnimLayerScriptController::getAncestorClassName() +{ + return L"Layer"; +} + +ScriptObject *AnimLayerScriptController::instantiate() +{ + AnimatedLayer *a = new AnimatedLayer; + ASSERT(a != NULL); + return a->getScriptObject(); +} + +void AnimLayerScriptController::destroy(ScriptObject *o) +{ + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + ASSERT(a != NULL); + delete a; +} + +void *AnimLayerScriptController::encapsulate(ScriptObject *o) +{ + return NULL; // no encapsulation for animatedlayer yet +} + +void AnimLayerScriptController::deencapsulate(void *o) +{} + +int AnimLayerScriptController::getNumFunctions() +{ + return sizeof(exportedFunction) / sizeof(function_descriptor_struct); +} + +const function_descriptor_struct *AnimLayerScriptController::getExportedFunctions() +{ + return exportedFunction; +} + +GUID AnimLayerScriptController::getClassGuid() +{ + return animLayerGuid; +} +XMLParamPair AnimatedLayer::params[] = + { + {ANIMLAYER_AUTOPLAY, L"AUTOPLAY"}, + {ANIMLAYER_AUTOREPLAY, L"AUTOREPLAY"}, + {ANIMLAYER_DEBUG, L"DEBUG"}, + {ANIMLAYER_ELEMENTFRAMES, L"ELEMENTFRAMES"}, + {ANIMLAYER_END, L"END"}, + {ANIMLAYER_FRAMEHEIGHT, L"FRAMEHEIGHT"}, + {ANIMLAYER_FRAMEWIDTH, L"FRAMEWIDTH"}, + {ANIMLAYER_REALTIME, L"REALTIME"}, + {ANIMLAYER_SPEED, L"SPEED"}, + {ANIMLAYER_START, L"START"}, + }; + +AnimatedLayer::AnimatedLayer() +{ + getScriptObject()->vcpu_setInterface(animLayerGuid, (void *)static_cast(this)); + getScriptObject()->vcpu_setClassName(L"AnimatedLayer"); + getScriptObject()->vcpu_setController(animlayerController); + autoplay = 0; + startframe = -1; + endframe = -1; + curframe = 0; + autoreplay = 1; + speed = 200; + timerset = 0; + status = ANIM_STOPPED; + realtime = 0; + debug = 0; + style = ANIM_UNKNOWN; + oldstyle = ANIM_UNKNOWN; + frameHeight = AUTOWH; + frameWidth = AUTOWH; + multiple_elements_frames = 0; + + xuihandle = newXuiHandle(); + CreateXMLParameters(xuihandle); +} + +void AnimatedLayer::CreateXMLParameters(int master_handle) +{ + //ANIMLAYER_PARENT::CreateXMLParameters(master_handle); + int numParams = sizeof(params) / sizeof(params[0]); + hintNumberOfParams(xuihandle, numParams); + for (int i = 0;i < numParams;i++) + addParam(xuihandle, params[i], XUI_ATTRIBUTE_IMPLIED); +} + +AnimatedLayer::~AnimatedLayer() +{ + bitmap_elements.deleteAll(); + regionlist.deleteAll(); +} + +int AnimatedLayer::onInit() +{ + ANIMLAYER_PARENT::onInit(); + + int w, h; + getGuiObject()->guiobject_getGuiPosition(NULL, NULL, &w, &h, NULL, NULL, NULL, NULL); + if (frameWidth == AUTOWH && w != AUTOWH) setWidth(w, 1); + if (frameHeight == AUTOWH && h != AUTOWH) setHeight(h, 1); + if (style == 0) + { + SkinBitmap *bm = getBitmap(); + if (bm) + { + if (bm->getWidth() != w) style = ANIM_HORZ; + else if (bm->getHeight() != h) style = ANIM_VERT; + } + } + + if (getRegionOp()) + makeRegion(); + reloadMultipleElements(); + + if (autoplay) + { + if (startframe == -1) + setStartFrame(0); + if (endframe == -1) + setEndFrame(getLength() - 1); + play(); + } + return 1; +} + +int AnimatedLayer::setXuiParam(int _xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *strvalue) +{ + if (xuihandle == _xuihandle) + { + switch (xmlattributeid) + { + case ANIMLAYER_AUTOREPLAY: setAutoReplay(WTOI(strvalue)); return 1; + case ANIMLAYER_AUTOPLAY: setAutoPlay(WTOI(strvalue)); return 1; + case ANIMLAYER_SPEED: setSpeed(WTOI(strvalue)); return 1; + case ANIMLAYER_FRAMEHEIGHT: setHeight(WTOI(strvalue)); return 1; + case ANIMLAYER_FRAMEWIDTH: setWidth(WTOI(strvalue)); return 1; + case ANIMLAYER_REALTIME: setRealtime(WTOI(strvalue)); return 1; + case ANIMLAYER_ELEMENTFRAMES: setElementFrames(WTOI(strvalue)); return 1; + case ANIMLAYER_START: setStartFrame(WTOI(strvalue)); return 1; + case ANIMLAYER_END: setEndFrame(WTOI(strvalue)); return 1; + case ANIMLAYER_DEBUG: debug = WTOI(strvalue); return 1; + } + } + return ANIMLAYER_PARENT::setXuiParam(_xuihandle, xmlattributeid, xmlattributename, strvalue); +} + +void AnimatedLayer::_invalidate() +{ + if (realtime) + { + if (isVisible() && !isMinimized()) cascadeRepaint(); + } + else + invalidate(); +} + +void AnimatedLayer::setElementFrames(int n) +{ + if (multiple_elements_frames == n) return ; + multiple_elements_frames = n; + if (n > 0) + { + if (style != ANIM_MULTI) + oldstyle = style; + style = ANIM_MULTI; + } + else + { + style = oldstyle; + oldstyle = ANIM_UNKNOWN; + } + invalidateRegionCache(); +} + +void AnimatedLayer::setHeight(int h, int selfset) +{ + ASSERTPR(selfset || style == ANIM_UNKNOWN, "can't set frameHeight if frameWidth has already been set"); + frameHeight = h; + if (!selfset) style = ANIM_VERT; +} + +int AnimatedLayer::getHeight() +{ + if (style == ANIM_MULTI) + { + SkinBitmap *bm0 = getElementBitmap(0); + if (bm0 == NULL) return AUTOWH; + return bm0->getHeight(); + } + if (style == ANIM_HORZ) + return ANIMLAYER_PARENT::getHeight(); + return frameHeight; +} + +void AnimatedLayer::setWidth(int w, int selfset) +{ + ASSERTPR(selfset || style == ANIM_UNKNOWN, "can't set frameWidth if frameHeight has already been set"); + frameWidth = w; + if (!selfset) style = ANIM_HORZ; +} + +int AnimatedLayer::getWidth() +{ + if (style == ANIM_MULTI) + { + SkinBitmap *bm0 = getElementBitmap(0); + if (bm0 == NULL) return AUTOWH; + return bm0->getWidth(); + } + if (style == ANIM_VERT) + return ANIMLAYER_PARENT::getWidth(); + return frameWidth; +} + +void AnimatedLayer::setRealtime(int r) +{ + realtime = r; +} + +int AnimatedLayer::getLength() +{ + if (style == ANIM_VERT && frameHeight < 0) return 0; + if (style == ANIM_HORZ && frameWidth < 0) return 0; + ASSERT(getBitmap() != NULL); + if (style == ANIM_VERT) + return ANIMLAYER_PARENT::getHeight() / frameHeight; + else if (style == ANIM_HORZ) + return ANIMLAYER_PARENT::getWidth() / frameWidth; + else if (style == ANIM_MULTI) + return multiple_elements_frames; + return 0; +} + +void AnimatedLayer::timerCallback(int id) +{ + switch (id) + { + case TIMER_ANIM: + { + int oldframe = curframe; + for (int i = 0;i < timerclient_getSkipped() + 1;i++) + { + if (curframe == getEndFrame()) + { + if (!autoreplay) + { + stop(); + break; + } + else + curframe = getStartFrame(); + } + else + { + curframe += getDirection(); + if (curframe != oldframe) + script_onFrame(curframe); + } + } + if (curframe != oldframe) + _invalidate(); + break; + } + default: + ANIMLAYER_PARENT::timerCallback(id); + break; + } +} + +int AnimatedLayer::getSourceOffsetY() +{ + if (style == ANIM_MULTI) return 0; + if (style == ANIM_HORZ) return 0; + if (curframe > getLength() - 1) return 0; + return curframe * getHeight(); +} + +int AnimatedLayer::getSourceOffsetX() +{ + if (style == ANIM_MULTI) return 0; + if (style == ANIM_VERT) return 0; + if (curframe > getLength() - 1) return 0; + return curframe * getWidth(); +} + +void AnimatedLayer::setSpeed(int s) +{ + speed = s; + if (status == ANIM_PLAYING) + { + stopTimer(); + startTimer(); + } +} + +void AnimatedLayer::stopTimer() +{ + if (timerset) + { + killTimer(TIMER_ANIM); + timerset = 0; + } +} + +void AnimatedLayer::startTimer() +{ + if (!timerset) + { + setTimer(TIMER_ANIM, speed); + timerset = 1; + } +} + +void AnimatedLayer::play() +{ + gotoFrame(startframe); + startTimer(); + status = ANIM_PLAYING; + script_onPlay(); +} + +void AnimatedLayer::stop() +{ + stopTimer(); + status = ANIM_STOPPED; + script_onStop(); +} + +void AnimatedLayer::pause() +{ + if (status == ANIM_PAUSED) + { + startTimer(); + status = ANIM_PLAYING; + script_onResume(); + } + else + if (status == ANIM_PLAYING) + { + stopTimer(); + status = ANIM_PAUSED; + script_onPause(); + } +} + +int AnimatedLayer::getCurFrame() +{ + return curframe; +} + +void AnimatedLayer::setStartFrame(int s) +{ + if (s < 0) return ; + startframe = s; +} + +void AnimatedLayer::setEndFrame(int e) +{ + if (e < 0) return ; + endframe = e; +} + +void AnimatedLayer::setAutoReplay(int r) +{ + autoreplay = r; +} + +void AnimatedLayer::setAutoPlay(int r) +{ + autoplay = r; + // no need to trigger an event here, we can't be in a script if we + // need to autoplay at xml loading +} + +int AnimatedLayer::getStartFrame() +{ + return startframe == -1 ? 0 : startframe; +} + +int AnimatedLayer::getEndFrame() +{ + return endframe == -1 ? getLength() - 1 : endframe; +} + +int AnimatedLayer::getSpeed() +{ + return speed; +} + +int AnimatedLayer::isPlaying() +{ + return status == ANIM_PLAYING; +} + +int AnimatedLayer::isStopped() +{ + return status == ANIM_STOPPED; +} + +int AnimatedLayer::isPaused() +{ + return status == ANIM_PAUSED; +} + +int AnimatedLayer::getAutoReplay() +{ + return autoreplay; +} + +int AnimatedLayer::getDirection() +{ + return getStartFrame() < getEndFrame() ? 1 : -1; +} + +void AnimatedLayer::gotoFrame(int n) +{ + if (n != curframe) + { + curframe = n; + _invalidate(); + script_onFrame(n); + } +} + +api_region *AnimatedLayer::getBitmapRegion() +{ + if (curframe > getLength() - 1) return NULL; + return regionlist.enumItem(getCurFrame()); +} + +void AnimatedLayer::makeRegion() +{ + if (!isInited()) return ; + regionlist.deleteAll(); + for (int i = 0;i < getLength();i++) + { + RegionI *rg; + if (style == ANIM_VERT) + { + RECT g = {0, i * getHeight(), getWidth(), i * getHeight() + getHeight()}; + rg = new RegionI(getBitmap(), &g, 0, -i * getHeight(), FALSE); + } + else if (style == ANIM_HORZ) + { + RECT g = {i * getWidth(), 0, i * getWidth() + getWidth(), getHeight()}; + rg = new RegionI(getBitmap(), &g, -i * getWidth(), 0, FALSE); + } + else if (style == ANIM_MULTI) + { + RECT g = {0, 0, getWidth(), getHeight()}; + rg = new RegionI(getElementBitmap(i), &g, 0, 0, FALSE); + } + else + return; + regionlist.addItem(rg); + } +} + +void AnimatedLayer::deleteRegion() +{ + regionlist.deleteAll(); +} + +SkinBitmap *AnimatedLayer::getBitmap() +{ + if (style != ANIM_MULTI) + return layer_getBitmap(); + return getElementBitmap(getCurFrame()); +} + +SkinBitmap *AnimatedLayer::getElementBitmap(int n) +{ + return bitmap_elements.enumItem(n); +} + +void AnimatedLayer::reloadMultipleElements() +{ + bitmap_elements.deleteAll(); + if (style != ANIM_MULTI) return ; + // basically blah$$$$.png becomes blah0000.png, blah0001.png etc + for (int i = 0;i < multiple_elements_frames;i++) + { + StringW elementname(layer_getBitmapName()); + elementname.replaceNumericField(i); + bitmap_elements.addItem(new SkinBitmap(elementname)); + } +} + +void AnimatedLayer::setBitmap(const wchar_t *name) +{ + ANIMLAYER_PARENT::setBitmap(name); + reloadMultipleElements(); +} + +// Script virtuals + +int AnimatedLayer::script_getStartFrame() +{ + return getStartFrame(); +} + +int AnimatedLayer::script_getEndFrame() +{ + return getEndFrame(); +} + +int AnimatedLayer::script_getSpeed() +{ + return getSpeed(); +} + +int AnimatedLayer::script_getCurFrame() +{ + return getCurFrame(); +} + +int AnimatedLayer::script_getDirection() +{ + return getDirection(); +} + +int AnimatedLayer::script_getAutoReplay() +{ + return getAutoReplay(); +} + +int AnimatedLayer::script_getLength() +{ + return getLength(); +} + +int AnimatedLayer::script_isPlaying() +{ + return isPlaying(); +} + +int AnimatedLayer::script_isStopped() +{ + return isStopped(); +} + +int AnimatedLayer::script_isPaused() +{ + return isPaused(); +} + +void AnimatedLayer::script_play() +{ + play(); +} + +void AnimatedLayer::script_pause() +{ + pause(); +} + +void AnimatedLayer::script_stop() +{ + stop(); +} + +void AnimatedLayer::script_setStartFrame(int s) +{ + setStartFrame(s); +} + +void AnimatedLayer::script_setEndFrame(int e) +{ + setEndFrame(e); +} + +void AnimatedLayer::script_setRealtime(int r) +{ + setRealtime(r); +} + +void AnimatedLayer::script_setAutoReplay(int r) +{ + setAutoReplay(r); +} +/* +void AnimatedLayer::script_gotoFrame(int n) { + gotoFrame(n); +}*/ + +void AnimatedLayer::script_setSpeed(int n) +{ + setSpeed(n); +} + +void AnimatedLayer::script_onPause() +{ + script_vcpu_onPause(SCRIPT_CALL, getScriptObject()); +} + +void AnimatedLayer::script_onResume() +{ + script_vcpu_onResume(SCRIPT_CALL, getScriptObject()); +} + +void AnimatedLayer::script_onStop() +{ + script_vcpu_onStop(SCRIPT_CALL, getScriptObject()); +} + +void AnimatedLayer::script_onPlay() +{ + script_vcpu_onPlay(SCRIPT_CALL, getScriptObject()); +} + +void AnimatedLayer::script_onFrame(int n) +{ + if (getRegionOp()) { invalidateRegionCache(); getParent()->invalidateWindowRegion(); } + scriptVar _n = SOM::makeVar(SCRIPT_INT); + SOM::assign(&_n, n); + script_vcpu_onFrame(SCRIPT_CALL, getScriptObject(), _n); +} + +// end virtuals + +// VCPU + +scriptVar AnimatedLayer::script_vcpu_gotoFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar f) +{ + SCRIPT_FUNCTION_INIT; + ASSERT(SOM::isNumeric(&f)); + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a-> /*script_*/gotoFrame(SOM::makeInt(&f)); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_getLength(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_INT(a->script_getLength()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_setStartFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s) +{ + SCRIPT_FUNCTION_INIT; + ASSERT(SOM::isNumeric(&s)); + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_setStartFrame(SOM::makeInt(&s)); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_setEndFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar e) +{ + SCRIPT_FUNCTION_INIT; + ASSERT(SOM::isNumeric(&e)); + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_setEndFrame(SOM::makeInt(&e)); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_setAutoReplay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar rp) +{ + SCRIPT_FUNCTION_INIT; + ASSERT(SOM::isNumeric(&rp)); + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_setAutoReplay(SOM::makeBoolean(&rp)); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_play(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_play(); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_pause(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_pause(); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_stop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_stop(); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_onPlay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + PROCESS_HOOKS0(o, animlayerController); + SCRIPT_FUNCTION_CHECKABORTEVENT; + SCRIPT_EXEC_EVENT0(o); +} + +scriptVar AnimatedLayer::script_vcpu_onStop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + PROCESS_HOOKS0(o, animlayerController); + SCRIPT_FUNCTION_CHECKABORTEVENT; + SCRIPT_EXEC_EVENT0(o); +} + +scriptVar AnimatedLayer::script_vcpu_onPause(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + PROCESS_HOOKS0(o, animlayerController); + SCRIPT_FUNCTION_CHECKABORTEVENT; + SCRIPT_EXEC_EVENT0(o); +} + +scriptVar AnimatedLayer::script_vcpu_onResume(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + PROCESS_HOOKS0(o, animlayerController); + SCRIPT_FUNCTION_CHECKABORTEVENT; + SCRIPT_EXEC_EVENT0(o); +} + +scriptVar AnimatedLayer::script_vcpu_onFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar f) +{ + SCRIPT_FUNCTION_INIT; + PROCESS_HOOKS1(o, animlayerController, f); + SCRIPT_FUNCTION_CHECKABORTEVENT; + SCRIPT_EXEC_EVENT1(o, f); +} + +scriptVar AnimatedLayer::script_vcpu_getAutoReplay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_INT(a->script_getAutoReplay()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_getDirection(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_INT(a->script_getDirection()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_getStartFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_INT(a->script_getStartFrame()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_getEndFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_INT(a->script_getEndFrame()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_isPlaying(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_BOOLEAN(a->script_isPlaying()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_isPaused(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_BOOLEAN(a->script_isPaused()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_isStopped(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_BOOLEAN(a->script_isStopped()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_getSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_INT(a->script_getSpeed()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_getCurFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) return MAKE_SCRIPT_INT(a->script_getCurFrame()); + RETURN_SCRIPT_ZERO; +} + +scriptVar AnimatedLayer::script_vcpu_setSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s) +{ + SCRIPT_FUNCTION_INIT; + ASSERT(SOM::isNumeric(&s)); + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_setSpeed(SOM::makeInt(&s)); + RETURN_SCRIPT_VOID; +} + +scriptVar AnimatedLayer::script_vcpu_setRealtime(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r) +{ + SCRIPT_FUNCTION_INIT; + AnimatedLayer *a = static_cast(o->vcpu_getInterface(animLayerGuid)); + if (a) a->script_setRealtime(SOM::makeInt(&r)); + RETURN_SCRIPT_VOID; +} + + +int AnimatedLayer::onPaint(Canvas *canvas) +{ + int r = ANIMLAYER_PARENT::onPaint(canvas); + if (debug && canvas != NULL) + { + Wasabi::FontInfo fontInfo; + fontInfo.pointSize = 14; + canvas->textOut(0, 0, StringPrintfW(L"%d", curframe), &fontInfo); + } + return r; +} diff --git a/Src/Wasabi/api/skin/widgets/animlayer.h b/Src/Wasabi/api/skin/widgets/animlayer.h new file mode 100644 index 00000000..94c45606 --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/animlayer.h @@ -0,0 +1,214 @@ +#ifndef _ANIMLAYER_H +#define _ANIMLAYER_H + +#include "layer.h" + +// {6B64CD27-5A26-4c4b-8C59-E6A70CF6493A} +static const GUID animLayerGuid = +{ 0x6b64cd27, 0x5a26, 0x4c4b, { 0x8c, 0x59, 0xe6, 0xa7, 0xc, 0xf6, 0x49, 0x3a } }; + +#define ANIMLAYER_SCRIPTPARENT Layer + +class AnimLayerScriptController : public LayerScriptController { + public: + + virtual const wchar_t *getClassName(); + virtual const wchar_t *getAncestorClassName(); + virtual ScriptObjectController *getAncestorController() { return layerController; } + virtual int getNumFunctions(); + virtual const function_descriptor_struct *getExportedFunctions(); + virtual GUID getClassGuid(); + virtual ScriptObject *instantiate(); + virtual void destroy(ScriptObject *o); + virtual void *encapsulate(ScriptObject *o); + virtual void deencapsulate(void *o); + + private: + + static function_descriptor_struct exportedFunction[]; + +}; + +extern AnimLayerScriptController *animlayerController; + + +#ifndef _NOSTUDIO + +#define TIMER_ANIM 872 + +#define ANIM_STOPPED 0 +#define ANIM_PLAYING 1 +#define ANIM_PAUSED 2 + +#define ANIMLAYER_PARENT Layer + +#define ANIM_UNKNOWN 0 +#define ANIM_VERT 1 +#define ANIM_HORZ 2 +#define ANIM_MULTI 3 + +class AnimatedLayer : public ANIMLAYER_SCRIPTPARENT { +public: + AnimatedLayer(); + virtual ~AnimatedLayer(); + + virtual int onInit(); + virtual int getHeight(); + virtual int getWidth(); + virtual void timerCallback(int id); + virtual int getSourceOffsetY(); + virtual int getSourceOffsetX(); + virtual void setAutoPlay(int p); + virtual int setXuiParam(int _xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value); + + virtual void setHeight(int h, int selfset=0); + virtual void setWidth(int w, int selfset=0); + virtual SkinBitmap *getBitmap(); + + void play(); + void pause(); + void stop(); + int getLength(); + void setStartFrame(int s); + void setEndFrame(int e); + void setAutoReplay(int r); + int getStartFrame(); + int getEndFrame(); + int isPlaying(); + int isPaused(); + int isStopped(); + int getSpeed(); + int getDirection(); + void gotoFrame(int n); + void setSpeed(int s); + int getAutoReplay(); + int getCurFrame(); + void setRealtime(int r); + + virtual api_region *getBitmapRegion(); + SkinBitmap *getElementBitmap(int n); + virtual void makeRegion(); + virtual void deleteRegion(); + void reloadMultipleElements(); + virtual void setElementFrames(int n); + virtual void setBitmap(const wchar_t *name); + + virtual int onPaint(Canvas *canvas); + +protected: + /*static */void CreateXMLParameters(int master_handle); + enum { + ANIMLAYER_AUTOREPLAY=0, + ANIMLAYER_AUTOPLAY, + ANIMLAYER_SPEED, + ANIMLAYER_FRAMEHEIGHT, + ANIMLAYER_FRAMEWIDTH, + ANIMLAYER_REALTIME, + ANIMLAYER_ELEMENTFRAMES, + ANIMLAYER_START, + ANIMLAYER_END, + ANIMLAYER_DEBUG, + }; + +private: + int frameHeight, frameWidth; + int startframe; + int endframe; + int status; + int curframe; + int autoreplay; + int speed; + int timerset; + int realtime; + int style; + int autoplay; + PtrList bitmap_elements; + int multiple_elements_frames; + int debug; + int xuihandle; + + void _invalidate(); + + void stopTimer(); + void startTimer(); + + PtrList regionlist; + int oldstyle; + static XMLParamPair params[]; + +// FG> +// -- SCRIPT ----------------------------------------------------- + +public: + + // virtuals + + virtual void script_play(); + virtual void script_pause(); + virtual void script_stop(); + virtual int script_getLength(); + virtual void script_setStartFrame(int s); + virtual void script_setEndFrame(int e); + virtual void script_setAutoReplay(int r); + virtual void script_setSpeed(int a); + virtual int script_getStartFrame(); + virtual int script_getEndFrame(); + virtual int script_getSpeed(); + virtual int script_getDirection(); + virtual int script_getAutoReplay(); + virtual int script_isPlaying(); + virtual int script_isStopped(); + virtual int script_isPaused(); + //virtual void script_gotoFrame(int f); + virtual void script_onFrame(int n); + virtual void script_onStop(); + virtual void script_onPlay(); + virtual void script_onPause(); + virtual void script_onResume(); + virtual int script_getCurFrame(); + virtual void script_setRealtime(int r); + + static scriptVar script_vcpu_setSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s); + static scriptVar script_vcpu_gotoFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar f); + static scriptVar script_vcpu_setStartFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s); + static scriptVar script_vcpu_setEndFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar e); + static scriptVar script_vcpu_setAutoReplay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar ar); + static scriptVar script_vcpu_play(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_pause(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_stop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + + static scriptVar script_vcpu_isPlaying(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_isPaused(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_isStopped(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getStartFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getEndFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getLength(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getDirection(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getAutoReplay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getCurFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_setRealtime(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r); + static scriptVar script_vcpu_onPlay(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onStop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onPause(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onResume(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar f); + + +#else +class AnimatedLayer : public ANIMLAYER_SCRIPTPARENT { + +public: + +#endif + +// INSERT_SCRIPT_OBJECT_CONTROL + +}; + +extern const wchar_t animLayerXuiObjectStr[]; +extern char animLayerXuiSvcName[]; +class AnimLayerXuiSvc : public XuiObjectSvc {}; + + +#endif diff --git a/Src/Wasabi/api/skin/widgets/button.cpp b/Src/Wasabi/api/skin/widgets/button.cpp new file mode 100644 index 00000000..639443bc --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/button.cpp @@ -0,0 +1,508 @@ +#include +#include +#include "button.h" +#include + +#include + +#ifdef WASABI_WIDGETS_COMPBUCK +#include +#endif + +#ifdef WASABI_COMPILE_MEDIACORE +#include +#endif + +#include + +const wchar_t buttonXuiObjectStr[] = L"Button"; // This is the xml tag +char buttonXuiSvcName[] = "Button xui object"; // this is the name of the xuiservice + + +ButtonScriptController _buttonController; +ButtonScriptController *buttonController = &_buttonController; + +// -- Functions table ------------------------------------- +function_descriptor_struct ButtonScriptController::exportedFunction[] = { +{L"onActivate", 1, (void*)Wasabi::Button::script_vcpu_onActivate }, + {L"setActivated", 1, (void*)Wasabi::Button::script_vcpu_setActivated }, + {L"getActivated", 0, (void*)Wasabi::Button::script_vcpu_getActivated }, + {L"onLeftClick", 0, (void*)Wasabi::Button::script_vcpu_onLeftClick }, + {L"onRightClick", 0, (void*)Wasabi::Button::script_vcpu_onRightClick }, + {L"leftClick", 0, (void*)Wasabi::Button::script_vcpu_leftClick }, + {L"rightClick", 0, (void*)Wasabi::Button::script_vcpu_rightClick }, + {L"setActivatedNoCallback", 1, (void*)Wasabi::Button::script_vcpu_setActivatedNoCallback }, + +}; +// -------------------------------------------------------- + +const wchar_t *ButtonScriptController::getClassName() { + return L"Button"; +} + +const wchar_t *ButtonScriptController::getAncestorClassName() { + return L"GuiObject"; +} + +ScriptObject *ButtonScriptController::instantiate() { + Wasabi::Button *b = new Wasabi::Button; + ASSERT(b != NULL); + return b->getScriptObject(); +} + +void ButtonScriptController::destroy(ScriptObject *o) { + Wasabi::Button *b = static_cast(o->vcpu_getInterface(buttonGuid)); + ASSERT(b != NULL); + delete b; +} + +void *ButtonScriptController::encapsulate(ScriptObject *o) { + return NULL; // no encapsulation for buttojn yet +} + +void ButtonScriptController::deencapsulate(void *o) { +} + +int ButtonScriptController::getNumFunctions() { + return sizeof(exportedFunction) / sizeof(function_descriptor_struct); +} + +const function_descriptor_struct *ButtonScriptController::getExportedFunctions() { + return exportedFunction; +} + +GUID ButtonScriptController::getClassGuid() { + return buttonGuid; +} + +XMLParamPair Wasabi::Button::params[] = +{ + {BUTTON_ACTION, L"ACTION"}, + {BUTTON_ACTIONTARGET, L"ACTION_TARGET"}, + {BUTTON_ACTIVEIMAGE, L"ACTIVEIMAGE"}, + {BUTTON_BORDERS, L"BORDERS"}, + #ifdef WASABI_WIDGETS_COMPBUCK + {BUTTON_CBTARGET, L"CBTARGET"}, +#endif + {BUTTON_CENTER_IMAGE, L"CENTER_IMAGE"}, + {BUTTON_DOWNIMAGE, L"DOWNIMAGE"}, + {BUTTON_HOVERIMAGE, L"HOVERIMAGE"}, + {BUTTON_IMAGE, L"IMAGE"}, + {BUTTON_PARAM, L"PARAM"}, + // {BUTTON_RECTRGN, "RECTRGN"}, + {BUTTON_RETCODE, L"RETCODE"}, + {BUTTON_BORDERSTYLE, L"STYLE"}, + {BUTTON_TEXT, L"TEXT"}, + {BUTTON_TEXTCOLOR, L"TEXTCOLOR"}, + {BUTTON_TEXTHOVERCOLOR, L"TEXTDIMMEDCOLOR"}, + {BUTTON_TEXTHOVERCOLOR, L"TEXTHOVERCOLOR"}, +}; +// ----------------------------------------------------------------------- + +Wasabi::Button::Button() { + disablenextcontextmenu = 0; +#ifdef WASABI_COMPILE_MEDIACORE + WASABI_API_MEDIACORE->core_addCallback(0, this); +#endif + getScriptObject()->vcpu_setInterface(buttonGuid, (void *)static_cast(this)); + getScriptObject()->vcpu_setClassName(L"Button"); + getScriptObject()->vcpu_setController(buttonController); + cbtarget = NULL; + setBorders(FALSE); + xuihandle = newXuiHandle(); + CreateXMLParameters(xuihandle); +} + +void Wasabi::Button::CreateXMLParameters(int master_handle) +{ + //BUTTON_PARENT::CreateXMLParameters(master_handle); + int numParams = sizeof(params) / sizeof(params[0]); + hintNumberOfParams(xuihandle, numParams); + for (int i = 0;i < numParams;i++) + addParam(xuihandle, params[i], XUI_ATTRIBUTE_IMPLIED); +} + +Wasabi::Button::~Button() { + //int c=getNotifyId(); +#ifdef WASABI_COMPILE_MEDIACORE + WASABI_API_MEDIACORE->core_delCallback(0, this); +#endif + WASABI_API_SYSCB->syscb_deregisterCallback(static_cast(this)); +} + +int Wasabi::Button::onInit() +{ + BUTTON_PARENT::onInit(); + if (!action.isempty()) + setAction(action); + //FG> this is retarded, and yes, i'm the one who coded it in + //if (s_normal.isempty() && s_down.isempty() && s_hover.isempty() && s_active.isempty()) + // setRectRgn(1); + setupBitmaps(); + //int c=getNotifyId(); + setHandleRightClick(TRUE); +#ifdef WASABI_COMPILE_MEDIACORE + if (WCSCASEEQLSAFE(actionstr, L"eq_toggle") + || WCSCASEEQLSAFE(actionstr, L"eq_auto")) + { + if (WCSCASEEQLSAFE(actionstr, L"eq_toggle")) + corecb_onEQStatusChange(WASABI_API_MEDIACORE->core_getEqStatus(0)); + else corecb_onEQAutoChange(WASABI_API_MEDIACORE->core_getEqAuto(0)); + } +#endif + WASABI_API_SYSCB->syscb_registerCallback(static_cast(this)); + return 1; +} + +void Wasabi::Button::setupBitmaps() +{ + setBitmaps(s_normal, s_down, s_hover, s_active); +} + +void Wasabi::Button::setParam(const wchar_t *p) +{ + param=p; +} + +void Wasabi::Button::setAction(const wchar_t *_action) +{ + actionstr = _action; + const wchar_t *name; + int id = SkinParser::getAction(_action, &name); + actionname = name; + if (id == ACTION_NONE || !action_target.isempty()) + action = _action; + else { + setNotifyId(id); + action = L""; + } +} + +int Wasabi::Button::setXuiParam(int _xuihandle, int xmlattributeid, const wchar_t *paramname, const wchar_t *strvalue) { + if (xuihandle == _xuihandle) { + switch (xmlattributeid) { + case BUTTON_TEXT: setButtonText(strvalue); return 1; + case BUTTON_ACTION: action = strvalue; if (isInited()) { setAction(action); } return 1; + case BUTTON_IMAGE: s_normal = strvalue; if (isInited()) { setBitmaps(s_normal, s_down, s_hover, s_active); } return 1; + case BUTTON_DOWNIMAGE: s_down = strvalue; if (isInited()) { setBitmaps(s_normal, s_down, s_hover, s_active); } return 1; + case BUTTON_HOVERIMAGE: s_hover = strvalue; if (isInited()) { setBitmaps(s_normal, s_down, s_hover, s_active); } return 1; + case BUTTON_ACTIVEIMAGE: s_active = strvalue; if (isInited()) { setBitmaps(s_normal, s_down, s_hover, s_active); }return 1; + case BUTTON_PARAM: setParam(strvalue); return 1; + //case BUTTON_RECTRGN: setRectRgn(WTOI(strvalue)); return 1; +#ifdef WASABI_WIDGETS_COMPBUCK + case BUTTON_CBTARGET: setCBTarget(strvalue); return 1; +#endif + case BUTTON_BORDERS: setBorders(WTOI(strvalue)); return 1; + case BUTTON_BORDERSTYLE: setBorderStyle(strvalue); return 1; + case BUTTON_RETCODE: setModalRetCode(WTOI(strvalue)); return 1; + case BUTTON_ACTIONTARGET: { + action_target = strvalue; + if (!actionstr.isempty()) { + action = actionstr; + setAction(action); + } + return 1; + } + case BUTTON_CENTER_IMAGE: setBitmapCenter(WTOI(strvalue)); return 1; + case BUTTON_TEXTCOLOR: setTextColor(strvalue); return 1; + case BUTTON_TEXTHOVERCOLOR: setTextHoverColor(strvalue); return 1; + case BUTTON_TEXTDIMMEDCOLOR: setTextDimmedColor(strvalue); return 1; + } + } + return BUTTON_PARENT::setXuiParam(_xuihandle, xmlattributeid, paramname, strvalue); +} + +#ifdef WASABI_WIDGETS_COMPBUCK +void Wasabi::Button::setCBTarget(const wchar_t *t) { + cbtarget = ComponentBucket2::getComponentBucket(t); +} +#endif + +const wchar_t *Wasabi::Button::getParam() +{ + return param; +} + +int Wasabi::Button::childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2) { +#ifdef WASABI_COMPILE_WNDMGR + switch(msg) + { +#ifdef _WIN32 + case WM_WA_CONTAINER_TOGGLED: + if(!param) break; + if(!WCSICMP((const wchar_t *)param1,param)) setActivatedButton(param2); + break; +#else +#warning port me +#endif +#ifdef WASABI_COMPILE_COMPONENTS + case WM_WA_COMPONENT_TOGGLED: + if(!param) break; + GUID *g; + if(g=SkinParser::getComponentGuid(param)) { + if(!MEMCMP((GUID *)param1,g,sizeof(GUID))) setActivatedButton(param2); + } + break; +#endif + } +#endif + return BUTTON_PARENT::childNotify(child, msg, param1, param2); +} + +#ifdef WASABI_COMPILE_MEDIACORE +int Wasabi::Button::corecb_onEQStatusChange(int newval) { + if(WCSCASEEQLSAFE(actionstr, L"eq_toggle")) setActivatedButton(newval); + return 0; +} + +int Wasabi::Button::corecb_onEQAutoChange(int newval) { + if(WCSCASEEQLSAFE(actionstr,L"eq_auto")) setActivatedButton(newval); + return 0; +} +#endif + +int Wasabi::Button::onLeftButtonUp(int x, int y) { + BUTTON_PARENT::onLeftButtonUp(x, y); + if (!WASABI_API_MAKI->vcpu_getComplete()) { +#ifdef WASABI_WIDGETS_COMPBUCK + if (getNotifyId() == ACTION_CB_NEXT) { + if (cbtarget) + cbtarget->ComponentBucket2::next_up(); + else + ComponentBucket2::next_up(getGuiObject()->guiobject_getParentGroup()); + } else if (getNotifyId() == ACTION_CB_PREV) { + if (cbtarget) + cbtarget->ComponentBucket2::prev_up(); + else + ComponentBucket2::prev_up(getGuiObject()->guiobject_getParentGroup()); + } else if (getNotifyId() == ACTION_CB_NEXTPAGE) { + if (cbtarget) + cbtarget->ComponentBucket2::next_page(); + else + ComponentBucket2::next_page(getGuiObject()->guiobject_getParentGroup()); + } else if (getNotifyId() == ACTION_CB_PREVPAGE) { + if (cbtarget) + cbtarget->ComponentBucket2::prev_page(); + else + ComponentBucket2::prev_page(getGuiObject()->guiobject_getParentGroup()); + } +#endif + } + return 1; +} + +int Wasabi::Button::onLeftButtonDown(int x, int y) { + BUTTON_PARENT::onLeftButtonDown(x, y); + if (!WASABI_API_MAKI->vcpu_getComplete()) { +#ifdef WASABI_WIDGETS_COMPBUCK + if (getNotifyId() == ACTION_CB_NEXT) { + if (cbtarget) + cbtarget->ComponentBucket2::next_down(); + else + ComponentBucket2::next_down(getGuiObject()->guiobject_getParentGroup()); + } else if (getNotifyId() == ACTION_CB_PREV) { + if (cbtarget) + cbtarget->ComponentBucket2::prev_down(); + else + ComponentBucket2::prev_down(getGuiObject()->guiobject_getParentGroup()); + } +#endif + } + return 1; +} + +void Wasabi::Button::onLeftPush(int x, int y) { + BUTTON_PARENT::onLeftPush(x, y); + script_vcpu_onLeftClick(SCRIPT_CALL, getScriptObject()); + if (!WASABI_API_MAKI->vcpu_getComplete()) { + if (!action.isempty()) { + if (!action_target.isempty()) + { + GuiObject *go = getGuiObject()->guiobject_findObject(action_target); + if (!go) + { + ScriptObject *so = WASABI_API_MAKI->maki_findObject(action_target); + if (so != NULL) + go = static_cast(so->vcpu_getInterface(guiObjectGuid)); + } + if (go) { + ifc_window *w = go->guiobject_getRootWnd(); + if (w) { + int _x = x; + int _y = y; + clientToScreen(&_x, &_y); + sendAction(w, actionstr, getParam(), _x, _y); + } + } + } else { + svc_action *act = ActionEnum(actionstr).getNext(); + if (act) { + int _x = x; + int _y = y; + clientToScreen(&_x, &_y); + act->onAction(actionstr, getParam(), _x, _y, NULL, 0, this); + SvcEnum::release(act); + } + } + } + } +} + +int Wasabi::Button::wantAutoContextMenu() { + int a = disablenextcontextmenu; + disablenextcontextmenu = 0; + return !a; +} + +void Wasabi::Button::onRightPush(int x, int y) { + BUTTON_PARENT::onRightPush(x, y); + script_vcpu_onRightClick(SCRIPT_CALL, getScriptObject()); + if (!WASABI_API_MAKI->vcpu_getComplete()) { + if (!action.isempty()) { + if (!action_target.isempty()) + { + GuiObject *go = getGuiObject()->guiobject_findObject(action_target); + if (!go) { + ScriptObject *so = WASABI_API_MAKI->maki_findObject(action_target); + if (so != NULL) + go = static_cast(so->vcpu_getInterface(guiObjectGuid)); + } + if (go) { + ifc_window *w = go->guiobject_getRootWnd(); + if (w) { + int _x = x; + int _y = y; + clientToScreen(&_x, &_y); + sendAction(w, actionstr, getParam(), _x, _y); + disablenextcontextmenu = 1; + } + } + } else { + svc_action *act = ActionEnum(actionstr).getNext(); + if (act) { + const wchar_t *par = getParam(); + if (par == NULL || *par == 0) par = L"1"; + int _x = x; + int _y = y; + clientToScreen(&_x, &_y); + disablenextcontextmenu = act->onAction(actionstr, par, _x, _y, NULL, 0, this); + SvcEnum::release(act); + } + } + } + } +} + +int Wasabi::Button::onActivateButton(int is) { + BUTTON_PARENT::onActivateButton(is); + scriptVar _is = SOM::makeVar(SCRIPT_INT); + SOM::assign(&_is, is); + script_vcpu_onActivate(SCRIPT_CALL, getScriptObject(), _is); + return 1; +} + +int Wasabi::Button::getPreferences(int what) { + if (what == SUGGESTED_W) return getWidth(); + if (what == SUGGESTED_H) return getHeight(); + return BUTTON_PARENT::getPreferences(what); +} + +int Wasabi::Button::onShowWindow(Container *c, GUID guid, const wchar_t *groupid) +{ + if(!param) return 1; + if (groupid != NULL && !WCSICMP(groupid, param)) + { + setActivatedButton(1); + return 1; + } +#ifdef WASABI_COMPILE_WNDMGR + GUID *g; + if (g=SkinParser::getComponentGuid(param)) + { + if(*g != INVALID_GUID && guid == *g) setActivatedButton(1); + } +#endif + return 1; +} + +int Wasabi::Button::onHideWindow(Container *c, GUID guid, const wchar_t *groupid) { + if(!param) return 1; + if (groupid != NULL && !WCSICMP(groupid, param)) { + setActivatedButton(0); + return 1; + } +#ifdef WASABI_COMPILE_WNDMGR + GUID *g; + if (g=SkinParser::getComponentGuid(param)) { + if(guid == *g) setActivatedButton(0); + } +#endif + return 1; +} + +scriptVar Wasabi::Button::script_vcpu_setActivatedNoCallback(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v) { + SCRIPT_FUNCTION_INIT + ASSERT(SOM::isNumeric(&v)); + Button *b = static_cast