Does Tormach have plans to update PathPilot to Python 3.x and GTK 4 (or at least 3)?

I’ve been working on an enhancement to PathPilot in order to demonstrate a service I’m planning to offer. I’ve finally had some real success hacking at PathPilot, but was chagrined to learn it’s written in Python 2.7 and GTK+ 2.16. Both of these are deprecated and have waning support (in the case of GTK+, it’s almost hostile out there).

I realize I probably won’t get a straight answer from Tormach on this, but surely it’s painful for your devs to keep working with such old software versions?

Or is it a limitation of LinuxCNC?

1 Like

@Rick_Mann - welcome to the Tormach user forums and thanks for posting!

The ZA6 robot version of PathPilot is on Python 3, with Qt as the GUI framework. We’re working on a similar upgrade for the CNC PathPilot. As you might imagine there is a lot of work involved and we plan to be on the Python 2.7/GTK version for the remainder of 2023. Just like when we went from PathPilot 1.x to 2.0, we will have free upgrades for machines less than a year old and “at cost” upgrades (~$20 USB install stick) for everyone else.

I hope this helps with your plans.

3 Likes

Interesting… So we can expect a Pathpilot 3.0 at some point in 2024 or there abouts? That’s rather exciting!

I appreciate that! Do we have to get it on USB stick? It can’t just be a downloadable update, or at least an image I can burn myself? I just hate waiting for the mail.

@Rick_Mann great question!

Last time we went through this (PP1.9 → 2.0) we used physical USB sticks. Back then the process of using Windows to create a bootable USB from an ISO file was challenging. Now with programs like Balena Etcher it’s much easier and we may well have an ISO file for download.
Fun tidbit: the robot version of PP has three partitions on the HD - two for operating systems and one for user data. We are able to update an entire OS partition over the network. While this doesn’t help a PP 2.x - PP3.0 transition, it should make whatever happens after 3.x easier :).

Thank you for the question and interest.

3 Likes

Out of curiosity, why did Tormach choose Qt over GTK for the next iteration?

@Rick_Mann good question! I think after 10 years of frustration with GTK we’re ready for a change :slight_smile: Real answer: it’s easier to decorate the buttons (e.g. add LEDs to a Cycle Start button) in Qt the way we want and have ** resizable widgets/windows than in GTK. There may also be a performance benefit for PP Hub down the road if we change some of HUB’s underlying architecture.

1 Like

Ah, interesting. Being a Swift/Apple developer most of the time, I’m not particularly interested in either GTK or Qt, but have been learning GTK for the sole purpose of prototyping PP integration with this other project I’m working on. Kind of a bummer I’ll have to learn Qt to do it all again :crazy_face:.

As an aside, I’m toying with the idea of writing my own GUI for LinuxCNC using Dear ImGui in Swift. Not as easily iterated as something written in Python, but I have this CNC router I designed and built myself, and I need something nicer than Axis to run on it. PP would be great, but I haven’t really tried to get it working on that yet.

@Rogge Are you guys using Qt5 or 6? I have a decision to make about whether or not to build my own GUI for my homebrew router, and GTK+ has been causing me a lot of grief with the various version interdependency. LinuxCNC also supports Qt, and if I’m going to do a GUI from scratch, Qt is just as reasonable as GTK+. I spent some time looking at Qt, but they’re on Qt6 now, and there aren’t packages yet for Debian 11 on ARM (where I would be doing my prototyping).

Also, what widget are you using in Qt for source display? It was gtksourceview in the current PP, and that seems nicer than the source view I found in the LinuxCNC Qt example. I hope you’ve found a better option for Qt…

PathPilot 3 Robot currently uses the Qt5 and QML engine to be specific, but that is mainly because of the momentum. In my opinion, for new projects, it makes no sense to use older versions of dependencies than what is currently the release version. Even if you need to build it on your own and solve the distribution problem.

1 Like

Oh interesting, QML is a bit like SwiftUI (or vice-versa). That might be preferable to trying to use a graphical layout tool.

Still, getting a Qt dev environment up-and-running wasn’t trivial, and I’m going to focus on getting my proof-of-concept VCP up and running using my custom LinuxCNC with GTK+3, as I’ve already got a working “hello world” example. That will let me iterate quickly, as I’m able to do so in a VM on my Mac. Then I’ll try to hack it into PP, and then I’ll be able to give you guys a demo of my new service (and then you’ll be so dazzled that you integrated it properly yourselves :grin:).

Can you confirm if the ui_hooks.py feature is still going to be included?

I’ve been building quite a lot of code based on this and the ‘protect your probe’ thread is just one example. If the guys working on the new PathPilot development would care to have a look at this page, you can see what I’ve been up to. There’s some useful stuff in there that’d be a shame to lose and I have more on the way.