/*************************************************************************** pluginKatexmltools.cpp copyright : (C) 2001-2002 by Daniel Naber email : daniel.naber@t-online.de ***************************************************************************/ /*************************************************************************** This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or ( at your option ) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ***************************************************************************/ #ifndef _PLUGIN_KANT_XMLTOOLS_H #define _PLUGIN_KANT_XMLTOOLS_H #include "pseudo_dtd.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class PluginKateXMLTools : public Kate::Plugin, Kate::PluginViewInterface { Q_OBJECT TQ_OBJECT public: PluginKateXMLTools( TQObject* tqparent = 0, const char* name = 0, const TQStringList& = TQStringList() ); virtual ~PluginKateXMLTools(); void addView ( Kate::MainWindow *win ); void removeView( Kate::MainWindow *win ); public slots: void getDTD(); void slotInsertElement(); void slotCloseElement(); void filterInsertString( KTextEditor::CompletionEntry *ce, TQString *str ); void completionDone( KTextEditor::CompletionEntry completionEntry ); void completionAborted(); void slotFinished( KIO::Job *job ); void slotData( KIO::Job *, const TQByteArray &data ); void backspacePressed(); void emptyKeyEvent(); void keyEvent( int, int, const TQString & ); /// Connected to the document manager, to manage the dtd collection. void slotDocumentDeleted( uint n ); protected: static TQStringList sortTQStringList( TQStringList list ); //bool eventFilter( TQObject *object, TQEvent *event ); TQString insideTag( Kate::View &kv ); TQString insideAttribute( Kate::View &kv ); bool isOpeningTag( TQString tag ); bool isClosingTag( TQString tag ); bool isEmptyTag( TQString tag ); bool isQuote( TQString ch ); TQString getParentElement( Kate::View &view, bool ignoreSingleBracket ); enum Mode {none, entities, attributevalues, attributes, elements}; enum PopupMode {noPopup, tagname, attributename, attributevalue, entityname}; TQValueList stringListToCompletionEntryList( TQStringList list ); /// Assign the PseudoDTD @p dtd to the Kate::Document @p doc void assignDTD( PseudoDTD *dtd, KTextEditor::Document *doc ); /// temporary placeholder for the metaDTD file TQString m_dtdString; /// temporary placeholder for the document to assign a DTD to while the file is loaded KTextEditor::Document *m_docToAssignTo; /// URL of the last loaded meta DTD TQString m_urlString; uint m_lastLine, m_lastCol; TQStringList m_lastAllowed; int m_popupOpenCol; Mode m_mode; int m_correctPos; // code completion stuff: KTextEditor::CodeCompletionInterface* m_codeInterface; /// maps KTE::Document::docNumber -> DTD TQIntDict m_docDtds; /// maps DTD filename -> DTD TQDict m_dtds; TQPtrList m_views; void connectSlots( Kate::View *kv ); void disconnectSlots( Kate::View *kv ); Kate::DocumentManager *m_documentManager; }; class InsertElement : public KDialogBase { Q_OBJECT TQ_OBJECT public: InsertElement( TQWidget *tqparent, const char *name ); ~InsertElement(); TQString showDialog( TQStringList &completions ); private slots: void slotHistoryTextChanged( const TQString& ); }; #endif // _PLUGIN_KANT_XMLTOOLS_H // kate: space-indent on; indent-width 2; replace-tabs on; mixed-indent off;