Finally, a GUI Engine made for Julia
Just a quick bug fix, no new features were added
ColumnView
s push_back_row!
did not work when the ColumnView
was emptypush_front_row!
, use insert_row_at!
insteadmousetrap_jll
, the cross-platform BinaryBuilder wrapper for Mousetraps C++ component, is now online with the Julia registry, as of today. This means installation is now finally just one line.
This release furthermore fixes several issues causing crashes on non-Linux machines and polishes the docs such that they are now hopefully free of typos.
Next on the List is implementing proper CI, registering Mousetrap itself with the Julia registry, as well as starting to make Mousetrap PackageCompiler
-compatible.
Thank you for continued support, C.
To update Mousetrap, in the REPL, run the following:
import Pkg
begin
try Pkg.rm("mousetrap") catch end
try Pkg.rm("mousetrap_windows_jll") catch end
try Pkg.rm("mousetrap_linux_jll") catch end
try Pkg.rm("mousetrap_apple_jll") catch end
try Pkg.rm("libmousetrap_jll") catch end
try Pkg.rm("Mousetrap") catch end
Pkg.add(url="https://github.com/clemapfel/mousetrap.jl")
Pkg.test("Mousetrap")
end
name | was | is now |
---|---|---|
libmousetrap_jll |
0.3.0 |
removed |
mousetrap_jll |
n/a | 0.3.0 |
GTK4_jll |
n/a | 4.10 |
Glib_jll |
n/a | 2.76 |
This release adds GLArea
, which allows for foreign OpenGL intergration, such as a displaying GLMakie plots in Mousetrap widgets. See the new chapter on OpenGL integration for how to achieve this.
It furthermore revamped the build system, making Mousetrap now 100% portable. Every part of Mousetrap runs on any 64-bit desktop operating system. This was made possible by finally switching to a unified mousetrap_jll
, which is being registered with the BinaryBuilder build tree. With this, it was finally appropriate to open a PR to register Mousetrap with the Julia registry.
Thank you, C.
To update Mousetrap, in the REPL, run the following:
import Pkg
begin
try Pkg.rm("mousetrap") catch end
try Pkg.rm("mousetrap_windows_jll") catch end
try Pkg.rm("mousetrap_linux_jll") catch end
try Pkg.rm("mousetrap_apple_jll") catch end
try Pkg.rm("Mousetrap") catch end
Pkg.add(url="https://github.com/clemapfel/mousetrap_jll")
Pkg.add(url="https://github.com/clemapfel/mousetrap.jl")
Pkg.test("Mousetrap")
end
TypedFunction
now strictly enforces signal handlers to have a return type of Nothing
when required. For example, the following did not throw in v0.2.0
:
vector = Vector()
button = Button()
connect_signal_clicked!(button) do self::Button
push!(vector, 1234) # returns `Vector`, therefore return type of this function is `Vector`, even though the `clicked` signal handler requires return type `Nothing`
end
In v0.3.0
, we need to explicitly return nothing
, such that the return type of the signal handler is also Nothing
:
vector = Vector()
button = Button()
connect_signal_clicked!(button) do self::Button
push!(vector, 1234)
return nothing
end
GLArea
get_scale_factor
and calculate_monitor_dpi
get_is_closed
test/makie_test.jl
, prototype for upcoming MousetrapMakie
Julia package that allows for seamless GLMakie integrationhash(::Widget)
now returns a value based on the internally held gobject pointer location, as opposed to the Julia-side objects memory locationname | was | is now |
---|---|---|
mousetrap_linux_jll | 0.2.0 |
removed |
mousetrap_windows_jll | 0.2.0 |
removed |
mousetrap_apple_jll | 0.2.0 |
removed |
mousetrap_jll | n/a | 0.3.0 |
This release adds new features related to animation and customization, as well as renaming mousetrap
to Mousetrap
to conform with Julia style guidelines. See the change list below.
Next on my list is registering the jlls on Yggdrasil, after which Mousetrap
is ready to be uploaded to the Julia registry.
Thank you, C.
To update mousetrap, in the REPL, run the following:
import Pkg
begin
try Pkg.rm("mousetrap") catch end
Pkg.update(url="https://github.com/Clemapfel/mousetrap_windows_jll")
Pkg.update(url="https://github.com/Clemapfel/mousetrap_linux_jll")
Pkg.update(url="https://github.com/Clemapfel/mousetrap_apple_jll")
Pkg.add(url="https://github.com/Clemapfel/mousetrap.jl")
end
You may also need to clear any left-over folders from the old mousetrap
package. This is due to the name change causing conflicts on some systems:
mousetrap
in .julia/packages
mousetrap
in .julia/compiled/v1.9
, where v1.9
may be different depending on your Julia versionOn Mac / Linux, the .julia
folder is usually ~/.julia
, while on windows it is usually C:/Users/<your username>/.julia
.
mousetrap
was renamed to Mousetrap
, cf. #12using Mousetrap
resolvesAnimation
, steady-clock that provides timing for custom animationsTransformBin
, allows applying spatial transform to any widgetFlowBox
, widget that dynamically distributes its children into rows and columnsPopupMessage
, PopupMessageOverlay
, to display short message bubblesActionBar
, toolbar widget that can be easily hidden / shownRGBA
now returns valid CSS syntaxFileMonitor
s reference counts never reaches 0libjulia
from runtime- to build-dependency, cf. #18name | was | is now |
---|---|---|
mousetrap_linux_jll | 0.1.1 |
0.2.0 |
mousetrap_windows_jll | 0.1.1 |
0.2.0 |
mousetrap_apple_jll | 0.1.1 |
0.2.0 |
libcxxwrap_julia_jll | any | 0.11.0 |
CxxWrap | any | 0.14.0 |
This release adds no new features but contains some minor fixes:
main
to run non-concurrently (fixes #10)StyleClass
in anticipation of the StyleManager
interface that will be part of v0.2Welcome to the initial release of mousetrap, a GUI engine for Julia.
This version is already mostly feature complete, as I wanted to wait with release until the library is ready to be employed in production. Ideally, as apps using mousetrap get started to be worked on and grow, mousetrap itself will stabilize, such that by the time 3rd party apps and/or Julia static compilation are finished, mousetrap will be flawless.
The mousetrap C++ component, C++ to Julia interface, and the Linux and Windows version of mousetrap.jl itself should be considered in Beta. They were unit tested and documented to the best of my ability, though I am sure there will be issue in the near future anyway.
The macOS version of mousetrap.jl, the Julia package, should be considered in alpha and experimental. I was unable to test this version, and I was forced to remove the OpenGL component for these devices, see chapter 9 of the documentation for more information.
Thank you to all who have supported me during this development cycle, hopefully mousetrap will be up to mine and everyone's standards.
C.