Subversion Repositories Scribus

Rev

Rev 24148 | Rev 24611 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/

#ifndef NODEPALETTE_H
#define NODEPALETTE_H

#include <QToolTip>
#include <QCheckBox>
#include <QLabel>
#include <QPushButton>
#include <QSpinBox>
#include <QToolButton>
#include <QGroupBox>
#include <QRadioButton>
#include <QGridLayout>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QCloseEvent>

class QEvent;

#include "scribusapi.h"
#include "fpointarray.h"
#include "scrpalettebase.h"
#include "scrspinbox.h"

class ScribusDoc;
class ScribusView;
class PageItem;

class SCRIBUS_API NodePalette : public ScrPaletteBase
{
        Q_OBJECT

public:
        NodePalette( QWidget* parent);
        ~NodePalette() {};

        void setDefaults(PageItem* currItem);

        QToolButton* MoveNode;
        QToolButton* MoveControl;
        QToolButton* AddNode;
        QToolButton* DeleteNode;
        QToolButton* AsymMove;
        QToolButton* SymMove;
        QToolButton* ResNode;
        QToolButton* Res1Node;
        QToolButton* PolySplit;
        QToolButton* BezierClose;
        QToolButton* PolyMirrorH;
        QToolButton* PolyMirrorV;
        QToolButton* PolyShearL;
        QToolButton* PolyShearR;
        QToolButton* PolyShearU;
        QToolButton* PolyShearD;
        QToolButton* RotateCCW;
        QToolButton* RotateCW;
        QToolButton* Expand;
        QToolButton* Shrink;
        QToolButton* Enlarge;
        QToolButton* Reduce;
        QCheckBox* PreviewMode;
        QGroupBox* AbsMode;
        QRadioButton* absToCanvas;
        QRadioButton* absToPage;
        QCheckBox* EditCont;
        QLabel* TextLabel1;
        ScrSpinBox* YSpin;
        QLabel* TextLabel2;
        ScrSpinBox* XSpin;
        QSpinBox *RotVal;
        QSpinBox *scalePercentage;
        ScrSpinBox *scaleDistance;
        QPushButton* ResetCont;
        QPushButton* ResetContClip;
        QPushButton* ResetShape2Clip;
        QPushButton* editEditButton;
        QPushButton* cancelEditButton;
        QPushButton* resetDefaultButton;
        void setDoc(ScribusDoc *dc, ScribusView *vi);
        ScribusDoc* currentDocument() const;

private slots:
        void MoveK();
        void AddN();
        void DelN();
        void MovePoint();
        void SetSym();
        void SetAsym();
        void ResetControl();
        void Reset1Control();
        void ResetContour();
        void ResetContourToImageClip();
        void ResetShapeToImageClip();
        void CloseBezier();
        void SplitPoly();
        void MirrorH();
        void MirrorV();
        void doRotCCW();
        void doRotCW();
        void doShrink();
        void doExpand();
        void doReduce();
        void doEnlarge();
        void ShearR();
        void ShearL();
        void ShearU();
        void ShearD();
        void ToggleAbsMode();
        void ToggleConMode();
        void TogglePreview();

public slots:
        void MoveN();
        void SetXY(double x, double y);
        void HaveNode(bool have, bool mov);
        void IsOpen();
        void PolyStatus(int typ, uint size);
        void iconSetChange();
        void languageChange();
        void unitChange();
        void EndEdit(); // allow remote close
        void CancelEdit();
        void ResetToEditDefaults();

protected slots:
        void reject() override;

protected:
        void connectSignals();
        void disconnectSignals();

        void changeEvent(QEvent *e) override;
        void closeEvent(QCloseEvent *) override;

        QVBoxLayout *vboxLayout { nullptr };
        QVBoxLayout *vboxLayout1 { nullptr };
        QHBoxLayout *hboxLayout { nullptr };
        QGridLayout *gridLayout { nullptr };
        QGridLayout *gridLayout2 { nullptr };

        ScribusDoc *m_doc { nullptr };
        ScribusView *m_view { nullptr };
       
        double unitRatio;
        double xPos;
        double yPos;
        FPointArray itemPath;
        FPointArray itemContourPath;
       
signals:
        void DocChanged();
        void paletteClosed();
};

#endif // NODEPALETTE_H