Das K Desktop Environment

A.7. kscribbleview.h

   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