Files
create/src/Gui/CommandStd.cpp
luz paz c93bf6cbae Gui: Issue #0004473: Expose openCommand() to translation
Continuing the work to expose the undo/redo functionality to translation. This commit does so for the src/Gui code.  
Ticket: https://tracker.freecadweb.org/view.php?id=4473
2020-12-01 14:53:35 +01:00

828 lines
29 KiB
C++

/***************************************************************************
* Copyright (c) 2002 Jürgen Riegel <juergen.riegel@web.de> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
# include <QApplication>
# include <QMessageBox>
# include <QSharedPointer>
# include <QWhatsThis>
#if QT_VERSION >= 0x040200
# include <QDesktopServices>
# include <QUrl>
#endif
#endif
#include <boost/scoped_ptr.hpp>
#include <Base/Exception.h>
#include <Base/FileInfo.h>
#include <Base/Interpreter.h>
#include <Base/Sequencer.h>
#include <App/Document.h>
#include "Action.h"
#include "Application.h"
#include "Document.h"
#include "Splashscreen.h"
#include "Command.h"
#include "MainWindow.h"
#include "WhatsThis.h"
#include "DlgUndoRedo.h"
#include "BitmapFactory.h"
#include "View.h"
#include "DlgParameterImp.h"
#include "DlgPreferencesImp.h"
#include "DlgCustomizeImp.h"
#include "Widgets.h"
#include "OnlineDocumentation.h"
#include "GuiConsole.h"
#include "WorkbenchManager.h"
#include "Workbench.h"
#include "Selection.h"
#include "DlgUnitsCalculatorImp.h"
using Base::Console;
using Base::Sequencer;
using namespace Gui;
//===========================================================================
// Std_Workbench
//===========================================================================
DEF_STD_CMD_AC(StdCmdWorkbench)
StdCmdWorkbench::StdCmdWorkbench()
: Command("Std_Workbench")
{
sGroup = QT_TR_NOOP("View");
sMenuText = QT_TR_NOOP("Workbench");
sToolTipText = QT_TR_NOOP("Switch between workbenches");
sWhatsThis = "Std_Workbench";
sStatusTip = QT_TR_NOOP("Switch between workbenches");
sPixmap = "freecad";
eType = 0;
}
void StdCmdWorkbench::activated(int i)
{
try {
Workbench* w = WorkbenchManager::instance()->active();
QList<QAction*> items = static_cast<WorkbenchGroup*>(_pcAction)->actions();
std::string switch_to = (const char*)items[i]->objectName().toLatin1();
if (w) {
std::string current_w = w->name();
if (switch_to == current_w)
return;
}
doCommand(Gui, "Gui.activateWorkbench(\"%s\")", switch_to.c_str());
}
catch(const Base::PyException& e) {
QString msg(QLatin1String(e.what()));
// ignore '<type 'exceptions.*Error'>' prefixes
QRegExp rx;
rx.setPattern(QLatin1String("^\\s*<type 'exceptions.\\w*'>:\\s*"));
int pos = rx.indexIn(msg);
if (pos != -1)
msg = msg.mid(rx.matchedLength());
QMessageBox::critical(getMainWindow(), QObject::tr("Cannot load workbench"), msg);
}
catch(...) {
QMessageBox::critical(getMainWindow(), QObject::tr("Cannot load workbench"),
QObject::tr("A general error occurred while loading the workbench"));
}
}
bool StdCmdWorkbench::isActive(void)
{
return true;
}
Action * StdCmdWorkbench::createAction(void)
{
Action *pcAction;
pcAction = new WorkbenchGroup(this,getMainWindow());
pcAction->setShortcut(QString::fromLatin1(sAccel));
applyCommandData(this->className(), pcAction);
if (sPixmap)
pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(sPixmap));
return pcAction;
}
//===========================================================================
// Std_RecentFiles
//===========================================================================
DEF_STD_CMD_C(StdCmdRecentFiles)
StdCmdRecentFiles::StdCmdRecentFiles()
:Command("Std_RecentFiles")
{
sGroup = QT_TR_NOOP("File");
sMenuText = QT_TR_NOOP("Recent files");
sToolTipText = QT_TR_NOOP("Recent file list");
sWhatsThis = "Std_RecentFiles";
sStatusTip = QT_TR_NOOP("Recent file list");
eType = NoTransaction;
}
/**
* Opens the recent file at position \a iMsg in the menu.
* If the file does not exist or cannot be loaded this item is removed
* from the list.
*/
void StdCmdRecentFiles::activated(int iMsg)
{
RecentFilesAction* act = qobject_cast<RecentFilesAction*>(_pcAction);
if (act) act->activateFile( iMsg );
}
/**
* Creates the QAction object containing the recent files.
*/
Action * StdCmdRecentFiles::createAction(void)
{
RecentFilesAction* pcAction = new RecentFilesAction(this, getMainWindow());
pcAction->setObjectName(QLatin1String("recentFiles"));
pcAction->setDropDownMenu(true);
applyCommandData(this->className(), pcAction);
return pcAction;
}
//===========================================================================
// Std_RecentMacros
//===========================================================================
DEF_STD_CMD_C(StdCmdRecentMacros)
StdCmdRecentMacros::StdCmdRecentMacros()
:Command("Std_RecentMacros")
{
sGroup = QT_TR_NOOP("Macro");
sMenuText = QT_TR_NOOP("Recent macros");
sToolTipText = QT_TR_NOOP("Recent macro list");
sWhatsThis = "Std_RecentMacros";
sStatusTip = QT_TR_NOOP("Recent macro list");
eType = NoTransaction;
}
/**
* Opens the recent macro at position \a iMsg in the menu.
* If the macro does not exist or cannot be loaded this item is removed
* from the list.
*/
void StdCmdRecentMacros::activated(int iMsg)
{
RecentMacrosAction* act = qobject_cast<RecentMacrosAction*>(_pcAction);
if (act) act->activateFile( iMsg );
}
/**
* Creates the QAction object containing the recent macros.
*/
Action * StdCmdRecentMacros::createAction(void)
{
RecentMacrosAction* pcAction = new RecentMacrosAction(this, getMainWindow());
pcAction->setObjectName(QLatin1String("recentMacros"));
pcAction->setDropDownMenu(true);
applyCommandData(this->className(), pcAction);
return pcAction;
}
//===========================================================================
// Std_About
//===========================================================================
DEF_STD_CMD_ACL(StdCmdAbout)
StdCmdAbout::StdCmdAbout()
:Command("Std_About")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("&About %1");
sToolTipText = QT_TR_NOOP("About %1");
sWhatsThis = "Std_About";
sStatusTip = QT_TR_NOOP("About %1");
eType = 0;
}
Action * StdCmdAbout::createAction(void)
{
Action *pcAction;
QString exe = qApp->applicationName();
pcAction = new Action(this,getMainWindow());
pcAction->setText(QCoreApplication::translate(
this->className(), sMenuText).arg(exe));
pcAction->setToolTip(QCoreApplication::translate(
this->className(), sToolTipText).arg(exe));
pcAction->setStatusTip(QCoreApplication::translate(
this->className(), sStatusTip).arg(exe));
pcAction->setWhatsThis(QLatin1String(sWhatsThis));
pcAction->setIcon(QApplication::windowIcon());
pcAction->setShortcut(QString::fromLatin1(sAccel));
#if QT_VERSION > 0x050000
// Needs to have AboutRole set to avoid duplicates if adding the about action more than once on macOS
pcAction->setMenuRole(QAction::AboutRole);
#else
// With Qt 4.8, having AboutRole set causes it to disappear when readding it: issue #0001485
pcAction->setMenuRole(QAction::ApplicationSpecificRole);
#endif
return pcAction;
}
bool StdCmdAbout::isActive()
{
return true;
}
/**
* Shows information about the application.
*/
void StdCmdAbout::activated(int iMsg)
{
Q_UNUSED(iMsg);
const Gui::Dialog::AboutDialogFactory* f = Gui::Dialog::AboutDialogFactory::defaultFactory();
boost::scoped_ptr<QDialog> dlg(f->create(getMainWindow()));
dlg->exec();
}
void StdCmdAbout::languageChange()
{
if (_pcAction) {
QString exe = qApp->applicationName();
_pcAction->setText(QCoreApplication::translate(
this->className(), sMenuText).arg(exe));
_pcAction->setToolTip(QCoreApplication::translate(
this->className(), sToolTipText).arg(exe));
_pcAction->setStatusTip(QCoreApplication::translate(
this->className(), sStatusTip).arg(exe));
_pcAction->setWhatsThis(QLatin1String(sWhatsThis));
}
}
//===========================================================================
// Std_AboutQt
//===========================================================================
DEF_STD_CMD(StdCmdAboutQt)
StdCmdAboutQt::StdCmdAboutQt()
:Command("Std_AboutQt")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("About &Qt");
sToolTipText = QT_TR_NOOP("About Qt");
sWhatsThis = "Std_AboutQt";
sStatusTip = QT_TR_NOOP("About Qt");
eType = 0;
}
void StdCmdAboutQt::activated(int iMsg)
{
Q_UNUSED(iMsg);
qApp->aboutQt();
}
//===========================================================================
// Std_WhatsThis
//===========================================================================
DEF_STD_CMD(StdCmdWhatsThis)
StdCmdWhatsThis::StdCmdWhatsThis()
:Command("Std_WhatsThis")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("&What's This?");
sToolTipText = QT_TR_NOOP("What's This");
sWhatsThis = "Std_WhatsThis";
sStatusTip = QT_TR_NOOP("What's This");
sAccel = keySequenceToAccel(QKeySequence::WhatsThis);
sPixmap = "WhatsThis";
eType = 0;
}
void StdCmdWhatsThis::activated(int iMsg)
{
Q_UNUSED(iMsg);
QWhatsThis::enterWhatsThisMode();
}
//===========================================================================
// Std_DlgParameter
//===========================================================================
DEF_STD_CMD(StdCmdDlgParameter)
StdCmdDlgParameter::StdCmdDlgParameter()
:Command("Std_DlgParameter")
{
sGroup = QT_TR_NOOP("Tools");
sMenuText = QT_TR_NOOP("E&dit parameters ...");
sToolTipText = QT_TR_NOOP("Opens a Dialog to edit the parameters");
sWhatsThis = "Std_DlgParameter";
sStatusTip = QT_TR_NOOP("Opens a Dialog to edit the parameters");
sPixmap = "Std_DlgParameter";
eType = 0;
}
void StdCmdDlgParameter::activated(int iMsg)
{
Q_UNUSED(iMsg);
Gui::Dialog::DlgParameterImp cDlg(getMainWindow());
cDlg.resize(QSize(800, 600));
cDlg.exec();
}
//===========================================================================
// Std_DlgPreferences
//===========================================================================
DEF_STD_CMD_C(StdCmdDlgPreferences)
StdCmdDlgPreferences::StdCmdDlgPreferences()
:Command("Std_DlgPreferences")
{
sGroup = QT_TR_NOOP("Tools");
sMenuText = QT_TR_NOOP("&Preferences ...");
sToolTipText = QT_TR_NOOP("Opens a Dialog to edit the preferences");
sWhatsThis = "Std_DlgPreferences";
sStatusTip = QT_TR_NOOP("Opens a Dialog to edit the preferences");
sPixmap = "preferences-system";
eType = 0;
}
Action * StdCmdDlgPreferences::createAction(void)
{
Action *pcAction = Command::createAction();
pcAction->setMenuRole(QAction::PreferencesRole);
return pcAction;
}
void StdCmdDlgPreferences::activated(int iMsg)
{
Q_UNUSED(iMsg);
Gui::Dialog::DlgPreferencesImp cDlg(getMainWindow());
cDlg.exec();
}
//===========================================================================
// Std_DlgCustomize
//===========================================================================
DEF_STD_CMD(StdCmdDlgCustomize)
StdCmdDlgCustomize::StdCmdDlgCustomize()
:Command("Std_DlgCustomize")
{
sGroup = QT_TR_NOOP("Tools");
sMenuText = QT_TR_NOOP("Cu&stomize...");
sToolTipText = QT_TR_NOOP("Customize toolbars and command bars");
sWhatsThis = "Std_DlgCustomize";
sStatusTip = QT_TR_NOOP("Customize toolbars and command bars");
sPixmap = "applications-accessories";
eType = 0;
}
void StdCmdDlgCustomize::activated(int iMsg)
{
Q_UNUSED(iMsg);
static QPointer<QDialog> dlg = 0;
if (!dlg)
dlg = new Gui::Dialog::DlgCustomizeImp(getMainWindow());
dlg->setAttribute(Qt::WA_DeleteOnClose);
dlg->show();
}
//===========================================================================
// Std_CommandLine
//===========================================================================
DEF_STD_CMD(StdCmdCommandLine)
StdCmdCommandLine::StdCmdCommandLine()
:Command("Std_CommandLine")
{
sGroup = QT_TR_NOOP("Tools");
sMenuText = QT_TR_NOOP("Start command &line...");
sToolTipText = QT_TR_NOOP("Opens the command line in the console");
sWhatsThis = "Std_CommandLine";
sStatusTip = QT_TR_NOOP("Opens the command line in the console");
sPixmap = "utilities-terminal";
eType = 0;
}
void StdCmdCommandLine::activated(int iMsg)
{
Q_UNUSED(iMsg);
bool show = getMainWindow()->isMaximized ();
// pop up the Gui command window
GUIConsole Wnd;
getMainWindow()->showMinimized () ;
qApp->processEvents();
// create temporary console sequencer
{
Base::ConsoleSequencer seq;
Base::Interpreter().runCommandLine("Console mode");
}
#ifdef Q_WS_X11
// On X11 this may not work. For further information see QWidget::showMaximized
//
// workaround for X11
getMainWindow()->hide();
getMainWindow()->show();
#endif
// pop up the main window
show ? getMainWindow()->showMaximized () : getMainWindow()->showNormal () ;
qApp->processEvents();
}
//===========================================================================
// Std_OnlineHelp
//===========================================================================
DEF_STD_CMD(StdCmdOnlineHelp)
StdCmdOnlineHelp::StdCmdOnlineHelp()
:Command("Std_OnlineHelp")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("Help");
sToolTipText = QT_TR_NOOP("Show help to the application");
sWhatsThis = "Std_OnlineHelp";
sStatusTip = QT_TR_NOOP("Help");
sPixmap = "help-browser";
sAccel = keySequenceToAccel(QKeySequence::HelpContents);
eType = 0;
}
void StdCmdOnlineHelp::activated(int iMsg)
{
Q_UNUSED(iMsg);
Gui::getMainWindow()->showDocumentation(QString::fromLatin1("Online_Help_Startpage"));
}
//===========================================================================
// Std_OnlineHelpWebsite
//===========================================================================
DEF_STD_CMD(StdCmdOnlineHelpWebsite)
StdCmdOnlineHelpWebsite::StdCmdOnlineHelpWebsite()
:Command("Std_OnlineHelpWebsite")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("Help Website");
sToolTipText = QT_TR_NOOP("The website where the help is maintained");
sWhatsThis = "Std_OnlineHelpWebsite";
sStatusTip = QT_TR_NOOP("Help Website");
eType = 0;
}
void StdCmdOnlineHelpWebsite::activated(int iMsg)
{
Q_UNUSED(iMsg);
std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/Online_Help_Toc").toStdString();
ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites");
std::string url = hURLGrp->GetASCII("OnlineHelp", defaulturl.c_str());
hURLGrp->SetASCII("OnlineHelp", url.c_str());
OpenURLInBrowser(url.c_str());
}
//===========================================================================
// Std_FreeCADWebsite
//===========================================================================
DEF_STD_CMD(StdCmdFreeCADWebsite)
StdCmdFreeCADWebsite::StdCmdFreeCADWebsite()
:Command("Std_FreeCADWebsite")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("FreeCAD Website");
sToolTipText = QT_TR_NOOP("The FreeCAD website");
sWhatsThis = "Std_FreeCADWebsite";
sStatusTip = QT_TR_NOOP("FreeCAD Website");
sPixmap = "internet-web-browser";
eType = 0;
}
void StdCmdFreeCADWebsite::activated(int iMsg)
{
Q_UNUSED(iMsg);
std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org").toStdString();
ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites");
std::string url = hURLGrp->GetASCII("WebPage", defaulturl.c_str());
hURLGrp->SetASCII("WebPage", url.c_str());
OpenURLInBrowser(url.c_str());
}
//===========================================================================
// Std_FreeCADUserHub
//===========================================================================
DEF_STD_CMD(StdCmdFreeCADUserHub)
StdCmdFreeCADUserHub::StdCmdFreeCADUserHub()
:Command("Std_FreeCADUserHub")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("Users documentation");
sToolTipText = QT_TR_NOOP("Documentation for users on the FreeCAD website");
sWhatsThis = "Std_FreeCADUserHub";
sStatusTip = QT_TR_NOOP("Users documentation");
sPixmap = "internet-web-browser";
eType = 0;
}
void StdCmdFreeCADUserHub::activated(int iMsg)
{
Q_UNUSED(iMsg);
std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/User_hub").toStdString();
ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites");
std::string url = hURLGrp->GetASCII("Documentation", defaulturl.c_str());
hURLGrp->SetASCII("Documentation", url.c_str());
OpenURLInBrowser(url.c_str());
}
//===========================================================================
// Std_FreeCADPowerUserHub
//===========================================================================
DEF_STD_CMD(StdCmdFreeCADPowerUserHub)
StdCmdFreeCADPowerUserHub::StdCmdFreeCADPowerUserHub()
:Command("Std_FreeCADPowerUserHub")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("Python scripting documentation");
sToolTipText = QT_TR_NOOP("Python scripting documentation on the FreeCAD website");
sWhatsThis = "Std_FreeCADPowerUserHub";
sStatusTip = QT_TR_NOOP("PowerUsers documentation");
sPixmap = "internet-web-browser";
eType = 0;
}
void StdCmdFreeCADPowerUserHub::activated(int iMsg)
{
Q_UNUSED(iMsg);
std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/Power_users_hub").toStdString();
ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites");
std::string url = hURLGrp->GetASCII("PowerUsers", defaulturl.c_str());
hURLGrp->SetASCII("PowerUsers", url.c_str());
OpenURLInBrowser(url.c_str());
}
//===========================================================================
// Std_FreeCADForum
//===========================================================================
DEF_STD_CMD(StdCmdFreeCADForum)
StdCmdFreeCADForum::StdCmdFreeCADForum()
:Command("Std_FreeCADForum")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("FreeCAD Forum");
sToolTipText = QT_TR_NOOP("The FreeCAD forum, where you can find help from other users");
sWhatsThis = "Std_FreeCADForum";
sStatusTip = QT_TR_NOOP("The FreeCAD Forum");
sPixmap = "internet-web-browser";
eType = 0;
}
void StdCmdFreeCADForum::activated(int iMsg)
{
Q_UNUSED(iMsg);
std::string defaulturl = QCoreApplication::translate(this->className(),"http://forum.freecadweb.org").toStdString();
ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites");
std::string url = hURLGrp->GetASCII("UserForum", defaulturl.c_str());
hURLGrp->SetASCII("UserForum", url.c_str());
OpenURLInBrowser(url.c_str());
}
//===========================================================================
// Std_FreeCADFAQ
//===========================================================================
DEF_STD_CMD(StdCmdFreeCADFAQ)
StdCmdFreeCADFAQ::StdCmdFreeCADFAQ()
:Command("Std_FreeCADFAQ")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("FreeCAD FAQ");
sToolTipText = QT_TR_NOOP("Frequently Asked Questions on the FreeCAD website");
sWhatsThis = "Std_FreeCADFAQ";
sStatusTip = QT_TR_NOOP("Frequently Asked Questions");
sPixmap = "internet-web-browser";
eType = 0;
}
void StdCmdFreeCADFAQ::activated(int iMsg)
{
Q_UNUSED(iMsg);
std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/FAQ").toStdString();
ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites");
std::string url = hURLGrp->GetASCII("FAQ", defaulturl.c_str());
hURLGrp->SetASCII("FAQ", url.c_str());
OpenURLInBrowser(url.c_str());
}
//===========================================================================
// Std_PythonWebsite
//===========================================================================
DEF_STD_CMD(StdCmdPythonWebsite)
StdCmdPythonWebsite::StdCmdPythonWebsite()
:Command("Std_PythonWebsite")
{
sGroup = QT_TR_NOOP("Help");
sMenuText = QT_TR_NOOP("Python Website");
sToolTipText = QT_TR_NOOP("The official Python website");
sWhatsThis = "Std_PythonWebsite";
sStatusTip = QT_TR_NOOP("Python Website");
sPixmap = "applications-python";
eType = 0;
}
void StdCmdPythonWebsite::activated(int iMsg)
{
Q_UNUSED(iMsg);
OpenURLInBrowser("http://python.org");
}
//===========================================================================
// Std_MeasurementSimple
//===========================================================================
DEF_STD_CMD(StdCmdMeasurementSimple)
StdCmdMeasurementSimple::StdCmdMeasurementSimple()
:Command("Std_MeasurementSimple")
{
sGroup = QT_TR_NOOP("Tools");
sMenuText = QT_TR_NOOP("Measure distance");
sToolTipText = QT_TR_NOOP("Measures distance between two selected objects");
sWhatsThis = "Std_MeasurementSimple";
sStatusTip = QT_TR_NOOP("Measures distance between two selected objects");
sPixmap = "view-measurement";
eType = 0;
}
void StdCmdMeasurementSimple::activated(int iMsg)
{
Q_UNUSED(iMsg);
unsigned int n = getSelection().countObjectsOfType(App::DocumentObject::getClassTypeId());
if (n == 1) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
QObject::tr("Only one object selected. Please select two objects.\n"
"Be aware the point where you click matters."));
return;
}
if (n < 1 || n > 2) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
QObject::tr("Please select two objects.\n"
"Be aware the point where you click matters."));
return;
}
std::vector<Gui::SelectionSingleton::SelObj> Sel = getSelection().getSelection();
std::string name;
name += "Dist ";
name += Sel[0].FeatName;
name += "-";
name += Sel[0].SubName;
name += " to ";
name += Sel[1].FeatName;
name += "-";
name += Sel[1].SubName;
openCommand(QT_TRANSLATE_NOOP("Command", "Insert measurement"));
doCommand(Doc,"_f = App.activeDocument().addObject(\"App::MeasureDistance\",\"%s\")","Measurement");
doCommand(Doc,"_f.Label ='%s'",name.c_str());
doCommand(Doc,"_f.P1 = FreeCAD.Vector(%f,%f,%f)",Sel[0].x,Sel[0].y,Sel[0].z);
doCommand(Doc,"_f.P2 = FreeCAD.Vector(%f,%f,%f)",Sel[1].x,Sel[1].y,Sel[1].z);
updateActive();
commitCommand();
}
//===========================================================================
// Std_TextDocument
//===========================================================================
DEF_STD_CMD_A(StdCmdTextDocument)
StdCmdTextDocument::StdCmdTextDocument()
:Command("Std_TextDocument")
{
sGroup = QT_TR_NOOP("Tools");
sMenuText = QT_TR_NOOP("Add text document");
sToolTipText = QT_TR_NOOP("Add text document to active document");
sWhatsThis = "Std_TextDocument";
sStatusTip = QT_TR_NOOP("Add text document to active document");
sPixmap = "TextDocument";
eType = 0;
}
void StdCmdTextDocument::activated(int iMsg)
{
Q_UNUSED(iMsg);
openCommand(QT_TRANSLATE_NOOP("Command", "Insert text document"));
doCommand(Doc, "App.ActiveDocument.addObject(\"App::TextDocument\",\"%s\").Label=\"%s\"","Text document","Text document");
doCommand(Gui, "Gui.ActiveDocument.ActiveObject.doubleClicked()");
updateActive();
commitCommand();
}
bool StdCmdTextDocument::isActive(void)
{
return hasActiveDocument();
}
//===========================================================================
// Std_UnitsCalculator
//===========================================================================
DEF_STD_CMD(StdCmdUnitsCalculator)
StdCmdUnitsCalculator::StdCmdUnitsCalculator()
: Command("Std_UnitsCalculator")
{
sGroup = QT_TR_NOOP("Tools");
sMenuText = QT_TR_NOOP("&Units calculator...");
sToolTipText = QT_TR_NOOP("Start the units calculator");
sWhatsThis = "Std_UnitsCalculator";
sStatusTip = QT_TR_NOOP("Start the units calculator");
sPixmap = "accessories-calculator";
eType = 0;
}
void StdCmdUnitsCalculator::activated(int iMsg)
{
Q_UNUSED(iMsg);
Gui::Dialog::DlgUnitsCalculator *dlg = new Gui::Dialog::DlgUnitsCalculator( getMainWindow() );
dlg->show();
}
namespace Gui {
void CreateStdCommands(void)
{
CommandManager &rcCmdMgr = Application::Instance->commandManager();
rcCmdMgr.addCommand(new StdCmdAbout());
rcCmdMgr.addCommand(new StdCmdAboutQt());
rcCmdMgr.addCommand(new StdCmdDlgParameter());
rcCmdMgr.addCommand(new StdCmdDlgPreferences());
rcCmdMgr.addCommand(new StdCmdDlgCustomize());
rcCmdMgr.addCommand(new StdCmdCommandLine());
rcCmdMgr.addCommand(new StdCmdWorkbench());
rcCmdMgr.addCommand(new StdCmdRecentFiles());
rcCmdMgr.addCommand(new StdCmdRecentMacros());
rcCmdMgr.addCommand(new StdCmdWhatsThis());
rcCmdMgr.addCommand(new StdCmdPythonHelp());
rcCmdMgr.addCommand(new StdCmdOnlineHelp());
rcCmdMgr.addCommand(new StdCmdOnlineHelpWebsite());
rcCmdMgr.addCommand(new StdCmdFreeCADWebsite());
rcCmdMgr.addCommand(new StdCmdFreeCADUserHub());
rcCmdMgr.addCommand(new StdCmdFreeCADPowerUserHub());
rcCmdMgr.addCommand(new StdCmdFreeCADForum());
rcCmdMgr.addCommand(new StdCmdFreeCADFAQ());
rcCmdMgr.addCommand(new StdCmdPythonWebsite());
rcCmdMgr.addCommand(new StdCmdTextDocument());
rcCmdMgr.addCommand(new StdCmdUnitsCalculator());
//rcCmdMgr.addCommand(new StdCmdMeasurementSimple());
//rcCmdMgr.addCommand(new StdCmdDownloadOnlineHelp());
//rcCmdMgr.addCommand(new StdCmdDescription());
}
} // namespace Gui