Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TOOLOPTIONS_H
Toshihiro Shimizu 890ddd
#define TOOLOPTIONS_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzQt includes
Toshihiro Shimizu 890ddd
#include "toonzqt/checkbox.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzLib includes
Toshihiro Shimizu 890ddd
#include "toonz/tstageobject.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzCore includes
Toshihiro Shimizu 890ddd
#include "tcommon.h"
Toshihiro Shimizu 890ddd
#include "tproperty.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// Qt includes
Toshihiro Shimizu 890ddd
#include <qframe></qframe>
Toshihiro Shimizu 890ddd
#include <qaction></qaction>
Toshihiro Shimizu 890ddd
#include <qlist></qlist>
Toshihiro Shimizu 890ddd
#include <qtoolbar></qtoolbar>
Toshihiro Shimizu 890ddd
#include <qmap></qmap>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// STD includes
Toshihiro Shimizu 890ddd
#include <map></map>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TNZTOOLS_EXPORTS
Toshihiro Shimizu 890ddd
#define DVAPI DV_EXPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_EXPORT_VAR
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
#define DVAPI DV_IMPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_IMPORT_VAR
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//    Forward declarations
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TTool;
Toshihiro Shimizu 890ddd
class ToolOptionToolBar;
Toshihiro Shimizu 890ddd
class TPropertyGroup;
Toshihiro Shimizu 890ddd
class TPaletteHandle;
Toshihiro Shimizu 890ddd
class TFrameHandle;
Toshihiro Shimizu 890ddd
class TObjectHandle;
Toshihiro Shimizu 890ddd
class TXsheetHandle;
Toshihiro Shimizu 890ddd
class ToolHandle;
Toshihiro Shimizu 890ddd
class SelectionScaleField;
Toshihiro Shimizu 890ddd
class SelectionRotationField;
Toshihiro Shimizu 890ddd
class SelectionMoveField;
Toshihiro Shimizu 890ddd
class ToolOptionSlider;
Toshihiro Shimizu 890ddd
class ToolOptionIntSlider;
Toshihiro Shimizu 890ddd
class ThickChangeField;
Toshihiro Shimizu 890ddd
class ToolOptionCombo;
Toshihiro Shimizu 890ddd
class ToolOptionCheckbox;
Toshihiro Shimizu 890ddd
class PegbarChannelField;
Toshihiro Shimizu 890ddd
class ToolOptionPairSlider;
Toshihiro Shimizu 890ddd
class ToolOptionControl;
Toshihiro Shimizu 890ddd
class ToolOptionPopupButton;
Toshihiro Shimizu 890ddd
class TXshLevelHandle;
Toshihiro Shimizu 890ddd
class NoScaleField;
Toshihiro Shimizu 890ddd
class PegbarCenterField;
Toshihiro Shimizu 890ddd
class RGBLabel;
Toshihiro Shimizu 890ddd
class MeasuredValueField;
Toshihiro Shimizu 890ddd
class PaletteController;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class QLabel;
Toshihiro Shimizu 890ddd
class QPushButton;
Toshihiro Shimizu 890ddd
class QPropertyAnimation;
Toshihiro Shimizu 890ddd
class QFrame;
Toshihiro Shimizu 890ddd
class QHBoxLayout;
Toshihiro Shimizu 890ddd
class QComboBox;
Toshihiro Shimizu 890ddd
class QStackedWidget;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// Preprocessor definitions
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#define TOOL_OPTIONS_LEFT_MARGIN 5
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
//    ToolOptionToolBar  declaration
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class ToolOptionToolBar : public QToolBar
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ToolOptionToolBar(QWidget *parent = 0);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void addSpacing(int width);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
//    ToolOptionsBox  declaration
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class ToolOptionsBox : public QFrame
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Toshihiro Shimizu 890ddd
	QMap<std::string, *="" tooloptioncontrol=""> m_controls; //!< property name -> ToolOptionControl</std::string,>
Toshihiro Shimizu 890ddd
	QMap<std::string, *="" qlabel=""> m_labels;</std::string,>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QHBoxLayout *m_layout;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ToolOptionsBox(QWidget *parent);
Toshihiro Shimizu 890ddd
	~ToolOptionsBox();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	virtual void updateStatus(); //!< Invokes updateStatus() on all registered controls
Toshihiro Shimizu 890ddd
	virtual void onStageObjectChange() {}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QHBoxLayout *hLayout() { return m_layout; }
Toshihiro Shimizu 890ddd
	void addControl(ToolOptionControl *control);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ToolOptionControl *control(const std::string &controlName) const;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QLabel *addLabel(QString name);
Toshihiro Shimizu 890ddd
	void addLabel(string propName, QLabel *label);
