MindViz Alpha Release On Itch.Io

Started by Filax, April 15, 2025, 09:13:43

Previous topic - Next topic

Filax

MindWiz Alpha is out!  After months of coding, debugging, and occasionally talking to myself at 3 a.m.,
I'm thrilled to announce the Alpha release of my software on itch.io!

Development is a bit like a treasure hunt... except the treasure is a sneaky bug hiding in a line of code in the dead of night. 
Between mysterious crashes and phantom text lines in my GUI, debugging gave me some epic headaches.
Especially since I hand-coded everything the old-school way, with a GUI and diagram engine built from scratch.

No frameworks, just a C-like language (Blitzmax) and basic graphic primitives (DrawRect, DrawLine, DrawImage).
It's a choice that gives you total control... but also makes you sweat buckets!

I've always loved coding GUIs, don't ask me why. But building from zero is a double-edged sword.
On one hand, you own every pixel. On the other, you're the one playing cop to keep all the elements in line.
For instance, I spent an entire week untangling the interactions between my node engine and the GUI, since
they all live on the same 2D plane. Talk about a brain teaser!

But what a thrill when it finally starts looking like a real app!  Yesterday, I released MindWiz Alpha.
It's not perfect yet, and I'm sure there's a ton of bugs left to squash, but it's running, and seeing it come to
 life feels amazing. MindWiz is a smooth interface, an intuitive diagram engine, and a whole lot of coding passion.

And a nod to the night-owl coders who know what it's like to hunt bugs till dawn. Check out MindWiz Alpha here:

https://blackcreepycat.itch.io/mindwiz

And let me know what you think! What bugs will you uncover?  


PixelOutlaw

I took it to 400 connected nodes and it seemed to still be functional. (good work there).
It did ignore their positions and shrink everything in overlapping them though.

Here is my test file:
https://pastebin.com/wEh2g3Bd

Some things that come to mind.
1. Zooming to the mouse position, essentially when you zoom in it keeps the mouse position as the current point to zoom toward.
2. Copy/Paste (this lets you quickly duplicate the style of something)
3. If you're documenting program flow it's best to use standard flowcharting symbols and it would be good to have these added.
These are fairly standard: https://www.conceptdraw.com/examples/flow-chart-for-vector-program-in-java
Ubuntu MATE 20.04: i5-3570K CPU @ 3.40GHz, 8GB RAM, GeForce GTX 1060 3GB

One DEFUN to rule them all, One DEFUN to find them, One DEFUN to RETURN them all, and in the darkness MULTIPLE-VALUE-BIND them.

Filax

#2
Many thanks for the crash test!  :)) Very usefull for me! Thanks for the icons!
At first I wanted to use Cairo to generate more varied vector shapes, but unfortunately
Cairo mod no longer works with the new versions of blitzmax...

Which means I'm a bit stuck on that. If you know another vector mod?

For the copy / paste i'm on it.... But i don't know how to do it at this time :) :)


PixelOutlaw

#3
I'm not really sure about vector drawing libraries...

As far as the copy paste what I would do is set up a clone method on your nodes that has a job to return a fresh clone of that node with an updated new ID number. I assume you have some ID counter somewhere that just increments every time you make one of these notes and never stops.

Now any reference type inside a node should be also cloned so in other words when you paste and edit what you pasted you're not mutating shared structures in the old version of the clone. I think the paste clipboard thing would be nothing more than a series of lists that contain a cloned copy of the items that were selected for being cloned. And pasting should once again clone them. In this way each time you paste from the clipboard you'll be generating new clones. And even if you delete the original structures the ones on the clipboard will have been clones to begin with. Now as far as the connectors go I'm not exactly sure if those are their own objects or not. But when you make clones you will also need to update the connectors on the clipboard to if they've been selected. And when I say clipboard I mean a new program only clipboard that's just a collection of clonable objects. But it's super important that you provide a clone method for the nodes and the connectors and any reference types inside those need to be cloned in the clone method as well which means they might get their own clone methods.

And I would leave those on the clipboard all the time it might even be good to have the clipboard as its own type. So yeah essentially you want to create a clone method for anything that needs to be cloned that returns a fresh instance with any reference types also cloned in the fresh instance. This means you'll also have to update the connectors on the clipboard reconnecting them to the new node instances. I'm on my phone and it's 2:00 a.m. but I just wanted to shoot some ideas out before I go to sleep hopefully it's helpful.  One last thought you only want to copy connectors for objects that get cloned you don't want them pointing to stale old objects outside the cloned nodes. When you paste from your virtual clipboard you simply grab the mouse pointer and add that position to all of the cloned objects X and Y values. You don't necessarily need to do a box selection either if you don't want to simply holding shift and clicking could set the selected flag on the objects to true. Then the copy command sweeps through your collection of objects cloning them and putting them into your virtual clipboard and setting their selected flags to false. Selecting them and adding them to the virtual clipboard are two different things in fact they don't get addes until the virtual clipboard is cleared when you select copy.
Ubuntu MATE 20.04: i5-3570K CPU @ 3.40GHz, 8GB RAM, GeForce GTX 1060 3GB

One DEFUN to rule them all, One DEFUN to find them, One DEFUN to RETURN them all, and in the darkness MULTIPLE-VALUE-BIND them.