Releases: Clemapfel/Mousetrap.jl
0.3.1.1
0.3.1: mousetrap_jll registered
mousetrap_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.
Updating
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
New Version Requirements
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 |
v0.3.0: GLMakie Support & Full Portability
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.
Updating
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
!! Breaking Changes !!
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
New Features
- Added
GLArea
- Added Chapter 12: OpenGL Integration & Makie Support
- Added
get_scale_factor
andcalculate_monitor_dpi
- Added
get_is_closed
- Added
test/makie_test.jl
, prototype for upcomingMousetrapMakie
Julia package that allows for seamless GLMakie integration
Changes
hash(::Widget)
now returns a value based on the internally held gobject pointer location, as opposed to the Julia-side objects memory location- Compound widgets now assume the signals of their toplevel widgets
New Version Requirements
name | 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 |
v0.2.0 Theme Customization & Interactivity
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.
Updating
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:
- Delete folder
mousetrap
in.julia/packages
- Delete folder
mousetrap
in.julia/compiled/v1.9
, wherev1.9
may be different depending on your Julia version
On Mac / Linux, the .julia
folder is usually ~/.julia
, while on windows it is usually C:/Users/<your username>/.julia
.
!! Breaking Changes !!
mousetrap
was renamed toMousetrap
, cf. #12
New Features
- mousetrap can now be used interactively from within the REPL, the back-end is initialized when
using Mousetrap
resolves - Added
Animation
, steady-clock that provides timing for custom animations - Added
TransformBin
, allows applying spatial transform to any widget - Added
FlowBox
, widget that dynamically distributes its children into rows and columns - Added
PopupMessage
,PopupMessageOverlay
, to display short message bubbles - Added
ActionBar
, toolbar widget that can be easily hidden / shown - Allows for manually changing look and color of individual widgets using CSS
- Added Documentation Chapter 10: Theme & Widget Customization (WIP)
Changes
- Made OpenGL initialization optional, meaning the rest of mousetrap will work even if creating an OpenGL context fails, this resolves #14
- Serializing
RGBA
now returns valid CSS syntax - Fixed a Bug where
FileMonitor
s reference counts never reaches 0 - Fixed a Bug where incorrectly shutting down an application and restarting it in the same Julia session crashes the runtime
- Migrated to libcxxwrap_julia_jll v0.11.0, resolves #11 and #20
- Minor fixes for docs, cf. #22
- Changed
libjulia
from runtime- to build-dependency, cf. #18
New Version Requirements
name | 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 |
v0.1.1 Pre Name-Change
v0.1.0: First Mouse Captured
Welcome 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.