From 3210d0d2a003618a1aee598904884ac262c35f39 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 10 Jan 2015 19:09:58 +0100 Subject: [PATCH] + issue #0001856: Add standard set of blank ISO drawing template sizes --- src/Mod/Drawing/Gui/Command.cpp | 73 +++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/src/Mod/Drawing/Gui/Command.cpp b/src/Mod/Drawing/Gui/Command.cpp index ab3492aaf..8695d9822 100644 --- a/src/Mod/Drawing/Gui/Command.cpp +++ b/src/Mod/Drawing/Gui/Command.cpp @@ -126,15 +126,39 @@ Gui::Action * CmdDrawingNewPage::createAction(void) 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::fromAscii("*.svg")); for (unsigned int i=0; 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::fromAscii(":/icons/actions/drawing-landscape-A0.svg")); QAction* a = pcAction->addAction(QString()); if (file.open(QFile::ReadOnly)) { @@ -147,6 +171,7 @@ Gui::Action * CmdDrawingNewPage::createAction(void) 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) { @@ -157,6 +182,7 @@ Gui::Action * CmdDrawingNewPage::createAction(void) } _pcAction = pcAction; + languageChange(); if (defaultAction) { pcAction->setIcon(defaultAction->icon()); @@ -179,6 +205,8 @@ void CmdDrawingNewPage::languageChange() Gui::ActionGroup* pcAction = qobject_cast(_pcAction); QList a = pcAction->actions(); for (QList::iterator it = a.begin(); it != a.end(); ++it) { + if ((*it)->isSeparator()) + continue; QString paper = (*it)->property("TemplatePaper").toString(); int id = (*it)->property("TemplateId").toInt(); QString orientation = (*it)->property("TemplateOrientation").toString(); @@ -186,19 +214,38 @@ void CmdDrawingNewPage::languageChange() 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); + QString info = (*it)->property("TemplateInfo").toString(); - (*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)); + if (info.isEmpty()) { + (*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)); + } + else { + (*it)->setText(QCoreApplication::translate( + "Drawing_NewPage", "%1%2 %3 (%4)", 0, + QCoreApplication::CodecForTr) + .arg(paper) + .arg(id) + .arg(orientation) + .arg(info)); + (*it)->setToolTip(QCoreApplication::translate( + "Drawing_NewPage", "Insert new %1%2 %3 (%4) drawing", 0, + QCoreApplication::CodecForTr) + .arg(paper) + .arg(id) + .arg(orientation) + .arg(info)); + } } }