You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kbarcode/kbarcode/mycanvasview.h

176 lines
4.5 KiB

/***************************************************************************
mycanvasview.h - description
-------------------
begin : Die Apr 23 2002
copyright : (C) 2002 by Dominik Seichter
email : domseichter@web.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 MYCANVASVIEW_H
#define MYCANVASVIEW_H
#include <qcanvas.h>
#include <qvaluelist.h>
#include "documentitem.h"
class TCanvasItem;
typedef QValueList<TCanvasItem*> TCanvasItemList;
class QRect;
class QPainter;
class MyCanvas : public QCanvas {
Q_OBJECT
public:
MyCanvas( QObject* parent, const char* name = 0 );
~MyCanvas();
void setRect( QRect r ) {
m_rect = r;
}
QRect rect() const {
return m_rect;
}
void setGrid( bool enabled ) {
m_grid = enabled;
}
bool grid() const { return m_grid; }
protected:
void drawBackground( QPainter & painter, const QRect & clip );
private:
QRect m_rect;
bool m_grid;
};
class Definition;
class QColor;
class QLabel;
class QPoint;
class KCommandHistory;
class KMacroCommand;
class KRuler;
class KStatusBar;
class MyCanvasView : public QCanvasView
{
Q_OBJECT
enum edges {
TopLeft,
TopMiddle,
TopRight,
RightMiddle,
LeftMiddle,
BottomLeft,
BottomMiddle,
BottomRight,
Inside,
Outside,
Barcode
};
public:
MyCanvasView( Definition* d, MyCanvas *c, QWidget* parent=0, const char* name=0, WFlags f=0);
~MyCanvasView();
/** return a list of all DocumentItems on the canvas
*/
DocumentItemList getAllItems();
TCanvasItemList getSelected();
TCanvasItem* getActive();
void setActive( QCanvasItem* item = 0, bool control = false );
void setCurrent( QCanvasItem* item );
void setHistory( KCommandHistory* hist ) {
history = hist;
}
QPoint getTranslation() const {
return translation;
}
void setDefinition( Definition* d );
void setPosLabel( KStatusBar* s, int id ) {
mouseid = id;
statusbar = s;
}
static int getLowestZ( QCanvasItemList list );
static int getHighestZ( QCanvasItemList list );
void snapPoint(QPoint* point, TCanvasItem* item) ;
public slots:
void selectAll();
void deSelectAll();
void deleteCurrent();
void updateGUI() {
canvas()->update();
repaintContents();
}
protected:
void contentsMousePressEvent(QMouseEvent*);
void contentsMouseMoveEvent(QMouseEvent*);
void contentsMouseReleaseEvent(QMouseEvent *);
void contentsMouseDoubleClickEvent(QMouseEvent*);
void resizeEvent( QResizeEvent * r );
signals:
void selectionChanged();
void movedSomething();
void doubleClickedItem( TCanvasItem* );
void showContextMenu( QPoint );
private:
void setSelected( QCanvasItem* item = 0, bool control = false );
KMacroCommand* getMoveCommand();
Definition* def;
KRuler* rulerv;
KRuler* rulerh;
KCommandHistory* history;
KMacroCommand* m_commov;
MyCanvas* canv;
int mouseid;
KStatusBar* statusbar;
QPoint moving_start;
QPoint translation;
QRect old;
bool isInside( QPoint p, QCanvasItem* item );
int isEdge( QPoint p, QCanvasItem* item );
void reposition();
void updateRuler();
int updateCursor( QPoint pos, bool pressed = false );
int m_mode;
QPoint delta_pt ;
};
#endif