Status of Memory view?

Friedrich W. H. Kossebau kossebau at kde.org
Mon Jan 16 19:20:31 UTC 2017


Hi Morten,

Am Montag, 16. Januar 2017, 22:45:25 CET schrieb Morten Volden:
> Heya
> 
> I kinda miss the memory view in kdevelop/debuggers/gdb (memviewdlg).
> 
> I am a little unsure of its current state though. Its inclusion in the
> build depends on the CMAKE variable OKTETA_FOUND.

That was surely a helpless hack, as here the Okteta plugin (which implemented 
the plugin interface) was a runtime dependency, not a build time. There 
possibly was some find_package(Okteta) and respective FindOkteta.cmake with 
KDevelop which has been removed since.

> As far as I can see that variable is never set since we are looking only
> for OktetaKastenControllers and KastenControllers in kdevelop/utils. Or
> maybe I am missing something?

While the OktetaKastenControllers CMake config file pulls indirectly in the 
Okteta core/gui config CMake files IIRC (as the API is leaked into the Kasten 
API variants), nothing should set a var named plainly OKTETA_FOUND. Anything 
else might be a mistake.

> Also it includes byteseditinterface.h which used to reside in kdelibs, but
> I cannot find it anywhere in frameworks. Has it been replaced by something
> there?

The KHexEdit interfaces from kdelibs have been dumped on the switch from 
kdelibs to KDE Frameworks, as there was only one implementation of them by the 
plugin done with the Okteta libs. And given the very simple API of the 
KHexEdit interfaces one usually was better of using the Okteta libs directly.

> Is anyone working on bringing back the memory view? (in some form or
> another).

Myself (as Okteta maintainer) not aware of.
 
> If not, I might be interested in taking on the job if someone can point me
> in the right(ish) direction.

I would (of course) recommend to make use of the basic Okteta libs here, which 
are liboktetacore and liboktetagui (with some version ids added). They follow 
roughly the pattern of QTextDocument and QTextView.
(Ignore any of Kasten libs coming with Okteta, Kasten is an additional 
(unfinished) framework for which an Okteta extension is done. That one also 
made sense with the hex editor plugin for KDevelop. But for this use-case the 
overhead might be big and also limiting).

Sadly there is no tutorial, and for some API dox the best available is looking 
at all the classes in the Okteta namespace at
https://api.kde.org/4.x-api/kdesdk-apidocs/okteta/html/namespaceOkteta.html

Minimal starting code would be something like:

CMake:
FindPackage(OktetaGui REQUIRED)
target_link_libraries(... OktetaGui)

C++:
#include <Okteta/ByteArrayColumnView>
#include <Okteta/ByteArrayModel>

Okteta::ByteArrayModel* model = new Okteta::ByteArrayModel;
Okteta::ByteArrayColumnView* widget = new Okteta::ByteArrayColumnView(parent);
widget->setByteArrayModel(model);

Perhaps one of the existing model classes is good enough, like the 
ByteArrayModel, or you would subclass your own:
https://api.kde.org/4.x-api/kdesdk-apidocs/okteta/html/
classOkteta_1_1AbstractByteArrayModel.html

Cheers
Friedrich



More information about the KDevelop-devel mailing list