# ANN: building GUIs with GtkReactive (plus, ProfileView changes)

**URL:** <https://discourse.julialang.org/t/ann-building-guis-with-gtkreactive-plus-profileview-changes/2828>\
**Category:** Community\
**Tags:** package, plotting, graphics, guis, reactiveprogramming\
**Created:** [March 22, 2017, 10:39pm UTC](https://discourse.julialang.org/t/ann-building-guis-with-gtkreactive-plus-profileview-changes/2828 "2017-03-22T22:39:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tim.holy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tim.holy/32/52_2.png) [@tim.holy](https://discourse.julialang.org/u/tim.holy)\
**Post date:** [March 22, 2017, 10:39pm UTC](https://discourse.julialang.org/t/ann-building-guis-with-gtkreactive-plus-profileview-changes/2828/1 "2017-03-22T22:39:51Z")

</div>

I’d like to announce [GtkReactive](https://github.com/JuliaGizmos/GtkReactive.jl), a package for creating graphical user interfaces (GUIs) in Julia. As the name might suggest, it builds on Gtk.jl and Reactive.jl to manage the “application logic” of a GUI. Aside from writing “pure” Gtk applications, one of my hopes is that it will be useful for expanding the set of widgets for controlling GLVisualize, which uses Reactive signals for its interactivity and animations.

The [documentation](https://juliagizmos.github.io/GtkReactive.jl/stable/) walks through three simple examples:

- how to create and work with widgets
- building a simple drawing program (mouse clicks, canvases)
- zooming and panning

To users of ProfileView: it’s very likely that it will soon be switched from GtkUtilities to GtkReactive. One consequence is that your mousing habits may need to change a bit, because the default GtkReactive settings require you to hold down Ctrl any time you wish to zoom. This was originally intended to make users of trackpads that support gesture recognition a bit happier; a side bonus is that this cleared the way for supporting pan-drag, and thus might make your user experience that much nicer.

Enjoy!

---

<div class="post-metadata">

**Author:** ![jtravs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jtravs/32/2010_2.png) [@jtravs](https://discourse.julialang.org/u/jtravs)\
**Post date:** [March 22, 2017, 11:11pm UTC](https://discourse.julialang.org/t/ann-building-guis-with-gtkreactive-plus-profileview-changes/2828/2 "2017-03-22T23:11:50Z")

</div>

Looks excellent!

Can you give a hint of how it would integrate with GLVisualize or other plotting packages. Would they draw onto a canvas? I’d have thought that was a little slow?

---

<div class="post-metadata">

**Author:** ![tim.holy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tim.holy/32/52_2.png) [@tim.holy](https://discourse.julialang.org/u/tim.holy)\
**Post date:** [March 23, 2017, 1:28am UTC](https://discourse.julialang.org/t/ann-building-guis-with-gtkreactive-plus-profileview-changes/2828/3 "2017-03-23T01:28:02Z")

</div>

In the short term, the most straightforward way would be to use a Gtk window (the “toolbar”) for any widgets that aren’t available in GLVisualize yet; the rendering could happen in a separate GFLW window.

In the longer run, someone could implement [OpenGL support](https://projects.gnome.org/gtkglext/) for Gtk.jl, and generalize GLWindow to support it as a backend.
