GUI overhaul with QT 5.12

QT 5.12 LTS is already out hubs.ly/H0fD2fj0
So is there any plan for redesign UI ?
Thank you

1 Like

The code for natron is open, so whoever wants to have a go at this can, but it isn’t currently being worked on as nobody is actively adding features to natron.

Natron should work with Qt 5, the only missing part is PySide, which is not officially supported by Qt5, but should be integrated soon. Just try it: use the Qt5 qmake and build Natron.

BTW, the name of PySide has changed to Qt for Python.

Right now i can code only in Python not in c++.

You don’t need to be able to code to run qmake. And why would you want to change thecUI? It looks like Nuke, it’s quiet comforting.

Qt4 is not maintained anymore, so we may get into issues at some time by keeping it, although it is quite stable. For example, every new version of macOS brings its incompatibilities, and the Qt4 code has to be patched again to compile (see macports-ports/Portfile at master · macports/macports-ports · GitHub).

If somebody want to add compatibility with “Qt for Python” (the official replacement for PySide), then I’ll gladly review the pull requests. I would prefer if we could keep the possibility to build with Qt4/PySide, though.
One other thing is that I don’t think the master branch is the good place to do that, because the RB-2.3 is much more stable (although it has a few bugs).
My advice would be to make a new minor version (RB-2.4?) that adds Qt5 compatibility.

2 Likes

@devernay
Any update ?

Sorry, no time (at all) to work on this. But it should not be to hard to make the Qt5 transition for someone who already got the code to compile with Qt4. The code was compiling with Qt5 1 year ago, so the changes would mainly be in the PySide stuff (now called “Qt for Python”).

And just to be clear, I’ll accept any PR (pull request) that improves Qt5 compatibility without breaking Qt4 compatibility

@devernay
Can you upload an video on how to build Natron locally on CentOS 7 from start to finish ?

I’m working on Qt5 (.12) migration.
What I can say now: « @?#! of shiboken2 »

more technical speeking: Shiboken2 is not compatible with Shiboken.
Ex, You can not do this:

#define defaultvalue 1
class X {
public:
int add(int x, int y=defaultvalue) {return x+y;}
};

The “defaultvalue” define is handle py shiboken2 as a constant of the class X and not as a define.
The generated wrapper tries to do that:

int cppArg0 = X::defaultvalue; // gives compilation error, as defaultvalue will be changed for a 1

1 Like

Today, I’ve succeed more.or.less to use shiboken2, and I’ve even get a build of Natron with Qt5.
But … it doesn’t run : qt5 is not able to find its xcb plugin.
I need to rebuild qt5 in static mode to see if it improves… wait&see

2 Likes

Ok, good progress since yesterday.
Finally I win the fight with shiboken2. Now Natron UI opens, but got a crash just after answered
the box here:

[EDIT]
just found how to solve the xcb loading error.
But next fail is bad:

X Error of failed request: GLXBadContext
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 5 (X_GLXMakeCurrent)
Serial number of failed request: 4870
Current serial number in output stream: 4870

[EDIT2]
my gl context is destroyed and no context is created when a gl call is done. this causes the crash.
I don’t know yet why the gl context is not keep.
But globally the build sound good.

[EDIT3]
By forcing the GL context to never die, I’m able to play with Natron/Qt5 now :partying_face:

7 Likes

Awesome

<geek_joke>
Awesome? No, it’s the i3
</geek_joke>

https://awesomewm.org/
https://i3wm.org/

1 Like

Unstable Software, Libraries,etc is different perspective. I’m excited only because someone has started updating QT.

We had Natron running with Qt5 a few years ago already, but it was during the first few versions of Qt5 that were very unstable.

DId you already build and successfully run a Qt4-based build? You will need that anyway, even if it’s just for debugging purposes: whenever you encounter an issue, you want to know if it is present when using Qt4

I don’t see the point in having a video.
There are two scripts in the sources:

  • build-Linux-SDK.sh builds all the necessary dependencies
  • launchBuildMain.sh launches a build and packages it with an installer

If you want to develop on Natron, you only need the SDK, and you need to set a few environment variables before launching natron

@devernay yes, I’ve also an «annoying» qt4 build :slight_smile:

For sure, it’s a early WIP. Tons of tests and debug needed.

1 Like