tahoma2d/toonz/sources/include/tools/tooloptions.h

794 lines
22 KiB
C
Raw Normal View History

2016-05-17 03:04:11 +12:00
#pragma once
2016-03-19 06:57:51 +13:00
#ifndef TOOLOPTIONS_H
#define TOOLOPTIONS_H
// TnzQt includes
#include "toonzqt/checkbox.h"
// TnzLib includes
#include "toonz/tstageobject.h"
// TnzCore includes
#include "tcommon.h"
#include "tproperty.h"
// Qt includes
#include <QFrame>
#include <QAction>
#include <QList>
#include <QToolBar>
#include <QMap>
#include <QLabel>
2018-09-11 17:35:02 +12:00
#include <QRadioButton>
2016-03-19 06:57:51 +13:00
// STD includes
#include <map>
#undef DVAPI
#undef DVVAR
#ifdef TNZTOOLS_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
//=============================================================================
// Forward declarations
class TTool;
class ToolOptionToolBar;
class TPropertyGroup;
class TPaletteHandle;
class TFrameHandle;
class TObjectHandle;
class TXsheetHandle;
class ToolHandle;
class SelectionScaleField;
class SelectionRotationField;
class SelectionMoveField;
class ToolOptionSlider;
class ToolOptionIntSlider;
class ThickChangeField;
class ToolOptionCombo;
class ToolOptionCheckbox;
class PegbarChannelField;
class ToolOptionPairSlider;
class ToolOptionControl;
class ToolOptionPopupButton;
class TXshLevelHandle;
class NoScaleField;
class PegbarCenterField;
class RGBLabel;
class MeasuredValueField;
class PaletteController;
class ClickableLabel;
2016-03-19 06:57:51 +13:00
class QLabel;
class QPushButton;
class QPropertyAnimation;
class QFrame;
class QHBoxLayout;
class QComboBox;
class QStackedWidget;
//=============================================================================
// Preprocessor definitions
#define TOOL_OPTIONS_LEFT_MARGIN 5
//=============================================================================
//***********************************************************************************************
// ToolOptionToolBar declaration
//***********************************************************************************************
class ToolOptionToolBar final : public QToolBar {
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
ToolOptionToolBar(QWidget *parent = 0);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void addSpacing(int width);
2016-03-19 06:57:51 +13:00
};
//***********************************************************************************************
// ToolOptionsBox declaration
//***********************************************************************************************
2016-06-15 18:43:10 +12:00
class ToolOptionsBox : public QFrame {
Q_OBJECT
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
QMap<std::string, ToolOptionControl *>
m_controls; //!< property name -> ToolOptionControl
QMap<std::string, QLabel *> m_labels;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QHBoxLayout *m_layout;
2016-03-19 06:57:51 +13:00
public:
2020-05-12 18:27:39 +12:00
ToolOptionsBox(QWidget *parent, bool isScrollable = true);
2016-06-15 18:43:10 +12:00
~ToolOptionsBox();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
virtual void
updateStatus(); //!< Invokes updateStatus() on all registered controls
virtual void onStageObjectChange() {}
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QHBoxLayout *hLayout() { return m_layout; }
void addControl(ToolOptionControl *control);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
ToolOptionControl *control(const std::string &controlName) const;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QLabel *addLabel(QString name);
void addLabel(std::string propName, QLabel *label);
void addSeparator();
2016-03-19 06:57:51 +13:00
};
//***********************************************************************************************
// ToolOptionControlBuilder declaration
//***********************************************************************************************
class ToolOptionControlBuilder final : public TProperty::Visitor {
2016-06-15 18:43:10 +12:00
ToolOptionsBox *m_panel;
TTool *m_tool;
TPaletteHandle *m_pltHandle;
ToolHandle *m_toolHandle;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
int m_singleValueWidgetType;
int m_enumWidgetType;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
ToolOptionControlBuilder(ToolOptionsBox *panel, TTool *tool,
TPaletteHandle *pltHandle,
ToolHandle *toolHandle = 0);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
enum SingleValueWidgetType { SLIDER = 0, FIELD };
void setSingleValueWidgetType(int type) { m_singleValueWidgetType = type; }
2016-03-19 06:57:51 +13:00
enum EnumWidgetType { COMBOBOX = 0, POPUPBUTTON, FONTCOMBOBOX };
2016-06-15 18:43:10 +12:00
void setEnumWidgetType(int type) { m_enumWidgetType = type; }
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
QHBoxLayout *hLayout() { return m_panel->hLayout(); }
QLabel *addLabel(TProperty *p);
void visit(TDoubleProperty *p);
void visit(TDoublePairProperty *p);
void visit(TIntPairProperty *p);
void visit(TIntProperty *p);
void visit(TBoolProperty *p);
void visit(TStringProperty *p);
void visit(TEnumProperty *p);
void visit(TStyleIndexProperty *p);
void visit(TPointerProperty *p);
2016-03-19 06:57:51 +13:00
};
//***********************************************************************************************
// GenericToolOptionsBox declaration
//***********************************************************************************************
2016-06-15 18:43:10 +12:00
class GenericToolOptionsBox : public ToolOptionsBox {
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
GenericToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
2020-05-15 08:10:41 +12:00
int propertyGroupIdx = 0, ToolHandle *toolHandle = 0,
bool scrollable = true);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// ArrowToolOptionsBox
//
//=============================================================================
class ArrowToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2018-03-22 12:23:25 +13:00
enum AXIS { Position = 0, Rotation, Scale, Shear, CenterPosition, AllAxis };
2016-06-15 18:43:10 +12:00
TPropertyGroup *m_pg;
bool m_splined;
TTool *m_tool;
TFrameHandle *m_frameHandle;
TObjectHandle *m_objHandle;
TXsheetHandle *m_xshHandle;
2018-03-22 12:23:25 +13:00
QWidget **m_axisOptionWidgets;
QWidget *m_pickWidget;
2016-06-15 18:43:10 +12:00
// General
ToolOptionCombo *m_chooseActiveAxisCombo;
ToolOptionCombo *m_pickCombo;
// enable to choose the target pegbar from the combobox
QComboBox *m_currentStageObjectCombo;
// Position
PegbarChannelField *m_motionPathPosField;
PegbarChannelField *m_ewPosField;
PegbarChannelField *m_nsPosField;
PegbarChannelField *m_zField;
NoScaleField *m_noScaleZField;
ClickableLabel *m_motionPathPosLabel;
ClickableLabel *m_ewPosLabel;
ClickableLabel *m_nsPosLabel;
ClickableLabel *m_zLabel;
2016-06-15 18:43:10 +12:00
ToolOptionCheckbox *m_lockEWPosCheckbox;
ToolOptionCheckbox *m_lockNSPosCheckbox;
// SO = Stacked Order
ClickableLabel *m_soLabel;
2016-06-15 18:43:10 +12:00
PegbarChannelField *m_soField;
// Rotation
ClickableLabel *m_rotationLabel;
2016-06-15 18:43:10 +12:00
PegbarChannelField *m_rotationField;
// Scale
ClickableLabel *m_globalScaleLabel;
ClickableLabel *m_scaleHLabel;
ClickableLabel *m_scaleVLabel;
2016-06-15 18:43:10 +12:00
PegbarChannelField *m_globalScaleField;
PegbarChannelField *m_scaleHField;
PegbarChannelField *m_scaleVField;
ToolOptionCheckbox *m_lockScaleHCheckbox;
ToolOptionCheckbox *m_lockScaleVCheckbox;
ToolOptionCombo *m_maintainCombo;
// Shear
ClickableLabel *m_shearHLabel;
ClickableLabel *m_shearVLabel;
2016-06-15 18:43:10 +12:00
PegbarChannelField *m_shearHField;
PegbarChannelField *m_shearVField;
ToolOptionCheckbox *m_lockShearHCheckbox;
ToolOptionCheckbox *m_lockShearVCheckbox;
// Center Position
ClickableLabel *m_ewCenterLabel;
ClickableLabel *m_nsCenterLabel;
2016-06-15 18:43:10 +12:00
PegbarCenterField *m_ewCenterField;
PegbarCenterField *m_nsCenterField;
ToolOptionCheckbox *m_lockEWCenterCheckbox;
ToolOptionCheckbox *m_lockNSCenterCheckbox;
ToolOptionCheckbox *m_globalKey;
2018-03-22 12:23:25 +13:00
// enables adjusting value by dragging on the label
void connectLabelAndField(ClickableLabel *label, MeasuredValueField *field);
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
ArrowToolOptionsBox(QWidget *parent, TTool *tool, TPropertyGroup *pg,
TFrameHandle *frameHandle, TObjectHandle *objHandle,
TXsheetHandle *xshHandle, ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
void onStageObjectChange();
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
void showEvent(QShowEvent *);
void hideEvent(QShowEvent *);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setSplined(bool on);
bool isCurrentObjectSplined() const;
2016-03-19 06:57:51 +13:00
protected slots:
2016-06-15 18:43:10 +12:00
void onFrameSwitched() { updateStatus(); }
// update the object list in combobox
void updateStageObjectComboItems();
// syncronize the current item in the combobox to the selected stage object
void syncCurrentStageObjectComboItem();
// change the current stage object when user changes it via combobox by hand
void onCurrentStageObjectComboActivated(int index);
2018-03-22 12:23:25 +13:00
void onCurrentAxisChanged(int);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// SelectionToolOptionsBox
//
//=============================================================================
2018-06-26 17:47:11 +12:00
class DraggableIconView : public QWidget {
Q_OBJECT
public:
DraggableIconView(QWidget *parent = 0) : QWidget(parent){};
protected:
// these are used for dragging on the icon to
// change the value of the field
void mousePressEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
signals:
void onMousePress(QMouseEvent *event);
void onMouseMove(QMouseEvent *event);
void onMouseRelease(QMouseEvent *event);
};
class IconViewField final : public DraggableIconView {
Q_OBJECT
public:
enum IconType {
Icon_ScalePeg = 0,
Icon_Rotation,
Icon_Position,
Icon_Thickness,
Icon_Amount
};
private:
IconType m_iconType;
protected:
QPixmap m_pm[Icon_Amount];
Q_PROPERTY(
QPixmap ScalePegPixmap READ getScalePegPixmap WRITE setScalePegPixmap);
Q_PROPERTY(
QPixmap RotationPixmap READ getRotationPixmap WRITE setRotationPixmap);
Q_PROPERTY(
QPixmap PositionPixmap READ getPositionPixmap WRITE setPositionPixmap);
Q_PROPERTY(
QPixmap ThicknessPixmap READ getThicknessPixmap WRITE setThicknessPixmap);
public:
IconViewField(QWidget *parent = 0, IconType iconType = Icon_ScalePeg);
QPixmap getScalePegPixmap() const { return m_pm[Icon_ScalePeg]; }
void setScalePegPixmap(const QPixmap &pixmap) {
m_pm[Icon_ScalePeg] = pixmap;
}
QPixmap getRotationPixmap() const { return m_pm[Icon_Rotation]; }
void setRotationPixmap(const QPixmap &pixmap) {
m_pm[Icon_Rotation] = pixmap;
}
QPixmap getPositionPixmap() const { return m_pm[Icon_Position]; }
void setPositionPixmap(const QPixmap &pixmap) {
m_pm[Icon_Position] = pixmap;
}
QPixmap getThicknessPixmap() const { return m_pm[Icon_Thickness]; }
void setThicknessPixmap(const QPixmap &pixmap) {
m_pm[Icon_Thickness] = pixmap;
}
protected:
void paintEvent(QPaintEvent *e);
};
//-----------------------------------------------------------------------------
class SelectionToolOptionsBox final : public ToolOptionsBox,
public TProperty::Listener {
2016-06-15 18:43:10 +12:00
Q_OBJECT
TTool *m_tool;
ToolOptionCheckbox *m_setSaveboxCheckbox;
bool m_isVectorSelction;
QLabel *m_scaleXLabel;
SelectionScaleField *m_scaleXField;
QLabel *m_scaleYLabel;
SelectionScaleField *m_scaleYField;
DVGui::CheckBox *m_scaleLink;
SelectionRotationField *m_rotationField;
QLabel *m_moveXLabel;
SelectionMoveField *m_moveXField;
QLabel *m_moveYLabel;
SelectionMoveField *m_moveYField;
ThickChangeField *m_thickChangeField;
ToolOptionPopupButton *m_capStyle;
ToolOptionPopupButton *m_joinStyle;
ToolOptionIntSlider *m_miterField;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
SelectionToolOptionsBox(QWidget *parent, TTool *tool,
TPaletteHandle *pltHandle, ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
void onPropertyChanged();
2016-03-19 06:57:51 +13:00
protected slots:
// addToUndo is only set to false when dragging with the mouse
// to set the value. It is set to true on mouse release.
void onScaleXValueChanged(bool addToUndo = true);
void onScaleYValueChanged(bool addToUndo = true);
2016-06-15 18:43:10 +12:00
void onSetSaveboxCheckboxChanged(bool);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// GeometricToolOptionsBox
//
//=============================================================================
class GeometricToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
int m_targetType;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QLabel *m_poligonSideLabel, *m_hardnessLabel;
ToolOptionSlider *m_hardnessField;
ToolOptionIntSlider *m_poligonSideField;
ToolOptionCombo *m_shapeField;
ToolOptionCheckbox *m_pencilMode;
ToolOptionIntSlider *m_miterField;
ToolOptionCheckbox *m_snapCheckbox;
ToolOptionCombo *m_snapSensitivityCombo;
TTool *m_tool;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
GeometricToolOptionsBox(QWidget *parent, TTool *tool,
TPaletteHandle *pltHandle, ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2018-05-31 17:18:15 +12:00
void onShapeValueChanged(int);
2016-06-15 18:43:10 +12:00
void onPencilModeToggled(bool);
void onJoinStyleChanged(int);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// TypeToolOptionsBox
//
//=============================================================================
class TypeToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
TTool *m_tool;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
TypeToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2016-06-15 18:43:10 +12:00
void onFieldChanged();
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// PaintbrushToolOptionsBox
//
//=============================================================================
class PaintbrushToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
ToolOptionCombo *m_colorMode;
ToolOptionCheckbox *m_selectiveMode;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
PaintbrushToolOptionsBox(QWidget *parent, TTool *tool,
TPaletteHandle *pltHandle, ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2018-05-31 17:18:15 +12:00
void onColorModeChanged(int);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// FullColorFillToolOptionsBox
//
//=============================================================================
class FullColorFillToolOptionsBox final : public ToolOptionsBox {
Q_OBJECT
public:
FullColorFillToolOptionsBox(QWidget *parent, TTool *tool,
TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
};
2016-03-19 06:57:51 +13:00
//=============================================================================
//
// FillToolOptionsBox
//
//=============================================================================
class FillToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
int m_targetType;
QLabel *m_fillDepthLabel;
ToolOptionCombo *m_colorMode, *m_toolType;
ToolOptionCheckbox *m_selectiveMode, *m_segmentMode, *m_onionMode,
2017-11-22 16:52:08 +13:00
*m_multiFrameMode, *m_autopaintMode;
2016-06-15 18:43:10 +12:00
ToolOptionPairSlider *m_fillDepthField;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
FillToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2018-05-31 17:18:15 +12:00
void onColorModeChanged(int);
void onToolTypeChanged(int);
2016-06-15 18:43:10 +12:00
void onOnionModeToggled(bool);
void onMultiFrameModeToggled(bool);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// BrushToolOptionsBox
//
//=============================================================================
class BrushToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
TTool *m_tool;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
ToolOptionCheckbox *m_pencilMode;
QLabel *m_hardnessLabel;
ToolOptionSlider *m_hardnessField;
ToolOptionPopupButton *m_joinStyleCombo;
ToolOptionIntSlider *m_miterField;
ToolOptionCombo *m_presetCombo;
ToolOptionCheckbox *m_snapCheckbox;
ToolOptionCombo *m_snapSensitivityCombo;
2016-06-15 18:43:10 +12:00
QPushButton *m_addPresetButton;
QPushButton *m_removePresetButton;
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
class PresetNamePopup;
PresetNamePopup *m_presetNamePopup;
void filterControls();
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
BrushToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2016-06-15 18:43:10 +12:00
void onPencilModeToggled(bool);
void onAddPreset();
void onRemovePreset();
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// EraserToolOptionsBox
//
//=============================================================================
class EraserToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
ToolOptionCheckbox *m_pencilMode, *m_invertMode, *m_multiFrameMode;
ToolOptionCombo *m_toolType, *m_colorMode;
QLabel *m_hardnessLabel;
ToolOptionSlider *m_hardnessField;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
EraserToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2016-06-15 18:43:10 +12:00
void onPencilModeToggled(bool);
2018-05-31 17:18:15 +12:00
void onToolTypeChanged(int);
void onColorModeChanged(int);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// RulerToolOptionsBox
//
//=============================================================================
class RulerToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
MeasuredValueField *m_Xfld;
MeasuredValueField *m_Yfld;
MeasuredValueField *m_Wfld;
MeasuredValueField *m_Hfld;
MeasuredValueField *m_Afld;
MeasuredValueField *m_Lfld;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QLabel *m_XpixelFld;
QLabel *m_YpixelFld;
QLabel *m_WpixelFld;
QLabel *m_HpixelFld;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
TTool *m_tool;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
RulerToolOptionsBox(QWidget *parent, TTool *tool);
void updateValues(bool isRasterLevelEditing, double X, double Y, double W,
double H, double A, double L, int Xpix = 0, int Ypix = 0,
int Wpix = 0, int Hpix = 0);
void resetValues();
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// TapeToolOptionsBox
//
//=============================================================================
class TapeToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
ToolOptionCheckbox *m_smoothMode, *m_joinStrokesMode;
ToolOptionCombo *m_toolMode, *m_typeMode;
QLabel *m_autocloseLabel;
ToolOptionSlider *m_autocloseField;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
TapeToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2018-05-31 17:18:15 +12:00
void onToolTypeChanged(int);
void onToolModeChanged(int);
2016-06-15 18:43:10 +12:00
void onJoinStrokesModeChanged();
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// RGBPickerToolOptionsBox
//
//=============================================================================
class RGBPickerToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
ToolOptionCheckbox *m_realTimePickMode;
// label with background color
RGBLabel *m_currentRGBLabel;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
RGBPickerToolOptionsBox(QWidget *parent, TTool *tool,
TPaletteHandle *pltHandle, ToolHandle *toolHandle,
PaletteController *paletteController);
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2016-06-15 18:43:10 +12:00
void updateRealTimePickLabel(const QColor &);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// StylePickerToolOptionsBox
//
//=============================================================================
class StylePickerToolOptionsBox final : public ToolOptionsBox {
2016-06-15 18:43:10 +12:00
Q_OBJECT
ToolOptionCheckbox *m_realTimePickMode;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QLabel *m_currentStyleLabel;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
StylePickerToolOptionsBox(QWidget *parent, TTool *tool,
TPaletteHandle *pltHandle, ToolHandle *toolHandle,
PaletteController *paletteController);
void updateStatus();
2016-03-19 06:57:51 +13:00
protected slots:
2016-06-15 18:43:10 +12:00
void updateRealTimePickLabel(const int, const int, const int);
2016-03-19 06:57:51 +13:00
};
//=============================================================================
//
// ShiftTraceToolOptionBox
// shown only when "Edit Shift" mode is active
//
//=============================================================================
class ShiftTraceToolOptionBox final : public ToolOptionsBox {
Q_OBJECT
2018-09-11 17:35:02 +12:00
QFrame *m_prevFrame, *m_afterFrame;
QRadioButton *m_prevRadioBtn, *m_afterRadioBtn;
QPushButton *m_resetPrevGhostBtn, *m_resetAfterGhostBtn;
TTool *m_tool;
void resetGhost(int index);
2018-09-11 17:35:02 +12:00
protected:
void showEvent(QShowEvent *);
void hideEvent(QShowEvent *);
public:
2018-09-11 17:35:02 +12:00
ShiftTraceToolOptionBox(QWidget *parent = 0, TTool *tool = 0);
void updateStatus() override;
protected slots:
void onResetPrevGhostBtnPressed();
void onResetAfterGhostBtnPressed();
2018-09-11 17:35:02 +12:00
void onPrevRadioBtnClicked();
void onAfterRadioBtnClicked();
void updateColors();
};
2019-05-29 19:26:30 +12:00
//=============================================================================
//
// ZoomToolOptionsBox
//
//=============================================================================
class ZoomToolOptionsBox final : public ToolOptionsBox {
Q_OBJECT
public:
ZoomToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
};
//=============================================================================
//
// RotateToolOptionsBox
//
//=============================================================================
class RotateToolOptionsBox final : public ToolOptionsBox {
Q_OBJECT
public:
RotateToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
};
//=============================================================================
//
// HandToolOptionsBox
//
//=============================================================================
class HandToolOptionsBox final : public ToolOptionsBox {
Q_OBJECT
public:
HandToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
ToolHandle *toolHandle);
};
2016-03-19 06:57:51 +13:00
//-----------------------------------------------------------------------------
class DVAPI ToolOptions final : public QFrame {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
int m_width, m_height;
std::map<TTool *, ToolOptionsBox *> m_panels;
QWidget *m_panel;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
ToolOptions();
~ToolOptions();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QWidget *getPanel() const { return m_panel; }
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
void showEvent(QShowEvent *);
void hideEvent(QShowEvent *);
2016-03-19 06:57:51 +13:00
public slots:
2016-06-15 18:43:10 +12:00
void onToolSwitched();
void onToolChanged();
void onStageObjectChange();
2016-03-19 06:57:51 +13:00
2016-09-12 22:51:52 +12:00
signals:
// used in ComboViewer to handle Tab focus
void newPanelCreated();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
// void toolOptionChange();
2016-03-19 06:57:51 +13:00
};
2016-06-15 18:43:10 +12:00
#endif // PANE_H