1 /*************************************************************************** 2 kscribbleview.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 KSCRIBBLEVIEW_H 19 #define KSCRIBBLEVIEW_H 20 21 #ifdef HAVE_CONFIG_H 22 #include <config.h> 23 #endif 24 25 // include files for Qt 26 #include <qscrollview.h> 27 #include <kpixmap.h> 28 29 class KScribbleDoc; 30 31 /** The KScribbleView class provides the view widget for the document instance connected to it and is displayed 32 * as a MDI child window in the main view area of the KScribbleApp class instance. The KScribbleApp 33 * class also has an eventFilter() method that gets installed on every KScribbleView instance to 34 * control events of the type QEvent::Close.The document connected to the view instance keeps a list 35 * of all view that represent the document contents as there can be more than one view. Views get created in 36 * KScribbleApp::createClient() and automatically added to the list of views. 37 * The KScribbleView class inherits QWidget as a base. Another possible inheritance besides specialized 38 + widgets could be QMainWindow so that you can easily set up the main area of your view by setting another view 39 * as main widget (QMainWindow::setMainWidget() ). 40 * NOTE: The close event always has to be empty (DON`T CALL QWidget::closeEvent(e) in closeEvent()) 41 * because the installed event filter can only manage a forward implementation. If the QCloseEvent 42 * is received by the KScribbleView, the overwritten event handler has to do nothing as the eventFilter 43 * has set accept() or ignore() already. If QWidget::closeEvent() is called again, the default event 44 * handler will accept the close event and the window gets destroyed even if the installed eventFilter 45 * has set the event to be ignored. 46 * @author Source Framework Automatically Generated by KDevelop, (c) The KDevelop Team. 47 * @version KDevelop version 1.1 code generation 48 */ 49 class KScribbleView : public QScrollView 50 { 51 Q_OBJECT 52 53 friend KScribbleDoc; 54 55 public: 56 /** Constructor for the view 57 * @param pDoc your document instance that the view represents. Create a document 58 * before calling the constructor or connect an already existing document to a new MDI child widget.*/ 59 KScribbleView(KScribbleDoc* pDoc, QWidget* parent, const char *name, int wflags); 60 /** Destructor for the main view */ 61 ~KScribbleView(); 62 /** returns a pointer to the document connected to the view*/ 63 KScribbleDoc *getDocument() const; 64 /** gets called to redraw the document contents if it has been modified */ 65 void update(KScribbleView* pSender); 66 /** contains the implementation for printing functionality and gets called by KScribbleApp::slotFilePrint() */ 67 void print(QPrinter *pPrinter); 68 /** cuts out a selection */ 69 void cutSelection(); 70 /** copies a selection to the clipboard */ 71 void copySelection(); 72 /** pastes the clipboard contents to a selection that can be inserted into the picture */ 73 void pasteSelection(); 74 75 protected: 76 77 /** overwritten QWidget::closeEvent() to catch closing views. Does nothing, as the closeEvents for 78 * KScribbleView's are processed by KScribbleApp::eventFilter(), so this overwitten closeEvent is necessary 79 * and has to be empty. Don't overwrite this method ! 80 */ 81 virtual void closeEvent(QCloseEvent* ); 82 /** overwritten to interpret key events for scrollbars */ 83 virtual void keyPressEvent( QKeyEvent* ); 84 /** changed from mousePressEvent() overwriting QScrollView method */ 85 virtual void viewportMousePressEvent( QMouseEvent* ); 86 /** changed from mouseReleaseEvent() overwriting QScrollView method */ 87 virtual void viewportMouseReleaseEvent( QMouseEvent* ); 88 /** On paste actions inserts the pasted clipboard contents */ 89 virtual void viewportMouseDoubleClickEvent(QMouseEvent* e); 90 /** changed from mouseMoveEvent() overwriting QScrollView method */ 91 virtual void viewportMouseMoveEvent( QMouseEvent* ); 92 /** changed from resizeEvent() overwriting QScrollView method */ 93 // virtual void viewportResizeEvent( QResizeEvent* ); 94 /** changed from paintEvent() overwriting QScrollView method */ 95 virtual void viewportPaintEvent( QPaintEvent* ); 96 97 virtual void viewportDragEnterEvent ( QDragEnterEvent * ); 98 99 virtual void viewportDragMoveEvent ( QDragMoveEvent * ); 100 101 virtual void viewportDragLeaveEvent ( QDragLeaveEvent * ); 102 103 virtual void viewportDropEvent ( QDropEvent * ); 104 105 /** the document instance */ 106 KScribbleDoc *doc; 107 108 private: 109 KPixmap tmp; 110 QRect select; 111 QClipboard *cb; 112 enum Action{IDLE=0, DRAW, SELECT, PASTE, DRAG} action; 113 }; 114 115 #endif // KSCRIBBLEVIEW_H |