summaryrefslogtreecommitdiffstats
path: root/part/kxmleditorpart.h
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2016-03-26 13:50:43 +0100
committerSlávek Banko <slavek.banko@axis.cz>2016-03-26 13:50:43 +0100
commitd62c8c002c51fb7c36487839eeeb4ac89f044dee (patch)
treebb4d1f5c631ab1f22a3018ba39e6a806035f80fd /part/kxmleditorpart.h
downloadkxmleditor-d62c8c002c51fb7c36487839eeeb4ac89f044dee.tar.gz
kxmleditor-d62c8c002c51fb7c36487839eeeb4ac89f044dee.zip
Initial import of kxmleditor 1.1.4
Diffstat (limited to 'part/kxmleditorpart.h')
-rw-r--r--part/kxmleditorpart.h450
1 files changed, 450 insertions, 0 deletions
diff --git a/part/kxmleditorpart.h b/part/kxmleditorpart.h
new file mode 100644
index 0000000..319c577
--- /dev/null
+++ b/part/kxmleditorpart.h
@@ -0,0 +1,450 @@
+/***************************************************************************
+ kxmleditorpart.h - description
+ -------------------
+ begin : Wed Sep 19 2001
+ copyright : (C) 2001, 2002, 2003 by The KXMLEditor Team
+ email : OleBowle@gmx.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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KXMLEDITORPART_H
+#define KXMLEDITORPART_H
+
+#include <kparts/part.h>
+#include <kparts/browserextension.h>
+
+#include <qdom.h>
+#include <qptrlist.h>
+
+#include "kxe_treeview.h"
+
+#define FILE_DIALOG_FILTER "*.xml|XML files\n*.xsl|XSL files\n*.xslt|XSLT files\n*.svg|SVG files\n*.xul|XUL files\n*.rc|Resource UI files\n*.ui|User Interface UI files\n*|All files"
+
+class QTabWidget;
+class KXE_ViewElement;
+class KXESearchDialog;
+class QTextEdit;
+class KAction;
+class KToolBarPopupAction;
+class KXmlEditorComboAction;
+class QDomNode;
+class QKeyEvent;
+class KXMLEditorPartIfaceReadOnly; // DCOP interface
+class KCommandHistory;
+class KPrinter;
+class QSplitter;
+class KXEDocument;
+
+
+/** @short This is the KPart of KXMLEditor. */
+class KXMLEditorPart : public KParts::ReadWritePart
+{
+ Q_OBJECT
+
+public:
+ /** @short Constructor
+
+ Creates the actions, the view (widgets) and changes to "begin state".
+ */
+ KXMLEditorPart( bool fReadWrite, KXEDocument* pDocument, QWidget * pParent, const char * pszName );
+
+ /** @short Destructor */
+ virtual ~KXMLEditorPart();
+
+ /** @short Changes the behaviour of this part to readonly or readwrite. */
+ virtual void setReadWrite( bool fReadWrite = true );
+
+ /** @short Returns the selected XML object's path or an empty string, if no object is selected. */
+ QString getSelectedPath() const { return m_pViewTree->getSelectedPath(); }
+
+ /** @short Copy XML node into clipboard */
+ QTextDrag * copyNode(QDomNode *);
+
+ /** @short Paste XML node from clipboard into document */
+ bool pasteNode(QDomNode *, QMimeSource *);
+
+ /** @short Drag&Drop move */
+ bool dropMoveNode(QDomElement &, QDomNode &);
+
+ /** @short Prints the document on specified printer.
+ @param pPrinter printer which will be used for printing. */
+ virtual void print(KPrinter* pPrinter);
+
+ /** @short Returns underlying document. */
+ KXEDocument* document() { return m_pDocument; }
+
+ /** @short Changes underlying document object */
+ void setDocument(KXEDocument *pDocument);
+
+public slots:
+ /**
+ * Reimplemented from @ref KParts::KReadWritePart::setModified.
+ *
+ * Alters the window caption according to the given flag and
+ * calls the base functionality.
+ */
+ virtual void setModified( bool fModified );
+
+ /** @short Updates tree view after creating new element */
+ void updateNodeCreated(const QDomNode & node);
+
+ /** @short Updates tree view after deleting new element */
+ void updateNodeDeleted(const QDomNode & node);
+
+ /** @short Updates tree view after change element properties */
+ void updateNodeChanged( const QDomElement & domElement );
+
+ /** @short Updates tree view after change char. data properties */
+ void updateNodeChanged( const QDomCharacterData & node ) ;
+
+ /** @short Updates tree view after change proc. instr. properties */
+ void updateNodeChanged( const QDomProcessingInstruction &domProcInstr );
+
+ /** @short Updates tree view after move node */
+ void updateNodeMoved( const QDomNode & node );
+
+ /**
+ * @short Reimplemented from @ref KParts::KReadWritePart::setModified.
+ */
+ virtual void setModified() { setModified(true); }
+
+ /** @short Slot connected to File->Save As action. */
+ bool slotFileSaveAs();
+
+ /** @short Inserts special proc.instruction into document. */
+ void slotActVersionEncoding();
+
+ /** @short Called on user's action response.
+ Creates <?xml-stylesheet ...?> processing instruction
+ with reference to specified stylesheet URI.
+ */
+ void slotActAttachStylesheet();
+
+ /** @short Called on user's action response. */
+ void slotActDetachStylesheet();
+
+ /** @short Called on user's action response */
+ void slotActDetachSchema();
+
+ /** @short Called on user's action response */
+ void slotActAttachSchema();
+
+ /** @short Cut the marked text/object into the clipboard */
+ void slotEditCut();
+
+ /** @short Copy the marked text/object into the clipboard */
+ void slotEditCopy();
+
+ /** @short Paste the clipboard into the document */
+ void slotEditPaste();
+
+ /** @short Displays search dialog and finds string in this tree view */
+ void slotEditFind();
+
+ /** @short Finds next occurence of string in this tree view */
+ void slotEditFindNext();
+
+ /** @short Deselects currently selected item */
+ void slotEditDeselect() { m_pViewTree->editDeselect(); }
+
+ /** @short Selects the selected item's parent item. */
+ void slotViewNodeUp() { m_pViewTree->viewNodeUp(); }
+
+ /** @short Expands the selected tree item's subtree. */
+ void slotViewExpNode() { m_pViewTree->viewExpNode(-1); }
+
+ /** @short Expands the selected tree item's subtree to the given level. */
+ void slotViewExpNode( int nLevel ) { m_pViewTree->viewExpNode(nLevel); }
+
+ /** @short Collapses the selected tree item's subtree. */
+ void slotViewColNode() { m_pViewTree->viewColNode(0); }
+
+ /** @short Collapses the selected tree item's subtree to the given level. */
+ void slotViewColNode( int nLevel ) { m_pViewTree->viewColNode(nLevel); }
+
+ /** @short Insert XML element into document */
+ void slotXmlElementInsert();
+
+ /** @short Edit XML element */
+ void slotXmlElementEdit();
+
+ /** @short Add attribute to an XML element. */
+ void slotXmlAttributesAdd();
+
+ /** @short Delete all attributes of an XML element. */
+ void slotXmlAttributesDel();
+
+ /** @short Delete an attribute of an XML element. */
+ void slotXmlAttributeDel();
+
+ /** @short Insert proc.instruction into document */
+ void slotXmlProcInstrInsert();
+
+ /** @short Edit proc.instruction */
+ void slotXmlProcInstrEdit();
+
+ /* @short Insert text into element. */
+ void slotActInsertText();
+
+ /* @short Insert CDATA section. */
+ void slotActInsertCDATA();
+
+ /* @short Insert comment to element. */
+ void slotActInsertComment();
+
+ /* @short Edit character data */
+ void slotXmlCharDataEdit();
+
+ /* @short Moves a node up (change its position with its prev. siblings position) */
+ void slotXmlMoveNodeUp();
+
+ /* @short Moves a node down (change its position with its next siblings position) */
+ void slotXmlMoveNodeDown();
+
+ /** @short toggles bookmark on the selected item */
+ void slotBookmarksToggle();
+
+ /** @short Searches for the previous bookmarked item */
+ void slotBookmarksPrev() { m_pViewTree->bookmarksPrev(); }
+
+ /** @short Searches for the next bookmarked item */
+ void slotBookmarksNext() { m_pViewTree->bookmarksNext(); }
+
+ /** @short Shows configuration dialog (@ref OptionsDialog) */
+ void slotConfigure();
+
+ void slotPathSelected( const QString & szPath );
+ void slotPathSelected();
+ void slotPathClear();
+
+ /** @short Called when a tree view items text was changed via inplace-renaming. */
+ void slotItemRenamedInplace( QListViewItem * pItem );
+
+ /** @short Called whan an attributes name was changed via inplace editing. */
+ void slotAttributeNameChangedInplace( const QDomAttr &, const QString );
+
+ /** @short Called whan an attributes value was changed via inplace editing. */
+ void slotAttributeValueChangedInplace( const QDomAttr &, const QString );
+
+ /** @short Called when File->Print or icon from the toolbar is selected. */
+ void slotActPrint();
+
+ /** @short Slot for editing node properties. */
+ void slotActProperties();
+
+ /** @short Slot for editing xml as a text in separate dialog window. */
+ void slotActEditRawXml();
+
+ /** @short Slot for removing XML nodes. */
+ void slotActDelete();
+
+ void slotTreeViewKeyPressed(QKeyEvent *e);
+
+ /** @short Slot that performs redo function. */
+ void slotActRedo();
+
+ /** @short Slot that performs undo function. */
+ void slotActUndo();
+
+protected:
+
+ void updateActions();
+
+ /** @short Opens the file @ref KParts::ReadOnlyPart::m_file. */
+ virtual bool openFile();
+
+ /** @short Saves the file @ref KParts::ReadOnlyPart::m_file. */
+ virtual bool saveFile();
+
+ /** @short Draws header for printouts (made of file name).
+ @param painter a painter to use for drawing
+ @param pageNumber number of currently drawn page counted from 0
+ @param ypos y coordinate of upper border of the header
+ @sa printPage() @sa printFooter()
+ */
+ void printHeader(QPainter* painter, int pageNumber, int ypos, int width);
+
+ /** @short Draws footer for printouts (page number).
+ @param painter a painter to use for drawing
+ @param pageNumber number of currently drawn page counted from 0
+ @param ypos y coordinate of upper border of the footer
+ @sa printHeader() @sa printFooter()
+ */
+ void printFooter(QPainter* painter,int pageNumber, int ypos, int width);
+
+ /** @short Draws page for printing purposes.
+
+ If there are more pages to print, method
+ returns true. Otherwise returns false.
+ @param painter a painter to use for srawing
+ @param pageNumber number of currently drawn page counted from 0
+ @param top y coordinate of upper edge from where page should be drawn
+ @param width,height size of the medium (e.g. paper)
+ @sa printPage() @sa printHeader()
+ */
+ bool printPage(QPainter* painter,int pageNumber, int top, int width, int height);
+
+ /** @short Used in printing function printPage(). */
+ unsigned int m_printLineNumber;
+
+ /** @short Used in printing function printPage(). */
+ QStringList m_printLines;
+
+ // the actions
+ KAction * m_pActEditFind;
+ KAction * m_pActEditFindNext;
+ KAction * m_pActEditDeselect;
+ KAction * m_pActViewNodeUp;
+ KToolBarPopupAction * m_pActViewExpNode;
+ KToolBarPopupAction * m_pActViewColNode;
+ KAction * m_pActXmlElementInsert;
+ KAction * m_pActXmlAttributesAdd;
+ KAction * m_pActXmlAttributesDel;
+ KAction * m_pActXmlAttributeDel;
+ KAction * m_pActXmlProcInstrInsert;
+ KAction * m_pActInsertText;
+ KAction * m_pActInsertCDATA;
+ KAction * m_pActInsertComment;
+ KAction * m_pActXmlMoveNodeUp;
+ KAction * m_pActXmlMoveNodeDown;
+ KAction * m_pActBookmarksToggle;
+ KAction * m_pActBookmarksPrev;
+ KAction * m_pActBookmarksNext;
+ KXmlEditorComboAction * m_pActPathCombo;
+
+ protected slots:
+ void started();
+ void completed();
+ void canceled();
+
+ /** @short Enables/disables actions and changes views */
+ void slotSelectionCleared(bool);
+
+ /** @short Enables/disables actions depending on the given XML element and changes views */
+ void slotSelectionChanged( const QDomElement & );
+
+ /** @short Enables/disables actions and changes views */
+ void slotSelectionChanged( const QDomCharacterData & );
+
+ /** @short Enables/disables actions and changes views */
+ void slotSelectionChanged( const QDomProcessingInstruction & );
+
+ /** @short Shows the requested context menu at the given position. */
+ void slotContextMenuRequested( const QString & szMenuName, const QPoint & pos );
+
+ /** @short Invoked everytime document has new content */
+ void slotDocOpened();
+
+ private:
+ /** this view displays the XML-document's tree structure */
+ KXE_TreeView * m_pViewTree;
+
+ /** the tab widget, contains: m_pViewElement, m_pViewContents */
+ QTabWidget * m_pTabWidget;
+
+ /** widget to display XML element */
+ KXE_ViewElement * m_pViewElement;
+
+ /** edit widget for contents */
+ QTextEdit * m_pViewContents;
+
+ /** widget to display a proc.instr. */
+ QTextEdit * m_pViewProcInstr;
+
+ /** the search dialog, used for find action */
+ KXESearchDialog * m_pDlgSearch;
+
+ /** DCOP object having access to XML document. It may by NULL if no DCOP inteface is provided
+ or read only privided by @ref KXMLEditorPartReadOnlyIface or full read-write @ref KXMLEditorPartIface .*/
+ KXMLEditorPartIfaceReadOnly * m_pDCOPIface;
+
+ bool m_bAlreadyModified;
+
+ /** our browser extension */
+ KParts::BrowserExtension * m_pBrowserExt;
+
+ /** @short Stores pointer to command history list, which provide undo/redo functionality */
+ KCommandHistory* m_pCmdHistory;
+
+ /** @short Action for cutting nodes to clipboard.*/
+ KAction* m_pActEditCut;
+
+ /** @short Action for copying nodes to clipboard.*/
+ KAction* m_pActEditCopy;
+
+ /** @short Action for pasting nodes from clipboard.*/
+ KAction* m_pActEditPaste;
+
+ /** Action for editing properties of currently selected node. */
+ KAction* m_pActProperties;
+
+ /** Action for editing raw XML of currently selected node. */
+ KAction* m_pActEditRawXml;
+
+ /** Action for deleting currently selected node. */
+ KAction* m_pActDelete;
+
+ /** @short Action for changing version and encoding of XM file. */
+ KAction* m_pActVersionEncoding;
+
+ /** @short Action for attaching stylehseets to xml files. */
+ KAction* m_pActAttachStylesheet;
+
+ /** @short Action for detaching stylehseets from xml files. */
+ KAction* m_pActDetachStylesheet;
+
+ /** @short Action for attaching schemas to xml files. */
+ KAction* m_pActAttachSchema;
+
+ /** @short Action for detaching schemas from xml files. */
+ KAction* m_pActDetachSchema;
+
+ /** Printer object. */
+ KPrinter *m_pPrinter;
+
+ /** spitter - main widget in the part */
+ QSplitter *pSplitter;
+
+ /** Pointer to underlying KXEDocument object */
+ KXEDocument* m_pDocument;
+
+signals:
+ // Add URL to recent file list
+ void sigAddRecentURL(const KURL &);
+};
+
+/**
+ * The browser extension for our part (@ref KXMLEditorPart).
+ */
+class KXMLEditorBrowserExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+
+ public:
+ /** @short Constructor */
+ KXMLEditorBrowserExtension( KXMLEditorPart * pParent, const char * pszName = "KXMLEditorBrowserExtension" )
+ : KParts::BrowserExtension( pParent, pszName ),
+ m_pPart(pParent)
+ { emit enableAction("print", true); }
+
+ public slots:
+ void slotEditCut() { m_pPart->slotEditCut(); }
+ void slotEditCopy() { m_pPart->slotEditCopy(); }
+ void slotEditPaste() { m_pPart->slotEditPaste(); }
+ void print() { m_pPart->slotActPrint(); }
+
+ protected:
+ /** @short Stores pointer to the part. */
+ KXMLEditorPart * m_pPart;
+};
+
+#endif
+