void PythonGroupCommand::languageChange() { if (!_pcAction) return; applyCommandData(this->getName(), _pcAction); Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction); QList<QAction*> a = pcAction->actions(); for (QList<QAction*>::iterator it = a.begin(); it != a.end(); ++it) { Gui::Command* cmd = rcCmdMgr.getCommandByName((*it)->property("CommandName").toByteArray()); // Python command use getName as context if (dynamic_cast<PythonCommand*>(cmd)) { (*it)->setIcon(Gui::BitmapFactory().iconFromTheme(cmd->getPixmap())); (*it)->setText(QApplication::translate(cmd->getName(), cmd->getMenuText())); (*it)->setToolTip(QApplication::translate(cmd->getName(), cmd->getToolTipText())); (*it)->setStatusTip(QApplication::translate(cmd->getName(), cmd->getStatusTip())); } else if (cmd) { (*it)->setIcon(Gui::BitmapFactory().iconFromTheme(cmd->getPixmap())); (*it)->setText(QApplication::translate(cmd->className(), cmd->getMenuText())); (*it)->setToolTip(QApplication::translate(cmd->className(), cmd->getToolTipText())); (*it)->setStatusTip(QApplication::translate(cmd->className(), cmd->getStatusTip())); } } }
void PythonGroupCommand::activated(int iMsg) { try { Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction); QList<QAction*> a = pcAction->actions(); assert(iMsg < a.size()); QAction* act = a[iMsg]; Base::PyGILStateLocker lock; Py::Object cmd(_pcPyCommand); if (cmd.hasAttr("Activated")) { Py::Callable call(cmd.getAttr("Activated")); Py::Tuple args(1); args.setItem(0, Py::Int(iMsg)); Py::Object ret = call.apply(args); } // If the command group doesn't implement the 'Activated' method then invoke the command directly else { Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); rcCmdMgr.runCommandByName(act->property("CommandName").toByteArray()); } // Since the default icon is reset when enabing/disabling the command we have // to explicitly set the icon of the used command. pcAction->setIcon(a[iMsg]->icon()); } catch(Py::Exception&) { Base::PyGILStateLocker lock; Base::PyException e; Base::Console().Error("Running the Python command '%s' failed:\n%s\n%s", sName, e.getStackTrace().c_str(), e.what()); } }
void CmdSketcherCompBSplineShowHideGeometryInformation::languageChange() { Command::languageChange(); if (!_pcAction) return; Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction); QList<QAction*> a = pcAction->actions(); QAction* c1 = a[0]; c1->setText(QApplication::translate("CmdSketcherCompBSplineShowHideGeometryInformation","Show/Hide B-spline degree")); c1->setToolTip(QApplication::translate("Sketcher_BSplineDegree","Switches between showing and hiding the degree for all B-splines")); c1->setStatusTip(QApplication::translate("Sketcher_BSplineDegree","Switches between showing and hiding the degree for all B-splines")); QAction* c2 = a[1]; c2->setText(QApplication::translate("CmdSketcherCompBSplineShowHideGeometryInformation","Show/Hide B-spline control polygon")); c2->setToolTip(QApplication::translate("Sketcher_BSplinePolygon","Switches between showing and hiding the control polygons for all B-splines")); c2->setStatusTip(QApplication::translate("Sketcher_BSplinePolygon","Switches between showing and hiding the control polygons for all B-splines")); QAction* c3 = a[2]; c3->setText(QApplication::translate("CmdSketcherCompBSplineShowHideGeometryInformation","Show/Hide B-spline curvature comb")); c3->setToolTip(QApplication::translate("Sketcher_BSplineComb","Switches between showing and hiding the curvature comb for all B-splines")); c3->setStatusTip(QApplication::translate("Sketcher_BSplineComb","Switches between showing and hiding the curvature comb for all B-splines")); QAction* c4 = a[3]; c4->setText(QApplication::translate("CmdSketcherCompBSplineShowHideGeometryInformation","Show/Hide B-spline knot multiplicity")); c4->setToolTip(QApplication::translate("Sketcher_BSplineKnotMultiplicity","Switches between showing and hiding the knot multiplicity for all B-splines")); c4->setStatusTip(QApplication::translate("Sketcher_BSplineKnotMultiplicity","Switches between showing and hiding the knot multiplicity for all B-splines")); }
void CmdDrawingNewPage::languageChange() { Command::languageChange(); if (!_pcAction) return; Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction); QList<QAction*> a = pcAction->actions(); for (QList<QAction*>::iterator it = a.begin(); it != a.end(); ++it) { QString paper = (*it)->property("TemplatePaper").toString(); int id = (*it)->property("TemplateId").toInt(); QString orientation = (*it)->property("TemplateOrientation").toString(); if (orientation.compare(QLatin1String("landscape"), Qt::CaseInsensitive) == 0) orientation = QCoreApplication::translate("Drawing_NewPage", "Landscape", 0, QCoreApplication::CodecForTr); else if (orientation.compare(QLatin1String("portrait"), Qt::CaseInsensitive) == 0) orientation = QCoreApplication::translate("Drawing_NewPage", "Portrait", 0, QCoreApplication::CodecForTr); (*it)->setText(QCoreApplication::translate( "Drawing_NewPage", "%1%2 %3", 0, QCoreApplication::CodecForTr) .arg(paper) .arg(id) .arg(orientation)); (*it)->setToolTip(QCoreApplication::translate( "Drawing_NewPage", "Insert new %1%2 %3 drawing", 0, QCoreApplication::CodecForTr) .arg(paper) .arg(id) .arg(orientation)); } }
void CmdSketcherCompBSplineShowHideGeometryInformation::activated(int iMsg) { Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); Gui::Command * cmd; if (iMsg==0) cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineDegree"); else if (iMsg==1) cmd = rcCmdMgr.getCommandByName("Sketcher_BSplinePolygon"); else if (iMsg==2) cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineComb"); else if (iMsg==3) cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineKnotMultiplicity"); else return; cmd->invoke(0); // Since the default icon is reset when enabing/disabling the command we have // to explicitly set the icon of the used command. Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction); QList<QAction*> a = pcAction->actions(); assert(iMsg < a.size()); pcAction->setIcon(a[iMsg]->icon()); }
Gui::Action * CmdRaytracingNewLuxProject::createAction(void) { Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow()); pcAction->setDropDownMenu(true); applyCommandData(this->className(), pcAction); QAction* defaultAction = 0; int defaultId = 0; std::string path = App::Application::getResourceDir(); path += "Mod/Raytracing/Templates/"; QDir dir(QString::fromUtf8(path.c_str()), QString::fromAscii("*.lxs")); for (unsigned int i=0; i<dir.count(); i++ ) { QFileInfo fi(dir[i]); QAction* a = pcAction->addAction(fi.baseName()); a->setIcon(Gui::BitmapFactory().pixmap("Raytrace_Lux")); a->setProperty("Template", dir.absoluteFilePath(dir[i])); } _pcAction = pcAction; languageChange(); if (defaultAction) { pcAction->setIcon(defaultAction->icon()); pcAction->setProperty("defaultAction", QVariant(defaultId)); } else if (!pcAction->actions().isEmpty()) { pcAction->setIcon(pcAction->actions()[0]->icon()); pcAction->setProperty("defaultAction", QVariant(0)); } return pcAction; }
Gui::Action * CmdDrawingNewPage::createAction(void) { Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow()); pcAction->setDropDownMenu(true); applyCommandData(this->className(), pcAction); QAction* defaultAction = 0; int defaultId = 0; std::string path = App::Application::getResourceDir(); path += "Mod/Drawing/Templates/"; QDir dir(QString::fromUtf8(path.c_str()), QString::fromAscii("*.svg")); for (unsigned int i=0; i<dir.count(); i++ ) { QRegExp rx(QString::fromAscii("(A|B|C|D|E)(\\d)_(Landscape|Portrait).svg")); if (rx.indexIn(dir[i]) > -1) { QString paper = rx.cap(1); int id = rx.cap(2).toInt(); QString orientation = rx.cap(3); QFile file(QString::fromAscii(":/icons/actions/drawing-landscape-A0.svg")); QAction* a = pcAction->addAction(QString()); if (file.open(QFile::ReadOnly)) { QString s = QString::fromAscii("style=\"font-size:22px\">%1%2</tspan></text>").arg(paper).arg(id); QByteArray data = file.readAll(); data.replace("style=\"font-size:22px\">A0</tspan></text>", s.toAscii()); a->setIcon(Gui::BitmapFactory().pixmapFromSvg(data, QSize(24,24))); } a->setProperty("TemplatePaper", paper); a->setProperty("TemplateOrientation", orientation); a->setProperty("TemplateId", id); a->setProperty("Template", dir.absoluteFilePath(dir[i])); if (id == 3) { defaultAction = a; defaultId = pcAction->actions().size() - 1; } } } _pcAction = pcAction; languageChange(); if (defaultAction) { pcAction->setIcon(defaultAction->icon()); pcAction->setProperty("defaultAction", QVariant(defaultId)); } else if (!pcAction->actions().isEmpty()) { pcAction->setIcon(pcAction->actions()[0]->icon()); pcAction->setProperty("defaultAction", QVariant(0)); } return pcAction; }
void CmdRaytracingNewLuxProject::activated(int iMsg) { const char* ppReturn=0; Gui::Application::Instance->sendMsgToActiveView("GetCamera",&ppReturn); if (ppReturn) { std::string str(ppReturn); if (str.find("PerspectiveCamera") == std::string::npos) { int ret = QMessageBox::warning(Gui::getMainWindow(), qApp->translate("CmdRaytracingWriteView","No perspective camera"), qApp->translate("CmdRaytracingWriteView","The current view camera is not perspective" " and thus the result of the luxrender image later might look different to" " what you expect.\nDo you want to continue?"), QMessageBox::Yes|QMessageBox::No); if (ret != QMessageBox::Yes) return; } } std::string FeatName = getUniqueObjectName("LuxProject"); Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(getAction()); QAction* a = pcAction->actions()[iMsg]; QFileInfo tfi(a->property("Template").toString()); if (tfi.isReadable()) { try { openCommand("Create LuxRender project"); doCommand(Doc,"import Raytracing,RaytracingGui"); doCommand(Doc,"App.activeDocument().addObject('Raytracing::LuxProject','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Template = '%s'",FeatName.c_str(), (const char*)tfi.filePath().toUtf8()); doCommand(Doc,"App.activeDocument().%s.Camera = RaytracingGui.luxViewCamera()",FeatName.c_str()); commitCommand(); } catch (...) { abortCommand(); throw; } } else { QMessageBox::critical(Gui::getMainWindow(), qApp->translate("CmdRaytracingNewLuxProject","No template"), qApp->translate("CmdRaytracingNewLuxProject","No template available")); } }
void CmdSketcherCompModifyKnotMultiplicity::languageChange() { Command::languageChange(); if (!_pcAction) return; Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction); QList<QAction*> a = pcAction->actions(); QAction* c1 = a[0]; c1->setText(QApplication::translate("CmdSketcherCompModifyKnotMultiplicity","Increase knot multiplicity")); c1->setToolTip(QApplication::translate("Sketcher_BSplineIncreaseKnotMultiplicity","Increases the multiplicity of the selected knot of a B-spline")); c1->setStatusTip(QApplication::translate("Sketcher_BSplineIncreaseKnotMultiplicity","Increases the multiplicity of the selected knot of a B-spline")); QAction* c2 = a[1]; c2->setText(QApplication::translate("CmdSketcherCompModifyKnotMultiplicity","Decrease knot multiplicity")); c2->setToolTip(QApplication::translate("Sketcher_BSplineDecreaseKnotMultiplicity","Decreases the multiplicity of the selected knot of a B-spline")); c2->setStatusTip(QApplication::translate("Sketcher_BSplineDecreaseKnotMultiplicity","Decreases the multiplicity of the selected knot of a B-spline")); }
void CmdDrawingNewPage::activated(int iMsg) { Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction); QAction* a = pcAction->actions()[iMsg]; std::string FeatName = getUniqueObjectName("Page"); QFileInfo tfi(a->property("Template").toString()); if (tfi.isReadable()) { openCommand("Drawing create page"); doCommand(Doc,"App.activeDocument().addObject('Drawing::FeaturePage','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Template = '%s'",FeatName.c_str(), (const char*)tfi.filePath().toUtf8()); commitCommand(); } else { QMessageBox::critical(Gui::getMainWindow(), QLatin1String("No template"), QLatin1String("No template available for this page size")); } }
Action * PythonGroupCommand::createAction(void) { Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow()); pcAction->setDropDownMenu(true); applyCommandData(this->getName(), pcAction); int defaultId = 0; try { Base::PyGILStateLocker lock; Py::Object cmd(_pcPyCommand); Py::Callable call(cmd.getAttr("GetCommands")); Py::Tuple args; Py::Tuple ret(call.apply(args)); for (Py::Tuple::iterator it = ret.begin(); it != ret.end(); ++it) { Py::String str(*it); QAction* cmd = pcAction->addAction(QString()); cmd->setProperty("CommandName", QByteArray(static_cast<std::string>(str).c_str())); } if (cmd.hasAttr("GetDefaultCommand")) { Py::Callable call2(cmd.getAttr("GetDefaultCommand")); Py::Int def(call2.apply(args)); defaultId = static_cast<int>(def); } } catch(Py::Exception&) { Base::PyGILStateLocker lock; Base::PyException e; Base::Console().Error("createAction() of the Python command '%s' failed:\n%s\n%s", sName, e.getStackTrace().c_str(), e.what()); } _pcAction = pcAction; languageChange(); if (strcmp(getResource("Pixmap"),"") != 0) { pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(getResource("Pixmap"))); } else { QList<QAction*> a = pcAction->actions(); // if out of range then set to 0 if (defaultId < 0 || defaultId >= a.size()) defaultId = 0; if (a.size() > defaultId) pcAction->setIcon(a[defaultId]->icon()); } pcAction->setProperty("defaultAction", QVariant(defaultId)); return pcAction; }
Gui::Action * CmdSketcherCompBSplineShowHideGeometryInformation::createAction(void) { Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow()); pcAction->setDropDownMenu(true); applyCommandData(this->className(), pcAction); QAction* c1 = pcAction->addAction(QString()); c1->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineDegree")); QAction* c2 = pcAction->addAction(QString()); c2->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplinePolygon")); QAction* c3 = pcAction->addAction(QString()); c3->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineComb")); QAction* c4 = pcAction->addAction(QString()); c4->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineKnotMultiplicity")); _pcAction = pcAction; languageChange(); pcAction->setIcon(c2->icon()); int defaultId = 1; pcAction->setProperty("defaultAction", QVariant(defaultId)); return pcAction; }
Gui::Action * CmdSketcherCompModifyKnotMultiplicity::createAction(void) { Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow()); pcAction->setDropDownMenu(true); applyCommandData(this->className(), pcAction); QAction* c1 = pcAction->addAction(QString()); c1->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineIncreaseKnotMultiplicity")); QAction* c2 = pcAction->addAction(QString()); c2->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineDecreaseKnotMultiplicity")); _pcAction = pcAction; languageChange(); pcAction->setIcon(c1->icon()); int defaultId = 0; pcAction->setProperty("defaultAction", QVariant(defaultId)); return pcAction; }
Gui::Action * CmdDrawingNewPage::createAction(void) { Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow()); pcAction->setDropDownMenu(true); applyCommandData(this->className(), pcAction); QAction* defaultAction = 0; int defaultId = 0; QString lastPaper; int lastId = -1; std::string path = App::Application::getResourceDir(); path += "Mod/Drawing/Templates/"; QDir dir(QString::fromUtf8(path.c_str()), QString::fromLatin1("*.svg")); for (unsigned int i=0; i<dir.count(); i++ ) { QRegExp rx(QString::fromLatin1("(A|B|C|D|E)(\\d)_(Landscape|Portrait)(_.*\\.|\\.)svg$")); if (rx.indexIn(dir[i]) > -1) { QString paper = rx.cap(1); int id = rx.cap(2).toInt(); QString orientation = rx.cap(3); QString info = rx.cap(4).mid(1); info.chop(1); if (!info.isEmpty()) { info[0] = info[0].toUpper(); } // group by paper size if (!lastPaper.isEmpty()) { if (lastPaper != paper) { QAction* sep = pcAction->addAction(QString()); sep->setSeparator(true); } else if (lastId != id) { QAction* sep = pcAction->addAction(QString()); sep->setSeparator(true); } } lastPaper = paper; lastId = id; QFile file(QString::fromLatin1(":/icons/actions/drawing-landscape-A0.svg")); QAction* a = pcAction->addAction(QString()); if (file.open(QFile::ReadOnly)) { QString s = QString::fromLatin1("style=\"font-size:22px\">%1%2</tspan></text>").arg(paper).arg(id); QByteArray data = file.readAll(); data.replace("style=\"font-size:22px\">A0</tspan></text>", s.toLatin1()); a->setIcon(Gui::BitmapFactory().pixmapFromSvg(data, QSize(64,64))); } a->setProperty("TemplatePaper", paper); a->setProperty("TemplateOrientation", orientation); a->setProperty("TemplateId", id); a->setProperty("TemplateInfo", info); a->setProperty("Template", dir.absoluteFilePath(dir[i])); if (id == 3) { if (!defaultAction) { // set the first found A3 (A3_Landscape) as default defaultAction = a; defaultId = pcAction->actions().size() - 1; } } } } _pcAction = pcAction; languageChange(); if (defaultAction) { pcAction->setIcon(defaultAction->icon()); pcAction->setProperty("defaultAction", QVariant(defaultId)); } else if (!pcAction->actions().isEmpty()) { pcAction->setIcon(pcAction->actions()[0]->icon()); pcAction->setProperty("defaultAction", QVariant(0)); } return pcAction; }