diff --git a/demo/config/webpack.common.js b/demo/config/webpack.common.js
index eb30d9b1..cade074a 100644
--- a/demo/config/webpack.common.js
+++ b/demo/config/webpack.common.js
@@ -61,6 +61,14 @@ module.exports = {
template: "../modern/index.html",
chunks: ["modern"],
}),
+ // Ideally we could just do this via client-side routing, but it's tricky
+ // with both the real app and this sub directory. So we just hack it to
+ // duplicate the html file in both places and move on with our lives.
+ new HtmlWebpackPlugin({
+ filename: "modern/ready/index.html",
+ template: "../modern/index.html",
+ chunks: ["modern"],
+ }),
// Automatically generates the manifest.json file inside the built
// directory, and injects a tag into the gererated index.html file
// it also, applies cache-busting for all the icons.
@@ -104,6 +112,7 @@ module.exports = {
entry: {
webamp: ["./js/index.js"],
modern: ["../modern/src/index.js"],
+ wat: ["../modern/src/index.js"],
},
context: path.resolve(__dirname, "../"),
output: {
diff --git a/modern/src/App.js b/modern/src/App.js
index 73075de1..23877ca8 100644
--- a/modern/src/App.js
+++ b/modern/src/App.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useReducer } from "react";
+import React, { useEffect, useReducer, Suspense } from "react";
import "./App.css";
import * as Utils from "./utils";
import * as Actions from "./Actions";
@@ -9,6 +9,7 @@ import { useDispatch, useSelector, useStore } from "react-redux";
import DropTarget from "../../js/components/DropTarget";
import Debugger from "./debugger";
import Sidebar from "./Sidebar";
+const Dashboard = React.lazy(() => import("./Dashboard"));
const skinUrls = [
cornerSkin,
@@ -647,7 +648,11 @@ function setSkinUrlToQueryParams(skinUrl) {
window.history.pushState(null, "", newRelativePathQuery);
}
-function App() {
+function Loading() {
+ return
Loading... ;
+}
+
+function Modern() {
const dispatch = useDispatch();
const store = useStore();
const root = useSelector(Selectors.getMakiTree);
@@ -656,7 +661,7 @@ function App() {
dispatch(Actions.gotSkinUrl(defaultSkinUrl, store));
}, [store]);
if (root == null) {
- return Loading... ;
+ return ;
}
return (
@@ -689,5 +694,12 @@ function App() {
);
}
+function App() {
+ return (
+ }>
+ {window.location.pathname.includes("ready") ? : }
+
+ );
+}
export default App;
diff --git a/modern/src/Dashboard.tsx b/modern/src/Dashboard.tsx
new file mode 100644
index 00000000..db429295
--- /dev/null
+++ b/modern/src/Dashboard.tsx
@@ -0,0 +1,178 @@
+import React from "react";
+import { objects } from "./maki-interpreter/objects";
+import snapshotString from "./maki-interpreter/__snapshots__/objects.test.js.snap";
+import methodData from "../resources/maki-skin-data.json";
+
+const methodsSting =
+ snapshotString["Maki classes Track unimplemented methods 1"];
+
+const unimplemented = new Set(
+ methodsSting.substring(1, methodsSting.length - 2).split("\n")
+);
+
+const GREEN = "rgba(0, 255, 0, 0.2)";
+const RED = "rgba(255, 0, 0, 0.2)";
+
+let METHOD_COUNT = 0;
+let IMPLEMENTED_METHOD_COUNT = 0;
+
+const normalizedMethods = [];
+Object.keys(objects).forEach(key => {
+ const makiObject = objects[key];
+ makiObject.functions.forEach(method => {
+ METHOD_COUNT++;
+ const normalizedName = `${makiObject.name}.${method.name.toLowerCase()}`;
+ const implemented = !unimplemented.has(normalizedName);
+ if (implemented) {
+ IMPLEMENTED_METHOD_COUNT++;
+ }
+ const foundInSkins = methodData.foundInSkins[normalizedName] || 0;
+ const totalCalls = methodData.totalCalls[normalizedName] || 0;
+ normalizedMethods.push({
+ className: makiObject.name,
+ totalCalls,
+ foundInSkins,
+ methodName: method.name,
+ normalizedName,
+ implemented,
+ });
+ });
+});
+
+const foundMethods = normalizedMethods.filter(
+ method => method.foundInSkins > 0
+);
+
+function PercentBox({ number, total, label }) {
+ const percent = total === 0 ? 1 : number / total;
+
+ return (
+
+
+ {Math.round(percent * 100)}%
+
+
+
+
+ {label}
+ {" "}
+
+ ({number}/{total})
+
+
+
+ );
+}
+
+export default function() {
+ const [searchQuery, setSearchQuery] = React.useState("");
+ const [sortKey, setSortKey] = React.useState("totalCalls");
+ const [sortDirection, setSortDirection] = React.useState("ASC");
+ function setOrToggleSort(key) {
+ if (sortKey === key) {
+ setSortDirection(dir => (dir === "ASC" ? "DESC" : "ASC"));
+ } else {
+ setSortKey(key);
+ }
+ }
+
+ const sortAscending = (a, b) => (b[sortKey] > a[sortKey] ? 1 : -1);
+ const sortDecending = (a, b) => (b[sortKey] < a[sortKey] ? 1 : -1);
+ const sortFunction = sortDirection === "ASC" ? sortAscending : sortDecending;
+
+ let filterFunction: (string) => boolean = () => true;
+ if (searchQuery) {
+ const normalizedQuery = searchQuery.toLowerCase();
+
+ filterFunction = method => {
+ return method.normalizedName.toLowerCase().includes(normalizedQuery);
+ };
+ }
+ return (
+
+
Are Modern Skins Ready Yet?
+
+
method.implemented).length}
+ total={foundMethods.length}
+ label="Used Methods"
+ />
+ setSearchQuery(e.target.value)}
+ />
+
+
+
+ setOrToggleSort("implemented")}>Status
+ setOrToggleSort("className")}>Class
+ setOrToggleSort("methodName")}>Method Name
+ setOrToggleSort("foundInSkins")}>
+ Found In Skins
+
+ setOrToggleSort("totalCalls")}>Total Calls
+
+
+
+ {normalizedMethods
+ .sort(sortFunction)
+ .filter(filterFunction)
+ .map(
+ ({
+ className,
+ methodName,
+ foundInSkins,
+ totalCalls,
+ implemented,
+ }) => {
+ return (
+
+
+
+
+ {className}
+ {methodName}
+ {foundInSkins}
+ {totalCalls}
+
+ );
+ }
+ )}
+
+
+
+ );
+}
diff --git a/modern/src/maki-interpreter/__snapshots__/objects.test.js.snap b/modern/src/maki-interpreter/__snapshots__/objects.test.js.snap
new file mode 100644
index 00000000..461b441c
--- /dev/null
+++ b/modern/src/maki-interpreter/__snapshots__/objects.test.js.snap
@@ -0,0 +1,477 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Maki classes Track unimplemented methods 1`] = `
+"System.getparam
+System.getskinname
+System.getplayitemstring
+System.geteq
+System.geteqband
+System.geteqpreamp
+System.getstatus
+System.getplayitemlength
+System.seekto
+System.newdynamiccontainer
+System.newgroup
+System.newgroupaslayout
+System.getnumcontainers
+System.enumcontainer
+System.getwac
+System.getplayitemmetadatastring
+System.getplayitemdisplaytitle
+System.getextfamily
+System.playfile
+System.play
+System.stop
+System.pause
+System.next
+System.previous
+System.eject
+System.getposition
+System.seteqband
+System.seteqpreamp
+System.seteq
+System.removepath
+System.getpath
+System.getextension
+System.setpublicstring
+System.setpublicint
+System.getpublicstring
+System.getpublicint
+System.getviewportwidthfrompoint
+System.getviewportheightfrompoint
+System.getviewportleft
+System.getviewportleftfrompoint
+System.getviewporttop
+System.getviewporttopfrompoint
+System.debugstring
+System.ddesend
+System.onlookforcomponent
+System.getcurappleft
+System.getcurapptop
+System.getcurappwidth
+System.getcurappheight
+System.isappactive
+System.switchskin
+System.isloadingskin
+System.lockui
+System.unlockui
+System.getmainbrowser
+System.popmainbrowser
+System.navigateurl
+System.isobjectvalid
+System.setmenutransparency
+System.ongetcancelcomponent
+System.iskeydown
+System.setclipboardtext
+System.selectfile
+System.systemmenu
+System.windowmenu
+System.triggeraction
+System.showwindow
+System.hidewindow
+System.hidenamedwindow
+System.isnamedwindowvisible
+System.setatom
+System.getatom
+System.invokedebugger
+System.isvideo
+System.isvideofullscreen
+System.getidealvideowidth
+System.getidealvideoheight
+System.isminimized
+System.minimizeapplication
+System.restoreapplication
+System.activateapplication
+System.getplaylistlength
+System.getplaylistindex
+System.isdesktopalphaavailable
+System.istransparencyavailable
+System.getsonginfotext
+System.getvisband
+Wac.getguid
+Wac.getname
+Wac.sendcommand
+Wac.show
+Wac.hide
+Wac.isvisible
+Wac.setstatusbar
+Wac.getstatusbar
+Map.loadmap
+Map.getwidth
+Map.getheight
+Map.getvalue
+Map.inregion
+Map.getregion
+Region.loadfrommap
+Region.offset
+Region.add
+Region.sub
+Region.stretch
+Region.copy
+Region.loadfrombitmap
+Region.getboundingboxx
+Region.getboundingboxy
+Region.getboundingboxw
+Region.getboundingboxh
+Timer.getskipped
+Group.getnumobjects
+Group.enumobject
+Group.islayout
+GuiObject.getalpha
+GuiObject.setenabled
+GuiObject.getenabled
+GuiObject.ismouseover
+GuiObject.settargetx
+GuiObject.settargety
+GuiObject.settargetw
+GuiObject.settargeth
+GuiObject.settargeta
+GuiObject.settargetspeed
+GuiObject.gototarget
+GuiObject.canceltarget
+GuiObject.reversetarget
+GuiObject.isgoingtotarget
+GuiObject.bringtofront
+GuiObject.bringtoback
+GuiObject.bringabove
+GuiObject.bringbelow
+GuiObject.getguix
+GuiObject.getguiy
+GuiObject.getguiw
+GuiObject.getguih
+GuiObject.getguirelatx
+GuiObject.getguirelaty
+GuiObject.getguirelatw
+GuiObject.getguirelath
+GuiObject.isactive
+GuiObject.gettopparent
+GuiObject.runmodal
+GuiObject.endmodal
+GuiObject.findobjectxy
+GuiObject.getname
+GuiObject.clienttoscreenx
+GuiObject.clienttoscreeny
+GuiObject.clienttoscreenw
+GuiObject.clienttoscreenh
+GuiObject.screentoclientx
+GuiObject.screentoclienty
+GuiObject.screentoclientw
+GuiObject.screentoclienth
+GuiObject.getautowidth
+GuiObject.getautoheight
+GuiObject.setfocus
+GuiObject.ismouseoverrect
+GuiObject.getinterface
+GuiObject.sendaction
+GuiObject.onaction
+Button.setactivated
+Button.getactivated
+Button.setactivatednocallback
+AnimatedLayer.ispaused
+AnimatedLayer.isstopped
+AnimatedLayer.getdirection
+AnimatedLayer.setrealtime
+ToggleButton.getcurcfgval
+PopupMenu.checkcommand
+PopupMenu.addsubmenu
+PopupMenu.popatxy
+PopupMenu.getnumcommands
+PopupMenu.disablecommand
+Container.getnumlayouts
+Container.enumlayout
+Container.switchtolayout
+Container.close
+Container.toggle
+Container.isdynamic
+Container.setname
+Container.getcurlayout
+Layout.getscale
+Layout.setscale
+Layout.setdesktopalpha
+Layout.getdesktopalpha
+Layout.center
+Layout.snapadjust
+Layout.getsnapadjusttop
+Layout.getsnapadjustright
+Layout.getsnapadjustleft
+Layout.getsnapadjustbottom
+Layout.setredrawonresize
+Layout.beforeredock
+Layout.redock
+Layout.istransparencysafe
+Layout.islayoutanimationsafe
+List.additem
+List.removeitem
+List.enumitem
+List.finditem
+List.getnumitems
+List.removeall
+Layer.setregion
+Layer.setregionfrommap
+Layer.fx_oninit
+Layer.fx_onframe
+Layer.fx_ongetpixelr
+Layer.fx_ongetpixeld
+Layer.fx_ongetpixelx
+Layer.fx_ongetpixely
+Layer.fx_ongetpixela
+Layer.fx_setenabled
+Layer.fx_getenabled
+Layer.fx_setwrap
+Layer.fx_getwrap
+Layer.fx_setrect
+Layer.fx_getrect
+Layer.fx_setbgfx
+Layer.fx_getbgfx
+Layer.fx_setclear
+Layer.fx_getclear
+Layer.fx_setspeed
+Layer.fx_getspeed
+Layer.fx_setrealtime
+Layer.fx_getrealtime
+Layer.fx_setlocalized
+Layer.fx_getlocalized
+Layer.fx_setbilinear
+Layer.fx_getbilinear
+Layer.fx_setalphamode
+Layer.fx_getalphamode
+Layer.fx_setgridsize
+Layer.fx_update
+Layer.fx_restart
+Text.setalternatetext
+Text.settext
+Text.gettext
+Text.gettextwidth
+Component.getguid
+Component.getwac
+Component.setregionfrommap
+Component.setregion
+Component.setacceptwac
+Component.getcontent
+ComponentBucket.getmaxheight
+ComponentBucket.getmaxwidth
+ComponentBucket.setscroll
+ComponentBucket.getscroll
+ComponentBucket.getnumchildren
+ComponentBucket.enumchildren
+Edit.settext
+Edit.setautoenter
+Edit.getautoenter
+Edit.gettext
+Edit.selectall
+Edit.enter
+Edit.setidleenabled
+Edit.getidleenabled
+Slider.getposition
+Slider.setposition
+Slider.lock
+Slider.unlock
+Vis.setmode
+Vis.setrealtime
+Vis.getrealtime
+Vis.getmode
+Vis.nextmode
+Browser.navigateurl
+Browser.back
+Browser.forward
+Browser.stop
+Browser.refresh
+Browser.home
+Browser.settargetname
+GroupList.instantiate
+GroupList.getnumitems
+GroupList.enumitem
+GroupList.removeall
+GroupList.scrolltopercent
+CfgGroup.cfggetint
+CfgGroup.cfgsetint
+CfgGroup.cfggetstring
+CfgGroup.cfggetfloat
+CfgGroup.cfgsetfloat
+CfgGroup.cfgsetstring
+CfgGroup.cfggetguid
+CfgGroup.cfggetname
+MouseRedir.setredirection
+MouseRedir.getredirection
+MouseRedir.setregionfrommap
+MouseRedir.setregion
+DropDownList.getitemselected
+DropDownList.setlistheight
+DropDownList.openlist
+DropDownList.closelist
+DropDownList.setitems
+DropDownList.additem
+DropDownList.delitem
+DropDownList.finditem
+DropDownList.getnumitems
+DropDownList.selectitem
+DropDownList.getitemtext
+DropDownList.getselected
+DropDownList.getselectedtext
+DropDownList.getcustomtext
+DropDownList.deleteallitems
+DropDownList.setnoitemtext
+LayoutStatus.callme
+TabSheet.getcurpage
+TabSheet.setcurpage
+GuiList.getnumitems
+GuiList.getwantautodeselect
+GuiList.setwantautodeselect
+GuiList.setautosort
+GuiList.next
+GuiList.selectcurrent
+GuiList.selectfirstentry
+GuiList.previous
+GuiList.pagedown
+GuiList.pageup
+GuiList.home
+GuiList.end
+GuiList.reset
+GuiList.addcolumn
+GuiList.getnumcolumns
+GuiList.getcolumnwidth
+GuiList.setcolumnwidth
+GuiList.getcolumnlabel
+GuiList.setcolumnlabel
+GuiList.getcolumnnumeric
+GuiList.setcolumndynamic
+GuiList.iscolumndynamic
+GuiList.setminimumsize
+GuiList.additem
+GuiList.insertitem
+GuiList.getlastaddeditempos
+GuiList.setsubitem
+GuiList.deleteallitems
+GuiList.deletebypos
+GuiList.getitemlabel
+GuiList.setitemlabel
+GuiList.getitemselected
+GuiList.isitemfocused
+GuiList.getitemfocused
+GuiList.setitemfocused
+GuiList.ensureitemvisible
+GuiList.invalidatecolumns
+GuiList.scrollabsolute
+GuiList.scrollrelative
+GuiList.scrollleft
+GuiList.scrollright
+GuiList.scrollup
+GuiList.scrolldown
+GuiList.getsubitemtext
+GuiList.getfirstitemselected
+GuiList.getnextitemselected
+GuiList.selectall
+GuiList.deselectall
+GuiList.invertselection
+GuiList.invalidateitem
+GuiList.getfirstitemvisible
+GuiList.getlastitemvisible
+GuiList.setfontsize
+GuiList.getfontsize
+GuiList.jumptonext
+GuiList.scrolltoitem
+GuiList.resort
+GuiList.getsortdirection
+GuiList.getsortcolumn
+GuiList.setsortcolumn
+GuiList.setsortdirection
+GuiList.getitemcount
+GuiList.setselectionstart
+GuiList.setselectionend
+GuiList.setselected
+GuiList.toggleselection
+GuiList.getheaderheight
+GuiList.getpreventmultipleselection
+GuiList.setpreventmultipleselection
+GuiList.moveitem
+GuiList.onrightclick
+GuiList.oncolumndblclick
+GuiList.oncolumnlabelclick
+GuiTree.onwantautocontextmenu
+GuiTree.onmousewheelup
+GuiTree.onmousewheeldown
+GuiTree.oncontextmenu
+GuiTree.onchar
+GuiTree.getnumrootitems
+GuiTree.enumrootitem
+GuiTree.jumptonext
+GuiTree.ensureitemvisible
+GuiTree.getcontentswidth
+GuiTree.getcontentsheight
+GuiTree.addtreeitem
+GuiTree.removetreeitem
+GuiTree.movetreeitem
+GuiTree.deleteallitems
+GuiTree.expanditem
+GuiTree.expanditemdeferred
+GuiTree.collapseitem
+GuiTree.collapseitemdeferred
+GuiTree.selectitem
+GuiTree.selectitemdeferred
+GuiTree.delitemdeferred
+GuiTree.hiliteitem
+GuiTree.unhiliteitem
+GuiTree.getcuritem
+GuiTree.hittest
+GuiTree.edititemlabel
+GuiTree.canceleditlabel
+GuiTree.setautoedit
+GuiTree.getautoedit
+GuiTree.getbylabel
+GuiTree.setsorted
+GuiTree.getsorted
+GuiTree.sorttreeitems
+GuiTree.getsibling
+GuiTree.setautocollapse
+GuiTree.setfontsize
+GuiTree.getfontsize
+GuiTree.getnumvisiblechilditems
+GuiTree.getnumvisibleitems
+GuiTree.enumvisibleitems
+GuiTree.enumvisiblechilditems
+GuiTree.enumallitems
+GuiTree.getitemrectx
+GuiTree.getitemrecty
+GuiTree.getitemrectw
+GuiTree.getitemrecth
+GuiTree.getitemfrompoint
+TreeItem.getnumchildren
+TreeItem.setlabel
+TreeItem.getlabel
+TreeItem.ensurevisible
+TreeItem.getnthchild
+TreeItem.getchild
+TreeItem.getchildsibling
+TreeItem.getsibling
+TreeItem.getparent
+TreeItem.editlabel
+TreeItem.hassubitems
+TreeItem.setsorted
+TreeItem.setchildtab
+TreeItem.issorted
+TreeItem.iscollapsed
+TreeItem.isexpanded
+TreeItem.invalidate
+TreeItem.isselected
+TreeItem.ishilited
+TreeItem.sethilited
+TreeItem.collapse
+TreeItem.expand
+TreeItem.gettree
+MenuButton.openmenu
+MenuButton.closemenu
+CheckBox.setchecked
+CheckBox.ischecked
+CheckBox.settext
+CheckBox.gettext
+Config.newitem
+Config.getitem
+Config.getitembyguid
+ConfigItem.getattribute
+ConfigItem.newattribute
+ConfigItem.getguid
+ConfigAttribute.setdata
+ConfigAttribute.getdata
+ConfigAttribute.getparentitem
+ConfigAttribute.getattributename"
+`;
diff --git a/modern/src/maki-interpreter/objects.test.js b/modern/src/maki-interpreter/objects.test.js
index 34715bf0..d4c72966 100644
--- a/modern/src/maki-interpreter/objects.test.js
+++ b/modern/src/maki-interpreter/objects.test.js
@@ -89,482 +89,9 @@ describe("Maki classes", () => {
});
test("Track unimplemented methods", () => {
- expect(unimplementedRuntimeMethods).toMatchInlineSnapshot(`
-Set {
- "System.getparam",
- "System.getskinname",
- "System.getplayitemstring",
- "System.geteq",
- "System.geteqband",
- "System.geteqpreamp",
- "System.getstatus",
- "System.getplayitemlength",
- "System.seekto",
- "System.newdynamiccontainer",
- "System.newgroup",
- "System.newgroupaslayout",
- "System.getnumcontainers",
- "System.enumcontainer",
- "System.getwac",
- "System.getplayitemmetadatastring",
- "System.getplayitemdisplaytitle",
- "System.getextfamily",
- "System.playfile",
- "System.play",
- "System.stop",
- "System.pause",
- "System.next",
- "System.previous",
- "System.eject",
- "System.getposition",
- "System.seteqband",
- "System.seteqpreamp",
- "System.seteq",
- "System.removepath",
- "System.getpath",
- "System.getextension",
- "System.setpublicstring",
- "System.setpublicint",
- "System.getpublicstring",
- "System.getpublicint",
- "System.getviewportwidthfrompoint",
- "System.getviewportheightfrompoint",
- "System.getviewportleft",
- "System.getviewportleftfrompoint",
- "System.getviewporttop",
- "System.getviewporttopfrompoint",
- "System.debugstring",
- "System.ddesend",
- "System.onlookforcomponent",
- "System.getcurappleft",
- "System.getcurapptop",
- "System.getcurappwidth",
- "System.getcurappheight",
- "System.isappactive",
- "System.switchskin",
- "System.isloadingskin",
- "System.lockui",
- "System.unlockui",
- "System.getmainbrowser",
- "System.popmainbrowser",
- "System.navigateurl",
- "System.isobjectvalid",
- "System.setmenutransparency",
- "System.ongetcancelcomponent",
- "System.iskeydown",
- "System.setclipboardtext",
- "System.selectfile",
- "System.systemmenu",
- "System.windowmenu",
- "System.triggeraction",
- "System.showwindow",
- "System.hidewindow",
- "System.hidenamedwindow",
- "System.isnamedwindowvisible",
- "System.setatom",
- "System.getatom",
- "System.invokedebugger",
- "System.isvideo",
- "System.isvideofullscreen",
- "System.getidealvideowidth",
- "System.getidealvideoheight",
- "System.isminimized",
- "System.minimizeapplication",
- "System.restoreapplication",
- "System.activateapplication",
- "System.getplaylistlength",
- "System.getplaylistindex",
- "System.isdesktopalphaavailable",
- "System.istransparencyavailable",
- "System.getsonginfotext",
- "System.getvisband",
- "Wac.getguid",
- "Wac.getname",
- "Wac.sendcommand",
- "Wac.show",
- "Wac.hide",
- "Wac.isvisible",
- "Wac.setstatusbar",
- "Wac.getstatusbar",
- "Map.loadmap",
- "Map.getwidth",
- "Map.getheight",
- "Map.getvalue",
- "Map.inregion",
- "Map.getregion",
- "Region.loadfrommap",
- "Region.offset",
- "Region.add",
- "Region.sub",
- "Region.stretch",
- "Region.copy",
- "Region.loadfrombitmap",
- "Region.getboundingboxx",
- "Region.getboundingboxy",
- "Region.getboundingboxw",
- "Region.getboundingboxh",
- "Timer.getskipped",
- "Group.getnumobjects",
- "Group.enumobject",
- "Group.islayout",
- "GuiObject.getalpha",
- "GuiObject.setenabled",
- "GuiObject.getenabled",
- "GuiObject.ismouseover",
- "GuiObject.settargetx",
- "GuiObject.settargety",
- "GuiObject.settargetw",
- "GuiObject.settargeth",
- "GuiObject.settargeta",
- "GuiObject.settargetspeed",
- "GuiObject.gototarget",
- "GuiObject.canceltarget",
- "GuiObject.reversetarget",
- "GuiObject.isgoingtotarget",
- "GuiObject.bringtofront",
- "GuiObject.bringtoback",
- "GuiObject.bringabove",
- "GuiObject.bringbelow",
- "GuiObject.getguix",
- "GuiObject.getguiy",
- "GuiObject.getguiw",
- "GuiObject.getguih",
- "GuiObject.getguirelatx",
- "GuiObject.getguirelaty",
- "GuiObject.getguirelatw",
- "GuiObject.getguirelath",
- "GuiObject.isactive",
- "GuiObject.gettopparent",
- "GuiObject.runmodal",
- "GuiObject.endmodal",
- "GuiObject.findobjectxy",
- "GuiObject.getname",
- "GuiObject.clienttoscreenx",
- "GuiObject.clienttoscreeny",
- "GuiObject.clienttoscreenw",
- "GuiObject.clienttoscreenh",
- "GuiObject.screentoclientx",
- "GuiObject.screentoclienty",
- "GuiObject.screentoclientw",
- "GuiObject.screentoclienth",
- "GuiObject.getautowidth",
- "GuiObject.getautoheight",
- "GuiObject.setfocus",
- "GuiObject.ismouseoverrect",
- "GuiObject.getinterface",
- "GuiObject.sendaction",
- "GuiObject.onaction",
- "Button.setactivated",
- "Button.getactivated",
- "Button.setactivatednocallback",
- "AnimatedLayer.ispaused",
- "AnimatedLayer.isstopped",
- "AnimatedLayer.getdirection",
- "AnimatedLayer.setrealtime",
- "ToggleButton.getcurcfgval",
- "PopupMenu.checkcommand",
- "PopupMenu.addsubmenu",
- "PopupMenu.popatxy",
- "PopupMenu.getnumcommands",
- "PopupMenu.disablecommand",
- "Container.getnumlayouts",
- "Container.enumlayout",
- "Container.switchtolayout",
- "Container.close",
- "Container.toggle",
- "Container.isdynamic",
- "Container.setname",
- "Container.getcurlayout",
- "Layout.getscale",
- "Layout.setscale",
- "Layout.setdesktopalpha",
- "Layout.getdesktopalpha",
- "Layout.center",
- "Layout.snapadjust",
- "Layout.getsnapadjusttop",
- "Layout.getsnapadjustright",
- "Layout.getsnapadjustleft",
- "Layout.getsnapadjustbottom",
- "Layout.setredrawonresize",
- "Layout.beforeredock",
- "Layout.redock",
- "Layout.istransparencysafe",
- "Layout.islayoutanimationsafe",
- "List.additem",
- "List.removeitem",
- "List.enumitem",
- "List.finditem",
- "List.getnumitems",
- "List.removeall",
- "Layer.setregion",
- "Layer.setregionfrommap",
- "Layer.fx_oninit",
- "Layer.fx_onframe",
- "Layer.fx_ongetpixelr",
- "Layer.fx_ongetpixeld",
- "Layer.fx_ongetpixelx",
- "Layer.fx_ongetpixely",
- "Layer.fx_ongetpixela",
- "Layer.fx_setenabled",
- "Layer.fx_getenabled",
- "Layer.fx_setwrap",
- "Layer.fx_getwrap",
- "Layer.fx_setrect",
- "Layer.fx_getrect",
- "Layer.fx_setbgfx",
- "Layer.fx_getbgfx",
- "Layer.fx_setclear",
- "Layer.fx_getclear",
- "Layer.fx_setspeed",
- "Layer.fx_getspeed",
- "Layer.fx_setrealtime",
- "Layer.fx_getrealtime",
- "Layer.fx_setlocalized",
- "Layer.fx_getlocalized",
- "Layer.fx_setbilinear",
- "Layer.fx_getbilinear",
- "Layer.fx_setalphamode",
- "Layer.fx_getalphamode",
- "Layer.fx_setgridsize",
- "Layer.fx_update",
- "Layer.fx_restart",
- "Text.setalternatetext",
- "Text.settext",
- "Text.gettext",
- "Text.gettextwidth",
- "Component.getguid",
- "Component.getwac",
- "Component.setregionfrommap",
- "Component.setregion",
- "Component.setacceptwac",
- "Component.getcontent",
- "ComponentBucket.getmaxheight",
- "ComponentBucket.getmaxwidth",
- "ComponentBucket.setscroll",
- "ComponentBucket.getscroll",
- "ComponentBucket.getnumchildren",
- "ComponentBucket.enumchildren",
- "Edit.settext",
- "Edit.setautoenter",
- "Edit.getautoenter",
- "Edit.gettext",
- "Edit.selectall",
- "Edit.enter",
- "Edit.setidleenabled",
- "Edit.getidleenabled",
- "Slider.getposition",
- "Slider.setposition",
- "Slider.lock",
- "Slider.unlock",
- "Vis.setmode",
- "Vis.setrealtime",
- "Vis.getrealtime",
- "Vis.getmode",
- "Vis.nextmode",
- "Browser.navigateurl",
- "Browser.back",
- "Browser.forward",
- "Browser.stop",
- "Browser.refresh",
- "Browser.home",
- "Browser.settargetname",
- "GroupList.instantiate",
- "GroupList.getnumitems",
- "GroupList.enumitem",
- "GroupList.removeall",
- "GroupList.scrolltopercent",
- "CfgGroup.cfggetint",
- "CfgGroup.cfgsetint",
- "CfgGroup.cfggetstring",
- "CfgGroup.cfggetfloat",
- "CfgGroup.cfgsetfloat",
- "CfgGroup.cfgsetstring",
- "CfgGroup.cfggetguid",
- "CfgGroup.cfggetname",
- "MouseRedir.setredirection",
- "MouseRedir.getredirection",
- "MouseRedir.setregionfrommap",
- "MouseRedir.setregion",
- "DropDownList.getitemselected",
- "DropDownList.setlistheight",
- "DropDownList.openlist",
- "DropDownList.closelist",
- "DropDownList.setitems",
- "DropDownList.additem",
- "DropDownList.delitem",
- "DropDownList.finditem",
- "DropDownList.getnumitems",
- "DropDownList.selectitem",
- "DropDownList.getitemtext",
- "DropDownList.getselected",
- "DropDownList.getselectedtext",
- "DropDownList.getcustomtext",
- "DropDownList.deleteallitems",
- "DropDownList.setnoitemtext",
- "LayoutStatus.callme",
- "TabSheet.getcurpage",
- "TabSheet.setcurpage",
- "GuiList.getnumitems",
- "GuiList.getwantautodeselect",
- "GuiList.setwantautodeselect",
- "GuiList.setautosort",
- "GuiList.next",
- "GuiList.selectcurrent",
- "GuiList.selectfirstentry",
- "GuiList.previous",
- "GuiList.pagedown",
- "GuiList.pageup",
- "GuiList.home",
- "GuiList.end",
- "GuiList.reset",
- "GuiList.addcolumn",
- "GuiList.getnumcolumns",
- "GuiList.getcolumnwidth",
- "GuiList.setcolumnwidth",
- "GuiList.getcolumnlabel",
- "GuiList.setcolumnlabel",
- "GuiList.getcolumnnumeric",
- "GuiList.setcolumndynamic",
- "GuiList.iscolumndynamic",
- "GuiList.setminimumsize",
- "GuiList.additem",
- "GuiList.insertitem",
- "GuiList.getlastaddeditempos",
- "GuiList.setsubitem",
- "GuiList.deleteallitems",
- "GuiList.deletebypos",
- "GuiList.getitemlabel",
- "GuiList.setitemlabel",
- "GuiList.getitemselected",
- "GuiList.isitemfocused",
- "GuiList.getitemfocused",
- "GuiList.setitemfocused",
- "GuiList.ensureitemvisible",
- "GuiList.invalidatecolumns",
- "GuiList.scrollabsolute",
- "GuiList.scrollrelative",
- "GuiList.scrollleft",
- "GuiList.scrollright",
- "GuiList.scrollup",
- "GuiList.scrolldown",
- "GuiList.getsubitemtext",
- "GuiList.getfirstitemselected",
- "GuiList.getnextitemselected",
- "GuiList.selectall",
- "GuiList.deselectall",
- "GuiList.invertselection",
- "GuiList.invalidateitem",
- "GuiList.getfirstitemvisible",
- "GuiList.getlastitemvisible",
- "GuiList.setfontsize",
- "GuiList.getfontsize",
- "GuiList.jumptonext",
- "GuiList.scrolltoitem",
- "GuiList.resort",
- "GuiList.getsortdirection",
- "GuiList.getsortcolumn",
- "GuiList.setsortcolumn",
- "GuiList.setsortdirection",
- "GuiList.getitemcount",
- "GuiList.setselectionstart",
- "GuiList.setselectionend",
- "GuiList.setselected",
- "GuiList.toggleselection",
- "GuiList.getheaderheight",
- "GuiList.getpreventmultipleselection",
- "GuiList.setpreventmultipleselection",
- "GuiList.moveitem",
- "GuiList.onrightclick",
- "GuiList.oncolumndblclick",
- "GuiList.oncolumnlabelclick",
- "GuiTree.onwantautocontextmenu",
- "GuiTree.onmousewheelup",
- "GuiTree.onmousewheeldown",
- "GuiTree.oncontextmenu",
- "GuiTree.onchar",
- "GuiTree.getnumrootitems",
- "GuiTree.enumrootitem",
- "GuiTree.jumptonext",
- "GuiTree.ensureitemvisible",
- "GuiTree.getcontentswidth",
- "GuiTree.getcontentsheight",
- "GuiTree.addtreeitem",
- "GuiTree.removetreeitem",
- "GuiTree.movetreeitem",
- "GuiTree.deleteallitems",
- "GuiTree.expanditem",
- "GuiTree.expanditemdeferred",
- "GuiTree.collapseitem",
- "GuiTree.collapseitemdeferred",
- "GuiTree.selectitem",
- "GuiTree.selectitemdeferred",
- "GuiTree.delitemdeferred",
- "GuiTree.hiliteitem",
- "GuiTree.unhiliteitem",
- "GuiTree.getcuritem",
- "GuiTree.hittest",
- "GuiTree.edititemlabel",
- "GuiTree.canceleditlabel",
- "GuiTree.setautoedit",
- "GuiTree.getautoedit",
- "GuiTree.getbylabel",
- "GuiTree.setsorted",
- "GuiTree.getsorted",
- "GuiTree.sorttreeitems",
- "GuiTree.getsibling",
- "GuiTree.setautocollapse",
- "GuiTree.setfontsize",
- "GuiTree.getfontsize",
- "GuiTree.getnumvisiblechilditems",
- "GuiTree.getnumvisibleitems",
- "GuiTree.enumvisibleitems",
- "GuiTree.enumvisiblechilditems",
- "GuiTree.enumallitems",
- "GuiTree.getitemrectx",
- "GuiTree.getitemrecty",
- "GuiTree.getitemrectw",
- "GuiTree.getitemrecth",
- "GuiTree.getitemfrompoint",
- "TreeItem.getnumchildren",
- "TreeItem.setlabel",
- "TreeItem.getlabel",
- "TreeItem.ensurevisible",
- "TreeItem.getnthchild",
- "TreeItem.getchild",
- "TreeItem.getchildsibling",
- "TreeItem.getsibling",
- "TreeItem.getparent",
- "TreeItem.editlabel",
- "TreeItem.hassubitems",
- "TreeItem.setsorted",
- "TreeItem.setchildtab",
- "TreeItem.issorted",
- "TreeItem.iscollapsed",
- "TreeItem.isexpanded",
- "TreeItem.invalidate",
- "TreeItem.isselected",
- "TreeItem.ishilited",
- "TreeItem.sethilited",
- "TreeItem.collapse",
- "TreeItem.expand",
- "TreeItem.gettree",
- "MenuButton.openmenu",
- "MenuButton.closemenu",
- "CheckBox.setchecked",
- "CheckBox.ischecked",
- "CheckBox.settext",
- "CheckBox.gettext",
- "Config.newitem",
- "Config.getitem",
- "Config.getitembyguid",
- "ConfigItem.getattribute",
- "ConfigItem.newattribute",
- "ConfigItem.getguid",
- "ConfigAttribute.setdata",
- "ConfigAttribute.getdata",
- "ConfigAttribute.getparentitem",
- "ConfigAttribute.getattributename",
-}
-`);
+ // Write this as a newline delineated string to make it easier to other
+ // tools to extract from the `.snap` file.
+ const expected = Array.from(unimplementedRuntimeMethods).join("\n");
+ expect(expected).toMatchSnapshot();
});
});