Store ToolBox Transform fields as members.
This commit is contained in:
		
							parent
							
								
									3d4df2eb76
								
							
						
					
					
						commit
						dc94d0a130
					
				@ -47,6 +47,42 @@ void ToolBox::removePages()
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ToolBox::createTransformPanel(const Object * object)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  auto rowLayout = transformPanel_.layout = new QHBoxLayout;
 | 
				
			||||||
 | 
					  transformPanel_.spinBox.label = new QLabel(tr("Translation:"));
 | 
				
			||||||
 | 
					  rowLayout->addWidget(transformPanel_.spinBox.label);
 | 
				
			||||||
 | 
					  int minWidth = 75;
 | 
				
			||||||
 | 
					  for (size_t i = 0; i < 3; i++) {
 | 
				
			||||||
 | 
					    QDoubleSpinBox * spinBox;
 | 
				
			||||||
 | 
					    if (i == 0) {
 | 
				
			||||||
 | 
					      spinBox = transformPanel_.spinBox.x = new QDoubleSpinBox;
 | 
				
			||||||
 | 
					      connect(spinBox,
 | 
				
			||||||
 | 
					              &QDoubleSpinBox::valueChanged,
 | 
				
			||||||
 | 
					              object,
 | 
				
			||||||
 | 
					              &Object::setTranslationX);
 | 
				
			||||||
 | 
					    } else if (i == 1) {
 | 
				
			||||||
 | 
					      spinBox = transformPanel_.spinBox.y = new QDoubleSpinBox;
 | 
				
			||||||
 | 
					      connect(spinBox,
 | 
				
			||||||
 | 
					              &QDoubleSpinBox::valueChanged,
 | 
				
			||||||
 | 
					              object,
 | 
				
			||||||
 | 
					              &Object::setTranslationY);
 | 
				
			||||||
 | 
					    } else if (i == 2) {
 | 
				
			||||||
 | 
					      spinBox = transformPanel_.spinBox.z = new QDoubleSpinBox;
 | 
				
			||||||
 | 
					      connect(spinBox,
 | 
				
			||||||
 | 
					              &QDoubleSpinBox::valueChanged,
 | 
				
			||||||
 | 
					              object,
 | 
				
			||||||
 | 
					              &Object::setTranslationZ);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    spinBox->setMinimum(std::numeric_limits<double>::lowest());
 | 
				
			||||||
 | 
					    spinBox->setSingleStep(0.1);
 | 
				
			||||||
 | 
					    spinBox->setValue(object->getTransform().getTranslation()[i]);
 | 
				
			||||||
 | 
					    spinBox->setFixedWidth(minWidth);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rowLayout->addWidget(spinBox);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ToolBox::createPageProperties(const Object * object)
 | 
					void ToolBox::createPageProperties(const Object * object)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  auto transform = object->getTransform();
 | 
					  auto transform = object->getTransform();
 | 
				
			||||||
@ -55,43 +91,18 @@ void ToolBox::createPageProperties(const Object * object)
 | 
				
			|||||||
  ui->toolBox->addItem(widget, "Properties");
 | 
					  ui->toolBox->addItem(widget, "Properties");
 | 
				
			||||||
  ui->toolBox->setCurrentWidget(widget);
 | 
					  ui->toolBox->setCurrentWidget(widget);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  auto * layout = new QFormLayout;
 | 
					  formLayout_ = new QFormLayout;
 | 
				
			||||||
  layout->addRow(new QLabel(tr("Name:")), new QLabel(object->getName()));
 | 
					  formLayout_->addRow(new QLabel(tr("Name:")), new QLabel(object->getName()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  layout->addRow(new QLabel(tr("Type:")),
 | 
					  formLayout_->addRow(
 | 
				
			||||||
 | 
					      new QLabel(tr("Type:")),
 | 
				
			||||||
      new QLabel(type == Object::Type::QTK_MESH ? "Mesh" : "Model"));
 | 
					      new QLabel(type == Object::Type::QTK_MESH ? "Mesh" : "Model"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  auto rowLayout = new QHBoxLayout;
 | 
					  createTransformPanel(object);
 | 
				
			||||||
  rowLayout->addWidget(new QLabel(tr("Translation:")));
 | 
					  formLayout_->addRow(transformPanel_.layout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int minWidth = 75;
 | 
					  int minWidth = 75;
 | 
				
			||||||
  for (size_t i = 0; i < 3; i++) {
 | 
					  auto rowLayout = new QHBoxLayout;
 | 
				
			||||||
    auto spinBox = new QDoubleSpinBox;
 | 
					 | 
				
			||||||
    spinBox->setMinimum(std::numeric_limits<double>::lowest());
 | 
					 | 
				
			||||||
    spinBox->setSingleStep(0.1);
 | 
					 | 
				
			||||||
    spinBox->setValue(transform.getTranslation()[i]);
 | 
					 | 
				
			||||||
    spinBox->setFixedWidth(minWidth);
 | 
					 | 
				
			||||||
    rowLayout->addWidget(spinBox);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (i == 0) {
 | 
					 | 
				
			||||||
      connect(spinBox,
 | 
					 | 
				
			||||||
              &QDoubleSpinBox::valueChanged,
 | 
					 | 
				
			||||||
              object,
 | 
					 | 
				
			||||||
              &Object::setTranslationX);
 | 
					 | 
				
			||||||
    } else if (i == 1) {
 | 
					 | 
				
			||||||
      connect(spinBox,
 | 
					 | 
				
			||||||
              &QDoubleSpinBox::valueChanged,
 | 
					 | 
				
			||||||
              object,
 | 
					 | 
				
			||||||
              &Object::setTranslationY);
 | 
					 | 
				
			||||||
    } else if (i == 2) {
 | 
					 | 
				
			||||||
      connect(spinBox,
 | 
					 | 
				
			||||||
              &QDoubleSpinBox::valueChanged,
 | 
					 | 
				
			||||||
              object,
 | 
					 | 
				
			||||||
              &Object::setTranslationZ);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  layout->addRow(rowLayout);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  rowLayout = new QHBoxLayout;
 | 
					 | 
				
			||||||
  rowLayout->addWidget(new QLabel(tr("Scale:")));
 | 
					  rowLayout->addWidget(new QLabel(tr("Scale:")));
 | 
				
			||||||
  for (size_t i = 0; i < 3; i++) {
 | 
					  for (size_t i = 0; i < 3; i++) {
 | 
				
			||||||
    auto spinBox = new QDoubleSpinBox;
 | 
					    auto spinBox = new QDoubleSpinBox;
 | 
				
			||||||
@ -112,8 +123,8 @@ void ToolBox::createPageProperties(const Object * object)
 | 
				
			|||||||
          spinBox, &QDoubleSpinBox::valueChanged, object, &Object::setScaleZ);
 | 
					          spinBox, &QDoubleSpinBox::valueChanged, object, &Object::setScaleZ);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  layout->addRow(rowLayout);
 | 
					  formLayout_->addRow(rowLayout);
 | 
				
			||||||
  widget->setLayout(layout);
 | 
					  widget->setLayout(formLayout_);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ToolBox::createPageShader(const Object * object)
 | 
					void ToolBox::createPageShader(const Object * object)
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,10 @@
 | 
				
			|||||||
#include <QDesignerExportWidget>
 | 
					#include <QDesignerExportWidget>
 | 
				
			||||||
#include <QDockWidget>
 | 
					#include <QDockWidget>
 | 
				
			||||||
#include <QDoubleSpinBox>
 | 
					#include <QDoubleSpinBox>
 | 
				
			||||||
 | 
					#include <QFormLayout>
 | 
				
			||||||
#include <QGroupBox>
 | 
					#include <QGroupBox>
 | 
				
			||||||
 | 
					#include <QHBoxLayout>
 | 
				
			||||||
 | 
					#include <QLabel>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "qtk/scene.h"
 | 
					#include "qtk/scene.h"
 | 
				
			||||||
@ -40,6 +43,13 @@ namespace Qtk
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      void removePages();
 | 
					      void removePages();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Creates the transform panel and controls.
 | 
				
			||||||
 | 
					       *
 | 
				
			||||||
 | 
					       * @param object The Qtk::Object associated with this panel.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
 | 
					      void createTransformPanel(const Object * object);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      void createPageProperties(const Object * object);
 | 
					      void createPageProperties(const Object * object);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      void createPageShader(const Object * object);
 | 
					      void createPageShader(const Object * object);
 | 
				
			||||||
@ -52,6 +62,31 @@ namespace Qtk
 | 
				
			|||||||
       * Private Members
 | 
					       * Private Members
 | 
				
			||||||
       ************************************************************************/
 | 
					       ************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /// Spinbox with 3 fields and label.
 | 
				
			||||||
 | 
					      struct SpinBox3D {
 | 
				
			||||||
 | 
					          QLabel * label;
 | 
				
			||||||
 | 
					          QDoubleSpinBox * x;
 | 
				
			||||||
 | 
					          QDoubleSpinBox * y;
 | 
				
			||||||
 | 
					          QDoubleSpinBox * z;
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /// Transform controls and layout.
 | 
				
			||||||
 | 
					      struct TransformPanel {
 | 
				
			||||||
 | 
					          QHBoxLayout * layout;
 | 
				
			||||||
 | 
					          SpinBox3D spinBox;
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      TransformPanel transformPanel_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /// Scale controls and layout.
 | 
				
			||||||
 | 
					      struct ScalePanel {
 | 
				
			||||||
 | 
					          QHBoxLayout * layout;
 | 
				
			||||||
 | 
					          SpinBox3D spinBox;
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      ScalePanel scalePanel_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /// The root layout for the primary widget.
 | 
				
			||||||
 | 
					      QFormLayout * formLayout_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Ui::ToolBox * ui;
 | 
					      Ui::ToolBox * ui;
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}  // namespace Qtk
 | 
					}  // namespace Qtk
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user