From 08bfdc4875002c8b6f5293f62eef1689c251b5d5 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 22 Jul 2012 14:56:25 +0200 Subject: [PATCH] Automatically create actions for each template --- src/Gui/PythonConsole.cpp | 10 +- src/Mod/Drawing/Gui/Command.cpp | 106 +++++++++--------- .../Gui/Resources/translations/Drawing_de.qm | Bin 7118 -> 7372 bytes .../Gui/Resources/translations/Drawing_de.ts | 8 ++ 4 files changed, 67 insertions(+), 57 deletions(-) diff --git a/src/Gui/PythonConsole.cpp b/src/Gui/PythonConsole.cpp index 8364ae4e9..780789b71 100644 --- a/src/Gui/PythonConsole.cpp +++ b/src/Gui/PythonConsole.cpp @@ -701,10 +701,14 @@ void PythonConsole::runSource(const QString& line) catch (const Base::SystemExitException&) { ParameterGrp::handle hPrefGrp = getWindowParameter(); bool check = hPrefGrp->GetBool("CheckSystemExit",true); - if (!check) qApp->quit(); - int ret = QMessageBox::question(this, tr("System exit"), tr("The application is still running.\nDo you want to exit without saving your data?"), - QMessageBox::Yes, QMessageBox::No|QMessageBox::Escape|QMessageBox::Default); + int ret = QMessageBox::Yes; + if (check) { + ret = QMessageBox::question(this, tr("System exit"), + tr("The application is still running.\nDo you want to exit without saving your data?"), + QMessageBox::Yes, QMessageBox::No|QMessageBox::Escape|QMessageBox::Default); + } if (ret == QMessageBox::Yes) { + PyErr_Clear(); qApp->quit(); } else { diff --git a/src/Mod/Drawing/Gui/Command.cpp b/src/Mod/Drawing/Gui/Command.cpp index ed5f10b28..8a206d52d 100644 --- a/src/Mod/Drawing/Gui/Command.cpp +++ b/src/Mod/Drawing/Gui/Command.cpp @@ -12,7 +12,12 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include +# include +# include +# include +# include # include +# include #endif #include @@ -89,17 +94,16 @@ CmdDrawingNewPage::CmdDrawingNewPage() void CmdDrawingNewPage::activated(int iMsg) { + Gui::ActionGroup* pcAction = qobject_cast(_pcAction); + QAction* a = pcAction->actions()[iMsg]; + std::string FeatName = getUniqueObjectName("Page"); - std::stringstream out; - out << App::Application::getResourceDir() - << "Mod/Drawing/Templates/" - << "A" << iMsg << "_Landscape.svg"; - Base::FileInfo tfi(out.str()); + 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(), tfi.filePath().c_str()); + doCommand(Doc,"App.activeDocument().%s.Template = '%s'",FeatName.c_str(), (const char*)tfi.filePath().toUtf8()); commitCommand(); } else { @@ -115,25 +119,45 @@ Gui::Action * CmdDrawingNewPage::createAction(void) pcAction->setDropDownMenu(true); applyCommandData(pcAction); - QAction* a0 = pcAction->addAction(QString()); - a0->setIcon(Gui::BitmapFactory().pixmap("actions/drawing-landscape-A0")); + QAction* defaultAction = 0; + int defaultId = 0; - QAction* a1 = pcAction->addAction(QString()); - a1->setIcon(Gui::BitmapFactory().pixmap("actions/drawing-landscape-A1")); + std::string path = App::Application::getResourceDir(); + path += "Mod/Drawing/Templates/"; + QDir dir(QString::fromUtf8(path.c_str()), QString::fromAscii("A*_Landscape.svg")); + for (unsigned int i=0; i -1) { + int id = rx.cap(1).toInt(); + 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\">A%1").arg(id); + QByteArray data = file.readAll(); + data.replace("style=\"font-size:22px\">A0", s.toAscii()); + a->setIcon(Gui::BitmapFactory().pixmapFromSvg(data, QSize(24,24))); + } - QAction* a2 = pcAction->addAction(QString()); - a2->setIcon(Gui::BitmapFactory().pixmap("actions/drawing-landscape-A2")); + a->setProperty("TemplateId", id); + a->setProperty("Template", dir.absoluteFilePath(dir[i])); - QAction* a3 = pcAction->addAction(QString()); - a3->setIcon(Gui::BitmapFactory().pixmap("actions/drawing-landscape-A3")); - - QAction* a4 = pcAction->addAction(QString()); - a4->setIcon(Gui::BitmapFactory().pixmap("actions/drawing-landscape-A4")); + if (id == 3) { + defaultAction = a; + defaultId = pcAction->actions().size() - 1; + } + } + } _pcAction = pcAction; languageChange(); - pcAction->setIcon(a3->icon()); - pcAction->setProperty("defaultAction", QVariant(3)); + 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; } @@ -146,41 +170,15 @@ void CmdDrawingNewPage::languageChange() return; Gui::ActionGroup* pcAction = qobject_cast(_pcAction); QList a = pcAction->actions(); - - a[0]->setText(QCoreApplication::translate( - "Drawing_NewPage", "A0 landscape", 0, - QCoreApplication::CodecForTr)); - a[0]->setToolTip(QCoreApplication::translate( - "Drawing_NewPage", "Insert new A0 landscape drawing", 0, - QCoreApplication::CodecForTr)); - - a[1]->setText(QCoreApplication::translate( - "Drawing_NewPage", "A1 landscape", 0, - QCoreApplication::CodecForTr)); - a[1]->setToolTip(QCoreApplication::translate( - "Drawing_NewPage", "Insert new A1 landscape drawing", 0, - QCoreApplication::CodecForTr)); - - a[2]->setText(QCoreApplication::translate( - "Drawing_NewPage", "A2 landscape", 0, - QCoreApplication::CodecForTr)); - a[2]->setToolTip(QCoreApplication::translate( - "Drawing_NewPage", "Insert new A2 landscape drawing", 0, - QCoreApplication::CodecForTr)); - - a[3]->setText(QCoreApplication::translate( - "Drawing_NewPage", "A3 landscape", 0, - QCoreApplication::CodecForTr)); - a[3]->setToolTip(QCoreApplication::translate( - "Drawing_NewPage", "Insert new A3 landscape drawing", 0, - QCoreApplication::CodecForTr)); - - a[4]->setText(QCoreApplication::translate( - "Drawing_NewPage", "A4 landscape", 0, - QCoreApplication::CodecForTr)); - a[4]->setToolTip(QCoreApplication::translate( - "Drawing_NewPage", "Insert new A4 landscape drawing", 0, - QCoreApplication::CodecForTr)); + for (QList::iterator it = a.begin(); it != a.end(); ++it) { + int id = (*it)->property("TemplateId").toInt(); + (*it)->setText(QCoreApplication::translate( + "Drawing_NewPage", "A%1 landscape", 0, + QCoreApplication::CodecForTr).arg(id)); + (*it)->setToolTip(QCoreApplication::translate( + "Drawing_NewPage", "Insert new A%1 landscape drawing", 0, + QCoreApplication::CodecForTr).arg(id)); + } } bool CmdDrawingNewPage::isActive(void) diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.qm index 2079b12df25be0480fb743b1bcf7f54054851609..1b31c06f98b89d771d177d5f7c058069567302d9 100644 GIT binary patch delta 497 zcmX?Se#UZw2&2J7QOo*p-gE{A!9NVso1QZ;FeX4~kz$5j&r=x~SW6gwy?V;PAaIA_ zH<+Hn@CQT-<}myP(<%)A!Soi!i1{lS7$n>n+dn;FU=Ux=2sTgn664{wKt9`KCROEk z3=Ev-nUaLh0o7e++F*W_fq^}yp6ThfdkhR>b<6_Gl^Ga#W0+;;Q7vO^-2}!0Y~=Qa-ccf`RrizLKE1}tOLsPO}1gwHxf_dEMRB`%I@ddej4Z+ zNiVJoYMel4@^H%wi83%SByoFe0D7B!4tJWACeW6Zljky;F-f^hzRGB)F1ee}vi={? z&3b(QEH4B7aD?CS>?2?xi10h_O9t8@o5{c+RlV7Y$yI<;iNTRUmBElfVKSqb6b}c` zYz8(U=5GjM4%as`zcw?Al=WYjTc*G1gKtz$HK~l zEeGo7&SwX!6I{uDW*tzR??ldV)1_qHslh-nuF-gWwe#&U4E^&p=vi={? z?RtFwEH4B7a)jUU>?2@c=<+-7O9t90n+f#5l+9jDt^%7M31u)&RuGHWY$n>z4gfd8 Bbcp}} diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.ts b/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.ts index 5923883d7..3fe18daed 100644 --- a/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.ts +++ b/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.ts @@ -251,6 +251,14 @@ Insert new A4 landscape drawing Neue A3-Zeichung einfügen (im Querformat) {4 ?} + + Insert new A%1 landscape drawing + Neue A%1-Zeichung im Querformat einfügen + + + A%1 landscape + A%1 im Querformat + QObject