Writing a GUI, what's current, what's the future?

More
30 Aug 2013 21:48 #38247 by mungkie
I am considering writing a proof of concept GUI for linuxcnc (proof because I have no idea how axis et al. currently work).

I am looking at this because I have heard linuxcnc maybe changing (NML and python polling??) and also as I feel linuxcnc will need to be more cross platform (raspberry pi and other ARM devices) so needs GLES gui

I have perviously messed around with stepconf type gui and that controlled hal using halrun/halcmd through a pipe, how does axis handle control of widgets and path plotting feedback from hal? how should it ideally be done, what may change in future linuxcnc version that should be considered.

I have not looked at any of the axis source code yet, any pointers on what to grep for and outline of how code works?

I am currently looking at using pi3d and possibly kivy as python toolkits as these are fairly cross platform and lightweight and maybe run as guis without X windows, this should allow large cpu processing reductions for gui as most rendering can be offloaded to GPU.

I am asking in advance of any real thought in the hope someone can save me a lot of time and research, I will not be playing with this until end of september(I really have no time until then), any advice or explanation of how things work before then gratefully accepted.

Please Log in or Create an account to join the conversation.

More
30 Aug 2013 23:20 #38255 by ArcEye
Hi

There is a lot afoot which will change much of the linuxcnc internals and it is far from certain how much of it will go into the next release and how much will be in the next master - development version still.

For this reason I stopped developing my C++ GUI and libraries and am waiting for the outcome before continuing or at least reviewing.

You are right, nothing but delving into the internals will allow you to really begin to get your head around exactly how Linuxcnc works
If you were programming in C / C++, I would say look at the code for xemc, halui, halcmd for starters

As you want to do it in parceltongue, you could do a lot worse than start with JT tutorials on writing a GUI, written when he was on his python odyssey.
www.gnipsel.com/linuxcnc/gui/index.html

That will give you a good basis from which to delve in depth into the Axis code with understanding of what that is doing.

regards

Please Log in or Create an account to join the conversation.

More
30 Aug 2013 23:43 #38257 by mozmck
ArcEye, I'm interested in your c++ GUI. I have pieces of one started myself at one time, and was going to use FLTK for it. I've looked at QT but could not see any need for the bloat. What toolkit were going with and what were your design goals? I had in mind a GUI built from an XML file at load time.

Please Log in or Create an account to join the conversation.

More
31 Aug 2013 04:39 #38270 by BigJohnT

As you want to do it in parceltongue, you could do a lot worse than start with JT tutorials on writing a GUI, written when he was on his python odyssey.
www.gnipsel.com/linuxcnc/gui/index.html

That will give you a good basis from which to delve in depth into the Axis code with understanding of what that is doing.

regards


I'm still on the odyssey but have been short of time lately...

JT

Please Log in or Create an account to join the conversation.

More
31 Aug 2013 17:21 #38297 by ArcEye

ArcEye, I'm interested in your c++ GUI. I have pieces of one started myself at one time, and was going to use FLTK for it. I've looked at QT but could not see any need for the bloat. What toolkit were going with and what were your design goals? I had in mind a GUI built from an XML file at load time.


I wrote it in Qt because that is what I have used for years.
I think it gives one of the best and crispest GUIs, I loathe GTk.

The library contains a lot of Qt bindings, so that the parameters and return values can be in Qt variables, such as QString, whereas the C functions underlying in linuxcnc invariably just deal in char *

There was no underlying goal with the GUI, just to pick one to bits and find out how to put it all together.

Along the way I found that the libraries enabled me to write very much superior userspace components, with dialogs, user data input etc,
thanks to the fact that they were based on Qt classes and thus could just call in any other part of the Qt libraries.
These are earlier discussions
www.linuxcnc.org/index.php/english/forum...set-a-variable#28642
www.linuxcnc.org/index.php/english/forum...or-linuxcnc?start=20

Once the next release is stabalised, I will have to re-visit, change where necessary and see if I want to finish the GUI.
It was certainly not intended for release.

