rochus-keller / CrossLine

CrossLine is an outliner with sophisticated cross-link capabilities in the tradition of the well-respected Ecco Pro
GNU General Public License v2.0
155 stars 6 forks source link

Linux support #1

Closed konstruktiv closed 5 years ago

konstruktiv commented 6 years ago

Hello, thanks for releasing CrossLine!

On Ubuntu, I ran your Windows build using Wine and it worked nicely. I then followed your build instructions, but trying to compile with Qt5. It was definitely not straightforward and I had to stop after a couple of hours and many errors.

Do you plan to publish adapted build instructions or otherwise support Linux?

rochus-keller commented 6 years ago

Welcome. Migrating to Qt 5 would need some effort. The build instructions assume a static build of Qt 4. CrossLine depends on a couple of Qt private classes. For your convenience I added a Linux x86 binary which you can download from here: http://software.rochus-keller.info/CrossLine_linux_x86.tar.gz Hope it helps.

konstruktiv commented 6 years ago

Thanks for the quick build! It works, all I had to do was install libpng12.

Which Qt packages contain the private classes? That is a prerequisite for building that no longer seems to be available in the Ubuntu repos.

rochus-keller commented 6 years ago

Ok, great.

Which Qt packages contain the private classes?

Have a look at the source code; you can search for "private/" using QtCreator; it gives me the following source files which use private Qt features: Indexer.cpp, OutlineTree.cpp, TextHtmlParser.cpp/h, TextView.cpp. E.g. qtreeview_p.h, qtextdocument_p.h and a couple of headers from tools/assistant/lib/fulltextsearch are used.

konstruktiv commented 6 years ago

Ubuntu typically has *-dev packages which contain the files for building. Not sure which Qt packages I have to install to build CrossLine.

rochus-keller commented 6 years ago

There are "private-dev" packages available, e.g. qtbase5-private-dev. But don't forget that QTreeView::indexRowSizeHint has to be virtual for the outliner to work; it is mentioned in the preconditions section; if you do that change the Qt Widget module has to be re-built.