using ktexteditor as a base for a disassembly viewer

Milian Wolff mail at milianw.de
Fri Dec 11 19:19:59 GMT 2020


On Freitag, 11. Dezember 2020 16:52:25 CET Sven Brauch wrote:
> Hi,
> 
> > PS: How would one even use KSyntaxHighlighting for rendering into a
> > QAbstractItemView? That also sounds somewhat nasty hmmm
> 
> That doesn't sound too complicated, or maybe I'm mistaken? For one of my
> applications, I needed HTML rendering once, which I implemented by creating
> a delegate holding a QTextDocument. The delegate just sets the text on the
> document and then draws its contents. The same should work when you set a
> highlighter. Like this (sorry, not the cleanest code, it's already a few
> years old): http://pastie.org/p/6yTw8HZl47KcgvrjSBaDG8

Yes, that's obviously an easy approach to take, and for the amount of data I'm 
expecting should probably work out fine. But note that this approach requires 
a re-layouting for every paint. A better approach would store the layout (i.e. 
the text document) per item somehow. Maybe I can just put that into the model 
itself, next to the highlighting...

Anyhow, probably premature optimization, and a KISS approach should work out 
fine for now.

> Otherwise, I'm not sure either. I personally think it will be easier if you
> just use a QTableView, unless you need column-wise text selection. I think
> you could hook everything you need into KTextEditor as well (by e.g.
> setting custom context menus depending on the column that was clicked etc)
> but it will require more lines of hacks than you would otherwise need to
> re-create the needed functionality yourself ;) Some applications use the
> text editor for a lot of stuff, maybe that can serve you as inspiration --
> e.g. sublime text comes to mind, which presents its search results (and
> probably other things) as an interactive text document.

Right, that could work. But it would let the disassembly view stand out a lot 
from the other hotspot views.

Thank you, unless someone else chimes in with an awesome idea, I really think 
that we'll have to try the KSyntaxHighlighter + custom delegate approach.

Cheers

> On 12/11/20 3:46 PM, Milian Wolff wrote:
> > Hey all,
> > 
> > I'm wondering what to use for hotspot to show a disassembly view.
> > Basically
> > this view consists of multiple columns:
> > 
> > - address
> > - instructions
> > - costs (cycles, instructions, branch misses, whatever...)
> > 
> > Initially I thought: Let's use a read-only ktexteditor part for this, as
> > it
> > will get us highlighting and copy'n'paste features for free. But we'd have
> > to put the costs into ktexteditor annotations then, I guess?
> > 
> > So I'm not so sure whether that's a good fit after all: While we get some
> > features for free, we lose others, such as reordering of columns and
> > selection of more.
> > 
> > What would you use to build something like this:
> > https://docs.wasmtime.dev/assets/perf-annotate-fib.png
> > 
> > Ideally, we would even eventually get the ability to show the source code
> > too, like here:
> > https://chrisdietri.ch/img/perf-report-annotate2.png
> > 
> > But I have to say that instead of the mixed view above, I much prefer
> > godbolt's view: https://danlarkorg.files.wordpress.com/
> > 2020/10/2020-10-04-223128_947x626_scrot.png?w=947
> > 
> > So, any input and suggestions would be welcome on how to tackle this.


-- 
Milian Wolff
mail at milianw.de
http://milianw.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kwrite-devel/attachments/20201211/ada5c9a6/attachment.sig>


More information about the KWrite-Devel mailing list