Merge branch 'master' into RRF-PP-for-Path
This commit is contained in:
@@ -1040,14 +1040,14 @@ Application::TransactionSignaller::~TransactionSignaller() {
|
||||
}
|
||||
}
|
||||
|
||||
const char* Application::getHomePath(void) const
|
||||
std::string Application::getHomePath()
|
||||
{
|
||||
return _mConfig["AppHomePath"].c_str();
|
||||
return mConfig["AppHomePath"];
|
||||
}
|
||||
|
||||
const char* Application::getExecutableName(void) const
|
||||
std::string Application::getExecutableName()
|
||||
{
|
||||
return _mConfig["ExeName"].c_str();
|
||||
return mConfig["ExeName"];
|
||||
}
|
||||
|
||||
std::string Application::getTempPath()
|
||||
|
||||
@@ -395,8 +395,8 @@ public:
|
||||
|
||||
/** @name Application directories */
|
||||
//@{
|
||||
const char* getHomePath(void) const;
|
||||
const char* getExecutableName(void) const;
|
||||
static std::string getHomePath();
|
||||
static std::string getExecutableName();
|
||||
/*!
|
||||
Returns the temporary directory. By default, this is set to the
|
||||
system's temporary directory but can be customized by the user.
|
||||
@@ -597,7 +597,7 @@ private:
|
||||
std::deque<std::string> _pendingDocsReopen;
|
||||
std::map<std::string,std::vector<std::string> > _pendingDocMap;
|
||||
|
||||
// To prevent infinite recursion of reloading a partial document due a truely
|
||||
// To prevent infinite recursion of reloading a partial document due a truly
|
||||
// missing object
|
||||
std::map<std::string,std::set<std::string> > _docReloadAttempts;
|
||||
|
||||
|
||||
@@ -691,7 +691,7 @@ PyObject* Application::sGetHomePath(PyObject * /*self*/, PyObject *args)
|
||||
if (!PyArg_ParseTuple(args, "")) // convert args: Python->C
|
||||
return NULL; // NULL triggers exception
|
||||
|
||||
Py::String homedir(GetApplication().getHomePath(),"utf-8");
|
||||
Py::String homedir(Application::getHomePath(),"utf-8");
|
||||
return Py::new_reference_to(homedir);
|
||||
}
|
||||
|
||||
|
||||
@@ -1685,7 +1685,7 @@ std::string Document::getTransientDirectoryName(const std::string& uuid, const s
|
||||
std::stringstream s;
|
||||
QCryptographicHash hash(QCryptographicHash::Sha1);
|
||||
hash.addData(filename.c_str(), filename.size());
|
||||
s << App::Application::getTempPath() << GetApplication().getExecutableName()
|
||||
s << App::Application::getTempPath() << App::Application::getExecutableName()
|
||||
<< "_Doc_" << uuid
|
||||
<< "_" << hash.result().toHex().left(6).constData()
|
||||
<< "_" << QCoreApplication::applicationPid();
|
||||
|
||||
@@ -1955,13 +1955,13 @@ void Application::runApplication(void)
|
||||
mainApp.setApplicationName(QString::fromUtf8(it->second.c_str()));
|
||||
}
|
||||
else {
|
||||
mainApp.setApplicationName(QString::fromUtf8(App::GetApplication().getExecutableName()));
|
||||
mainApp.setApplicationName(QString::fromStdString(App::Application::getExecutableName()));
|
||||
}
|
||||
#ifndef Q_OS_MACX
|
||||
mainApp.setWindowIcon(Gui::BitmapFactory().pixmap(App::Application::Config()["AppIcon"].c_str()));
|
||||
#endif
|
||||
QString plugin;
|
||||
plugin = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
plugin = QString::fromStdString(App::Application::getHomePath());
|
||||
plugin += QLatin1String("/plugins");
|
||||
QCoreApplication::addLibraryPath(plugin);
|
||||
|
||||
@@ -2127,7 +2127,7 @@ void Application::runApplication(void)
|
||||
// init the Inventor subsystem
|
||||
initOpenInventor();
|
||||
|
||||
QString home = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString home = QString::fromStdString(App::Application::getHomePath());
|
||||
|
||||
it = cfg.find("WindowTitle");
|
||||
if (it != cfg.end()) {
|
||||
@@ -2267,7 +2267,7 @@ void Application::runApplication(void)
|
||||
|
||||
try {
|
||||
std::stringstream s;
|
||||
s << App::Application::getTempPath() << App::GetApplication().getExecutableName()
|
||||
s << App::Application::getTempPath() << App::Application::getExecutableName()
|
||||
<< "_" << QCoreApplication::applicationPid() << ".lock";
|
||||
// open a lock file with the PID
|
||||
Base::FileInfo fi(s.str());
|
||||
|
||||
@@ -1029,7 +1029,7 @@ PyObject* Application::sAddResPath(PyObject * /*self*/, PyObject *args)
|
||||
PyMem_Free(filePath);
|
||||
if (QDir::isRelativePath(path)) {
|
||||
// Home path ends with '/'
|
||||
QString home = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString home = QString::fromStdString(App::Application::getHomePath());
|
||||
path = home + path;
|
||||
}
|
||||
|
||||
@@ -1048,7 +1048,7 @@ PyObject* Application::sAddLangPath(PyObject * /*self*/, PyObject *args)
|
||||
PyMem_Free(filePath);
|
||||
if (QDir::isRelativePath(path)) {
|
||||
// Home path ends with '/'
|
||||
QString home = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString home = QString::fromStdString(App::Application::getHomePath());
|
||||
path = home + path;
|
||||
}
|
||||
|
||||
@@ -1066,7 +1066,7 @@ PyObject* Application::sAddIconPath(PyObject * /*self*/, PyObject *args)
|
||||
PyMem_Free(filePath);
|
||||
if (QDir::isRelativePath(path)) {
|
||||
// Home path ends with '/'
|
||||
QString home = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString home = QString::fromStdString(App::Application::getHomePath());
|
||||
path = home + path;
|
||||
}
|
||||
|
||||
|
||||
@@ -85,8 +85,8 @@ bool Assistant::startAssistant()
|
||||
if (proc->state() != QProcess::Running) {
|
||||
#ifdef Q_OS_WIN
|
||||
QString app;
|
||||
app = QDir::toNativeSeparators(QString::fromUtf8
|
||||
(App::GetApplication().getHomePath()) + QLatin1String("bin/"));
|
||||
app = QDir::toNativeSeparators(QString::fromStdString
|
||||
(App::Application::getHomePath()) + QLatin1String("bin/"));
|
||||
#elif defined(Q_OS_MAC)
|
||||
QString app = QCoreApplication::applicationDirPath() + QDir::separator();
|
||||
#else
|
||||
@@ -95,8 +95,8 @@ bool Assistant::startAssistant()
|
||||
app += QLatin1String("assistant");
|
||||
|
||||
// get the name of the executable and the doc path
|
||||
QString exe = QString::fromUtf8(App::GetApplication().getExecutableName());
|
||||
QString doc = QString::fromUtf8(App::Application::getHelpDir().c_str());
|
||||
QString exe = QString::fromStdString(App::Application::getExecutableName());
|
||||
QString doc = QString::fromStdString(App::Application::getHelpDir());
|
||||
QString qhc = doc + exe.toLower() + QLatin1String(".qhc");
|
||||
|
||||
|
||||
|
||||
@@ -97,15 +97,15 @@ BitmapFactoryInst& BitmapFactoryInst::instance(void)
|
||||
std::map<std::string,std::string>::const_iterator it;
|
||||
it = App::GetApplication().Config().find("ProgramIcons");
|
||||
if (it != App::GetApplication().Config().end()) {
|
||||
QString home = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString home = QString::fromStdString(App::Application::getHomePath());
|
||||
QString path = QString::fromUtf8(it->second.c_str());
|
||||
if (QDir(path).isRelative()) {
|
||||
path = QFileInfo(QDir(home), path).absoluteFilePath();
|
||||
}
|
||||
_pcSingleton->addPath(path);
|
||||
}
|
||||
_pcSingleton->addPath(QString::fromLatin1("%1/icons").arg(QString::fromUtf8(App::GetApplication().getHomePath())));
|
||||
_pcSingleton->addPath(QString::fromLatin1("%1/icons").arg(QString::fromUtf8(App::GetApplication().Config()["UserAppData"].c_str())));
|
||||
_pcSingleton->addPath(QString::fromLatin1("%1/icons").arg(QString::fromStdString(App::Application::getHomePath())));
|
||||
_pcSingleton->addPath(QString::fromLatin1("%1/icons").arg(QString::fromStdString(App::Application::getUserAppDataDir())));
|
||||
_pcSingleton->addPath(QLatin1String(":/icons/"));
|
||||
_pcSingleton->addPath(QLatin1String(":/Icons/"));
|
||||
}
|
||||
|
||||
@@ -1117,7 +1117,7 @@ void MacroCommand::activated(int iMsg)
|
||||
d = QDir(QString::fromUtf8(cMacroPath.c_str()));
|
||||
}
|
||||
else {
|
||||
QString dirstr = QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro");
|
||||
QString dirstr = QString::fromStdString(App::Application::getHomePath()) + QString::fromLatin1("Macro");
|
||||
d = QDir(dirstr);
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ DlgCustomActionsImp::DlgCustomActionsImp( QWidget* parent )
|
||||
for (unsigned int i=0; i<d.count(); i++ )
|
||||
ui->actionMacros->insertItem(0,d[i],QVariant(false));
|
||||
|
||||
QString systemMacroDirStr = QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro");
|
||||
QString systemMacroDirStr = QString::fromStdString(App::Application::getHomePath()) + QString::fromLatin1("Macro");
|
||||
d = QDir(systemMacroDirStr, QLatin1String("*.FCMacro *.py"));
|
||||
if (d.exists()) {
|
||||
for (unsigned int i=0; i<d.count(); i++ ) {
|
||||
|
||||
@@ -121,7 +121,7 @@ void DlgMacroExecuteImp::fillUpList(void)
|
||||
item->setText(0, dir[i]);
|
||||
}
|
||||
|
||||
QString dirstr = QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro");
|
||||
QString dirstr = QString::fromStdString(App::Application::getHomePath()) + QString::fromLatin1("Macro");
|
||||
dir = QDir(dirstr, QLatin1String("*.FCMacro *.py"));
|
||||
|
||||
ui->systemMacroListBox->clear();
|
||||
@@ -268,7 +268,7 @@ void DlgMacroExecuteImp::accept()
|
||||
dir =QDir(this->macroPath);
|
||||
}
|
||||
else {
|
||||
QString dirstr = QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro");
|
||||
QString dirstr = QString::fromStdString(App::Application::getHomePath()) + QString::fromLatin1("Macro");
|
||||
dir = QDir(dirstr);
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ void DlgMacroExecuteImp::on_editButton_clicked()
|
||||
else {
|
||||
//index == 1 system-wide
|
||||
item = ui->systemMacroListBox->currentItem();
|
||||
dir.setPath(QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro"));
|
||||
dir.setPath(QString::fromStdString(App::Application::getHomePath()) + QString::fromLatin1("Macro"));
|
||||
}
|
||||
|
||||
if (!item)
|
||||
|
||||
@@ -666,7 +666,7 @@ void DocumentRecoveryHandler::checkForPreviousCrashes(const std::function<void(Q
|
||||
tmp.setNameFilters(QStringList() << QString::fromLatin1("*.lock"));
|
||||
tmp.setFilter(QDir::Files);
|
||||
|
||||
QString exeName = QString::fromLatin1(App::GetApplication().getExecutableName());
|
||||
QString exeName = QString::fromStdString(App::Application::getExecutableName());
|
||||
QList<QFileInfo> locks = tmp.entryInfoList();
|
||||
for (QList<QFileInfo>::iterator it = locks.begin(); it != locks.end(); ++it) {
|
||||
QString bn = it->baseName();
|
||||
|
||||
@@ -273,7 +273,7 @@ void DownloadItem::init()
|
||||
|
||||
QString DownloadItem::getDownloadDirectory() const
|
||||
{
|
||||
QString exe = QString::fromLatin1(App::GetApplication().getExecutableName());
|
||||
QString exe = QString::fromStdString(App::Application::getExecutableName());
|
||||
QString path = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
|
||||
QString dirPath = QDir(path).filePath(exe);
|
||||
Base::Reference<ParameterGrp> hPath = App::GetApplication().GetUserParameter().GetGroup("BaseApp")
|
||||
|
||||
@@ -177,7 +177,7 @@ public:
|
||||
, running(false)
|
||||
{
|
||||
timer->setSingleShot(true);
|
||||
std::string exeName = App::GetApplication().getExecutableName();
|
||||
std::string exeName = App::Application::getExecutableName();
|
||||
serverName = QString::fromStdString(exeName);
|
||||
}
|
||||
|
||||
|
||||
@@ -1490,7 +1490,7 @@ QPixmap MainWindow::aboutImage() const
|
||||
if (!about_path.empty() && about_image.isNull()) {
|
||||
QString path = QString::fromUtf8(about_path.c_str());
|
||||
if (QDir(path).isRelative()) {
|
||||
QString home = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString home = QString::fromStdString(App::Application::getHomePath());
|
||||
path = QFileInfo(QDir(home), path).absoluteFilePath();
|
||||
}
|
||||
about_image.load(path);
|
||||
@@ -1517,7 +1517,7 @@ QPixmap MainWindow::splashImage() const
|
||||
if (splash_image.isNull()) {
|
||||
QString path = QString::fromUtf8(splash_path.c_str());
|
||||
if (QDir(path).isRelative()) {
|
||||
QString home = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString home = QString::fromStdString(App::Application::getHomePath());
|
||||
path = QFileInfo(QDir(home), path).absoluteFilePath();
|
||||
}
|
||||
|
||||
|
||||
@@ -418,7 +418,7 @@ Action * StdCmdDownloadOnlineHelp::createAction(void)
|
||||
{
|
||||
Action *pcAction;
|
||||
|
||||
QString exe = QString::fromLatin1(App::GetApplication().getExecutableName());
|
||||
QString exe = QString::fromStdString(App::Application::getExecutableName());
|
||||
pcAction = new Action(this,getMainWindow());
|
||||
pcAction->setText(QCoreApplication::translate(
|
||||
this->className(), getMenuText()));
|
||||
@@ -437,7 +437,7 @@ Action * StdCmdDownloadOnlineHelp::createAction(void)
|
||||
void StdCmdDownloadOnlineHelp::languageChange()
|
||||
{
|
||||
if (_pcAction) {
|
||||
QString exe = QString::fromLatin1(App::GetApplication().getExecutableName());
|
||||
QString exe = QString::fromStdString(App::Application::getExecutableName());
|
||||
_pcAction->setText(QCoreApplication::translate(
|
||||
this->className(), getMenuText()));
|
||||
_pcAction->setToolTip(QCoreApplication::translate(
|
||||
@@ -483,7 +483,7 @@ void StdCmdDownloadOnlineHelp::activated(int iMsg)
|
||||
bool canStart = false;
|
||||
|
||||
// set output directory
|
||||
QString path = QString::fromUtf8(App::GetApplication().getHomePath());
|
||||
QString path = QString::fromStdString(App::Application::getHomePath());
|
||||
path += QString::fromLatin1("/doc/");
|
||||
ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/OnlineHelp");
|
||||
path = QString::fromUtf8(hURLGrp->GetASCII( "DownloadLocation", path.toLatin1() ).c_str());
|
||||
|
||||
@@ -69,7 +69,7 @@ const char* OpenSCADNavigationStyle::mouseButtons(ViewerMode mode)
|
||||
case NavigationStyle::DRAGGING:
|
||||
return QT_TR_NOOP("Press left mouse button and move mouse");
|
||||
case NavigationStyle::ZOOMING:
|
||||
return QT_TR_NOOP("Press SHIFT and middle or right mouse button");
|
||||
return QT_TR_NOOP("Press middle mouse button or SHIFT and right mouse button");
|
||||
default:
|
||||
return "No description";
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ void SoFCOffscreenRenderer::writeToImageFile(const char* filename, const char* c
|
||||
img.setText(QLatin1String("Description"), QString::fromUtf8(comment));
|
||||
img.setText(QLatin1String("Creation Time"), QDateTime::currentDateTime().toString());
|
||||
img.setText(QLatin1String("Software"),
|
||||
QString::fromUtf8(App::GetApplication().getExecutableName()));
|
||||
QString::fromStdString(App::Application::getExecutableName()));
|
||||
}
|
||||
|
||||
QFile f(QString::fromUtf8(filename));
|
||||
@@ -296,7 +296,7 @@ std::string SoFCOffscreenRenderer::createMIBA(const SbMatrix& mat) const
|
||||
com << " <Source>\n" ;
|
||||
com << " <Creator>Unknown</Creator>\n" ;
|
||||
com << " <CreationDate>" << QDateTime::currentDateTime().toString().toLatin1().constData() << "</CreationDate>\n" ;
|
||||
com << " <CreatingSystem>" << App::GetApplication().getExecutableName() << " " << major << "." << minor << "</CreatingSystem>\n" ;
|
||||
com << " <CreatingSystem>" << App::Application::getExecutableName() << " " << major << "." << minor << "</CreatingSystem>\n" ;
|
||||
com << " <PartNumber>Unknown</PartNumber>\n";
|
||||
com << " <Revision>1.0</Revision>\n";
|
||||
com << " </Source>\n" ;
|
||||
|
||||
@@ -680,7 +680,7 @@ void AboutDialog::on_copyButton_clicked()
|
||||
QTextStream str(&data);
|
||||
std::map<std::string, std::string>& config = App::Application::Config();
|
||||
std::map<std::string,std::string>::iterator it;
|
||||
QString exe = QString::fromLatin1(App::GetApplication().getExecutableName());
|
||||
QString exe = QString::fromStdString(App::Application::getExecutableName());
|
||||
|
||||
QString major = QString::fromLatin1(config["BuildVersionMajor"].c_str());
|
||||
QString minor = QString::fromLatin1(config["BuildVersionMinor"].c_str());
|
||||
|
||||
@@ -431,7 +431,7 @@ void PyResource::load(const char* name)
|
||||
// checks whether it's a relative path
|
||||
if (fi.isRelative()) {
|
||||
QString cwd = QDir::currentPath ();
|
||||
QString home= QDir(QString::fromUtf8(App::GetApplication().getHomePath())).path();
|
||||
QString home= QDir(QString::fromStdString(App::Application::getHomePath())).path();
|
||||
|
||||
// search in cwd and home path for the file
|
||||
//
|
||||
|
||||
@@ -549,7 +549,7 @@ class _TaskPanel:
|
||||
# for example PoissonRatio
|
||||
value = Units.Quantity(inputfield_text).Value
|
||||
old_value = Units.Quantity(self.material[matProperty]).Value
|
||||
# value = float(inputfield_text) # this fails on locale with komma
|
||||
# value = float(inputfield_text) # this fails on locale with comma
|
||||
# https://forum.freecadweb.org/viewtopic.php?f=18&t=56912&p=523313#p523313
|
||||
if value:
|
||||
if not (1 - variation < float(old_value) / value < 1 + variation):
|
||||
|
||||
@@ -368,7 +368,7 @@ private:
|
||||
//makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)Utf8Name.c_str()));
|
||||
makeHeader.SetAuthorValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Author", "Author").c_str()));
|
||||
makeHeader.SetOrganizationValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Company").c_str()));
|
||||
makeHeader.SetOriginatingSystem(new TCollection_HAsciiString(App::GetApplication().getExecutableName()));
|
||||
makeHeader.SetOriginatingSystem(new TCollection_HAsciiString(App::Application::getExecutableName().c_str()));
|
||||
makeHeader.SetDescriptionValue(1, new TCollection_HAsciiString("FreeCAD Model"));
|
||||
IFSelect_ReturnStatus ret = writer.Write(name8bit.c_str());
|
||||
if (ret == IFSelect_RetError || ret == IFSelect_RetFail || ret == IFSelect_RetStop) {
|
||||
|
||||
@@ -668,7 +668,7 @@ private:
|
||||
//makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)Utf8Name.c_str()));
|
||||
makeHeader.SetAuthorValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Author", "Author").c_str()));
|
||||
makeHeader.SetOrganizationValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Company").c_str()));
|
||||
makeHeader.SetOriginatingSystem(new TCollection_HAsciiString(App::GetApplication().getExecutableName()));
|
||||
makeHeader.SetOriginatingSystem(new TCollection_HAsciiString(App::Application::getExecutableName().c_str()));
|
||||
makeHeader.SetDescriptionValue(1, new TCollection_HAsciiString("FreeCAD Model"));
|
||||
IFSelect_ReturnStatus ret = writer.Write(name8bit.c_str());
|
||||
if (ret == IFSelect_RetError || ret == IFSelect_RetFail || ret == IFSelect_RetStop) {
|
||||
|
||||
@@ -514,7 +514,7 @@ public:
|
||||
dKoeff[ ct ] = pKoef[ ct ];
|
||||
}
|
||||
/**
|
||||
* Destruktor. Deletes the ImpicitSurface instance
|
||||
* Destructor. Deletes the ImpicitSurface instance
|
||||
* of the WildMagic library
|
||||
*/
|
||||
~FunctionContainer(){ delete pImplSurf; }
|
||||
|
||||
@@ -180,22 +180,22 @@ MeshFacetArray& MeshFacetArray::operator = (const MeshFacetArray &rclFAry)
|
||||
|
||||
bool MeshGeomEdge::ContainedByOrIntersectBoundingBox ( const Base::BoundBox3f &rclBB ) const
|
||||
{
|
||||
// Test, ob alle Eckpunkte der Edge sich auf einer der 6 Seiten der BB befinden
|
||||
// Test whether all corner points of the Edge are on one of the 6 sides of the BB
|
||||
if ((GetBoundBox() && rclBB) == false)
|
||||
return false;
|
||||
|
||||
// Test, ob Edge-BB komplett in BB liegt
|
||||
// Test whether Edge-BB is completely in BB
|
||||
if (rclBB.IsInBox(GetBoundBox()))
|
||||
return true;
|
||||
|
||||
// Test, ob einer der Eckpunkte in BB liegt
|
||||
// Test whether one of the corner points is in BB
|
||||
for (int i=0;i<2;i++)
|
||||
{
|
||||
if (rclBB.IsInBox(_aclPoints[i]))
|
||||
return true;
|
||||
}
|
||||
|
||||
// "echter" Test auf Schnitt
|
||||
// "real" test for cut
|
||||
if (IntersectBoundingBox(rclBB))
|
||||
return true;
|
||||
|
||||
@@ -487,7 +487,7 @@ bool MeshGeomFacet::IsPointOf (const Base::Vector3f &rclPoint, float fDistance)
|
||||
clProjPt.ProjectToPlane(_aclPoints[0], clNorm);
|
||||
|
||||
|
||||
// Kante P0 --> P1
|
||||
// Edge P0 --> P1
|
||||
clEdge = clP1 - clP0;
|
||||
fLP = clProjPt.DistanceToLine(clP0, clEdge);
|
||||
if (fLP > 0.0f)
|
||||
@@ -500,9 +500,9 @@ bool MeshGeomFacet::IsPointOf (const Base::Vector3f &rclPoint, float fDistance)
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Kante P0 --> P2
|
||||
// Edge P0 --> P2
|
||||
clEdge = clP2 - clP0;
|
||||
fLP = clProjPt.DistanceToLine(clP0, clEdge);
|
||||
if (fLP > 0.0f)
|
||||
@@ -515,9 +515,9 @@ bool MeshGeomFacet::IsPointOf (const Base::Vector3f &rclPoint, float fDistance)
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Kante P1 --> P2
|
||||
// Edge P1 --> P2
|
||||
clEdge = clP2 - clP1;
|
||||
fLP = clProjPt.DistanceToLine(clP1, clEdge);
|
||||
if (fLP > 0.0f)
|
||||
@@ -537,7 +537,7 @@ bool MeshGeomFacet::IsPointOf (const Base::Vector3f &rclPoint, float fDistance)
|
||||
|
||||
bool MeshGeomFacet::IsPointOfFace (const Base::Vector3f& rclP, float fDistance) const
|
||||
{
|
||||
// effektivere Implementierung als in MeshGeomFacet::IsPointOf
|
||||
// more effective implementation than in MeshGeomFacet::IsPointOf
|
||||
//
|
||||
Base::Vector3f a(_aclPoints[0].x, _aclPoints[0].y, _aclPoints[0].z);
|
||||
Base::Vector3f b(_aclPoints[1].x, _aclPoints[1].y, _aclPoints[1].z);
|
||||
@@ -907,7 +907,7 @@ bool MeshGeomFacet::Foraminate (const Base::Vector3f &P, const Base::Vector3f &d
|
||||
|
||||
bool MeshGeomFacet::IntersectPlaneWithLine (const Base::Vector3f &rclPt, const Base::Vector3f &rclDir, Base::Vector3f &rclRes) const
|
||||
{
|
||||
// berechne den Schnittpunkt Gerade <-> Ebene
|
||||
// calculate the intersection of the straight line <-> plane
|
||||
if ( fabs(rclDir * GetNormal()) < 1e-3f )
|
||||
return false; // line and plane are parallel
|
||||
|
||||
@@ -979,7 +979,7 @@ void MeshGeomFacet::SubSample (float fStep, std::vector<Base::Vector3f> &rclPoin
|
||||
Base::Vector3f clVecAC(C - A);
|
||||
Base::Vector3f clVecBC(C - B);
|
||||
|
||||
// laengste Achse entspricht AB
|
||||
// longest axis corresponds to AB
|
||||
float fLenAB = clVecAB.Length();
|
||||
float fLenAC = clVecAC.Length();
|
||||
float fLenBC = clVecBC.Length();
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
<file>icons/RegularSolids/Mesh_Ellipsoid.svg</file>
|
||||
<file>icons/RegularSolids/Mesh_Sphere.svg</file>
|
||||
<file>icons/RegularSolids/Mesh_Torus.svg</file>
|
||||
</qresource>
|
||||
<qresource>
|
||||
<file>translations/Mesh_af.qm</file>
|
||||
<file>translations/Mesh_de.qm</file>
|
||||
<file>translations/Mesh_fi.qm</file>
|
||||
|
||||
@@ -274,7 +274,7 @@ void ViewProvider2DObjectGrid::onChanged(const App::Property* prop)
|
||||
ViewProviderPart::onChanged(prop);
|
||||
|
||||
if (prop == &ShowGrid || prop == &ShowOnlyInEditMode || prop == &Visibility) {
|
||||
if (ShowGrid.getValue() && Visibility.getValue() && !(ShowOnlyInEditMode.getValue() && !this->isEditing()))
|
||||
if (ShowGrid.getValue() && ((Visibility.getValue() && !ShowOnlyInEditMode.getValue()) || this->isEditing()))
|
||||
createGrid();
|
||||
else
|
||||
Gui::coinRemoveAllChildren(GridRoot);
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef PARTGUI_IEWPROVIDER2DOBJECT_H
|
||||
#define PARTGUI_IEWPROVIDER2DOBJECT_H
|
||||
#ifndef PARTGUI_VIEWPROVIDER2DOBJECT_H
|
||||
#define PARTGUI_VIEWPROVIDER2DOBJECT_H
|
||||
|
||||
#include "ViewProvider.h"
|
||||
#include <App/PropertyUnits.h>
|
||||
@@ -103,5 +103,5 @@ typedef Gui::ViewProviderPythonFeatureT<ViewProvider2DObject> ViewProvider2DObje
|
||||
} // namespace PartGui
|
||||
|
||||
|
||||
#endif // PARTGUI_IEWPROVIDER2DOBJECT_H
|
||||
#endif // PARTGUI_VIEWPROVIDER2DOBJECT_H
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
# include <QMessageBox>
|
||||
#endif
|
||||
|
||||
#include <App/Application.h>
|
||||
#include <Gui/Application.h>
|
||||
|
||||
#include "DlgActiveBody.h"
|
||||
@@ -92,10 +93,15 @@ void DlgActiveBody::accept()
|
||||
|
||||
App::DocumentObject* selectedBody =
|
||||
selectedItems[0]->data(Qt::UserRole).value<App::DocumentObject*>();
|
||||
if (selectedBody)
|
||||
if (selectedBody) {
|
||||
activeBody = makeBodyActive(selectedBody, _doc);
|
||||
else
|
||||
}
|
||||
else {
|
||||
// A transaction must be created as otherwise the undo/redo is broken
|
||||
App::GetApplication().setActiveTransaction(QT_TRANSLATE_NOOP("Command", "Add a Body"), true);
|
||||
activeBody = makeBody(_doc);
|
||||
App::GetApplication().closeActiveTransaction();
|
||||
}
|
||||
|
||||
QDialog::accept();
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ private:
|
||||
wc.restoreCursor();
|
||||
|
||||
try {
|
||||
std::string path = App::GetApplication().getHomePath();
|
||||
std::string path = App::Application::getHomePath();
|
||||
path += "Mod/Path/PathScripts/post/";
|
||||
QDir dir1(QString::fromUtf8(path.c_str()), QString::fromLatin1("*_pre.py"));
|
||||
std::string cMacroPath = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro")
|
||||
@@ -149,7 +149,7 @@ private:
|
||||
wc.restoreCursor();
|
||||
|
||||
try {
|
||||
std::string path = App::GetApplication().getHomePath();
|
||||
std::string path = App::Application::getHomePath();
|
||||
path += "Mod/Path/PathScripts/post/";
|
||||
QDir dir1(QString::fromUtf8(path.c_str()), QString::fromLatin1("*_pre.py"));
|
||||
std::string cMacroPath = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro")
|
||||
@@ -225,7 +225,7 @@ private:
|
||||
if (objlist.size() == 0)
|
||||
throw Py::RuntimeError("No object to export");
|
||||
|
||||
std::string path = App::GetApplication().getHomePath();
|
||||
std::string path = App::Application::getHomePath();
|
||||
path += "Mod/Path/PathScripts/post/";
|
||||
QDir dir1(QString::fromUtf8(path.c_str()), QString::fromLatin1("*_post.py"));
|
||||
std::string cMacroPath = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Macro")
|
||||
|
||||
@@ -222,7 +222,7 @@ private:
|
||||
if (! PyArg_ParseTuple(args.ptr(), "ss",&FileName,&DestDir))
|
||||
throw Py::Exception();
|
||||
|
||||
std::string resName = App::GetApplication().getHomePath();
|
||||
std::string resName = App::Application::getHomePath();
|
||||
resName += "Mod";
|
||||
resName += PATHSEP ;
|
||||
resName += "Raytracing";
|
||||
|
||||
@@ -264,9 +264,6 @@ void TaskSketcherGeneral::onChangedSketchView(const Gui::ViewProvider& vp,
|
||||
QSignalBlocker block(widget);
|
||||
widget->checkGridView(sketchView->ShowGrid.getValue());
|
||||
widget->enableGridSettings(sketchView->ShowGrid.getValue());
|
||||
if (sketchView->ShowGrid.getValue()) {
|
||||
sketchView->createGrid();
|
||||
}
|
||||
}
|
||||
else if (&sketchView->GridSize == &prop) {
|
||||
QSignalBlocker block(widget);
|
||||
@@ -293,7 +290,6 @@ void TaskSketcherGeneral::onToggleGridView(bool on)
|
||||
Base::ConnectionBlocker block(changedSketchView);
|
||||
sketchView->ShowGrid.setValue(on);
|
||||
widget->enableGridSettings(on);
|
||||
if (on) sketchView->createGrid();
|
||||
}
|
||||
|
||||
void TaskSketcherGeneral::onSetGridSize(double val)
|
||||
|
||||
@@ -6,32 +6,57 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>311</width>
|
||||
<height>453</height>
|
||||
<width>266</width>
|
||||
<height>684</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Sketcher validation</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<item row="5" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Reversed external geometry</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="findReversed">
|
||||
<property name="toolTip">
|
||||
<string>Finds reversed external geometries</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Find</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="swapReversed">
|
||||
<property name="toolTip">
|
||||
<string>Fixes found reversed external geometries by swapping their endpoints</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Swap endpoints in constraints</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_1">
|
||||
<property name="toolTip">
|
||||
<string>Fixes found missing coincidences by adding extra coincident constrains</string>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Missing coincidences</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Tolerance:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="comboBoxTolerance"/>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="checkBoxIgnoreConstruction">
|
||||
<property name="toolTip">
|
||||
<string>If checked, construction geometries are ignored in the search</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Ignore construction geometry</string>
|
||||
</property>
|
||||
@@ -42,11 +67,22 @@
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QPushButton" name="findButton">
|
||||
<property name="toolTip">
|
||||
<string>Finds and displays missing coincidences found in the sketch
|
||||
This is done by analyzing the sketch geometries and constraints</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Find</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Tolerance:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="fixButton">
|
||||
<property name="text">
|
||||
@@ -54,17 +90,17 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="highlightButton">
|
||||
<property name="text">
|
||||
<string>Highlight open vertexes</string>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="comboBoxTolerance">
|
||||
<property name="toolTip">
|
||||
<string>Defines the X/Y tolerance inside which missing coincidences are searched.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Invalid constraints</string>
|
||||
@@ -72,6 +108,9 @@
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="findConstraint">
|
||||
<property name="toolTip">
|
||||
<string>Finds invalid/malformed constrains in the sketch</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Find</string>
|
||||
</property>
|
||||
@@ -79,6 +118,9 @@
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="fixConstraint">
|
||||
<property name="toolTip">
|
||||
<string>Tries to fix found invalid constraints</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Fix</string>
|
||||
</property>
|
||||
@@ -86,6 +128,9 @@
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="delConstrExtr">
|
||||
<property name="toolTip">
|
||||
<string>Deletes constrains refering to external geometry</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Delete constraints to external geom.</string>
|
||||
</property>
|
||||
@@ -94,7 +139,39 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<item row="0" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_0">
|
||||
<property name="title">
|
||||
<string>Open and non-manifold vertexes</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_7">
|
||||
<property name="leftMargin">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="highlightButton">
|
||||
<property name="toolTip">
|
||||
<string>Highlights open and non-manifold vertexes that could lead to error if sketch is used to generate solids
|
||||
This is purely based on topological shape of the sketch and not on its geometry/constrain set.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Highlight troublesome vertexes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_6">
|
||||
<property name="title">
|
||||
<string>Degenerated geometry</string>
|
||||
@@ -102,6 +179,9 @@
|
||||
<layout class="QGridLayout" name="gridLayout_6">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="findDegenerated">
|
||||
<property name="toolTip">
|
||||
<string>Finds degenerated geometries in the sketch</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Find</string>
|
||||
</property>
|
||||
@@ -109,6 +189,9 @@
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="fixDegenerated">
|
||||
<property name="toolTip">
|
||||
<string>Tries to fix found degenerated geometries</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Fix</string>
|
||||
</property>
|
||||
@@ -117,30 +200,7 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Reversed external geometry</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="findReversed">
|
||||
<property name="text">
|
||||
<string>Find</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="swapReversed">
|
||||
<property name="text">
|
||||
<string>Swap endpoints in constraints</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_4">
|
||||
<property name="title">
|
||||
<string>Constraint orientation locking</string>
|
||||
@@ -148,6 +208,9 @@
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="orientLockEnable">
|
||||
<property name="toolTip">
|
||||
<string>Enables/updates constraint orientation locking</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enable/Update</string>
|
||||
</property>
|
||||
@@ -155,6 +218,9 @@
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="orientLockDisable">
|
||||
<property name="toolTip">
|
||||
<string>Disables constraint orientation locking</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Disable</string>
|
||||
</property>
|
||||
|
||||
@@ -351,7 +351,7 @@ void PropertySheet::copyCells(Base::Writer& writer, const std::vector<Range>& ra
|
||||
writer.incInd();
|
||||
do {
|
||||
auto cell = getValue(*range);
|
||||
if (cell) {
|
||||
if (cell && cell->isUsed()) {
|
||||
cell->save(writer);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -547,6 +547,16 @@ bool SheetModel::setData(const QModelIndex & index, const QVariant & value, int
|
||||
|
||||
try {
|
||||
QString str = value.toString();
|
||||
|
||||
// Check to see if this is already the value in the cell, and skip the update if so
|
||||
auto cell = sheet->getCell(address);
|
||||
if (cell) {
|
||||
std::string oldContent;
|
||||
cell->getStringContent(oldContent);
|
||||
if (str == QString::fromStdString(oldContent))
|
||||
return true;
|
||||
}
|
||||
|
||||
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Edit cell"));
|
||||
// Because of possible complication of recursively escaped
|
||||
// characters, let's take a shortcut and bypass the command
|
||||
|
||||
@@ -20,7 +20,7 @@ To build the installer you can do the following:
|
||||
(You can alternatively get nsProcess from https://nsis.sourceforge.io/NsProcess_plugin)
|
||||
7. Copy all FreeCAD files to the folder "~\FreeCAD"
|
||||
e.g. "C:\FreeCAD\Installer\FreeCAD"
|
||||
8. If you use a version of FreeCAD that was compiled using another MSVC version than MSVC 2017,
|
||||
8. If you use a version of FreeCAD that was compiled using another MSVC version than MSVC 2019,
|
||||
copy its distributable DLLs to the folder FILES_DEPS (see step 3).
|
||||
9. Right-click on the file FreeCAD-installer.nsi and choose "Compile NSIS script"
|
||||
to compile the installer.
|
||||
|
||||
@@ -26,9 +26,9 @@ Configuration and variables of FreeCAD installer
|
||||
!define APP_DIR_USERDATA ${APP_NAME}
|
||||
#!define APP_DIR_USERDATA "${APP_NAME}${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}"
|
||||
!define APP_INFO "${APP_NAME} - Your Own 3D Parametric Modeler"
|
||||
!define APP_WEBPAGE "https://freecadweb.org/"
|
||||
!define APP_WEBPAGE "https://freecad.org/"
|
||||
!define APP_WEBPAGE_INFO "${APP_NAME} Website"
|
||||
!define APP_WIKI "https://www.freecadweb.org/wiki/Main_Page"
|
||||
!define APP_WIKI "https://www.freecad.org/wiki/Main_Page"
|
||||
!define APP_WIKI_INFO "${APP_NAME} Wiki"
|
||||
!define APP_COPYRIGHT "${APP_NAME} is Copyright © 2001-${COPYRIGHT_YEAR} by the ${APP_NAME} Team"
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ BrandingText " "
|
||||
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION StartFreeCAD
|
||||
!define MUI_FINISHPAGE_SHOWREADME_TEXT $(FinishPageRun)
|
||||
!define MUI_FINISHPAGE_LINK $(TEXT_FINISH_WEBSITE)
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "https://freecadweb.org/"
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "https://freecad.org/"
|
||||
#!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckDesktopShortcut
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "هذا المساعد سوف يرشدك خلال
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "بناء سكربتات بايثون..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "إنشاء اختصار سطح المكتب"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "زيارة freecadweb.org لمشاهدة آخر الاخبار, الدعم والأفكار"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "زيارة freecad.org لمشاهدة آخر الاخبار, الدعم والأفكار"
|
||||
|
||||
#${LangFileString} FileTypeTitle "مستند - ليك"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Morroi honek $(^NameDA) aplikazioaren instalazio
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Python script-ak konpilatzen..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Sortu mahaigaineko lasterbidea"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Bisitatu freecadweb.org azken berriak, aholkuak eta laguntza lortzeko"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Bisitatu freecad.org azken berriak, aholkuak eta laguntza lortzeko"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-dokumentua"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Aquest assistent us guiarà en la instal·lació
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Document FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Tento pomocník vás provede instalací FreeCADu
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-dokumentů"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Denne guide vil installere FreeCAD på din compu
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-Dokument"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Dit installatie programma zal FreeCAD op uw syst
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-Document"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "This wizard will guide you through the installat
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org/ for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org/ for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-Document"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Cet assistant va vous guider tout au long de l'i
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compilation des scripts Python..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Créer un raccourci sur le bureau"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Consulter les dernières nouvelles, trucs et astuces sur le site freecadweb.org"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Consulter les dernières nouvelles, trucs et astuces sur le site freecad.org"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Document FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Este asistente vai-no guiar na instalación do F
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Documento FreeCAD"
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ ${LangFileString} TEXT_WELCOME "Dieser Assistent wird Sie durch die Installation
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Kompiliere Python Skripte..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Ein Symbol auf der Arbeitsoberfläche erzeugen"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Besuchen Sie freecadweb.org für aktuelle Neuigkeiten"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Besuchen Sie freecad.org für aktuelle Neuigkeiten"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-Dokument"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "A varázsló segítségével tudja telepíteni a
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Python parancsfájlok fordítása..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Indítóikon létrehozása Asztalon"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Látogasson el a freecadweb.org oldalra az aktuális hírekért, támogatásért és tippekért"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Látogasson el a freecad.org oldalra az aktuális hírekért, támogatásért és tippekért"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-dokumentum"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Program ini akan memandu anda dalam melakukan in
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Proses kompilasi skrip Python ..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Membuat pintasan ikon di destop"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Kunjungi freecadweb.org untuk berita terbaru serta dukungan"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Kunjungi freecad.org untuk berita terbaru serta dukungan"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Dokumen-FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Verrete guidati nell'installazione di $(^NameDA)
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compilazione degli script Python in corso..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Crea icona sul desktop"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visitate freecadweb.org per ultime novità, aiuto e suggerimenti"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visitate freecad.org per ultime novità, aiuto e suggerimenti"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Documento di FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "このウィザードが、あなたのFreeCAD
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Pythonスクリプトをコンパイルしています..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "デスクトップにショートカットを作成する"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "freecadweb.orgを開いて最新ニュースやサポート、ヒントなどを入手する"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "freecad.orgを開いて最新ニュースやサポート、ヒントなどを入手する"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD文書"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Denne veiviseren installerer FreeCAD på datamas
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Kompilerer Python script..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Lager snarveg på skrivebordet"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Besøk freecadweb.org for de seneste nyhetene, hjelp og støtte"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Besøk freecad.org for de seneste nyhetene, hjelp og støtte"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-dokument"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Kreator przeprowadzi Ciebie przez proces instala
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Kompilowanie skryptów Python..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Utwórz skrót na pulpicie"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Odwiedź freecadweb.org by poznać wiadomości i wskazówki lub skorzystać ze wsparcia"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Odwiedź freecad.org by poznać wiadomości i wskazówki lub skorzystać ze wsparcia"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Dokument FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Este assistente de instalação irá guiá-lo at
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compilando os scripts de Python..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Criar um atalho no ambiente de trabalho"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visite freecadweb.org para as últimas notícias, suporte e dicas"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visite freecad.org para as últimas notícias, suporte e dicas"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Documento FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Este assistente guiará você durante a instala
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compilando scripts Python..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Criar atalho na área de trabalho"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visite freecadweb.org para ver as últimas novidades do FreeCAD!"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visite freecad.org para ver as últimas novidades do FreeCAD!"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Documento-FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Acest asistent vă va ghida în procesul de inst
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Document FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Этот мастер проведет вас ч
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Компиляция скриптов Python..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Создать ярлык на рабочем столе"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Перейти на freecadweb.org за новостями, поддержкой и советами"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Перейти на freecad.org за новостями, поддержкой и советами"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-Document"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Tento sprievodca Vám pomáha inštalovať FreeC
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Kompilácia Python skriptov..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Vytvoriť skratku pre pracovnú plochu"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Navštívte freecadweb.org pre posledné novinky, podporu a tipy"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Navštívte freecad.org pre posledné novinky, podporu a tipy"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD dokument"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Este programa instalará FreeCAD en su ordenador
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compilando guiones Python..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Crear acceso directo en el escritorio"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visite freecadweb.org para últimas noticias, ayuda y consejos"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visite freecad.org para últimas noticias, ayuda y consejos"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Documento FreeCAD"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Denna guide tar dig igenom installationen av $(^
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Kompilerar Pythonskript..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Skapa skrivbordsgenväg"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Besök freecadweb.org för de senaste nyheterna, support och tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Besök freecad.org för de senaste nyheterna, support och tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-dokument"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "Bu sihirbaz size FreeCAD programını kuracak.$\
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Compiling Python scripts..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Create desktop shortcut"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecadweb.org for the latest news, support and tips"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Visit freecad.org for the latest news, support and tips"
|
||||
|
||||
#${LangFileString} FileTypeTitle "FreeCAD-Document"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ ${LangFileString} TEXT_WELCOME "За допомогою цього майстр
|
||||
#${LangFileString} TEXT_CONFIGURE_PYTHON "Обробка скриптів Python..."
|
||||
|
||||
${LangFileString} TEXT_FINISH_DESKTOP "Створити значок на стільниці"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Відвідати freecadweb.org, щоб ознайомитися з новинами, довідковими матеріалами та підказками"
|
||||
${LangFileString} TEXT_FINISH_WEBSITE "Відвідати freecad.org, щоб ознайомитися з новинами, довідковими матеріалами та підказками"
|
||||
|
||||
#${LangFileString} FileTypeTitle "Документ FreeCAD"
|
||||
|
||||
|
||||
@@ -45,9 +45,9 @@ Section -InstallData
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "DisplayVersion" "${APP_VERSION}"
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "DisplayIcon" "$INSTDIR\${APP_RUN}"
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "URLUpdateInfo" "${APP_WEBPAGE}"
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "URLInfoAbout" "https://www.freecadweb.org/"
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "URLInfoAbout" "https://www.freecad.org/"
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "Publisher" "${APP_NAME} Team"
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "HelpLink" "https://forum.freecadweb.org/"
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "HelpLink" "https://forum.freecad.org/"
|
||||
WriteRegDWORD SHCTX ${APP_UNINST_KEY} "NoModify" 0x00000001
|
||||
WriteRegDWORD SHCTX ${APP_UNINST_KEY} "NoRepair" 0x00000001
|
||||
WriteRegStr SHCTX ${APP_UNINST_KEY} "StartMenu" "$SMPROGRAMS\$StartmenuFolder"
|
||||
|
||||
Reference in New Issue
Block a user