Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef PARAMFIELD_H
Toshihiro Shimizu 890ddd
#define PARAMFIELD_H
Toshihiro Shimizu 890ddd
Shinya Kitaoka 9f5a1b
#ifdef _WIN32
Toshihiro Shimizu 890ddd
#pragma warning(disable : 4251)
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tcommon.h"
Toshihiro Shimizu 890ddd
#include <qwidget></qwidget>
Toshihiro Shimizu 890ddd
#include <qspinbox></qspinbox>
Toshihiro Shimizu 890ddd
#include <qslider></qslider>
Toshihiro Shimizu 890ddd
#include <qcheckbox></qcheckbox>
Toshihiro Shimizu 890ddd
#include <qbuttongroup></qbuttongroup>
Toshihiro Shimizu 890ddd
#include <qradiobutton></qradiobutton>
Toshihiro Shimizu 890ddd
#include <qpushbutton></qpushbutton>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tgeometry.h"
Toshihiro Shimizu 890ddd
#include "tparam.h"
Toshihiro Shimizu 890ddd
#include "tnotanimatableparam.h"
Toshihiro Shimizu 890ddd
#include "tspectrumparam.h"
Toshihiro Shimizu 890ddd
#include "ttonecurveparam.h"
Toshihiro Shimizu 890ddd
#include "tdoubleparam.h"
Toshihiro Shimizu 890ddd
#include "toonz/tfxhandle.h"
Toshihiro Shimizu 890ddd
#include "historytypes.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TOONZQT_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
// forward declaration
Toshihiro Shimizu 890ddd
class QString;
Toshihiro Shimizu 890ddd
class QComboBox;
Toshihiro Shimizu 890ddd
class QHBoxLayout;
Toshihiro Shimizu 890ddd
class TFxHandle;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace DVGui {
Toshihiro Shimizu 890ddd
class LineEdit;
Toshihiro Shimizu 890ddd
class IntField;
Toshihiro Shimizu 890ddd
class DoubleField;
Toshihiro Shimizu 890ddd
class MeasuredDoubleField;
Toshihiro Shimizu 890ddd
class MeasuredDoublePairField;
Toshihiro Shimizu 890ddd
class ColorField;
Toshihiro Shimizu 890ddd
class SpectrumField;
Toshihiro Shimizu 890ddd
class ToneCurveField;
Toshihiro Shimizu 890ddd
class CheckBox;
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
/*! \brief ParamField.
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
                Inherits \b QWidget.
Toshihiro Shimizu 890ddd
*/
Shinya Kitaoka 120a6e
class DVAPI ParamField : public QWidget {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 120a6e
  QHBoxLayout *m_layout;
Shinya Kitaoka 120a6e
  QString m_paramName;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  static TFxHandle *m_fxHandleStat;
Shinya Kitaoka 120a6e
  QString m_interfaceName;
Shinya Kitaoka 120a6e
  QString m_description;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  ParamField(QWidget *parent, QString paramName, const TParamP ¶m,
Shinya Kitaoka 120a6e
             bool addEmptyLabel = true);
Shinya Kitaoka 120a6e
  ~ParamField();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  QString getParamName() const { return m_paramName; }
Shinya Kitaoka 120a6e
  QString getUIName() const { return m_interfaceName; }
Shinya Kitaoka 120a6e
  QString getDescription() const { return m_description; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual void setParam(const TParamP ¤t, const TParamP &actual,
Shinya Kitaoka 120a6e
                        int frame) = 0;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual void update(int frame) = 0;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  static ParamField *create(QWidget *parent, QString name,
Shinya Kitaoka 120a6e
                            const TParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual void setPointValue(const TPointD &p){};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual QSize getPreferedSize() { return QSize(200, 28); }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  static void setFxHandle(TFxHandle *fxHandle);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual void setPrecision(int precision) {}
Toshihiro Shimizu 890ddd
signals:
Shinya Kitaoka 120a6e
  void currentParamChanged();
Shinya Kitaoka 120a6e
  void actualParamChanged();
Shinya Kitaoka 120a6e
  void paramKeyToggle();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// ParamFieldKeyToggle
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI ParamFieldKeyToggle : public QWidget {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  enum Status { NOT_ANIMATED, NOT_KEYFRAME, MODIFIED, KEYFRAME };
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  Status m_status;
Shinya Kitaoka 120a6e
  bool m_highlighted;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  ParamFieldKeyToggle(QWidget *parent,
Shinya Kitaoka 120a6e
                      std::string name = "ParamFieldKeyToggle");
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setStatus(Status status);
Shinya Kitaoka 120a6e
  Status getStatus() const;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setStatus(bool hasKeyframe, bool isKeyframe, bool hasBeenChanged);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 473e70
  void paintEvent(QPaintEvent *) override;
Shinya Kitaoka 473e70
  void mousePressEvent(QMouseEvent *) override;
Shinya Kitaoka 473e70
  void enterEvent(QEvent *) override;
Shinya Kitaoka 473e70
  void leaveEvent(QEvent *) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
signals:
Shinya Kitaoka 120a6e
  void keyToggled();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// FxSettingsKeyToggleUndo
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
template <class class="" paramp="" t,=""></class>
Shinya Kitaoka 120a6e
class FxSettingsKeyToggleUndo : public TUndo {
Shinya Kitaoka 120a6e
  TFxHandle *m_fxHandle;
Shinya Kitaoka 120a6e
  QString m_name;
Shinya Kitaoka 120a6e
  bool m_wasKeyframe;
Shinya Kitaoka 120a6e
  int m_frame;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  ParamP m_param;
Shinya Kitaoka 120a6e
  T m_currentValue;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  FxSettingsKeyToggleUndo(ParamP param, T currentValue, bool wasKeyFrame,
Shinya Kitaoka 120a6e
                          QString name, int frame, TFxHandle *fxHandle)
Shinya Kitaoka 120a6e
      : m_param(param)
Shinya Kitaoka 120a6e
      , m_currentValue(currentValue)
Shinya Kitaoka 120a6e
      , m_wasKeyframe(wasKeyFrame)
Shinya Kitaoka 120a6e
      , m_name(name)
Shinya Kitaoka 120a6e
      , m_frame(frame)
Shinya Kitaoka 120a6e
      , m_fxHandle(fxHandle) {}
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  // void notify();
Shinya Kitaoka 120a6e
Shinya Kitaoka 473e70
  void undo() const override {
Shinya Kitaoka 120a6e
    if (m_wasKeyframe)
Shinya Kitaoka 120a6e
      m_param->setValue(m_frame, m_currentValue);
Shinya Kitaoka 120a6e
    else
Shinya Kitaoka 120a6e
      m_param->deleteKeyframe(m_frame);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
    if (m_fxHandle) m_fxHandle->notifyFxChanged();
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 473e70
  void redo() const override {
Shinya Kitaoka 120a6e
    if (m_wasKeyframe)
Shinya Kitaoka 120a6e
      m_param->deleteKeyframe(m_frame);
Shinya Kitaoka 120a6e
    else
Shinya Kitaoka 120a6e
      m_param->setValue(m_frame, m_currentValue);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
    if (m_fxHandle) m_fxHandle->notifyFxChanged();
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 473e70
  int getSize() const override { return sizeof(*this); }
Shinya Kitaoka 473e70
  int getHistoryType() override { return HistoryType::Fx; }
Shinya Kitaoka 473e70
  QString getHistoryString() override {
Shinya Kitaoka 120a6e
    QString str =
Shinya Kitaoka 120a6e
        QObject::tr("Modify Fx Param : %1 Key : %2  Frame %3")
Shinya Kitaoka 120a6e
            .arg((m_wasKeyframe) ? QObject::tr("Delete") : QObject::tr("Set"))
Shinya Kitaoka 120a6e
            .arg(m_name)
Shinya Kitaoka 120a6e
            .arg(QString::number(m_frame + 1));
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
    return str;
Shinya Kitaoka 120a6e
  }
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// AnimatedParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
template <class class="" paramp="" t,=""></class>
Shinya Kitaoka 120a6e
class DVAPI AnimatedParamField : public ParamField {
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 120a6e
  ParamP m_currentParam, m_actualParam;
Shinya Kitaoka 120a6e
  int m_frame;
Shinya Kitaoka 120a6e
  ParamFieldKeyToggle *m_keyToggle;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  AnimatedParamField(QWidget *parent, QString name, const ParamP ¶m,
Shinya Kitaoka 120a6e
                     bool addEmptyLabel = true)
Shinya Kitaoka 120a6e
      : ParamField(parent, name, param, addEmptyLabel), m_frame(0) {
Shinya Kitaoka 120a6e
    m_keyToggle = new ParamFieldKeyToggle(this);
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  virtual void updateField(T value) = 0;
Shinya Kitaoka 120a6e
Shinya Kitaoka 473e70
  void setParam(const TParamP ¤t, const TParamP &actual, int frame) override {
Shinya Kitaoka 120a6e
    m_currentParam = current;
Shinya Kitaoka 120a6e
    m_actualParam  = actual;
Shinya Kitaoka 120a6e
    assert(m_currentParam);
Shinya Kitaoka 120a6e
    assert(m_actualParam);
Shinya Kitaoka 120a6e
    update(frame);
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 473e70
  void update(int frame) override {
Shinya Kitaoka 120a6e
    m_frame = frame;
Shinya Kitaoka 120a6e
    if (!m_actualParam || !m_currentParam) return;
Shinya Kitaoka 120a6e
    T value = m_actualParam->getValue(m_frame);
Shinya Kitaoka 120a6e
    if (m_actualParam->isKeyframe(m_frame))
Shinya Kitaoka 120a6e
      m_currentParam->setValue(m_frame, value);
Shinya Kitaoka 120a6e
    else if (!m_actualParam.getPointer()->hasKeyframes())
Shinya Kitaoka 120a6e
      m_currentParam->setDefaultValue(value);
Shinya Kitaoka 120a6e
    updateField(value);
Shinya Kitaoka 120a6e
    updateKeyToggle();
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void updateKeyToggle() {
Shinya Kitaoka 120a6e
    T stroke  = m_actualParam->getValue(m_frame);
Shinya Kitaoka 120a6e
    T stroke2 = m_currentParam->getValue(m_frame);
Shinya Kitaoka 120a6e
    m_keyToggle->setStatus(
Shinya Kitaoka 120a6e
        m_actualParam->hasKeyframes(), m_actualParam->isKeyframe(m_frame),
Shinya Kitaoka 120a6e
        m_actualParam->getValue(m_frame) != m_currentParam->getValue(m_frame));
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /*--
Shinya Kitaoka 120a6e
   * エフェクトの位置パラメータをSwatchViewerでドラッグして編集するときに呼ばれる
Shinya Kitaoka 120a6e
   * ---*/
Shinya Kitaoka 120a6e
  void setValue(T value) {
Shinya Kitaoka 120a6e
    if (m_currentParam->getValue(m_frame) == value) return;
Shinya Kitaoka 120a6e
    m_currentParam->setValue(m_frame, value);
Shinya Kitaoka 120a6e
    /*-- キーフレーム上で操作した場合 --*/
Shinya Kitaoka 120a6e
    if (m_actualParam->isKeyframe(m_frame)) {
Shinya Kitaoka 120a6e
      m_actualParam->setValue(m_frame, value);
Shinya Kitaoka 120a6e
      emit actualParamChanged();
Shinya Kitaoka 120a6e
    }
Shinya Kitaoka 120a6e
    /*-- キーフレーム無い場合 --*/
Shinya Kitaoka 120a6e
    else if (!m_actualParam.getPointer()->hasKeyframes()) {
Shinya Kitaoka 120a6e
      m_actualParam->setDefaultValue(value);
Shinya Kitaoka 120a6e
      emit actualParamChanged();
Shinya Kitaoka 120a6e
    }
Shinya Kitaoka 120a6e
    /*-- 他にキーフレームがあって、キーフレーム以外のフレームで操作した場合 --*/
Shinya Kitaoka 120a6e
    emit currentParamChanged();
Shinya Kitaoka 120a6e
    updateKeyToggle();
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void onKeyToggle() {
Shinya Kitaoka 120a6e
    T currentVal = m_currentParam->getValue(m_frame);
Shinya Kitaoka 120a6e
    bool wasKeyFrame;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
    if (m_keyToggle->getStatus() == ParamFieldKeyToggle::KEYFRAME) {
Shinya Kitaoka 120a6e
      m_actualParam->deleteKeyframe(m_frame);
Shinya Kitaoka 120a6e
      update(m_frame);
Shinya Kitaoka 120a6e
      wasKeyFrame = true;
Shinya Kitaoka 120a6e
    } else {
Shinya Kitaoka 120a6e
      m_actualParam->setValue(m_frame, m_currentParam->getValue(m_frame));
Shinya Kitaoka 120a6e
      updateKeyToggle();
Shinya Kitaoka 120a6e
      wasKeyFrame = false;
Shinya Kitaoka 120a6e
    }
Shinya Kitaoka 120a6e
    emit actualParamChanged();
Shinya Kitaoka 120a6e
    emit paramKeyToggle();
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
    TUndoManager::manager()->add(new FxSettingsKeyToggleUndo<t, paramp="">(</t,>
Shinya Kitaoka 120a6e
        m_actualParam, currentVal, wasKeyFrame, m_interfaceName, m_frame,
Shinya Kitaoka 120a6e
        ParamField::m_fxHandleStat));
Shinya Kitaoka 120a6e
  }
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// MeasuredDoubleParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI MeasuredDoubleParamField
Shinya Kitaoka 120a6e
    : public AnimatedParamField<double, tdoubleparamp=""> {</double,>
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  DVGui::MeasuredDoubleField *m_measuredDoubleField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  MeasuredDoubleParamField(QWidget *parent, QString name,
Shinya Kitaoka 120a6e
                           const TDoubleParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void updateField(double value) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(260, 28); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChange(bool);
Shinya Kitaoka 120a6e
  void onKeyToggled();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// RangeParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI MeasuredRangeParamField
Shinya Kitaoka 120a6e
    : public AnimatedParamField<doublepair, trangeparamp=""> {</doublepair,>
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  DVGui::MeasuredDoublePairField *m_valueField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  MeasuredRangeParamField(QWidget *parent, QString name,
Shinya Kitaoka 120a6e
                          const TRangeParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void updateField(DoublePair value) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(300, 20); }
Shinya Kitaoka 473e70
  void setPrecision(int precision) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChange(bool);
Shinya Kitaoka 120a6e
  void onKeyToggled();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// PointParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI PointParamField : public AnimatedParamField<tpointd, tpointparamp=""> {</tpointd,>
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  DVGui::MeasuredDoubleField *m_xFld, *m_yFld;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  PointParamField(QWidget *parent, QString name, const TPointParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setPointValue(const TPointD &p) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void updateField(TPointD value) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(270, 28); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChange(bool);
Shinya Kitaoka 120a6e
  void onKeyToggled();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// PixelParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI PixelParamField
Shinya Kitaoka 120a6e
    : public AnimatedParamField<tpixel32, tpixelparamp=""> {</tpixel32,>
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  DVGui::ColorField *m_colorField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  PixelParamField(QWidget *parent, QString name, const TPixelParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void updateField(TPixel32 value) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(360, 40); }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  /*-- RgbLinkButtonの実行のため --*/
Shinya Kitaoka 120a6e
  TPixel32 getColor();
Shinya Kitaoka 120a6e
  void setColor(TPixel32 value);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 120a6e
  void setParams();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChange(const TPixel32 &value, bool isDragging);
Shinya Kitaoka 120a6e
  void onKeyToggled();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// RGB Link Button
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI RgbLinkButton : public QPushButton {
Shinya Kitaoka 120a6e
  Q_OBJECT
Shinya Kitaoka 120a6e
  PixelParamField *m_field1, *m_field2;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  RgbLinkButton(QString str, QWidget *parent, PixelParamField *field1,
Shinya Kitaoka 120a6e
                PixelParamField *field2);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onButtonClicked();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// SpectrumParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI SpectrumParamField
Shinya Kitaoka 120a6e
    : public AnimatedParamField<tspectrum, tspectrumparamp=""> {</tspectrum,>
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  DVGui::SpectrumField *m_spectrumField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  SpectrumParamField(QWidget *parent, QString name,
Shinya Kitaoka 120a6e
                     const TSpectrumParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void updateField(TSpectrum value) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setParams();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(390, 60); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onKeyToggled();
Shinya Kitaoka 120a6e
  void onChange(bool isDragging);
Shinya Kitaoka 120a6e
  void onKeyAdded(int keyIndex);
Shinya Kitaoka 120a6e
  void onKeyRemoved(int keyIndex);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// EnumParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class EnumParamField : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TIntEnumParamP m_currentParam, m_actualParam;
Shinya Kitaoka 120a6e
  QComboBox *m_om;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  EnumParamField(QWidget *parent, QString name, const TIntEnumParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(const TParamP ¤t, const TParamP &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(150, 20); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChange(const QString &str);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// BoolParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI BoolParamField : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TBoolParamP m_currentParam, m_actualParam;
Shinya Kitaoka 120a6e
  DVGui::CheckBox *m_checkBox;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  BoolParamField(QWidget *parent, QString name, const TBoolParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(const TParamP ¤t, const TParamP &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(20, 10); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onToggled(bool checked);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  /*-- visibleToggle UIで使用する --*/
Toshihiro Shimizu 890ddd
signals:
Shinya Kitaoka 120a6e
  void toggled(bool);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// IntParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI IntParamField : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TIntParamP m_currentParam, m_actualParam;
Shinya Kitaoka 120a6e
  DVGui::IntField *m_intField;
Shinya Kitaoka 120a6e
  typedef IntParamField This;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  IntParamField(QWidget *parent = 0, QString name = 0,
Shinya Kitaoka 120a6e
                const TIntParamP ¶m = 0);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(const TParamP ¤t, const TParamP &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(50, 28); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChange(bool isDragging = false);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// StringParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI StringParamField : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TStringParamP m_currentParam, m_actualParam;
Shinya Kitaoka 120a6e
  DVGui::LineEdit *m_textFld;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  StringParamField(QWidget *parent, QString name, const TStringParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(const TParamP ¤t, const TParamP &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(100, 20); }
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChange();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// ToneCurveParamField
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI ToneCurveParamField
Shinya Kitaoka 120a6e
    : public AnimatedParamField<const qlist<tpointd="">, TToneCurveParamP> {</const>
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  DVGui::ToneCurveField *m_toneCurveField;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  ToneCurveParamField(QWidget *parent, QString name,
Shinya Kitaoka 120a6e
                      const TToneCurveParamP ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void updateField(const QList<tpointd> value) override;</tpointd>
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setParams();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QSize getPreferedSize() override { return QSize(400, 380); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void onChannelChanged(int);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void onChange(bool isDragging);
Shinya Kitaoka 120a6e
  void onPointAdded(int index);
Shinya Kitaoka 120a6e
  void onPointRemoved(int index);
Shinya Kitaoka 120a6e
  void onIsLinearChanged(bool);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void onKeyToggled();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace component {
Shinya Kitaoka 120a6e
class DVAPI LineEdit_double : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;  // could not use templates for Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TDoubleParamP current_;
Shinya Kitaoka 120a6e
  TDoubleParamP actual_;
Shinya Kitaoka 120a6e
  QLineEdit *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  LineEdit_double(QWidget *parent, QString name, TDoubleParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(QString const &text);  // could not use MACROs for slots
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI Slider_double : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TDoubleParamP current_;
Shinya Kitaoka 120a6e
  TDoubleParamP actual_;
Shinya Kitaoka 120a6e
  QSlider *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  Slider_double(QWidget *parent, QString name, TDoubleParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(int);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI SpinBox_double : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TDoubleParamP current_;
Shinya Kitaoka 120a6e
  TDoubleParamP actual_;
Shinya Kitaoka 120a6e
  QDoubleSpinBox *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  SpinBox_double(QWidget *parent, QString name, TDoubleParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(double);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace component {
Shinya Kitaoka 120a6e
class DVAPI LineEdit_int : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TIntParamP current_;
Shinya Kitaoka 120a6e
  TIntParamP actual_;
Shinya Kitaoka 120a6e
  QLineEdit *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  LineEdit_int(QWidget *parent, QString name, TIntParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(QString const &text);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI Slider_int : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TIntParamP current_;
Shinya Kitaoka 120a6e
  TIntParamP actual_;
Shinya Kitaoka 120a6e
  QSlider *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  Slider_int(QWidget *parent, QString name, TIntParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(int);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI SpinBox_int : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TIntParamP current_;
Shinya Kitaoka 120a6e
  TIntParamP actual_;
Shinya Kitaoka 120a6e
  QSpinBox *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  SpinBox_int(QWidget *parent, QString name, TIntParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(int);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
}  // end of namespace component
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace component {
Shinya Kitaoka 120a6e
class DVAPI CheckBox_bool : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TBoolParamP current_;
Shinya Kitaoka 120a6e
  TBoolParamP actual_;
Shinya Kitaoka 120a6e
  QCheckBox *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  CheckBox_bool(QWidget *parent, QString name, TBoolParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(int);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
}  // end of namespace component
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace component {
Shinya Kitaoka 120a6e
class DVAPI RadioButton_enum : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TIntEnumParamP current_;
Shinya Kitaoka 120a6e
  TIntEnumParamP actual_;
Shinya Kitaoka 120a6e
  QButtonGroup *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  RadioButton_enum(QWidget *parent, QString name, TIntEnumParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(int);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI ComboBox_enum : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TIntEnumParamP current_;
Shinya Kitaoka 120a6e
  TIntEnumParamP actual_;
Shinya Kitaoka 120a6e
  QComboBox *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  ComboBox_enum(QWidget *parent, QString name, TIntEnumParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(int);
Toshihiro Shimizu 890ddd
};
Shinya Kitaoka 120a6e
}  // end of namespace component
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace component {
Shinya Kitaoka 120a6e
class DVAPI LineEdit_string : public ParamField {
Shinya Kitaoka 120a6e
  Q_OBJECT;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int frame_;
Shinya Kitaoka 120a6e
  TStringParamP current_;
Shinya Kitaoka 120a6e
  TStringParamP actual_;
Shinya Kitaoka 120a6e
  QLineEdit *value_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  LineEdit_string(QWidget *parent, QString name, TStringParamP const ¶m);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void setParam(TParamP const ¤t, TParamP const &actual, int frame) override;
Shinya Kitaoka 473e70
  void update(int frame) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  void update_value(QString const &);
Toshihiro Shimizu 890ddd
};
Shinya Kitaoka 120a6e
}  // end of namespace component
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifdef __cplusplus
Toshihiro Shimizu 890ddd
extern "C" {
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#define TOONZ_DECLARE_MAKE_WIDGET(NAME)                                        \
Shinya Kitaoka 120a6e
  ParamField *NAME(QWidget *parent, QString name, TParamP const ¶m)
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TOONZ_DECLARE_MAKE_WIDGET(make_lineedit);
Toshihiro Shimizu 890ddd
TOONZ_DECLARE_MAKE_WIDGET(make_slider);
Toshihiro Shimizu 890ddd
TOONZ_DECLARE_MAKE_WIDGET(make_spinbox);
Toshihiro Shimizu 890ddd
TOONZ_DECLARE_MAKE_WIDGET(make_checkbox);
Toshihiro Shimizu 890ddd
TOONZ_DECLARE_MAKE_WIDGET(make_radiobutton);
Toshihiro Shimizu 890ddd
TOONZ_DECLARE_MAKE_WIDGET(make_combobox);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifdef __cplusplus
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#endif  // PARAMFIELD_H