#linuxcnc-devel Logs
Nov 21 2017
#linuxcnc-devel Calendar
09:35 AM mozmck: Interesting post from alex rossler on the users list about qtquickvcp
10:37 AM skunkworks: mozmck, I though you where using qt
10:37 AM mozmck: No, I'm using gscreen, but I would like to look more at qt.
10:38 AM mozmck: I actually had it on my (too long) list to look at porting the QT "gremlin" widget from Alex's qtquickvcp, and maybe other things.
10:41 AM skunkworks: there is never enough time
10:42 AM mozmck: quite true
10:42 AM mozmck: He is offering to work on porting the whole qtquickvcp though, which I think is quite interesting.
10:46 AM hazzy: We need to all respond to that email that we ARE interested!
10:47 AM mozmck: hazzy: have you looked at qtquickvcp?
10:48 AM hazzy: Yes, I glanced thru the code a few days ago, it looks very nice
10:49 AM hazzy: I am giving up on GTK :(
10:49 AM hazzy: So trying to learn as much about QT as I can
10:49 AM mozmck: Gtk is a mess unfortunately. I think they are supposed to quit changing the API in breaking ways now, but gtk3 has been really bad about that.
10:51 AM seb_kuzminsky: i'd like a qt-based interface in our repo
10:54 AM hazzy: working on it seb :)
10:54 AM seb_kuzminsky: yeah i saw tht
11:00 AM mozmck: Yeah, I haven't looked at that one yet. If qtquickvcp is ported over here, what might happen with qtvcp?
11:01 AM seb_kuzminsky: i know nothing about the differences between qtquickvcp and qtvcp
11:01 AM seb_kuzminsky: probably we need Chris_Morley to weigh in on that topic, preferably in email
11:05 AM mozmck: I wonder what defines a "modern UI"? Cetus doesn't look bad, but also doesn't look that much different than Axis. And the buttons are in color - I thought "modern" meant flat and no color?
11:05 AM seb_kuzminsky: not sure
11:05 AM mozmck: https://github.com/qtquickvcp/Cetus
11:05 AM seb_kuzminsky: Cetus was explicitly designed to look like Axis
11:07 AM seb_kuzminsky: i think it's not an example of what Alex Rössler considers a "modern UI", but more of a proof of concept of the new QT-based UI-building toolkit, and as a way to show stodgy old axis users like me that it's nothing to be afraid of
11:07 AM seb_kuzminsky: ;-)
11:08 AM mozmck: Yeah, I saw that, and I guess you're right - it may not be an exemplar of "modern UI" design.
11:10 AM hazzy: I believe this is done with QtQuickVcp: https://youtu.be/uT-tAweP21U?t=85
11:10 AM hazzy: Certainly a modern feel
11:11 AM mozmck: That's not too bad I guess.
11:13 AM seb_kuzminsky: ok after a few minutes of reading i now know that qt quick is a totally different front-end technology than the "normal" qt
11:13 AM mozmck: Yes.
11:14 AM seb_kuzminsky: qt quick is based on its own programming language called qml, but still calls into the regular QT libraries as i understand it
11:16 AM seb_kuzminsky: so probably there's not much overlap possible with Chris_Morley 's qtvcp work - they probably would continue as separate projects
11:16 AM mozmck: Could be.
11:28 AM hazzy: Yes seb it true true that there will not be much overlap with Chris's qtvcp, unless qtvcp can use custom widgets written in QML, which would be the best of both world
11:28 AM hazzy: Easy screen layout in QT Designer, but nice modern QML widgets
11:28 AM hazzy: Still investigating the possibility of that
11:47 AM mozmck: hazzy: from the qt docs, "Qt Quick Designer is integrated within Qt Creator and supports QtQuick 2 from Qt Creator version 2.7 and onwards."
11:47 AM mozmck: http://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html
11:50 AM hazzy: Right, but does Qt Designer (not Qt Quick Designer) support custom widgets developed using Qt Quick Designer?
11:50 AM hazzy: I have not been able to find that out
11:50 AM hazzy: There are so many designers/creators it is a bit confusing
11:50 AM mozmck: I don't think so, but can't say for sure either.
11:52 AM mozmck: QML doesn't support normal qt widgets - they have their own via Qt Quick Controls
11:52 AM hazzy: I am inclined to thing it does not as well, but still hoping it does :)
11:52 AM hazzy: right
11:53 AM mozmck: That's why I was not so interested in qml last I looked. Also, to get the controls you need a pretty recent version of qt5
11:55 AM hazzy: I have not been able to get the Quick Controls to work in stretch, all that seem available are the Quick layouts, not very helpful ...
11:57 AM mozmck: I think those are some reasons I was just looking at porting some of alex's stuff and not the whole thing. It might be useful to have both options though - qtquickvcp and qtvcp.
11:57 AM hazzy: QML seems like it is mainly targeted for mobile phone type stuff, but the video Alex posted got me intrigued
11:57 AM seb_kuzminsky: if the software is not in the latest stable debian, it's going to be a lot of work to get going
11:58 AM mozmck: Yeah, and I'm not too interesting in mobile phone stuff.
11:58 AM hazzy: Chris's qtvcp is not too far from being usable, so I think it is worth finishing no mater what
11:58 AM mozmck: I wonder how Alex does development - maybe downloads the qt sdk from the qt site?
11:59 AM seb_kuzminsky: hazzy: i agree this is not an "either-or" situation, it's a "both" situation
12:00 PM hazzy: Possible, or builds from source, I found the Qt stuff on github and compiled it yesterday to play with
12:01 PM hazzy: seb_kuzminsky: Defiantly, and I was thinking it would be good to migrate qtvcp to QT5, but now I am not so sure, maybe keep it QT4 so it is usable on older distros
12:02 PM mozmck: hazzy: that's what I was thinking a while back. I don't know how important that is at this point.
12:04 PM hazzy: In case you were wondering defiantly => definitely :)
12:49 PM seb_kuzminsky: here are the supported distros for 2.7 and master: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?MinimumSoftwareVersions
12:49 PM seb_kuzminsky: i will not drop support for any distro for the 2.7 stable release, of course, but dropping support for old distros in the master branch could be discussed
04:33 PM hazzy: Chris_Morley: yo
04:39 PM Chris_Morley: hello hazzy
04:39 PM hazzy: Hey Chris
04:39 PM Chris_Morley: I just read back on qt duscussion
04:40 PM hazzy: What do you think?
04:40 PM hazzy: Let Alix do the work?
04:40 PM hazzy: :)
04:40 PM Chris_Morley: AFAIK dml widgets can be displayed in qt (but thats in qt5 only)
04:40 PM Chris_Morley: qml sorry
04:41 PM hazzy: If that works that would be awesome!
04:42 PM Chris_Morley: machinekit's stuff is written completely in c++ which I don't agree with in principle. -python opens up more peoples ability to work on hack.
04:42 PM Chris_Morley: I would love there graphics display ported over - we could always wrap it in python
04:43 PM hazzy: Yes, I agree with that, the whole point of LCNC is to be readily customizable, and C is not conducive to that
04:44 PM hazzy: It might make since to have some modules that arn't likely to be changed in C (maybe Gremling) for speed though
04:44 PM mozmck: I really like the fact that it is written in C++, because it is way faster and smaller than python. And as you say, it can always be wrapped.
04:45 PM hazzy: ditto mozmck :)
04:45 PM Chris_Morley: Yes python lends it's self to have c or c++ modules Incorporated - best of both worlds
04:45 PM hazzy: yes
04:45 PM Chris_Morley: but the major portions should be an accessible language to the masses.
04:46 PM Chris_Morley: or else you end up with only three people who can make any major changes (much like linuxcnc's motion or task)
04:47 PM hazzy: Chris_Morley: I think I am pretty much done with converting the qtvcp4_master2 branch to using Pythons logging module, could you take a look?
04:47 PM hazzy: https://github.com/KurtJacobson/linuxcnc/commit/565f8d20d119ac8ce5da40f0f799cb0a37c5c018
04:47 PM seb_kuzminsky: in fairness, Task and Motion are super complicated because of the work they do, not only because of the language they're written in
04:47 PM mozmck: The problem with motion and task is not C/C++, but that they are complex beasts.
04:47 PM mozmck: as seb_kuzminsky said!
04:47 PM Chris_Morley: hazzy -the distribution you are using -32bit or 64? I still can't get qt5's designer to find the widgets
04:48 PM hazzy: the language just makes it even harder to understand!
04:48 PM hazzy: 64 bit
04:48 PM Chris_Morley: maybe that is the problem...
04:48 PM mozmck: I disagree - I find C++ easier to read than python - but that might just be me.
04:48 PM hazzy: I am using the LCNC Stretch ISO
04:49 PM Chris_Morley: ok i'll look into that.
04:50 PM Chris_Morley: python is a much easier language to use when you know nothing about a program or a language (i'm talking for green people)
04:50 PM Chris_Morley: For sure if you like c then c is going to be easiest for you.(generalizing)
04:51 PM Chris_Morley: I hate tcl
04:51 PM Chris_Morley: so i find anything easier then that :)
04:51 PM seb_kuzminsky: only jepler likes tcl :-p
04:51 PM Chris_Morley: lol
04:52 PM mozmck: I'm with you on tcl!
04:54 PM mozmck: If I was going to pick a simpler scripting language to "glue" gui components together though, I'd probably go with lua.
04:54 PM Chris_Morley: anyways if someone ported machinekit's qt graphics program over - the we could use it in our qtvcp program and use it in our GTK3vcp project (probabl) - so that would be a big win.
04:55 PM Chris_Morley: never used lua
04:55 PM seb_kuzminsky: i think C, C++, and python are all reasonable choices for different parts of linuxcnc, and i'd welcome PRs in any of them
04:55 PM Chris_Morley: why is it better the python?
04:55 PM mozmck: Well, that was something I have on my list to look at (porting the machinekit liveview widget thing).
04:55 PM Chris_Morley: That would be excellent!
04:55 PM mozmck: I find it simpler and far less bloated than python.
04:55 PM hazzy1: I used to use lua for scripting PCB design when I was like 10!
04:56 PM Chris_Morley: I would not want to to see more languages to linuxcnc without a really good reason.
04:57 PM Chris_Morley: in fact i would eradicate tcl if it was up to me :)
04:57 PM mozmck: Yes, I'm not proposing to use it in linuxcnc, just comparing it to python.
04:57 PM Chris_Morley: yes I understand
04:57 PM mozmck: Yeah, but that would be quite a job!
04:57 PM Chris_Morley: well the first part would be quite adding more ....
04:58 PM Chris_Morley: anyways before i start a language war....i'll stop
04:58 PM mozmck: Yeah. The part I'm thinking of is tcl hal files.
04:59 PM mozmck: Heh! Doesn't bother me! I'll use what I have to. I'm using tcl hal files now, but it seems like it would be nicer to use python....
04:59 PM Chris_Morley: I agree with that
05:00 PM Chris_Morley: It's certainly hard to say not to a new great feature just because it uses a different language - but again it then limits who will work on it.
05:01 PM Chris_Morley: and in a project such as this have more people capable of working on things is better IMHO.
05:02 PM mozmck: true. I'm not sure if Alex is even proposing putting his vcp in linuxcnc - looks like it is separate from machinekit as it is.
05:02 PM Chris_Morley: Hazzy so I might try a 64bit mint install and see if the designer picks up the qt5 widgets
05:03 PM Chris_Morley: yes machinekit is kinda weird that way - there is lots or great stuff scattered evrywhere and undocumented.
05:03 PM hazzy: To me it makes since to have the GUIs in seperate repos, seems like it would make maintenance easier for everyone
05:04 PM hazzy: All under the LCNC org though
05:04 PM Chris_Morley: actually the documentaion is probably the single biggest problem there.
05:04 PM seb_kuzminsky: hazzy: that would make it harder to ensure that changes in linuxcnc don't affect the out-of-tree guis
05:04 PM seb_kuzminsky: it also fixes ui maintainers to do their own packaging
05:05 PM seb_kuzminsky: s/fixes/forces/
05:05 PM hazzy: But they could be included as sub modules in LCNC
05:05 PM Chris_Morley: I believe you can have git repos pull in other repos? maybe I am dreaming?
05:05 PM hazzy: Yes you can
05:05 PM seb_kuzminsky: sure, could do, but what would be the win of that over having them in-tree?
05:06 PM seb_kuzminsky: we try pretty hard not to change APIs and such within a stable release branch, i guess out-of-tree GUIs would similarly have a branch that targets each of our stable branches, plus one for master ("next")
05:06 PM Chris_Morley: i'm not sure about GUIs but having HAL separate would be a win
05:06 PM seb_kuzminsky: Chris_Morley: that could sure be
05:11 PM hazzy: Well maybe I am doing something wrong, but right now I have to build LCNC each time I want to test a small change I made to a python script for a GUI
05:11 PM seb_kuzminsky: the build should notice that most things have not changed, and skip rebuilding them
05:11 PM hazzy: It seems like if each GUI could be its own little RIP it would make GUI development much faster
05:12 PM hazzy: well, it still takes about 10min even with make -j4, maybe I need a faster PC :)
05:13 PM seb_kuzminsky: that seems crazily long
05:15 PM hazzy: Ok, that makes me feel better, I was wondering if everyone else was just more patient than I
05:16 PM seb_kuzminsky: starting from a freshly built source tree, touch emc/usr_intf/axis/scripts/axis.py, then time make -j4:
05:16 PM seb_kuzminsky: real 0m0.957s
05:16 PM seb_kuzminsky: user 0m0.928s
05:16 PM seb_kuzminsky: sys 0m0.072s
05:16 PM seb_kuzminsky: this is on a machine with more than 4 cpus, 2 GHz
05:17 PM seb_kuzminsky: are you running "make clean" or something like that?
05:17 PM hazzy: what? I would be plenty satisfied with that!
05:17 PM hazzy: no just make -j4
05:18 PM hazzy: this is an i5, so it should not be that slow
05:18 PM hazzy: 2.4 Ghz
05:20 PM hazzy: I do run ./configure each time, if I don't it tells me to
05:23 PM Chris_Morley: Hazzy - anything that you change in lib/python you don't need to recompile at all
05:24 PM hazzy: Yes, but in /src/emc/usr_intf/ it seems I do, as it gets copied to bin
05:25 PM Chris_Morley: yes for sure there you do
05:52 PM seb_kuzminsky: hazzy: ah, that's the problem: don't rerun ./configure
05:52 PM seb_kuzminsky: how does it tell you to rerun configure?
06:23 PM jepler: if "make; make" does anything of consequence on the second invocation, it's something that should probably be addressed
06:24 PM jepler: also for most developers you can skip rebuilding the message catalog: time make -j4 -o po/linuxcnc.pot
06:24 PM jepler: on my somewhat less snappy machine, 'touch emc/usr_intf/axis/scripts/axis.py; time make -j4' takes 2.5s, but with with that -o it takes 0.4s.
06:28 PM seb_kuzminsky: here's a nickel, kid
06:35 PM hazzy: seb_kuzminsky: I can't quote the message I get as I pulled a fresh version of master and can't duplicate the message now, which is fine with me!
06:36 PM hazzy: I usually only make after switching branches, since I have not been changing anything in the source
06:36 PM hazzy: jepler: now "make; make" behaves as you said Great!
06:37 PM hazzy: But I can't build master now ....
06:38 PM hazzy: I get this: https://thepasteb.in/p/98hRq8YkMM3fk
06:55 PM hazzy: Got it! I did not have intltool installed, that must be a new dependency? Like since yesterday it seems
06:59 PM hazzy: Ah, looks like is was added on Sep 7th with 06e78c4c, guess I have not build maser in a while ....
07:00 PM hazzy: Sorry for the nooby spam :)
07:40 PM seb_kuzminsky: hazzy: i've gotten in the habit of re-checking the build dependencies when i have been away from linuxcnc for a while
07:40 PM seb_kuzminsky: using these commands: http://linuxcnc.org/docs/devel/html/code/building-linuxcnc.html#Satisfying-Build-Dependencies
07:40 PM seb_kuzminsky: but it sounds like you got it going, so good!
07:44 PM hazzy: seb_kuzminsky: Yes, I used to religiously run `dpkg-checkbuilddeps`, but I have gotten lazy of late since it normally does not show any missing packages
07:44 PM hazzy: I have learned my lesson!
07:45 PM hazzy: thanks seb
07:49 PM hazzy: got a python script to compile and load a QML file, that's something at least.
07:49 PM hazzy: That is on stretch with out doing anything fancy
11:57 PM Tom_itx is now known as Tom_L