diff options
Diffstat (limited to 'chalk/plugins/viewplugins/screenshot/ksnapshot.h')
-rw-r--r-- | chalk/plugins/viewplugins/screenshot/ksnapshot.h | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/chalk/plugins/viewplugins/screenshot/ksnapshot.h b/chalk/plugins/viewplugins/screenshot/ksnapshot.h new file mode 100644 index 00000000..030cad12 --- /dev/null +++ b/chalk/plugins/viewplugins/screenshot/ksnapshot.h @@ -0,0 +1,137 @@ +// -*- c++ -*- +/* + * (c) Richard J. Moore 1997-2002 + * (c) Matthias Ettrich 2000 + * (c) Aaron J. Seigo 2002 + * (c) Nadeem Hasan 2003 + * + * 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 KSNAPSHOT_H +#define KSNAPSHOT_H + +#include <tqlabel.h> +#include <tqpixmap.h> +#include <tqtimer.h> + +#include <dcopclient.h> +#include <kglobalsettings.h> +#include <kdialogbase.h> +#include <kurl.h> + +class RegionGrabber; +class KSnapshotWidget; + +class KSnapshotThumb : public TQLabel +{ + Q_OBJECT + TQ_OBJECT + +public: + KSnapshotThumb(TQWidget *tqparent, const char *name = 0) + : TQLabel(tqparent, name) + { + tqsetAlignment(AlignHCenter | AlignVCenter); + } + virtual ~KSnapshotThumb() {} + +signals: + void startDrag(); + +protected: + void mousePressEvent(TQMouseEvent * e) + { + mClickPt = e->pos(); + } + + void mouseMoveEvent(TQMouseEvent * e) + { + if (mClickPt != TQPoint(0, 0) && + (e->pos() - mClickPt).manhattanLength() > KGlobalSettings::dndEventDelay()) + { + mClickPt = TQPoint(0, 0); + emit startDrag(); + } + } + + void mouseReleaseEvent(TQMouseEvent * /*e*/) + { + mClickPt = TQPoint(0, 0); + } + + TQPoint mClickPt; +}; + +class KSnapshot : public KDialogBase +{ + typedef KDialogBase super; + Q_OBJECT + TQ_OBJECT + +public: + KSnapshot(TQWidget *tqparent= 0, const char *name= 0); + ~KSnapshot(); + + enum CaptureMode { FullScreen=0, WindowUnderCursor=1, Region=2 }; + + bool save( const TQString &filename ); + bool save( const KURL& url ); + + TQString url() const { return filename.url(); } + +signals: + void screenGrabbed(); + +protected slots: + void slotGrab(); + void slotCopy(); + void slotPrint(); + void slotMovePointer( int x, int y ); + + void setTime(int newTime); + void setURL(const TQString &newURL); + void setGrabMode( int m ); + void exit(); + + void slotOk(); + + +protected: + void reject() { close(); } + bool eventFilter( TQObject*, TQEvent* ); + +private slots: + void grabTimerDone(); + void slotDragSnapshot(); + void slotRegionGrabbed( const TQPixmap & ); + +private: + void updatePreview(); + void performGrab(); + void autoincFilename(); + + TQPixmap snapshot; + TQTimer grabTimer; + TQWidget* grabber; + KURL filename; + KSnapshotWidget *mainWidget; + RegionGrabber *rgnGrab; + bool modified; + bool haveXShape; +}; + +#endif // KSNAPSHOT_H + |