Mousetrap.jl Versions Save

Finally, a GUI Engine made for Julia

v0.3.1.1

5 months ago

v0.3.1.1

Just a quick bug fix, no new features were added

  • Fixed a bug where ColumnViews push_back_row! did not work when the ColumnView was empty
  • Deprecated push_front_row!, use insert_row_at! instead

v0.3.1

6 months ago

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

6 months ago

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

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

8 months ago

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, where v1.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 to Mousetrap, 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 FileMonitors 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

8 months ago

This release adds no new features but contains some minor fixes:

  • adds a version requirement to prevent CxxWrap compiler errors (fixes #4)
  • forces main to run non-concurrently (fixes #10)
  • removes StyleClass in anticipation of the StyleManager interface that will be part of v0.2

v0.1.0

9 months ago

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.