[kdevqtdesigner] Help to port kdevqtdesigner in to KDevelop 5

Friedrich W. H. Kossebau kossebau at kde.org
Wed Oct 17 03:21:18 BST 2018


Hi Πέτρος,

Am Dienstag, 16. Oktober 2018, 17:36:52 CEST schrieb Πέτρος Σιλιγκούνας:
> You can see here [1] the latest changes. I am getting linker's errors about
> some functions that are unimplemented. I ported most of the code base to
> newer C++ and Qt5 but I don't know where to go from here.
> 
> Any help would be appreciated.

Nice to see you are still seeing to scratch your itch here, as started last 
December (https://frinring.wordpress.com/2017/09/08/in-pane-preview-of-qt-ui-files-with-kuiviewer-coming-up/#comment-5689 ).

Sadly myself I currently have no time to really help with any implementation, 
but let me at least point you to some building and linking initial code of a 
reimplementation of the qtdesigner integration plugin. Which I had started 
this spring, but then did not pursue more so far as it was low priority.
The code builds and links against current KDevelop, and I pushed that now in a 
repository just for you :) so you can compare:
	https://cgit.kde.org/scratch/kossebau/kdevqtdesigner.git (web UI)

The code so far only works for registering a custom document/view handler for 
Qt Designer files, and itself only can load and show files.

As you found out, the Qt Designer library still exists in Qt5, e.g. is also 
consumed in Qt Creator. Sadly though the interface has changed a bit, a 
library Qt5DesignerComponent has been split off which has no proper CMake 
Config files yet (see also comment in src/CMakeLists.txt). That needs filing a 
bug and fixing in Qt, as well as writing some workaround cmake code in the 
plugin to handle that properly (I only did a simple hack that worked for 
me(tm)).

IIRC the code of the old qtdesigner plugin had some broken support for the 
multi-view feature of kdevelop, the implementation would only work if people 
did not do split views and have multiple views on the same UI file. My 
reimplementation should have also deal with that, by having some intermediae 
QBuffer object in the document, to which the views should then sync their 
data. That syncing part is missing also yet, only sketched in my mind. :)

Another issue with the plugin is that in KDevelop/KDevPlatform switching 
between text editor view and custom editor view seems broken meanwhile and not 
possible for the same file, something has regressed in kdevplatform when it 
comes to that feature over what I think to remember from kdevelop4. So once 
the plugin is active, one currently no longer can edit UI files as plain text, 
only be the plugin.

Personally as before I would like to see more non-text editor integration in 
KDevelop, but seems current maintainers have no own needs here, so not pushing 
myself into that direction :) and concentrating on other features which seem 
more agreed about.
Though then KDevelop is plugin-based, and perhaps we can manage to fix the 
core in a way, that the qtdesigner integration plugin can be made nicely work 
and still maintained externally, without getting in the way of the maintainers 
who are not interested in it :)

BTW: this mailinglist "kdevelop" is for users of KDevelop rather, you might 
want to continue any questions on "kdevelop-devel" one instead. I already cc: 
this email there, please subscribe to that mailinglist and continue 
implementation discussion there.

In any case is this a bigger challenge you chose to master here, with lots of 
hurdles. So hopefully you have good energies :) As said, myself will not have 
time left to help you a lot, my KDevelop TODO list is full of own interest 
things. Perhaps you find some other people here who will be happy to join your 
existing effort for such a qtdesigner integration plugin?

Next to the code of the old plugin, some place which might hold some ideas for 
you is the Designer-based plugin for Qt Creator, you can nicely browse the 
code here:
	https://code.woboq.org/qt5/qt-creator/src/plugins/designer/
That might help in case more API has changed for Qt5. But this is really 
challenging stuff, given some of the Designer(Component) API used is also 
private and might break between minor Qt versions. Really no free lunch here. 
Good luck, lots to learn, you will be a Qt expert afterwards :)

Cheers
Friedrich





More information about the KDevelop mailing list