Пример #1
0
void ViewportView::openAddMenu(bool view_commands)
{
    QMenu* m = new QMenu(this);

    if (view_commands && !angle_locked)
    {
        auto sub = new QMenu("View");

        connect(sub->addAction("Top"), &QAction::triggered,
                [=]{ this->spinTo(0, 0); });
        connect(sub->addAction("Bottom"), &QAction::triggered,
                [=]{ this->spinTo(0, -M_PI); });
        connect(sub->addAction("Left"), &QAction::triggered,
                [=]{ this->spinTo(M_PI/2, -M_PI/2); });
        connect(sub->addAction("Right"), &QAction::triggered,
                [=]{ this->spinTo(-M_PI/2, -M_PI/2); });
        connect(sub->addAction("Front"), &QAction::triggered,
                [=]{ this->spinTo(0, -M_PI/2); });
        connect(sub->addAction("Back"), &QAction::triggered,
                [=]{ this->spinTo(-M_PI, -M_PI/2); });

        m->addMenu(sub);
        m->addSeparator();
    }

    populateNodeMenu(m, view_scene->getGraph());

    m->exec(QCursor::pos());
    m->deleteLater();
}
Пример #2
0
void MainWindow::populateMenu(QMenu* menu, bool recenter, Viewport* v)
{
    // Hard-code important menu names to set their order.
    for (auto c : {"2D", "3D", "2D → 3D", "3D → 2D", "CSG"})
        menu->addMenu(c);
    menu->addSeparator();

    populateNodeMenu(menu, recenter, v);

    menu->addSeparator();

    addNodeToMenu(QStringList(), "Script", menu, recenter,
                [](Graph *r){ return new Node("s*",
                    "import fab\n\n"
                    "title('script')\n"
                    "input('r', float, 1)\n"
                    "output('c', fab.shapes.circle(0, 0, r))",
                    r); }, v);
}