[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    Re: Interacting with KatePart from code
From:       Dominik Haumann <dhaumann () kde ! org>
Date:       2013-06-02 10:17:02
Message-ID: 1524513.fKEqUn080u () eriador
[Download RAW message or body]

On Wednesday, 29. May 2013 21:38:03 Adrián Chaves Fernández wrote:
> Hi,
> 
> I want to start an application with a text editor that provides a specific
> syntax highlighting, as the application is only going to support a specific
> type of files (MediaWiki). Then I plan to build some features
> (auto-complete, etc.) on top of it.
> 
> Not to reinvent the wheel, I wanted to reuse Kate's text edition widget.
> I've actually been working on improving the MediaWiki syntax highlighting
> support in Kate, so reusing that work for my app would be ideal.
> 
> So I found myself copying and pasting the code in
> http://techbase.kde.org/Development/Tutorials/Using_KParts

It's correct that the KTextEditor interfaces implement KParts.
There more straightforward way to get an editor component is to to follow
http://api.kde.org/4.10-api/kdelibs-apidocs/interfaces/ktexteditor/html/kte_howto.html
 As you can see, creating an editor is simply done by:

 KTextEditor::Editor *editor = KTextEditor::EditorChooser::editor();
 // error handling omitted
 m_document = editor->createDocument(0);
 m_view = m_document->createView(this);
 // hook this view into the gui somewhere

 // now XML gui stuff:
 setXMLFile("mainwindowui.rc");
 guiFactory()->addClient(m_view);

setXMLFile sets your gui.rc file. This is where you can control which actions
of Kate appear in the gui, iirc. If in doubt, you can also look at the Kate
application (kate/app/*). There we also solely use the interfaces to get the
editor component instance.

> Now I have a working KatePart. But I have no idea whatsoever about
> interacting with it from code (such as getting an instance of
> KateDocument). Any recommendation that puts me in the right direction to
> set the KatePart syntax highlighting from code?

One way of setting the syntax highlighting is:
#include <commandinterface.h>

KTextEditor::CommandInterface *iface = qobject_cast<KTextEditor::CommandInterface*>( \
editor ); if( iface ) {
  KTextEditor::Command * setHl = iface->queryCommand("set-highlight");
  if (setHl) {
    QString error;
    setHl->exec(view, "set-highlight MediaWiki", error);
  }
}

You can get a list of commands by switching into the command line with F7 in
Kate/Kwrte/KDevelop/Kile, ... Just start typing set-

> Also, I want to manually define the context-menu items and any other actions
> in the interface, so I'm not calling createGUI(m_part). Most KatePart

Yes you can remove actions, see above with the XML file.

> actions I don't want to provide, so is KatePart the right choice for me
> nonetheless? Or is there another way (without kparts) of reusing Kate's
> text edition widget that fits my use case better?

You can set the context menu with View::setContextMenu:
http://api.kde.org/4.10-api/kdelibs-apidocs/interfaces/ktexteditor/html/classKTextEditor_1_1View.html#aac67f3d61e2fcec8369fe31012f27fb0


You can also ask on kwrite-devel@kde.org for further help.

Greetings
Dominik

> > Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic