Yay!
Although it builds, as expected it doesn’t run but at least now I won’t be flying blind and will be able to test, debug and fix as I go.
Yay!
Although it builds, as expected it doesn’t run but at least now I won’t be flying blind and will be able to test, debug and fix as I go.
Weekend Side Project
After a boring and tedious week of fixing tons of build errors I felt like working on something different so decided to tackle something I’ve been wanting to do in GuiKit for ages (probably years) - custom menus.
I’ve put this off because the Windows menus have sufficed. When I implemented full screen mode I implemented a custom menu bar, but not the dropdowns/popups. So while they worked ok, they were a bit of a mish-mash.
So I spent Saturday implementing all the mouse and keyboard interactions and half of today implementing the visuals and theming. It’s looking good, working well and now fully themeable and scalable:
Unfortunately it’s not finished because I hit a major issue with SkiaSharp (the text/graphics rendering library used by GuiKit) which required an intense afternoon of debugging and then fixing. I’ve contributed a fix for it which they’ll hopefully merge it.
Anyway, I’ll keep this as a side project until it’s finished. Tomorrow it’s back to Cantabile with the week’s goal to be getting it running again.
Today I started on the theming work for the main window, starting with the main toolbar icons:
These icons are now all vector art and I’ve tweaked the look a little. The auto record indicator is now a green ring around the record button and the Play and Pause buttons have been crispified:
Also, because having to restart Cantabile to test each change to the theme gets very tedious very quickly, I added a new command in Cantabile to reload the current theme. That helped, but to make things even quicker I’ve added ability to monitor the theme folder for changes and automatically reload it. This has made the theme work much quicker because I can just put Cantabile on my second monitor, the GTL file on my main monitor, make a change, save the file and see it immediately update in Cantabile.
I’ve also made the theme loading much more resistant to errors in the GTL files - it used to crash out with an exception, but now it reports the error and keeps the old loaded theme.
Looking very clean - that will be helpful to us all.
Main Toolbar finished and working.
Also, updated GuiKit vectors to support radial gradient so I could convert the MIDI activity indicators to vector.
Presents - we get presents???
Yay!
I didn’t zoom in on it, and thought it to be a frog. A true proof of my poor eyesight and my deranged mind.
Frogger?
I think… maybe… when you click that button, it ties your whole set together with a neat little bow.
You know… fixes all of the mistakes you made so Brad doesn’t get emails in the middle of the night!
I’m a professional software developer myself and I can only say: you are SO right! The daily routines in our company do constantly prevent us to work not even close to the conscientious approach Brad shows here. I bow my head in reverence!
You are crazy. In the best sense.
Last night I finished GuiKit’s new menu implementation (the one I started last weekend).
It looks basically the same, but:
Old:
New:
Today’s progress… got the tab bars appearing correctly (and tweaked their appearance), recordings panel, record ports panel and most of the set list panel.
I’m tossing up whether to move away from Cantabile’s traditionally rounded off buttons/checkboxes and moving to square style (like GuiKit’s default theme). Notice square boxed pin icons in the recordings panel compared to the rounded off ones in the current Cantabile release.
The round buttons in the set list panel will stay round as they’re supposed to reflect a single selection like a radio button:
After a week of this work, this is going more slowly than I hoped. Hopefully once I get past the main window theming things will start move a bit quicker.
Anyway, bring on the weekend.
In the IK Product Manager it’s bonus content
I’m a rounded corners guy myself, but just one voice amongst many.