[Kde-bindings] document extension interfaces missing for KTextEditor::Document in korundum4

Richard Dale rdale at foton.es
Tue Aug 5 09:17:49 UTC 2008


On Tuesday 05 August 2008 08:40:58 Stefano Crocco wrote:
> Maybe this is a known issue, but I decided to report about it anyway, in
> case it wasn't. It seems that korundum4 doesn't include bindings for the
> document extension interfaces listed here:
> http://api.kde.org/4.x-api/kdelibs-apidocs/interfaces/ktexteditor/html/grou
>p__kte__group__doc__extensions.html
>
> This is a sample program:
>
> require 'korundum4'
> require 'ktexteditor'
>
> class AnnotationModel < KTextEditor::AnnotationModel
>
>   def data line, role
>     Qt::Variant.new
>   end
>
> end
>
> data = KDE::AboutData.new "kruby", "", KDE::ki18n("KRuby"), "0.0.1"
> KDE::CmdLineArgs.init [], data
>
> app = KDE::Application.new
> doc = KTextEditor::EditorChooser.editor('katepart').create_document( nil)
> model = AnnotationModel.new
> doc.setAnnotationModel model
>
> Running it, I get:
>
> prova.rb:18:in `method_missing': undefined method `setAnnotationModel' for
> #<KTextEditor::Document:0xb58b2f80 objectName=""> (NoMethodError) from
> prova.rb:18
>
> Setting Qt.debug_level to Qt::DebugLevel::High before the call to
> setAnnotationModel, I obtain the following list of methods:
>
> classname    == KTextEditor::Document
>
> :: method == setAnnotationModel
>
> -> methodIds == []
> candidate list:
> Possible prototypes:
> 	KTextEditor::Document* KTextEditor::Document::Document(QObject*)
> 	bool KTextEditor::Document::setEncoding(const QString&)
> 	QString KTextEditor::Document::modeSection(int) const
> 	void KTextEditor::Document::setSuppressOpeningErrorDialogs(bool)
> 	const QString& KTextEditor::Document::encoding() const
> 	void KTextEditor::Document::setOpeningError(bool)
> 	QStringList KTextEditor::Document::textLines(const KTextEditor::Range&)
> const bool KTextEditor::Document::insertText(const KTextEditor::Cursor&,
> const QString&, bool) bool KTextEditor::Document::setText(const
> QStringList&)
> 	bool KTextEditor::Document::replaceText(const KTextEditor::Range&, const
> QString&) void
> KTextEditor::Document::highlightingModeChanged(KTextEditor::Document*) void
> KTextEditor::Document::documentNameChanged(KTextEditor::Document*) bool
> KTextEditor::Document::setMode(const QString&)
> 	KTextEditor::Cursor KTextEditor::Document::documentEnd() const
> 	int KTextEditor::Document::qt_metacall(QMetaObject::Call, int, void**)
> 	void KTextEditor::Document::textChanged(KTextEditor::Document*, const
> KTextEditor::Range&, const KTextEditor::Range&) QString
> KTextEditor::Document::line(int) const
> 	bool KTextEditor::Document::startEditing()
> 	bool KTextEditor::Document::insertText(const KTextEditor::Cursor&, const
> QString&) QString KTextEditor::Document::highlightingModeSection(int) const
> bool KTextEditor::Document::documentSaveAs()
> 	int KTextEditor::Document::totalCharacters() const
> 	const QString& KTextEditor::Document::documentName() const
> 	void KTextEditor::Document::modifiedChanged(KTextEditor::Document*)
> 	KTextEditor::Editor* KTextEditor::Document::editor()
> 	bool KTextEditor::Document::clear()
> 	bool KTextEditor::Document::replaceText(const KTextEditor::Range&, const
> QStringList&, bool) void KTextEditor::Document::~Document()
> 	KTextEditor::Range KTextEditor::Document::documentRange() const
> 	bool KTextEditor::Document::removeLine(int)
> 	bool KTextEditor::Document::setHighlightingMode(const QString&)
> 	QString KTextEditor::Document::text(const KTextEditor::Range&, bool) const
> 	QString KTextEditor::Document::openingErrorMessage() const
> 	bool KTextEditor::Document::insertLine(int, const QString&)
> 	KTextEditor::View* KTextEditor::Document::activeView() const
> 	int KTextEditor::Document::lines() const
> 	bool KTextEditor::Document::replaceText(const KTextEditor::Range&, const
> QStringList&) void
> KTextEditor::Document::aboutToReload(KTextEditor::Document*) QString
> KTextEditor::Document::text() const
> 	void KTextEditor::Document::textInserted(KTextEditor::Document*, const
> KTextEditor::Range&) bool KTextEditor::Document::removeText(const
> KTextEditor::Range&, bool) bool KTextEditor::Document::replaceText(const
> KTextEditor::Range&, const QString&, bool) QString
> KTextEditor::Document::highlightingMode() const
> 	void KTextEditor::Document::textChanged(KTextEditor::Document*)
> 	QStringList KTextEditor::Document::modes() const
> 	void KTextEditor::Document::setOpeningErrorMessage(const QString&)
> 	void KTextEditor::Document::aboutToClose(KTextEditor::Document*)
> 	bool KTextEditor::Document::setText(const QString&)
> 	const QList<KTextEditor::View*>& KTextEditor::Document::views() const
> 	void KTextEditor::Document::textRemoved(KTextEditor::Document*, const
> KTextEditor::Range&) bool KTextEditor::Document::cursorInText(const
> KTextEditor::Cursor&) bool KTextEditor::Document::documentSave()
> 	bool KTextEditor::Document::insertLines(int, const QStringList&)
> 	bool KTextEditor::Document::isEmpty() const
> 	QString KTextEditor::Document::mode() const
> 	bool KTextEditor::Document::insertText(const KTextEditor::Cursor&, const
> QStringList&) QStringList KTextEditor::Document::textLines(const
> KTextEditor::Range&, bool) const bool
> KTextEditor::Document::documentReload()
> 	const QMetaObject* KTextEditor::Document::metaObject() const
> 	QString KTextEditor::Document::text(const KTextEditor::Range&) const
> 	int KTextEditor::Document::lineLength(int) const
> 	bool KTextEditor::Document::endEditing()
> 	void KTextEditor::Document::documentUrlChanged(KTextEditor::Document*)
> 	KTextEditor::View* KTextEditor::Document::createView(QWidget*)
> 	void KTextEditor::Document::modeChanged(KTextEditor::Document*)
> 	KTextEditor::Document* KTextEditor::Document::Document()
> 	bool KTextEditor::Document::openingError() const
> 	bool KTextEditor::Document::insertText(const KTextEditor::Cursor&, const
> QStringList&, bool) QString KTextEditor::Document::mimeType()
> 	QStringList KTextEditor::Document::highlightingModes() const
> 	void KTextEditor::Document::viewCreated(KTextEditor::Document*,
> KTextEditor::View*) bool KTextEditor::Document::removeText(const
> KTextEditor::Range&) QChar KTextEditor::Document::character(const
> KTextEditor::Cursor&) const bool
> KTextEditor::Document::suppressOpeningErrorDialogs() const
> 	KTextEditor::Cursor KTextEditor::Document::endOfLine(int) const
>
> This list doesn't contain setAnnotationModel, nor any other method from the
> document extension interfaces. Aren't they implemented, or am I missing
> something?
The KTextEditor interfaces are incomplete in that you have to know which 
classes you can cast to other classes via qobject_cast in C++. It is actually 
implementation specific to the kate part that you can cast a 
KTextEditor::Document to a KTextEditor::AnnotationInterface. In other 
implementations you wouldn't be able to do that. To get round the problem in 
C# we added a qobject_cast method. For Ruby there is already a QtRuby 
cast_object_to() method, and that could be enhanced to use qt_metacast() so 
it would work in the KTextEditor:: classes. Maybe it should be renamed 
qobject_cast() too.

-- Richard




More information about the Kde-bindings mailing list