Toshihiro Shimizu 890ddd
	void addSeparator();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
//    ToolOptionControlBuilder  declaration
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class ToolOptionControlBuilder : public TProperty::Visitor
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	ToolOptionsBox *m_panel;
Toshihiro Shimizu 890ddd
	TTool *m_tool;
Toshihiro Shimizu 890ddd
	TPaletteHandle *m_pltHandle;
Toshihiro Shimizu 890ddd
	ToolHandle *m_toolHandle;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	int m_singleValueWidgetType;
Toshihiro Shimizu 890ddd
	int m_enumWidgetType;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ToolOptionControlBuilder(ToolOptionsBox *panel, TTool *tool, TPaletteHandle *pltHandle, ToolHandle *toolHandle = 0);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	enum SingleValueWidgetType { SLIDER = 0,
Toshihiro Shimizu 890ddd
								 FIELD };
Toshihiro Shimizu 890ddd
	void setSingleValueWidgetType(int type) { m_singleValueWidgetType = type; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	enum EnumWidgetType { COMBOBOX = 0,
Toshihiro Shimizu 890ddd
						  POPUPBUTTON };
Toshihiro Shimizu 890ddd
	void setEnumWidgetType(int type) { m_enumWidgetType = type; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	QHBoxLayout *hLayout() { return m_panel->hLayout(); }
Toshihiro Shimizu 890ddd
	QLabel *addLabel(TProperty *p);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void visit(TDoubleProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TDoublePairProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TIntPairProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TIntProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TBoolProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TStringProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TEnumProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TStyleIndexProperty *p);
Toshihiro Shimizu 890ddd
	void visit(TPointerProperty *p);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
//    GenericToolOptionsBox  declaration
Toshihiro Shimizu 890ddd
//***********************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class GenericToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	GenericToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
						  int propertyGroupIdx = 0,
Toshihiro Shimizu 890ddd
						  ToolHandle *toolHandle = 0);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// ArrowToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class ArrowToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TPropertyGroup *m_pg;
Toshihiro Shimizu 890ddd
	bool m_splined;
Toshihiro Shimizu 890ddd
	TTool *m_tool;
Toshihiro Shimizu 890ddd
	TFrameHandle *m_frameHandle;
Toshihiro Shimizu 890ddd
	TObjectHandle *m_objHandle;
Toshihiro Shimizu 890ddd
	TXsheetHandle *m_xshHandle;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QStackedWidget *m_mainStackedWidget;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//General
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_chooseActiveAxisCombo;
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_pickCombo;
Toshihiro Shimizu 890ddd
	//enable to choose the target pegbar from the combobox
Toshihiro Shimizu 890ddd
	QComboBox *m_currentStageObjectCombo;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//Position
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_motionPathPosField;
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_ewPosField;
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_nsPosField;
Toshihiro Shimizu 890ddd
	QLabel *m_ewPosLabel;
Toshihiro Shimizu 890ddd
	QLabel *m_nsPosLabel;
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_zField;
Toshihiro Shimizu 890ddd
	NoScaleField *m_noScaleZField;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockEWPosCheckbox;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockNSPosCheckbox;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//SO = Stacked Order
Toshihiro Shimizu 890ddd
	QLabel *m_soLabel;
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_soField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//Rotation
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_rotationField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//Scale
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_globalScaleField;
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_scaleHField;
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_scaleVField;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockScaleHCheckbox;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockScaleVCheckbox;
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_maintainCombo;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//Shear
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_shearHField;
Toshihiro Shimizu 890ddd
	PegbarChannelField *m_shearVField;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockShearHCheckbox;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockShearVCheckbox;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//Center Position
Toshihiro Shimizu 890ddd
	PegbarCenterField *m_ewCenterField;
Toshihiro Shimizu 890ddd
	PegbarCenterField *m_nsCenterField;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockEWCenterCheckbox;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_lockNSCenterCheckbox;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ArrowToolOptionsBox(QWidget *parent, TTool *tool, TPropertyGroup *pg,
Toshihiro Shimizu 890ddd
						TFrameHandle *frameHandle, TObjectHandle *objHandle, TXsheetHandle *xshHandle,
Toshihiro Shimizu 890ddd
						ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
	void onStageObjectChange();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Toshihiro Shimizu 890ddd
	void showEvent(QShowEvent *);
Toshihiro Shimizu 890ddd
	void hideEvent(QShowEvent *);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setSplined(bool on);
Toshihiro Shimizu 890ddd
	bool isCurrentObjectSplined() const;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onFrameSwitched() { updateStatus(); }
Toshihiro Shimizu 890ddd
	//update the object list in combobox
Toshihiro Shimizu 890ddd
	void updateStageObjectComboItems();
Toshihiro Shimizu 890ddd
	//syncronize the current item in the combobox to the selected stage object
Toshihiro Shimizu 890ddd
	void syncCurrentStageObjectComboItem();
Toshihiro Shimizu 890ddd
	//change the current stage object when user changes it via combobox by hand
Toshihiro Shimizu 890ddd
	void onCurrentStageObjectComboActivated(int index);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// SelectionToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class SelectionToolOptionsBox : public ToolOptionsBox, public TProperty::Listener
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TTool *m_tool;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_setSaveboxCheckbox;
Toshihiro Shimizu 890ddd
	bool m_isVectorSelction;
Toshihiro Shimizu 890ddd
	QLabel *m_scaleXLabel;
Toshihiro Shimizu 890ddd
	SelectionScaleField *m_scaleXField;
Toshihiro Shimizu 890ddd
	QLabel *m_scaleYLabel;
Toshihiro Shimizu 890ddd
	SelectionScaleField *m_scaleYField;
Toshihiro Shimizu 890ddd
	DVGui::CheckBox *m_scaleLink;
Toshihiro Shimizu 890ddd
	SelectionRotationField *m_rotationField;
Toshihiro Shimizu 890ddd
	QLabel *m_moveXLabel;
Toshihiro Shimizu 890ddd
	SelectionMoveField *m_moveXField;
Toshihiro Shimizu 890ddd
	QLabel *m_moveYLabel;
Toshihiro Shimizu 890ddd
	SelectionMoveField *m_moveYField;
Toshihiro Shimizu 890ddd
	ThickChangeField *m_thickChangeField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ToolOptionPopupButton *m_capStyle;
Toshihiro Shimizu 890ddd
	ToolOptionPopupButton *m_joinStyle;
Toshihiro Shimizu 890ddd
	ToolOptionIntSlider *m_miterField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	SelectionToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
							ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
	void onPropertyChanged();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onScaleXValueChanged();
Toshihiro Shimizu 890ddd
	void onScaleYValueChanged();
Toshihiro Shimizu 890ddd
	void onSetSaveboxCheckboxChanged(bool);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// GeometricToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class GeometricToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	int m_targetType;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QLabel *m_poligonSideLabel, *m_hardnessLabel;
Toshihiro Shimizu 890ddd
	ToolOptionSlider *m_hardnessField;
Toshihiro Shimizu 890ddd
	ToolOptionIntSlider *m_poligonSideField;
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_shapeField;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_pencilMode;
Toshihiro Shimizu 890ddd
	ToolOptionIntSlider *m_miterField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	GeometricToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
							ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onShapeValueChanged();
Toshihiro Shimizu 890ddd
	void onPencilModeToggled(bool);
Toshihiro Shimizu 890ddd
	void onJoinStyleChanged(int);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// TypeToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TypeToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TTool *m_tool;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	TypeToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
					   ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onFieldChanged();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// PaintbrushToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class PaintbrushToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_colorMode;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_selectiveMode;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	PaintbrushToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
							 ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onColorModeChanged();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// FillToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class FillToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	int m_targetType;
Toshihiro Shimizu 890ddd
	QLabel *m_fillDepthLabel;
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_colorMode, *m_toolType;
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_selectiveMode, *m_segmentMode, *m_onionMode, *m_multiFrameMode;
Toshihiro Shimizu 890ddd
	ToolOptionPairSlider *m_fillDepthField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	FillToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
					   ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onColorModeChanged();
Toshihiro Shimizu 890ddd
	void onToolTypeChanged();
Toshihiro Shimizu 890ddd
	void onOnionModeToggled(bool);
Toshihiro Shimizu 890ddd
	void onMultiFrameModeToggled(bool);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// BrushToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class BrushToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TTool *m_tool;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_pencilMode;
Toshihiro Shimizu 890ddd
	QLabel *m_hardnessLabel;
Toshihiro Shimizu 890ddd
	ToolOptionSlider *m_hardnessField;
Toshihiro Shimizu 890ddd
	ToolOptionPopupButton *m_joinStyleCombo;
Toshihiro Shimizu 890ddd
	ToolOptionIntSlider *m_miterField;
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_presetCombo;
Toshihiro Shimizu 890ddd
	QPushButton *m_addPresetButton;
Toshihiro Shimizu 890ddd
	QPushButton *m_removePresetButton;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	class PresetNamePopup;
Toshihiro Shimizu 890ddd
	PresetNamePopup *m_presetNamePopup;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	BrushToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
						ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void onPencilModeToggled(bool);
Toshihiro Shimizu 890ddd
	void onAddPreset();
Toshihiro Shimizu 890ddd
	void onRemovePreset();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// EraserToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class EraserToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_pencilMode, *m_invertMode, *m_multiFrameMode;
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_toolType, *m_colorMode;
Toshihiro Shimizu 890ddd
	QLabel *m_hardnessLabel;
Toshihiro Shimizu 890ddd
	ToolOptionSlider *m_hardnessField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	EraserToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
						 ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onPencilModeToggled(bool);
Toshihiro Shimizu 890ddd
	void onToolTypeChanged();
Toshihiro Shimizu 890ddd
	void onColorModeChanged();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// RulerToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class RulerToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	MeasuredValueField *m_Xfld;
Toshihiro Shimizu 890ddd
	MeasuredValueField *m_Yfld;
Toshihiro Shimizu 890ddd
	MeasuredValueField *m_Wfld;
Toshihiro Shimizu 890ddd
	MeasuredValueField *m_Hfld;
Toshihiro Shimizu 890ddd
	MeasuredValueField *m_Afld;
Toshihiro Shimizu 890ddd
	MeasuredValueField *m_Lfld;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QLabel *m_XpixelFld;
Toshihiro Shimizu 890ddd
	QLabel *m_YpixelFld;
Toshihiro Shimizu 890ddd
	QLabel *m_WpixelFld;
Toshihiro Shimizu 890ddd
	QLabel *m_HpixelFld;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TTool *m_tool;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	RulerToolOptionsBox(QWidget *parent,
Toshihiro Shimizu 890ddd
						TTool *tool);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateValues(bool isRasterLevelEditing,
Toshihiro Shimizu 890ddd
					  double X,
Toshihiro Shimizu 890ddd
					  double Y,
Toshihiro Shimizu 890ddd
					  double W,
Toshihiro Shimizu 890ddd
					  double H,
Toshihiro Shimizu 890ddd
					  double A,
Toshihiro Shimizu 890ddd
					  double L,
Toshihiro Shimizu 890ddd
					  int Xpix = 0,
Toshihiro Shimizu 890ddd
					  int Ypix = 0,
Toshihiro Shimizu 890ddd
					  int Wpix = 0,
Toshihiro Shimizu 890ddd
					  int Hpix = 0);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void resetValues();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// TapeToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TapeToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_smoothMode, *m_joinStrokesMode;
Toshihiro Shimizu 890ddd
	ToolOptionCombo *m_toolMode, *m_typeMode;
Toshihiro Shimizu 890ddd
	QLabel *m_autocloseLabel;
Toshihiro Shimizu 890ddd
	ToolOptionSlider *m_autocloseField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	TapeToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
					   ToolHandle *toolHandle);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void onToolTypeChanged();
Toshihiro Shimizu 890ddd
	void onToolModeChanged();
Toshihiro Shimizu 890ddd
	void onJoinStrokesModeChanged();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// RGBPickerToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class RGBPickerToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_realTimePickMode;
Toshihiro Shimizu 890ddd
	//label with background color
Toshihiro Shimizu 890ddd
	RGBLabel *m_currentRGBLabel;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	RGBPickerToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
							ToolHandle *toolHandle, PaletteController *paletteController);
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void updateRealTimePickLabel(const QColor &);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// StylePickerToolOptionsBox
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class StylePickerToolOptionsBox : public ToolOptionsBox
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
	ToolOptionCheckbox *m_realTimePickMode;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QLabel *m_currentStyleLabel;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	StylePickerToolOptionsBox(QWidget *parent, TTool *tool, TPaletteHandle *pltHandle,
Toshihiro Shimizu 890ddd
							  ToolHandle *toolHandle, PaletteController *paletteController);
Toshihiro Shimizu 890ddd
	void updateStatus();
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void updateRealTimePickLabel(const int, const int, const int);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class DVAPI ToolOptions : public QFrame
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	int m_width, m_height;
Toshihiro Shimizu 890ddd
	std::map<ttool *="" *,="" tooloptionsbox=""> m_panels;</ttool>
Toshihiro Shimizu 890ddd
	QWidget *m_panel;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ToolOptions();
Toshihiro Shimizu 890ddd
	~ToolOptions();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QWidget *getPanel() const { return m_panel; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Toshihiro Shimizu 890ddd
	void showEvent(QShowEvent *);
Toshihiro Shimizu 890ddd
	void hideEvent(QShowEvent *);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public slots:
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void onToolSwitched();
Toshihiro Shimizu 890ddd
	void onToolChanged();
Toshihiro Shimizu 890ddd
	void onStageObjectChange();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//signals:
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//  void toolOptionChange();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif // PANE_H