The thing that prompted it initialy was the inability of the pyGtk/Tcl Axis to embed any windows other than gtk ones or very well behaved X apps like xterm / mplayer into itself.

I wrote it so that QtVcp was a real possibility, with a real alternative to gladeVcp and all the pythonesque convolutions that go with it
This is an old discussion that shows the GUI just as an Axis clone but in Qt
www.linuxcnc.org/index.php/english/forum...930-gremlin?start=20

regards

Please Log in or Create an account to join the conversation.

More
01 Sep 2013 09:36 #38339 by andypugh

I am considering writing a proof of concept GUI for linuxcnc (proof because I have no idea how axis et al. currently work).


Great to see you back, Mungkie. Can I briefly hassle you to release the code, and a license, for the RPi stepper driver?

Please Log in or Create an account to join the conversation.

More
23 Sep 2013 15:12 #39127 by mungkie
I am probably going to start messing with linuxcnc in the evenings this week, spent a few hours over the weekend trying to assemble all the parts and SD cards I was using before, so maybe will work on the gui idea (or maybe something else :P ).

I did a little more research and found a chat log about someone else looking at a kivy gui here: linuxcnc.mah.priv.at/irc/%23linuxcnc-dev...-01-26.html#15:28:40

Anyone have any idea about what happened with that?

It has sort of made me reconsider kivy as I don't want to duplicate effort and don't know about licence, I will probably look more at pi3d.

Please Log in or Create an account to join the conversation.

More
23 Sep 2013 15:17 #39128 by mungkie

I am considering writing a proof of concept GUI for linuxcnc (proof because I have no idea how axis et al. currently work).


Great to see you back, Mungkie. Can I briefly hassle you to release the code, and a license, for the RPi stepper driver?



I will try and find it this week, may take an hour or 2 to find the right SD card or virtual machine, and there is possibility I lost the version used on the SD image.

If you want it cleaned up and commented that could take a while longer, I will post the code to the rpi thread before I start messing with gui code this week.

Please Log in or Create an account to join the conversation.

More
18 Dec 2013 04:01 #41707 by TangentAudio

I wrote it in Qt because that is what I have used for years.
I think it gives one of the best and crispest GUIs, I loathe GTk.


ArcEye,

Very interested in your Qt development. I too have been developing in Qt (C++) for years, even embedding it on x86 and ARM platforms for our product lines at my day job.

I've been a LinuxCNC user and occasional hacker for a bit over four years now. I have had some interest in doing some LinuxCNC GUI work, but haven't done anything because Qt is a pretty nice environment and it's hard to find the motivation to learn yet another GUI environment, much less get proficient at it.

-Steve

Please Log in or Create an account to join the conversation.

More
18 Dec 2013 17:12 #41745 by ArcEye

I wrote it in Qt because that is what I have used for years.
I think it gives one of the best and crispest GUIs, I loathe GTk.


ArcEye,

Very interested in your Qt development. I too have been developing in Qt (C++) for years, even embedding it on x86 and ARM platforms for our product lines at my day job.

I've been a LinuxCNC user and occasional hacker for a bit over four years now. I have had some interest in doing some LinuxCNC GUI work, but haven't done anything because Qt is a pretty nice environment and it's hard to find the motivation to learn yet another GUI environment, much less get proficient at it.

-Steve


Hi

I have shelved the GUI for now, because the NML layer underlying Linuxcnc is in the process of complete change and I want to see what shakes out before I spend more time on it.

Arguably it makes no difference and the GUI will do the same no matter what the underlying calls do, but because I wrote a large Qt library of classes to make the Linuxcnc calls
using Qt types and classes to support it, I want something stable to work on before I continue.

I am now mostly through writing a qtVCP replacement for pyVCP, which already works fine, but the devil is in making it usable to non C++ programmers.

There is resistance to using any compiled language over a scripted, run-time compiling one, which hides the compile step from the user.

The push behind this and a replacement for gladevcp, is that gtk is at the end of its life and anyway the tk tcl widget set is tired.

Taster below




regards
Attachments:

Please Log in or Create an account to join the conversation.

Time to create page: 0.108 seconds
Powered by Kunena Forum