QGroupBox* GuiPreferences::createUpdateBtnsGrp(void)
{
  QGroupBox* bx(new QGroupBox(tr("Update Actions")));
  QHBoxLayout* lyt(new QHBoxLayout());
  lyt->addWidget(m_applySettingBtn);
  lyt->addWidget(m_addAsSourceBtn);
  lyt->addWidget(m_deleteSourceBtn);
  bx->setLayout(lyt);
  return bx;
}
QGroupBox* GuiPreferences::createCommonGrp(void)
{
  QHBoxLayout* sourceBtnsLyt(new QHBoxLayout());
  sourceBtnsLyt = new QHBoxLayout();
  sourceBtnsLyt->setContentsMargins(0,0,0,0);
  sourceBtnsLyt->setMargin(0);
  for (int i=0; i<MAX_SRCS; ++i)
  {
    QRadioButton* btn(new QRadioButton(QString::number(i)));
    btn->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);

    m_sourceBtns.push_back(btn);
    connect(btn, SIGNAL(clicked()), this, SLOT(handleSourceSelected()));
    sourceBtnsLyt->addWidget(btn);
  }
  int line =0;
  QGridLayout* lyt(new QGridLayout());

  lyt->addWidget(new QLabel(tr("Sources")), line, 0),
      lyt->addLayout(sourceBtnsLyt, line, 1, 1, 1, Qt::AlignLeft);

  lyt->addWidget(new QLabel(tr("Monitor Web URL*")), ++line, 0),
      lyt->addWidget(m_monitorUrlField, line, 1),
      m_monitorTypeField->addItem(tr("Select a monitor type")),
      m_monitorTypeField->addItems(ngrt4n::sourceTypes()),
      lyt->addWidget(m_monitorTypeField, line, 2);

  lyt->addWidget(m_verifySslPeerChkBx, ++line, 0, 1, 3, Qt::AlignCenter);

  lyt->addWidget(new QLabel(tr("Auth String")), ++line, 0),
      lyt->addWidget(m_serverPassField, line, 1),
      lyt->addWidget(m_showAuthInfoChkbx, line, 2);

  lyt->addWidget(new QLabel(tr("Update Interval")), ++line, 0),
      m_updateIntervalField->setMinimum(5),
      m_updateIntervalField->setMaximum(1200),
      lyt->addWidget(m_updateIntervalField, line, 1),
      lyt->addWidget(new QLabel(tr("seconds")), line, 2);

  lyt->addWidget(new QLabel(tr("Language")), ++line, 0),
      lyt->addWidget(m_languageBoxField);

  lyt->setColumnStretch(0, 0);
  lyt->setColumnStretch(1, 1);

  QGroupBox* bx(new QGroupBox(tr("Common Settings")));
  bx->setFlat(false);
  bx->setLayout(lyt);
  bx->setAlignment(Qt::AlignLeft);
  return bx;
}
QGroupBox* GuiPreferences::createScktGrp(void)
{
  QGroupBox* bx(new QGroupBox(tr("Livestatus/Ngrt4nd Endpoint")));
  QHBoxLayout* lyt(new QHBoxLayout());
  lyt->addWidget(new QLabel(tr("Server Address")));
  lyt->addWidget(m_sockAddrField);
  lyt->addWidget(new QLabel(tr("Port")), Qt::AlignRight);
  lyt->addWidget(m_sockPortField);
  lyt->addWidget(m_useNgrt4ndChkbx);
  lyt->setStretch(0, 0);
  lyt->setStretch(1, 1);
  lyt->setStretch(2, 0);
  lyt->setStretch(3, 0);
  lyt->setStretch(4, 0);
  bx->setFlat(false);
  lyt->setMargin(0);
  bx->setLayout(lyt);
  bx->setAlignment(Qt::AlignLeft);
  return bx;
}
Exemple #4
0
	void runGui(OrbGui &gui)
	{
		// GUI state
		vec2i wndSize = gui.input->getWindowSize();

		// set up the default projection & modelview matrices
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		glOrtho(0.0, (double)wndSize.x, (double)wndSize.y, 0.0, 10.0, -10.0);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		
		ColumnLayout lyt(FixedLayout(10, 10, 200, wndSize.y), 10, 10, 10, 10, 3);

		Label("Ikarus").run(gui, lyt);

		Spacer(vec2i(0, 10)).run(gui, lyt);

		Label("Skeleton:").run(gui, lyt);
		ComboBox skelSel("skeleton-sel", WidgetID(curSkel));
		for (int i = 0; i < (int)skeletons.size(); ++i)
			skelSel.add(WidgetID(i), skeletons[i].name);
		curSkel = skelSel.run(gui, lyt).getIndex();

		if (Button("reload-btn", "Reload").run(gui, lyt))
			skeletons.reset_at(curSkel, new SkeletonItem(skeletons[curSkel].fname, skeletons[curSkel].name));
		
		SkeletonItem &skel = skeletons[curSkel];

		Spacer(vec2i(0, 10)).run(gui, lyt);

		if (Button("reset-btn", "Reset Pose").run(gui, lyt))
		{
			skel.solver->resetPose();
			skel.targetPos = skel.solver->getEffectorPos();
			targetSpeed = 0.0;
		}

		if (Button("reset-all-btn", "Reset All").run(gui, lyt))
		{
			skel.solver->resetAll();
			skel.targetPos = skel.solver->getEffectorPos();
			targetSpeed = 0.0;
		}

		// the grid is always shown
		// (no point turning it off really)
		//showGrid = CheckBox("show-grid-chk", "Show grid", showGrid).run(gui, lyt);
		showJointBasis = CheckBox("show-joint-basis-chk", "Show joint basis vectors", showJointBasis).run(gui, lyt);
		showConstraints = CheckBox("show-constraints-chk", "Show joint constraints", showConstraints).run(gui, lyt);

		ikMode = CheckBox("ik-mode-chk", "IK Mode", ikMode).run(gui, lyt);
		ikEnabled = CheckBox("ik-enabled-chk", "IK Enabled", ikEnabled, ikMode).run(gui, lyt);
		bool constraintsOn = CheckBox("ik-constrained-chk", "Enable Constraints", skel.solver->areConstraintsEnabled(), ikMode).run(gui, lyt);
		skel.solver->enableConstraints(constraintsOn);

		if (Button("solve-btn", "Solve", ikMode && !ikEnabled).run(gui, lyt))
			skel.solver->solveIk(30);

		if (Button("step-btn", "Step IK", ikMode && !ikEnabled).run(gui, lyt))
			skel.solver->iterateIk();

		if (Button("constraint-btn", "Apply Constraints", ikMode).run(gui, lyt))
		{
			skel.solver->applyAllConstraints();
			skel.targetPos = skel.solver->getEffectorPos();
			targetSpeed = 0.0;
		}

		Label("Root bone:").run(gui, lyt);
		ComboBox rootSel("root-sel", WidgetID(&skel.solver->getRootBone()));
		for (int i = 0; i < skel.skeleton.numBones(); ++i)
		{
			const Bone &b = skel.skeleton[i];
			if (! b.isEffector())
				rootSel.add(WidgetID(&b), b.name);
		}
		const Bone *newRootBone = rootSel.run(gui, lyt).getData<const Bone>();
		skel.solver->setRootBone(*newRootBone);

		Label("Effector:").run(gui, lyt);
		ComboBox effectorSel("effector-sel", WidgetID(&skel.solver->getEffector()));
		for (int i = 0; i < skel.skeleton.numBones(); ++i)
		{
			const Bone &b = skel.skeleton[i];
			if (b.isEffector())
				effectorSel.add(WidgetID(&b), b.name);
		}
		const Bone *newEffector = effectorSel.run(gui, lyt).getData<const Bone>();
		if (newEffector != &skel.solver->getEffector())
		{
			skel.solver->setEffector(*newEffector);
			skel.solver->setTargetPos(skel.solver->getEffectorPos());
			skel.targetPos = skel.solver->getEffectorPos();
		}

		int leftRightSplit = 250;
		int topBottomSplit = wndSize.y - 200;
		int a = leftRightSplit + (wndSize.x - leftRightSplit) / 3;
		int b = leftRightSplit + ((wndSize.x - leftRightSplit)*2) / 3;

		FixedLayout mainViewLyt(leftRightSplit, 0, wndSize.x - leftRightSplit, topBottomSplit);
		FixedLayout ortho0Lyt(leftRightSplit, topBottomSplit, a - leftRightSplit, wndSize.y - topBottomSplit);
		FixedLayout ortho1Lyt(a, topBottomSplit, b - a, wndSize.y - topBottomSplit);
		FixedLayout ortho2Lyt(b, topBottomSplit, wndSize.x - b, wndSize.y - topBottomSplit);

		if (ikMode)
		{
			IkSolverDisplay("displayP", &camPerspective, skel.solver.get(), showJointBasis, showConstraints, showGrid ? gridList : 0).run(gui, mainViewLyt);
			IkSolverDisplay("displayX", &camX, skel.solver.get(), showJointBasis, showConstraints).run(gui, ortho0Lyt);
			IkSolverDisplay("displayY", &camY, skel.solver.get(), showJointBasis, showConstraints).run(gui, ortho1Lyt);
			IkSolverDisplay("displayZ", &camZ, skel.solver.get(), showJointBasis, showConstraints).run(gui, ortho2Lyt);
		}
		else
		{
			SkeletonDisplay("displayP", &camPerspective, &skel.skeleton, showJointBasis, showConstraints, showGrid ? gridList : 0).run(gui, mainViewLyt);
			SkeletonDisplay("displayX", &camX, &skel.skeleton, showJointBasis, showConstraints).run(gui, ortho0Lyt);
			SkeletonDisplay("displayY", &camY, &skel.skeleton, showJointBasis, showConstraints).run(gui, ortho1Lyt);
			SkeletonDisplay("displayZ", &camZ, &skel.skeleton, showJointBasis, showConstraints).run(gui, ortho2Lyt);
		}
	}