Contrivance Progress

Hello again! Another update in roughly a month and a half! This time I’m talking about some of the work I’m doing with my editor, Contrivance!

I’ve shifted my focus away from Shibboleth for a bit and am focusing on getting my editor up and running. I have started accruing enough data formats that it would be nice to not have to edit JSON files by hand. I am making the editor with the ever popular Qt library. Personally, I would love to use anything else, but no other GUI library comes close to the features and functioality of Qt. Over the past few weeks, I honestly have gotten very little work done on the functionality of the editor. Instead, I’ve been fighting Qt and its numerous functional bugs related to Dock Widgets to get it to behave correctly. And because the editor uses a DLL system for extensions similar to Shibboleth, I have had even more headaches with saving and restoring widget and window states with Qt. Namely that saveState() and restoreState() don’t work with widgets spawned from DLLs. Because of this, I am having to write all of the state serialization myself.

All in all, working with Qt has been extremely frustrating. Unfortunately, I’m stuck with it, as there are no real alternatives that are any better that have the functionality and features I want. It’s surprising how few GUI libraries actually support Dock Widgets out of the box.

On a side note, there was an interesting Python library that gave me an idea. This GUI library used OpenGL to render its widgets. So, what one could do is write a Qt like GUI library, and since it uses DirectX/OpenGL/Vulkan/whatever to render its widgets, you could also allow people to provide their own rendering contexts. This would allow you to take the same library and easily embed it into games! I think it’s an intereseting idea that I might try and tackle one day when I don’t have any projects that are taking up all of my time.

Anyhow, just a small post about what I’m working on. Hopefully I will finish the serialization stuff soon and can start working on the object editor. I’d love to write some more technical posts, but I always have trouble setting aside time to do it. Hopefully I can pick up my posting cadence and not have such large gaps between posts.

Until next time!

More Reading
Older// Ported to Hugo