Trizbort-qt

Trizbort-qt is a C++/Qt port of the original C#/.NET version of Trizbort, both to keep Trizbort alive and to run natively on GNU/Linux, macOS, and Windows. It’s free software, GPL-3.0-or-later, and read/writes the original .trizbort file format.

https://jxself.org/trizbort-qt.shtml.

I’m also trying to get it into Debian, which needs a Debian Developer to sponsor the upload. If you’re a DD, or know one who might help, it’s ready for review on Mentors: https://mentors.debian.net/package/trizbort-qt/. Thanks!

8 Likes

Curious about why you changed languages and UI frameworks. With C# .NET you would only need to change the UI framework to Avalonia to achieve cross platform binary support for all the major players.

I’ve done the packaging for Guix, if it helps. There was an issue with using the newer version of Qt6 in Guix, so I’ve patched it out for now:

---
 src/TrizbortWriter.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/TrizbortWriter.cpp b/src/TrizbortWriter.cpp
index 58e5461..5f9a73a 100644
--- a/src/TrizbortWriter.cpp
+++ b/src/TrizbortWriter.cpp
@@ -95,7 +95,7 @@ QString saveColorHex(const QColor &c)
         return QString();
     const unsigned int rgb =
         ((c.red() & 0xFF) << 16) | ((c.green() & 0xFF) << 8) | (c.blue() & 0xFF);
-    return QStringLiteral("#%1").arg(rgb, 6, 16, QLatin1Char('0')).toUpper();
+    return QStringLiteral("#%1").toUpper();
 }
 
 QString escAttr(const QString &s)
@@ -167,7 +167,7 @@ QString encodeXmlName(const QString &in)
         if (isNameChar(c, i == 0)) {
             r += c;
         } else {
-            r += QStringLiteral("_x%1_").arg(c.unicode(), 4, 16, QLatin1Char('0')).toUpper();
+            r += QStringLiteral("_x%1_").toUpper();
         }
     }
     if (r.isEmpty())
-- 
2.54.0

Thanks for doing the Qt port!

made an AUR pkgbuild for it! (though borrowed the patch created by adam)

1 Like

Well that’s neat. Can confirm that the Intel Mac version is running. I got some feedback on the UI.

  • The scroll sensitivity is very high and it’s too easy to zoom way in / out unintentionally. The scroll zoom could stand to be desensitized.

  • It seems like you can zoom infinitely in both directions. The zoom level could use some reasonable max bounds.

  • Clicking on a room in connect mode automatically connects the room to itself. I’m not super familiar with Trizbort, but this doesn’t seem right.

  • The blue dots that appear around the rect perimeter aren’t themselves selectable, so they don’t highlight and the clickable area of them is just the width of the box outline.

  • The connection lines sometimes highlight on hover, but often do not, and remain unclickable.
    image

  • I can zoom, but I can’t scroll, so zooming seems to be the only way to navigate. It would be nice to have scrollbars or a drag hand.

  • The connection logic is wonky. It really struggles to connect this fourth from the left point, then draws unnecessary diagonals.


  • Somehow I managed to activate the box highlight and the lines highlight at the same time.

  • Trying to detach and reconnect a line doesn’t work very well.

  • I thought that this was the full application menu and didn’t realize until after I made all these other observations that there was an actual proper MacOS application menu. These options could probably be a floating palette.
    image

4 Likes

I like C and C++. Even though they have the C name they’re very different. Using Avalonia would have meant staying on C#, which is the part I wanted to leave, and would’ve been a rewrite regardless. Qt was the better trade for me.

Thanks so much for packaging it for Guix - really kind of you! One heads-up on the patch though: It will corrupt the saved .trizbort files. I recommend to not apply it. Could you send the exact build error you saw with Guix?

here is the paste log for the build error i am getting: /home/silver/aur-packages-git/trizbort-qt/src/trizbort-qt-1.0/src/TrizbortWriter - Pastebin.com

QT version: 6.11.2

gcc: 16.2.1

Sure, the error I got in the Guix build log is the same as Ethan’s.

Qt version: 6.9.2
GCC version: 14.3.0

FINALLY A LINUX BINARY OF TRIZBORT !!!

and works without crashing :slight_smile:

But I confirm the issues Ivan noted in the mac version, which points to the QT interfacing part of the source.
(Albeit I have Dl’d also the sources, was an hard work getting my way into the vanilla X and Xaw (athena) widget API documentation, so I can’t help with the most complex X API like QT and Gnome…)

Congrats for the excellent work, and
Best regards from Italy,
dott. Piergiorgio.

How do you like Qt? I’ve dabbled in it but never committed to anything using it. I guess I haven’t hit the pain point yet. C++ is my favorite language of all the “C” languages and I consider myself an expert in C++ 11 and the STL which eventually merged into the standard. I spent 20 years writing engineering software for a stats firm using it. These days I use C# because of the universal language support across the ecosystem.

I’ve tested the latest commit, and it builds now for newer Qt6 versions :smiley:

Thanks for confirming. Seems to be in order. :grinning_face:

builds fine here, though did get confused thinking there wasn’t a new release until i looked at the time stamp on the .tar.gz

Heads-up for the Debian crowd: trizbort-qt has landed in Debian unstable: trizbort-qt - Debian Package Tracker. Thanks to Amin for sponsoring the upload. It’ll flow to testing and then a stable release in the usual way. I expect it to show up in Debian-based distros as they sync over time.

5 Likes

I just downloaded the Windows version and got this error when run:

Click OK and it shuts down. Any idea what this means?

Which version of Windows are you using?

Windows 7.

Thank you. Qt 6, which Trizbort-qt uses, requires Windows 10 (version 1809) or later. I’ll make sure to go document that somewhere so it’s clear.

1 Like

1.0.1 is out; it fixes a bug showing the app icon on GTK-based desktops. I’m thinking of reviewing open issues filed against the original C# version to identify ideas for future versions.