1 /*************************************************************************** 2 kscribbledoc.h - description 3 ------------------- 4 begin : Mon Jan 31 11:05:05 CET 2000 5 copyright : (C) 2000 by Ralf Nolden 6 email : Ralf.Nolden@post.rwth-aachen.de 7 ***************************************************************************/ 8 9 /*************************************************************************** 10 * * 11 * This program is free software; you can redistribute it and/or modify * 12 * it under the terms of the GNU General Public License as published by * 13 * the Free Software Foundation; either version 2 of the License, or * 14 * (at your option) any later version. * 15 * * 16 ***************************************************************************/ 17 18 #ifndef KSCRIBBLEDOC_H 19 #define KSCRIBBLEDOC_H 20 21 #ifdef HAVE_CONFIG_H 22 #include <config.h> 23 #endif 24 25 // include files for QT 26 #include <qobject.h> 27 #include <qstring.h> 28 #include <qlist.h> 29 30 #include <qsize.h> 31 #include <qpen.h> 32 #include <qpoint.h> 33 //#include <qpixmap.h> 34 #include <qpointarray.h> 35 36 #include <kpixmap.h> 37 38 39 // forward declaration of the KScribble classes 40 class KScribbleView; 41 42 /** KScribbleDoc provides a document object for a document-view model. 43 * 44 * The KScribbleDoc class provides a document object that can be used in conjunction with the classes 45 * KScribbleApp and KScribbleView to create a document-view model for MDI (Multiple Document Interface) 46 * KDE 2 applications based on KApplication and KTMainWindow as main classes and QWorkspace as MDI manager widget. 47 * Thereby, the document object is created by the KScribbleApp instance (and kept in a document list) and contains 48 * the document structure with the according methods for manipulating the document 49 * data by KScribbleView objects. Also, KScribbleDoc contains the methods for serialization of the document data 50 * from and to files. 51 * @author Source Framework Automatically Generated by KDevelop, (c) The KDevelop Team. 52 * @version KDevelop version 1.1 code generation 53 */ 54 class KScribbleDoc : public QObject 55 { 56 Q_OBJECT 57 58 friend KScribbleView; 59 60 public: 61 /** Constructor for the fileclass of the application */ 62 KScribbleDoc(); 63 /** Destructor for the fileclass of the application */ 64 ~KScribbleDoc(); 65 66 /** adds a view to the document which represents the document contents. Usually this is your main view. */ 67 void addView(KScribbleView *view); 68 /** removes a view from the list of currently connected views */ 69 void removeView(KScribbleView *view); 70 /** gets called if a view is removed or added */ 71 void changedViewList(); 72 /** returns the first view instance */ 73 KScribbleView* firstView(){ return pViewList->first(); }; 74 /** returns true, if the requested view is the last view of the document */ 75 bool isLastView(); 76 /** This method gets called when the user is about to close a frame window. It checks, if more than one view 77 * is connected to the document (then the frame can be closed), if pFrame is the last view and the document is 78 * modified, the user gets asked if he wants to save the document. 79 */ 80 bool canCloseFrame(KScribbleView* pFrame); 81 /** sets the modified flag for the document after a modifying action on the view connected to the document.*/ 82 void setModified(bool _m=true){ modified=_m; }; 83 /** returns if the document is modified or not. Use this to determine if your document needs 84 * saving by the user on closing. 85 */ 86 bool isModified(){ return modified; }; 87 /** deletes the document's contents */ 88 void deleteContents(); 89 /** initializes the document generally */ 90 bool newDocument(); 91 /** closes the acutal document */ 92 void closeDocument(); 93 /** loads the document by filename and format and emits the updateViews() signal */ 94 bool openDocument(const QString &&;filename, const char *format=0); 95 /** saves the document under filename and format.*/ 96 bool saveDocument(const QString &&;filename, const char *format=0); 97 /** sets the path to the file connected with the document */ 98 void setPathName(const QString &&;name); 99 /** returns the pathname of the current document file*/ 100 const QString&&; pathName() const; 101 102 /** sets the filename of the document */ 103 void setTitle(const QString &&;title); 104 /** returns the title of the document */ 105 const QString&&; title() const; 106 /** get the current Pen */ 107 const QPen currentPen(){ return pen;}; 108 /** returns the pen width */ 109 const int penWidth() { return pen.width(); } 110 /** returns the pen color */ 111 const QColor penColor(){ return pen.color(); } 112 /** sets the pen width */ 113 void setPenWidth( int w ){ pen.setWidth( w ); } 114 /** sets the pen color */ 115 void setPenColor( const QColor &&;c ){ pen.setColor( c ); } 116 /** sets the pen style by a second toolbar */ 117 void setPenStyle( PenStyle s){ pen.setStyle(s);} 118 /** clears the document contents */ 119 void editClearAll(); 120 121 /** get the document size */ 122 const QSize docSize(){ return size;}; 123 /** sets the pixmap contents. Used by KScribbleApp 124 to create a new document by drop events */ 125 void setPixmap(KPixmap pix) { buffer=pix;}; 126 void resizeDocument(QSize m_size) { size=m_size; }; 127 public slots: 128 /** calls repaint() on all views connected to the document object and is called by the view by 129 * which the document has been changed. 130 * As this view normally repaints itself, it is excluded from the paintEvent. 131 */ 132 void updateAllViews(KScribbleView *sender); 133 134 protected: 135 136 QPen pen; 137 QPointArray polyline; 138 KPixmap buffer; 139 140 private: 141 /** the modified flag of the current document */ 142 bool modified; 143 QString m_title; 144 QString m_filename; 145 /** the list of the views currently connected to the document */ 146 QList<KScribbleView> *pViewList; 147 QSize size; 148 }; 149 150 #endif // KSCRIBBLEDOC_H |