diff --git a/Manifest.toml b/Manifest.toml new file mode 100644 index 0000000000000000000000000000000000000000..83fb0f33ec2cf85416c0bc0aa4da1ca63d2f2443 --- /dev/null +++ b/Manifest.toml @@ -0,0 +1,282 @@ +# This file is machine-generated - editing it directly is not advised + +[[AssetRegistry]] +deps = ["Distributed", "JSON", "Pidfile", "SHA", "Test"] +git-tree-sha1 = "b25e88db7944f98789130d7b503276bc34bc098e" +uuid = "bf4720bc-e11a-5d0c-854e-bdca1663c893" +version = "0.1.0" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[BinaryProvider]] +deps = ["Libdl", "SHA"] +git-tree-sha1 = "c7361ce8a2129f20b0e05a89f7070820cfed6648" +uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232" +version = "0.5.4" + +[[CSSUtil]] +deps = ["Colors", "Compat", "JSON", "Measures", "Pkg", "WebIO"] +git-tree-sha1 = "ff13fd99e4dd54f56eb064815f843bc992a871a2" +uuid = "70588ee8-6100-5070-97c1-3cb50ed05fe8" +version = "0.1.0" + +[[CSTParser]] +deps = ["LibGit2", "Test", "Tokenize"] +git-tree-sha1 = "437c93bc191cd55957b3f8dee7794b6131997c56" +uuid = "00ebfdb7-1f24-5e51-bd34-a7502290713f" +version = "0.5.2" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "10050a24b09e8e41b951e9976b109871ce98d965" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.8.0" + +[[Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "InteractiveUtils", "Printf", "Reexport", "Test"] +git-tree-sha1 = "9f0a0210450acb91c730b730a994f8eef1d3d543" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.9.5" + +[[Compat]] +deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] +git-tree-sha1 = "84aa74986c5b9b898b0d1acaf3258741ee64754f" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "2.1.0" + +[[DataStructures]] +deps = ["InteractiveUtils", "OrderedCollections", "Random", "Serialization", "Test"] +git-tree-sha1 = "ca971f03e146cf144a9e2f2ce59674f5bf0e8038" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.15.0" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DelimitedFiles]] +deps = ["Mmap"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[FixedPointNumbers]] +git-tree-sha1 = "d14a6fa5890ea3a7e5dcab6811114f132fec2b4b" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.6.1" + +[[FunctionalCollections]] +deps = ["Test"] +git-tree-sha1 = "04cb9cfaa6ba5311973994fe3496ddec19b6292a" +uuid = "de31a74c-ac4f-5751-b3fd-e18cd04993ca" +version = "0.5.0" + +[[HTTP]] +deps = ["Base64", "Dates", "Distributed", "IniFile", "MbedTLS", "Random", "Sockets", "Test"] +git-tree-sha1 = "25db0e3f27bd5715814ca7e4ad22025fdcf5cc6e" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "0.8.0" + +[[Hiccup]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "6187bb2d5fcbb2007c39e7ac53308b0d371124bd" +uuid = "9fb69e20-1954-56bb-a84f-559cc56a8ff7" +version = "0.2.2" + +[[IniFile]] +deps = ["Test"] +git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" +uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" +version = "0.5.0" + +[[Interact]] +deps = ["CSSUtil", "InteractBase", "JSON", "Knockout", "Observables", "OrderedCollections", "Reexport", "Test", "WebIO", "Widgets"] +git-tree-sha1 = "f6531bc554990a6659966afcb8f05543c032068b" +uuid = "c601a237-2ae4-5e1e-952c-7a85b0c7eef1" +version = "0.10.2" + +[[InteractBase]] +deps = ["Base64", "CSSUtil", "Colors", "Dates", "JSExpr", "JSON", "Knockout", "Observables", "OrderedCollections", "Random", "Test", "WebIO", "Widgets"] +git-tree-sha1 = "83fc45f21bfec97e5cd56e790f6945497ab0f095" +uuid = "d3863d7c-f0c8-5437-a7b4-3ae773c01009" +version = "0.10.1" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[JSExpr]] +deps = ["JSON", "MacroTools", "Observables", "Test", "WebIO"] +git-tree-sha1 = "013bc2143a2e84ea489365cf30db3407deb540c2" +uuid = "97c1335a-c9c5-57fe-bc5d-ec35cebe8660" +version = "0.5.0" + +[[JSON]] +deps = ["Dates", "Distributed", "Mmap", "Sockets", "Test", "Unicode"] +git-tree-sha1 = "1f7a25b53ec67f5e9422f1f551ee216503f4a0fa" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.20.0" + +[[Knockout]] +deps = ["JSExpr", "JSON", "Observables", "Pkg", "Test", "WebIO"] +git-tree-sha1 = "5cca7f070f85392cd0f42220c8ea5f7be96dacf4" +uuid = "bcebb21b-c2e3-54f8-a781-646b90f6d2cc" +version = "0.2.2" + +[[Lazy]] +deps = ["Compat", "MacroTools", "Test"] +git-tree-sha1 = "aec38c7e7f255a678af22651c74100e3cd39ea20" +uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" +version = "0.13.2" + +[[LibGit2]] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[LinearAlgebra]] +deps = ["Libdl"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[MacroTools]] +deps = ["CSTParser", "Compat", "DataStructures", "Test"] +git-tree-sha1 = "daecd9e452f38297c686eba90dba2a6d5da52162" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.0" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS]] +deps = ["BinaryProvider", "Dates", "Distributed", "Libdl", "Random", "Sockets", "Test"] +git-tree-sha1 = "2d94286a9c2f52c63a16146bb86fd6cdfbf677c6" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "0.6.8" + +[[Measures]] +deps = ["Test"] +git-tree-sha1 = "ddfd6d13e330beacdde2c80de27c1c671945e7d9" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.0" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[Mux]] +deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "Lazy", "Pkg", "Sockets", "Test", "WebSockets"] +git-tree-sha1 = "5b41f03d63400c290bab4e1a49fb9ac36de1084a" +uuid = "a975b10e-0019-58db-a62f-e48ff68538c9" +version = "0.7.0" + +[[Observables]] +deps = ["Test"] +git-tree-sha1 = "dc02cec22747d1d10d9f70d8a1c03432b5bfbcd0" +uuid = "510215fc-4207-5dde-b226-833fc4488ee2" +version = "0.2.3" + +[[OrderedCollections]] +deps = ["Random", "Serialization", "Test"] +git-tree-sha1 = "c4c13474d23c60d20a67b217f1d7f22a40edf8f1" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.1.0" + +[[Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "1ffd82728498b5071cde851bbb7abd780d4445f3" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.1.0" + +[[Pkg]] +deps = ["Dates", "LibGit2", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[Reexport]] +deps = ["Pkg"] +git-tree-sha1 = "7b1d07f411bc8ddb7977ec7f377b97b158514fe0" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "0.2.0" + +[[Requires]] +deps = ["Test"] +git-tree-sha1 = "f6fbf4ba64d295e146e49e021207993b6b48c7d1" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "0.5.2" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[Test]] +deps = ["Distributed", "InteractiveUtils", "Logging", "Random"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[Tokenize]] +deps = ["Printf", "Test"] +git-tree-sha1 = "3e83f60b74911d3042d3550884ca2776386a02b8" +uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624" +version = "0.5.3" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[WebIO]] +deps = ["AssetRegistry", "Base64", "Compat", "Distributed", "FunctionalCollections", "JSON", "Logging", "Observables", "Random", "Requires", "Sockets", "Test", "UUIDs", "Widgets"] +git-tree-sha1 = "125dc746e5b36424c6a7e694889a7f3d434a160a" +uuid = "0f1e0344-ec1d-5b48-a673-e5cf874b6c29" +version = "0.8.1" + +[[WebSockets]] +deps = ["Base64", "Dates", "Distributed", "HTTP", "Logging", "Random", "Sockets", "Test"] +git-tree-sha1 = "13f763d38c7a05688938808b49cb29b18b60c8c8" +uuid = "104b5d7c-a370-577a-8038-80a2059c5097" +version = "1.5.2" + +[[Widgets]] +deps = ["Colors", "Dates", "Observables", "OrderedCollections", "Test"] +git-tree-sha1 = "c53befc70c6b91eaa2a9888c2f6ac2d92720a81b" +uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" +version = "0.6.1" diff --git a/Project.toml b/Project.toml new file mode 100644 index 0000000000000000000000000000000000000000..fa0d73b0688a96bb8789dcf7678015b64dbb77b5 --- /dev/null +++ b/Project.toml @@ -0,0 +1,10 @@ +name = "LabGUI" +uuid = "31661155-7747-5a32-9846-082300d6a5a6" +authors = ["Jacob Wikmark"] +repo = "https://gitlab.control.lth.se/processes/LabGUI.jl/commits/master" +version = "0.1.0" + +[deps] +Interact = "c601a237-2ae4-5e1e-952c-7a85b0c7eef1" +Mux = "a975b10e-0019-58db-a62f-e48ff68538c9" +WebIO = "0f1e0344-ec1d-5b48-a673-e5cf874b6c29" diff --git a/REQUIRE b/REQUIRE deleted file mode 100644 index e0b37f1341d946f3d6bbcab758f1340d48c2874e..0000000000000000000000000000000000000000 --- a/REQUIRE +++ /dev/null @@ -1,4 +0,0 @@ -julia 0.6 -InteractNext -WebIO -Mux diff --git a/src/LabGUI.jl b/src/LabGUI.jl index a3bd69bd4b3518f554b216c5d5324e8633e9b74a..7734fa393057bfbbbaa3ffc1bf0c2124c407dab1 100644 --- a/src/LabGUI.jl +++ b/src/LabGUI.jl @@ -1,5 +1,5 @@ module LabGUI -using WebIO, InteractNext +using WebIO, Interact include("gridmaker.jl") include("gui.jl") include("construct.jl") diff --git a/src/construct.jl b/src/construct.jl index b5e41f33d423e78625c6d3190fc2ead2ef2779e1..a813ee337daffc438d1947701d63d0b504a8dc51 100644 --- a/src/construct.jl +++ b/src/construct.jl @@ -5,8 +5,9 @@ function make_widget(binding) error("@construct syntax error.") end sym, expr = binding.args - Expr(:(=), esc(sym), - Expr(:call, widget, esc(expr), string(sym))) + Expr(:block, + Expr(:(=), esc(sym), + Expr(:call, widget, esc(expr), string(sym)))) end function display_widgets(widgetvars) @@ -16,7 +17,7 @@ end function map_block(block, symbols) lambda = Expr(:(->), Expr(:tuple, symbols...), block) - :(map($lambda, $(map(s->:(InteractNext.observe($s)), symbols)...))) + :(map($lambda, $(map(s->:(observe($s)), symbols)...))) end function symbols(bindings) @@ -50,18 +51,27 @@ macro construct(expr) end syms = symbols(bindings) - widgets = map(make_widget, bindings) + widgets = [] + for b in bindings + w = make_widget(b) + push!(widgets, w) + end + dict = Dict(zip(syms, 1:length(syms))) quote - (Widget_Container([$(widgets...)], $(dict)), WebIO.render($(esc(map_block(block, syms))))) + begin + $(widgets...) + (Widget_Container([$(esc.(syms)...)], $(dict)), WebIO.render($(esc(map_block(block, syms))))) + end end end -widget(x::Range, label="") = slider(x; label=label) +widget(x::AbstractRange, label="") = slider(x; label=label) widget(x::Observable, label="") = x +widget(x::Widget, label="") = x widget(x::WebIO.Node{<:Any}, label="") = x widget(x::WebIO.Scope, label="") = x #fix for WebIO update widget(x::AbstractVector, label="") = togglebuttons(x, label=label) -widget(x::Associative, label="") = togglebuttons(x, label=label) +widget(x::AbstractDict, label="") = togglebuttons(x, label=label) widget(x::Bool, label="") = checkbox(x, label=label) widget(x::AbstractString, label="") = textbox(x, label=label, typ=AbstractString) diff --git a/src/gui.jl b/src/gui.jl index 2033186e95fd89e930aa5925d2dcb3a9db626a4e..ef16b64ddc8e4eebcbfb22942fe0b3fdd530aa56 100644 --- a/src/gui.jl +++ b/src/gui.jl @@ -191,6 +191,7 @@ function animate(gui::GUI, t=0.5) end function animate(gui::GUI, s::Union{Symbol, Array}, t=0.5) + # println("animation station", s) f = updater_function(gui, s) heartbeat(f, t) end @@ -207,6 +208,7 @@ function update(gui::GUI, s::Symbol, watchsymbol=:0) w = gui.widgets[s] if watchsymbol==:0||has_changed(gui, watchsymbol) #observe(w).listeners[2](observe(w)[]) + # This takes too long, can run 1 fps but not even 10 fps observe(w)[] = observe(w)[] end end diff --git a/test/runtests.jl b/test/runtests.jl index 9bd8a1a5af0acd23e4488776ba5fd01aa4dbba0f..9ac7a367244e4c1bdd5ae7b91ad023ec1c504447 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,8 +1,7 @@ using LabGUI using Observables -using InteractNext -using Base.Test - +using Interact +using Test @testset "Tools" begin a = Observables.Observable(5.0) @@ -10,9 +9,8 @@ using Base.Test f(x) = 2*x g(x) = x/2 link!(a,b, f, g) - a[] = 3.0 - @test b[] == 6.0 - + a[] = 3.0 + @test b[] == 6.0 b[] = 10.6 @test a[] == 5.3 @@ -47,11 +45,11 @@ end @testset "GUI" begin gui = GUI() wid1, graphic1 = @construct for dummy in 0:100 - Node(:div, dummy) + node(:div, dummy) end - wid2, graphic2 = @construct for dummybox in checkbox(false) - Node(:div, dummybox) + wid2, graphic2 = @construct for dummybox = false + node(:div, dummybox) end set!(gui, wid1) @@ -75,17 +73,17 @@ end end -@testset "Dependencies" begin - #testing vue - vuenode = Vue.vue(Node(:div)) - @test typeof(vuenode)<:WebIO.Scope - @test typeof(vuenode.dom)<:WebIO.Node - @test typeof(vuenode.id)==String - #testing interactnext - ui = @manipulate for dummy in 1:100 - WebIO.render(dummy) - end - @test typeof(ui) <: WebIO.Node{WebIO.DOM} - observe(dummy)[] = 80 - @test observe(dummy)[] == 80 -end +# @testset "Dependencies" begin +# #testing vue +# vuenode = Vue.vue(Node(:div)) +# @test typeof(vuenode)<:WebIO.Scope +# @test typeof(vuenode.dom)<:WebIO.Node +# @test typeof(vuenode.id)==String +# #testing interactnext +# ui = @manipulate for dummy in 1:100 +# WebIO.render(dummy) +# end +# @test typeof(ui) <: WebIO.Node{WebIO.DOM} +# observe(dummy)[] = 80 +# @test observe(dummy)[] == 80 +# end