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; }
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); } }