KShare/src/cropeditor/cropscene.hpp

90 lines
3.0 KiB
C++
Raw Normal View History

2017-04-23 15:05:48 +02:00
#ifndef CROPSCENE_HPP
#define CROPSCENE_HPP
#include "../screenoverlay.hpp"
2017-05-05 23:59:39 +02:00
#include <QFont>
2017-04-23 15:05:48 +02:00
#include <QGraphicsScene>
2017-04-29 12:08:02 +02:00
#include <QGraphicsSceneContextMenuEvent>
2017-04-23 15:05:48 +02:00
#include <QGraphicsSceneMouseEvent>
#include <QKeyEvent>
2017-05-02 19:49:33 +02:00
#include <QMenu>
#include <QMenuBar>
#include <cropeditor/selectionrectangle.hpp>
2017-05-02 19:49:33 +02:00
#include <functional>
2017-09-06 19:16:31 +02:00
#include <screenoverlayview.hpp>
#include <utils.hpp>
class CropScene;
#include <cropeditor/drawing/drawitem.hpp>
class CropScene : public ScreenOverlay {
Q_OBJECT
2017-06-14 23:34:58 +02:00
public:
CropScene(QObject *parent, QPixmap pixmap);
~CropScene();
QPen &pen();
QBrush &brush();
QFont &font();
void setDrawingSelection(QString name, std::function<DrawItem *()> drawAction);
QGraphicsPolygonItem *polyItm() {
return polyItem;
}
QGraphicsRectItem *selRect() {
return rect;
}
2017-07-12 00:59:38 +02:00
QGraphicsItem *whichItem(QPointF scenePos);
void hide();
void show();
void setVisible(bool visible);
2017-06-14 23:34:58 +02:00
public slots:
void fontAsk();
2017-06-14 23:34:58 +02:00
signals:
void closedWithRect(QRect rect);
2017-06-14 23:34:58 +02:00
protected:
void mouseMoved(QGraphicsSceneMouseEvent *e, QPointF cursorPos, QPointF delta) override;
void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override;
void mousePressEvent(QGraphicsSceneMouseEvent *e) override;
void keyReleaseEvent(QKeyEvent *e) override;
QString generateHint() override;
private slots:
void done(bool notEsc = true);
2017-06-14 23:34:58 +02:00
private:
2017-09-08 23:47:56 +02:00
void updatePoly();
void addDrawingAction(QMenuBar *menu, QString name, QString icon, std::function<DrawItem *()> item);
std::function<DrawItem *()> drawingSelectionMaker;
QFlags<Qt::MouseButton> prevButtons;
2017-09-08 23:47:56 +02:00
QGraphicsRectItem *rect = nullptr;
bool drawingRect = true;
QPointF initPos;
QPen _pen;
QBrush _brush;
QFont _font;
QGraphicsPolygonItem *polyItem = nullptr;
DrawItem *drawingSelection = nullptr;
QMenuBar *menu = nullptr;
QGraphicsProxyWidget *proxyMenu = nullptr;
QString drawingName = "None";
QAction *display;
2017-07-29 23:58:09 +02:00
QGraphicsPixmapItem *hint
= new QGraphicsPixmapItem(utils::renderText(tr( //
"Press F1 to toggle this hint\n"
"\tHold Shift to slow the cursor down\n"
"\tCtrl+Drag a thing to move it around\n"
"\tAlt+Click a drawing to remove it\n"
"\tPress Return/Enter to finish\n"
"\tPress ESC to cancel\n"
"\tUse the menu bar to draw\n"
"\tNOTE: You must select 'Crop' before closing the editor\n"
"\tIf you do not it will not close."),
5,
QColor(0, 0, 0, 125),
Qt::white));
2017-04-23 15:05:48 +02:00
};
#endif // CROPSCENE_HPP