|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef TOOL_OPTIONS_CONTROLS_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
#define TOOL_OPTIONS_CONTROLS_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tproperty.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzBase includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tunit.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tdoubleparamrelayproperty.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// ToonzQt includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/doublepairfield.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/intpairfield.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/intfield.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/styleindexlineedit.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/checkbox.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/doublefield.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/popupbutton.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheet.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tstageobject.h"
|
|
Jeremy Bullock |
771290 |
#include "toonz/stageobjectutil.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// STD includes
|
|
Toshihiro Shimizu |
890ddd |
#include <string></string>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qcombobox></qcombobox>
|
|
manongjohn |
b66bc4 |
#include <qfontcombobox></qfontcombobox>
|
|
Toshihiro Shimizu |
890ddd |
#include <qtoolbutton></qtoolbutton>
|
|
Toshihiro Shimizu |
890ddd |
#include <qtimer></qtimer>
|
|
Jeremy Bullock |
771290 |
#include <qlabel></qlabel>
|
|
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 |
class TTool;
|
|
Toshihiro Shimizu |
890ddd |
class TFrameHandle;
|
|
Toshihiro Shimizu |
890ddd |
class TObjectHandle;
|
|
Toshihiro Shimizu |
890ddd |
class TXsheetHandle;
|
|
Toshihiro Shimizu |
890ddd |
class SelectionTool;
|
|
Toshihiro Shimizu |
890ddd |
class ToolHandle;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//***********************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
// ToolOptionControl declaration
|
|
Toshihiro Shimizu |
890ddd |
//***********************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//! ToolOptionControl is the base class for tool property toolbar controls.
|
|
Toshihiro Shimizu |
890ddd |
/*!
|
|
Toshihiro Shimizu |
890ddd |
This class implements the basic methods the allow toolbar controls to
|
|
Toshihiro Shimizu |
890ddd |
interact with the tool properties.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
class ToolOptionControl : public TProperty::Listener {
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
std::string m_propertyName;
|
|
Shinya Kitaoka |
120a6e |
TTool *m_tool;
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *m_toolHandle;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionControl(TTool *tool, std::string propertyName,
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = 0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
const std::string &propertyName() const { return m_propertyName; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
void onPropertyChanged() override { updateStatus(); }
|
|
Jeremy Bullock |
e122a9 |
void notifyTool(bool addToUndo = false);
|
|
Shinya Kitaoka |
120a6e |
// return true if the control is belonging to the visible viewer
|
|
Shinya Kitaoka |
120a6e |
bool isInVisibleViewer(QWidget *widget);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
virtual void updateStatus() = 0;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//***********************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
// ToolOptionControl derivative declarations
|
|
Toshihiro Shimizu |
890ddd |
//***********************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionCheckbox final : public DVGui::CheckBox,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TBoolProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionCheckbox(TTool *tool, TBoolProperty *property,
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = 0, QWidget *parent = 0);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
shun_iwasawa |
a39cc7 |
|
|
shun_iwasawa |
a39cc7 |
protected:
|
|
shun_iwasawa |
a39cc7 |
void nextCheckState() override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionSlider final : public DVGui::DoubleField,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TDoubleProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionSlider(TTool *tool, TDoubleProperty *property,
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = 0);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onValueChanged(bool isDragging);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionPairSlider final : public DVGui::DoublePairField,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TDoublePairProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionPairSlider(TTool *tool, TDoublePairProperty *property,
|
|
Shinya Kitaoka |
120a6e |
const QString &leftName, const QString &rightName,
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = 0);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onValuesChanged(bool isDragging);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionIntPairSlider final : public DVGui::IntPairField,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TIntPairProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionIntPairSlider(TTool *tool, TIntPairProperty *property,
|
|
Shinya Kitaoka |
120a6e |
const QString &leftName, const QString &rightName,
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = 0);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onValuesChanged(bool isDragging);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionIntSlider final : public DVGui::IntField,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TIntProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionIntSlider(TTool *tool, TIntProperty *property,
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = 0);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onValueChanged(bool isDragging);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionCombo final : public QComboBox, public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TEnumProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionCombo(TTool *tool, TEnumProperty *property,
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = 0);
|
|
manongjohn |
b66bc4 |
void updateStatus() override;
|
|
manongjohn |
b66bc4 |
|
|
manongjohn |
b66bc4 |
TEnumProperty *getProperty() const { return m_property; }
|
|
manongjohn |
b66bc4 |
|
|
manongjohn |
b66bc4 |
public slots:
|
|
manongjohn |
b66bc4 |
void reloadComboBoxList(std::string);
|
|
Shinya Kitaoka |
120a6e |
void loadEntries();
|
|
manongjohn |
b66bc4 |
void onActivated(int);
|
|
manongjohn |
b66bc4 |
};
|
|
manongjohn |
b66bc4 |
|
|
manongjohn |
b66bc4 |
//-----------------------------------------------------------------------------
|
|
manongjohn |
b66bc4 |
|
|
manongjohn |
b66bc4 |
class ToolOptionFontCombo final : public QFontComboBox,
|
|
manongjohn |
b66bc4 |
public ToolOptionControl {
|
|
manongjohn |
b66bc4 |
Q_OBJECT
|
|
manongjohn |
b66bc4 |
|
|
manongjohn |
b66bc4 |
protected:
|
|
manongjohn |
b66bc4 |
TEnumProperty *m_property;
|
|
manongjohn |
b66bc4 |
|
|
manongjohn |
b66bc4 |
public:
|
|
manongjohn |
b66bc4 |
ToolOptionFontCombo(TTool *tool, TEnumProperty *property,
|
|
manongjohn |
b66bc4 |
ToolHandle *toolHandle = 0);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
48ed93 |
TEnumProperty *getProperty() const { return m_property; }
|
|
shun-iwasawa |
48ed93 |
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Shinya Kitaoka |
120a6e |
void onActivated(int);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionPopupButton final : public PopupButton,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TEnumProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionPopupButton(TTool *tool, TEnumProperty *property);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Shinya Kitaoka |
120a6e |
TEnumProperty *getProperty() { return m_property; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Shinya Kitaoka |
120a6e |
void onActivated(int);
|
|
Shinya Kitaoka |
120a6e |
void doSetCurrentIndex(int);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionTextField final : public DVGui::LineEdit,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TStringProperty *m_property;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionTextField(TTool *tool, TStringProperty *property);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void onValueChanged();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StyleIndexFieldAndChip final : public DVGui::StyleIndexLineEdit,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TStyleIndexProperty *m_property;
|
|
Shinya Kitaoka |
120a6e |
TPaletteHandle *m_pltHandle;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StyleIndexFieldAndChip(TTool *tool, TStyleIndexProperty *property,
|
|
Shinya Kitaoka |
120a6e |
TPaletteHandle *pltHandle, ToolHandle *toolHandle = 0);
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void onValueChanged(const QString &);
|
|
Shinya Kitaoka |
120a6e |
void updateColor();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//! The ToolOptionMeasuredDoubleField class implements toolbar controls for
|
|
Toshihiro Shimizu |
890ddd |
//! double properties that need to be displayed with a measure.
|
|
Toshihiro Shimizu |
890ddd |
/*!
|
|
Shinya Kitaoka |
120a6e |
This option control is useful to display function editor curves in the
|
|
Shinya Kitaoka |
120a6e |
toolbar;
|
|
Toshihiro Shimizu |
890ddd |
in particular, it deals with the following tasks:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
\li Setting the preference-based keyframe interpolation type
|
|
Shinya Kitaoka |
120a6e |
\li Editing with global keyframes (ie affecting multiple parameters other than
|
|
Shinya Kitaoka |
120a6e |
the edited one)
|
|
Toshihiro Shimizu |
890ddd |
\li Undo/Redo of user interactions.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
d1f6c4 |
class ToolOptionParamRelayField final : public DVGui::MeasuredDoubleLineEdit,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TDoubleParamP m_param; //!< Cached property param
|
|
Shinya Kitaoka |
120a6e |
TMeasure *m_measure; //!< Cached property param measure
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TDoubleParamRelayProperty
|
|
Shinya Kitaoka |
120a6e |
*m_property; //!< The TDoubleParam relaying property
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TBoolProperty *m_globalKey; //!< The property enforcing global keys
|
|
Shinya Kitaoka |
120a6e |
TPropertyGroup *m_globalGroup; //!< The property group whose properties
|
|
Shinya Kitaoka |
120a6e |
//!< are affected by m_globalKey
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ToolOptionParamRelayField(TTool *tool, TDoubleParamRelayProperty *property,
|
|
Shinya Kitaoka |
120a6e |
int decimals = 2);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setGlobalKey(TBoolProperty *globalKey, TPropertyGroup *globalGroup);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
virtual void onValueChanged();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
// Widget specifici di ArrowTool (derivati da ToolOptionControl)
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class DVAPI MeasuredValueField : public DVGui::LineEdit {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TMeasuredValue *m_value;
|
|
Shinya Kitaoka |
120a6e |
bool m_modified;
|
|
Shinya Kitaoka |
120a6e |
double m_errorHighlighting;
|
|
Shinya Kitaoka |
120a6e |
QTimer m_errorHighlightingTimer;
|
|
Jeremy Bullock |
771290 |
int m_xMouse = -1;
|
|
Shinya Kitaoka |
120a6e |
int m_precision;
|
|
Jeremy Bullock |
771290 |
bool m_mouseEdit = false;
|
|
Jeremy Bullock |
771290 |
bool m_labelClicked = false;
|
|
Jeremy Bullock |
771290 |
double m_originalValue;
|
|
shun_iwasawa |
23727d |
bool m_isTyping = false;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
bool m_isGlobalKeyframe;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Jeremy Bullock |
771290 |
// these are used for mouse dragging to edit a value
|
|
Jeremy Bullock |
771290 |
void mousePressEvent(QMouseEvent *) override;
|
|
Jeremy Bullock |
771290 |
void mouseMoveEvent(QMouseEvent *) override;
|
|
Jeremy Bullock |
771290 |
void mouseReleaseEvent(QMouseEvent *) override;
|
|
shun_iwasawa |
23727d |
void focusOutEvent(QFocusEvent *) override;
|
|
Jeremy Bullock |
771290 |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
MeasuredValueField(QWidget *parent, QString name = "numfield");
|
|
Shinya Kitaoka |
120a6e |
~MeasuredValueField();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setMeasure(std::string name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void enableGlobalKeyframe(bool isGlobalKeyframe) {
|
|
Shinya Kitaoka |
120a6e |
m_isGlobalKeyframe = isGlobalKeyframe;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TMeasuredValue *getMeasuredValue() const { return m_value; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setValue(double v);
|
|
Shinya Kitaoka |
120a6e |
double getValue() const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setPrecision(int precision);
|
|
Shinya Kitaoka |
120a6e |
int getPrecision() { return m_precision; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void commit();
|
|
Shinya Kitaoka |
120a6e |
void onTextChanged(const QString &);
|
|
Shinya Kitaoka |
120a6e |
void errorHighlightingTick();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Jeremy Bullock |
771290 |
// clicking on the label connected to a field
|
|
Jeremy Bullock |
771290 |
// can be used to drag and change the value
|
|
Jeremy Bullock |
771290 |
void receiveMouseMove(QMouseEvent *event);
|
|
Jeremy Bullock |
771290 |
void receiveMousePress(QMouseEvent *event);
|
|
Jeremy Bullock |
771290 |
void receiveMouseRelease(QMouseEvent *event);
|
|
Jeremy Bullock |
771290 |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Jeremy Bullock |
771290 |
void measuredValueChanged(TMeasuredValue *value, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class PegbarChannelField final : public MeasuredValueField,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
const enum TStageObject::Channel m_actionId;
|
|
Shinya Kitaoka |
120a6e |
TFrameHandle *m_frameHandle;
|
|
Shinya Kitaoka |
120a6e |
TObjectHandle *m_objHandle;
|
|
Shinya Kitaoka |
120a6e |
TXsheetHandle *m_xshHandle;
|
|
Shinya Kitaoka |
120a6e |
enum ScaleType { eNone = 0, eAR = 1, eMass = 2 } m_scaleType;
|
|
Jeremy Bullock |
771290 |
TStageObjectValues m_before;
|
|
Jeremy Bullock |
771290 |
bool m_firstMouseDrag = false;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
PegbarChannelField(TTool *tool, enum TStageObject::Channel actionId,
|
|
Shinya Kitaoka |
120a6e |
QString name, TFrameHandle *frameHandle,
|
|
Shinya Kitaoka |
120a6e |
TObjectHandle *objHandle, TXsheetHandle *xshHandle,
|
|
Shinya Kitaoka |
120a6e |
QWidget *parent = 0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
~PegbarChannelField() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void onScaleTypeChanged(int type);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Jeremy Bullock |
771290 |
// add to undo is only false if mouse dragging to change the value
|
|
Jeremy Bullock |
771290 |
// on mouse release, add to undo is true
|
|
Jeremy Bullock |
771290 |
void onChange(TMeasuredValue *fld, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI PegbarCenterField final : public MeasuredValueField,
|
|
Shinya Kitaoka |
d1f6c4 |
public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int m_index; // 0 = x, 1 = y
|
|
Shinya Kitaoka |
120a6e |
TObjectHandle *m_objHandle;
|
|
Shinya Kitaoka |
120a6e |
TXsheetHandle *m_xshHandle;
|
|
Jeremy Bullock |
771290 |
TPointD m_oldCenter;
|
|
Jeremy Bullock |
771290 |
bool m_firstMouseDrag = false;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
PegbarCenterField(TTool *tool, int index, QString name,
|
|
Shinya Kitaoka |
120a6e |
TObjectHandle *objHandle, TXsheetHandle *xshHandle,
|
|
Shinya Kitaoka |
120a6e |
QWidget *parent = 0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
~PegbarCenterField() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Jeremy Bullock |
771290 |
// add to undo is only false if mouse dragging to change the value
|
|
Jeremy Bullock |
771290 |
// on mouse release, add to undo is true
|
|
Jeremy Bullock |
771290 |
void onChange(TMeasuredValue *fld, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class NoScaleField final : public MeasuredValueField, public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
NoScaleField(TTool *tool, QString name);
|
|
Shinya Kitaoka |
120a6e |
~NoScaleField() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Jeremy Bullock |
771290 |
// add to undo is only false if mouse dragging to change the value
|
|
Jeremy Bullock |
771290 |
// on mouse release, add to undo is true
|
|
Jeremy Bullock |
771290 |
void onChange(TMeasuredValue *fld, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class PropertyMenuButton final : public QToolButton, public ToolOptionControl {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QList<tboolproperty *=""> m_properties;</tboolproperty>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
PropertyMenuButton(
|
|
Shinya Kitaoka |
120a6e |
QWidget *parent = 0, TTool *tool = 0,
|
|
Shinya Kitaoka |
120a6e |
QList<tboolproperty *=""> properties = QList<tboolproperty *="">(),</tboolproperty></tboolproperty>
|
|
Shinya Kitaoka |
120a6e |
QIcon icon = QIcon(), QString tooltip = QString());
|
|
Shinya Kitaoka |
120a6e |
~PropertyMenuButton() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
void updateStatus() override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void onActionTriggered(QAction *);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void onPropertyChanged(QString name);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class SelectionScaleField final : public MeasuredValueField {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int m_id;
|
|
Shinya Kitaoka |
120a6e |
SelectionTool *m_tool;
|
|
Jeremy Bullock |
771290 |
double m_originalValue;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
SelectionScaleField(SelectionTool *tool, int actionId, QString name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
~SelectionScaleField() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void updateStatus();
|
|
Jeremy Bullock |
771290 |
bool applyChange(bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Jeremy Bullock |
771290 |
// add to undo is only false if mouse dragging to change the value
|
|
Jeremy Bullock |
771290 |
// on mouse release, add to undo is true
|
|
Jeremy Bullock |
771290 |
void onChange(TMeasuredValue *fld, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Jeremy Bullock |
771290 |
void valueChange(bool addToUndo);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class SelectionRotationField final : public MeasuredValueField {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
SelectionTool *m_tool;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
SelectionRotationField(SelectionTool *tool, QString name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
~SelectionRotationField() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void updateStatus();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Jeremy Bullock |
771290 |
// add to undo is only false if mouse dragging to change the value
|
|
Jeremy Bullock |
771290 |
// on mouse release, add to undo is true
|
|
Jeremy Bullock |
771290 |
void onChange(TMeasuredValue *fld, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class SelectionMoveField final : public MeasuredValueField {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int m_id;
|
|
Shinya Kitaoka |
120a6e |
SelectionTool *m_tool;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
SelectionMoveField(SelectionTool *tool, int id, QString name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
~SelectionMoveField() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void updateStatus();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Jeremy Bullock |
771290 |
// add to undo is only false if mouse dragging to change the value
|
|
Jeremy Bullock |
771290 |
// on mouse release, add to undo is true
|
|
Jeremy Bullock |
771290 |
void onChange(TMeasuredValue *fld, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ThickChangeField final : public MeasuredValueField {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
SelectionTool *m_tool;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ThickChangeField(SelectionTool *tool, QString name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
~ThickChangeField() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void updateStatus();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Jeremy Bullock |
771290 |
void onChange(TMeasuredValue *fld, bool addToUndo = true);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Jeremy Bullock |
771290 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
771290 |
|
|
Jeremy Bullock |
771290 |
// The ClickableLabel class is used to allow click and dragging
|
|
Jeremy Bullock |
771290 |
// on a label to change the value of a linked field
|
|
Jeremy Bullock |
771290 |
class ClickableLabel : public QLabel {
|
|
Jeremy Bullock |
771290 |
Q_OBJECT
|
|
Jeremy Bullock |
771290 |
|
|
Jeremy Bullock |
771290 |
protected:
|
|
Jeremy Bullock |
771290 |
void mousePressEvent(QMouseEvent *) override;
|
|
Jeremy Bullock |
771290 |
void mouseMoveEvent(QMouseEvent *) override;
|
|
Jeremy Bullock |
771290 |
void mouseReleaseEvent(QMouseEvent *) override;
|
|
Jeremy Bullock |
771290 |
|
|
Jeremy Bullock |
771290 |
public:
|
|
otakuto |
fb3573 |
ClickableLabel(const QString &text, QWidget *parent = nullptr,
|
|
Jeremy Bullock |
771290 |
Qt::WindowFlags f = Qt::WindowFlags());
|
|
Jeremy Bullock |
771290 |
~ClickableLabel();
|
|
Jeremy Bullock |
771290 |
|
|
Jeremy Bullock |
771290 |
signals:
|
|
Jeremy Bullock |
771290 |
void onMousePress(QMouseEvent *event);
|
|
Jeremy Bullock |
771290 |
void onMouseMove(QMouseEvent *event);
|
|
Jeremy Bullock |
771290 |
void onMouseRelease(QMouseEvent *event);
|
|
Jeremy Bullock |
771290 |
};
|
|
Jeremy Bullock |
771290 |
|
|
Jeremy Bullock |
771290 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
771290 |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|