new GUI for lux

171 views
Skip to first unread message

kfj

unread,
Nov 3, 2023, 5:01:45 AM11/3/23
to hugin and other free panoramic software
Dear all!
Over time, lux has become very complex. To do more than 'ordinary' image and panorama viewing, it's often necessary to pass arguments on the command line. Many users find that difficult, and the 'legacy' GUI is not up to the task to handle the complexity. So I decided to start on a new GUI for lux. lux is using openGL via SFML, and a common way of writing GUIs for SFML projects seems to be using Dear ImGui, an immediate-mode GUI library which only requires the capability to render textured triangles on the host system. There's a 'glue' layer for SFML, which makes employing Dear ImGui quite straightforward, and Dear ImGui's logic blends well with SFML's. So that's what I use as well.
I have set up a new 'imgui' branch in the lux repo and I've tentatively added a few GUI elements to lux to see what I can do. I've also established that the code will build on all platforms I support myself (Linux, MacOS and Windows) - with the exception of building the MacOS version on Apple silicon (I only have intel Macs). To build the imgui branch, you may need to provide openGL libraries on your system (e.g. freeglut from MacPorts on MacOS), cmake should take care of the rest.
What's in the imgui branch is little more than a proof of concept, please don't expect too much. The menu will appear if you approach the upper window margin. There is, as of yet, no documentation for the new GUI, but many options have tool tips (hover over the little question marks). Have a look, try it out, and - as ever - comments are welcome!

kfj

unread,
Dec 3, 2023, 3:57:18 AM12/3/23
to hugin and other free panoramic software
I've been working on the new GUI for some time now, and I think it's time for a first demo! This is for Linux only, for the time being. I've built what's currently in the imgui branch into an AppImage and uploaded the AppImage to the lux download page. If you want to try it, here it is:


This is an AppImage, so for those of you who aren't familiar with the format, after downloading the file, you need to set execute permission, then you can execute it like any other binary. AppImages should run on a wide range of Linux distros. If you find it runs on your Linux, let me know about it, and also let me know if there are any problems.

The first thing you get to see is a file select dialog, where you can select images and/or PTO files. After you've okayed the selection, lux starts in full-screen mode, displaying the first image. If you don't like full-screen, press F11, TAB takes you to the next image. If you want to interact with the view, all the keyboard and mouse commands from 'legacy' lux are there, but there is one big difference: if you move the mouse pointer close to the image's top margin, you get a quite ordinary-looking drop-down menu. This is how you access the new GUI functionality. The 'File' menu has a few entries, among which the 'Imgui Demo' is probably the most interesting: it provides a panel to show all widgets and functionality Dear ImGui offers. The second menu has lux-specific panels. You can now make all kinds of settings with the GUI which did require command line parameters in 'legacy' lux. Check it out - the widgets in the panels are usually named like the CL parameters, and the little '?' signs next to the widgets yield tool tips when hovered. The new GUI focuses (for now) on parameterization, which I felt was awkward in 'legacy' lux. I'll eventually extend it to the operation of the virtual camera, slide-show control, snapshots, stitching etc. - please bear in mind that this is a first demo, not the final new GUI, so there are plenty of things still missing. If you want to use the 'legacy' GUI, you can simply switch between the old and new GUI with the 'C' key - the demo is 'hybrid'.

The panels, once you've opened them, remain visible and display the currently active parameters. If you change anything, there is no immediate effect, you have to use the 'Apply' or 'Okay' buttons at the bottom of the panels. Note that you can Apply changes to either the current view or to the entire session. I think you'll get the hang of it quickly. Please note that Dear ImGui may produce small .ini files saving the layout and position of the panels, this enables it to start up as it was closed.

So much for now, and maybe there's an echo this time? This would also be a good moment to make propositions or get involved.

kfj

unread,
Dec 28, 2023, 11:09:31 AM12/28/23
to hugin and other free panoramic software
Dear lux users on Linux! I uploaded a new version of the experimental lux-with-imgui AppImage which has all the changes and additions to the new GUI in I did in the past few weeks. It's slowly coming together! All the important functionality is now available - many settings which would have needed command line arguments before can now be manipulated graphically through 'panels' - both for the current image or for the entire lux session. Other panels give access to functionality like snapshots and slide shows, and also to per-image settings like projections. Check it out - the URL is the same:


Windows and macOS users will have to wait for some time until I publish binaries for these platforms, but I have successfully built and run the code on Windows (using MinGW) and also on macOS, both on intel and M1 macs - only packaging on the ARM mac didn't yet work out...
Reply all
Reply to author
Forward
0 new messages