Compare commits
103 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b9bfa5c550 | |||
| e9b426d561 | |||
| 36bde55f05 | |||
| c6c35bd2d3 | |||
| 930079cdcf | |||
| b8eb92fdc6 | |||
| 9d03a07005 | |||
| 47d68ac6a2 | |||
| 58e3b7200d | |||
| 09fb4dba8f | |||
| a2a26839ff | |||
| ec5ed6baf1 | |||
| 0c0c434575 | |||
| f51f9e3c1f | |||
| 2187c8dc56 | |||
| adc26e8031 | |||
| cbfb641436 | |||
| 3771ccb75a | |||
| 52c82d163b | |||
| b291ffc231 | |||
| baf37cb1cc | |||
| cf9ed2b070 | |||
| a9c9d8ba87 | |||
| 198e7ef9b5 | |||
| 9aebd3fe5a | |||
| 1642ebbe58 | |||
| c6091324f0 | |||
| fc8980aeb3 | |||
| 83c85c79c3 | |||
| e11d5dff7d | |||
| 381a743295 | |||
| bb88d3b5bb | |||
| f9950cb1db | |||
| 76e1410f53 | |||
| 7e0c640c1c | |||
| 27ae66475d | |||
| 4f0e0e6edc | |||
| 239f5a0d98 | |||
| ef6c15373e | |||
| fbe2fef66c | |||
| 844c20cfa8 | |||
| 6841532641 | |||
| eb07bad7da | |||
| 621aea2d10 | |||
| 5f6a5bf6e4 | |||
| 419d53381b | |||
| 4f436f7c0c | |||
| 26af24b711 | |||
| 916a1146b2 | |||
| bf765f88d2 | |||
| cc41382933 | |||
| ddc2d98f2c | |||
| a82f870f6a | |||
| 06f62a710c | |||
| 20dcef6af0 | |||
| dc12da981b | |||
| f8069ede36 | |||
| 5a740cfe68 | |||
| 76fd25f9de | |||
| 35a59ac38c | |||
| 5a4648e581 | |||
| d0f3d63ef8 | |||
| 885343c435 | |||
| ddd6f544e5 | |||
| a252d1571d | |||
| 12af1e764d | |||
| 83538ba3cd | |||
| 34e4bf9e44 | |||
| 15def85b29 | |||
| 4d98082de0 | |||
| 5b964fa338 | |||
| 948ffd940e | |||
| b00fa5ea7f | |||
| 0570197f8e | |||
| 083ebf2a0e | |||
| cc93256813 | |||
| 5ab2894828 | |||
| f6708547a9 | |||
| 21824c7f60 | |||
| da2bc3ba8b | |||
| cc31a0f6ae | |||
| 41790d996b | |||
| 4fc6b3d830 | |||
| c64d89507d | |||
| 3c52ca8cc6 | |||
| b53e11ad26 | |||
| a7bf4f33f8 | |||
| 7878610a7d | |||
| 89c28543a2 | |||
| b6c4b0b9fb | |||
| 65ed955565 | |||
| 561ae14204 | |||
| bf645981dd | |||
| ab97f80507 | |||
| 1294cb7ce5 | |||
| 0bb03bd219 | |||
| 41b058e208 | |||
| 97319cc665 | |||
| d89d0e26f7 | |||
| 148fae183c | |||
| 463fb03ab6 | |||
| 27b446964a | |||
| e5a00e153d |
@@ -4,15 +4,14 @@
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
files: |
|
||||
(?x)^(
|
||||
src/Mod/AddonManager|
|
||||
src/Tools|
|
||||
tests/src|
|
||||
src/Mod/Sketcher
|
||||
tests/src
|
||||
)
|
||||
exclude: |
|
||||
(?x)^(
|
||||
.*vcproj.*|
|
||||
.*vcxproj.*
|
||||
.*vcxproj.*|
|
||||
src|
|
||||
tests/src
|
||||
)
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
|
||||
+3
-4
@@ -25,11 +25,10 @@ endif()
|
||||
|
||||
project(FreeCAD)
|
||||
|
||||
set(PACKAGE_VERSION_NAME "Vulcan")
|
||||
set(PACKAGE_VERSION_MAJOR "0")
|
||||
set(PACKAGE_VERSION_MINOR "21")
|
||||
set(PACKAGE_VERSION_PATCH "0") # number of patch release (e.g. "4" for the 0.18.4 release)
|
||||
set(PACKAGE_VERSION_SUFFIX "dev") # either "dev" for development snapshot or "" (empty string)
|
||||
set(PACKAGE_VERSION_PATCH "2") # number of patch release (e.g. "4" for the 0.18.4 release)
|
||||
set(PACKAGE_VERSION_SUFFIX "") # either "dev" for development snapshot or "" (empty string)
|
||||
set(PACKAGE_BUILD_VERSION "0") # used when the same FreeCAD version will be re-released (for example using an updated LibPack)
|
||||
|
||||
set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
|
||||
@@ -105,7 +104,7 @@ if(MSVC AND FREECAD_LIBPACK_USE AND LIBPACK_FOUND)
|
||||
CopyLibpackDirectories()
|
||||
endif()
|
||||
|
||||
if (BUILD_TEST)
|
||||
if (ENABLE_DEVELOPER_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
[Blog](https://blog.freecad.org)
|
||||
|
||||
|
||||
[](https://github.com/freecad/freecad/releases/latest) [![Master][freecad-master-status]][gitlab-branch-master] [](https://crowdin.com/project/freecad) [](https://gitter.im/freecad/freecad?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://liberapay.com/FreeCAD)
|
||||
[](https://github.com/freecad/freecad/releases/latest) [](https://crowdin.com/project/freecad) [](https://liberapay.com/FreeCAD)
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/1828501/174066870-1692005b-f8d7-43fb-a289-6d2f07f73d7f.png" width="800"/>
|
||||
|
||||
@@ -53,19 +53,6 @@ For development releases check the [weekly-builds page](https://github.com/FreeC
|
||||
|
||||
Other options are described at the [wiki Download page](https://wiki.freecad.org/Download).
|
||||
|
||||
Build Status
|
||||
------------
|
||||
|
||||
| Master | 0.20 | Translation |
|
||||
|:------:|:----:|:-----------:|
|
||||
|[![Master][freecad-master-status]][gitlab-branch-master]|[![0.20][freecad-0.20-status]][gitlab-branch-0.20]|[](https://crowdin.com/project/freecad)|
|
||||
|
||||
[freecad-0.20-status]: https://gitlab.com/freecad/FreeCAD-CI/badges/releases/FreeCAD-0-20/pipeline.svg
|
||||
[freecad-master-status]: https://gitlab.com/freecad/FreeCAD-CI/badges/master/pipeline.svg
|
||||
[gitlab-branch-0.20]: https://gitlab.com/freecad/FreeCAD-CI/-/commits/releases/FreeCAD-0-20
|
||||
[gitlab-branch-master]: https://gitlab.com/freecad/FreeCAD-CI/-/commits/master
|
||||
[travis-builds]: https://travis-ci.org/FreeCAD/FreeCAD/builds
|
||||
|
||||
Compiling
|
||||
---------
|
||||
|
||||
|
||||
@@ -133,6 +133,7 @@ macro(InitializeFreeCADBuildOptions)
|
||||
option(BUILD_SURFACE "Build the FreeCAD surface module" ON)
|
||||
option(BUILD_VR "Build the FreeCAD Oculus Rift support (need Oculus SDK 4.x or higher)" OFF)
|
||||
option(BUILD_CLOUD "Build the FreeCAD cloud module" OFF)
|
||||
option(ENABLE_DEVELOPER_TESTS "Build the FreeCAD unit tests suit" ON)
|
||||
|
||||
if(MSVC)
|
||||
option(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" ON)
|
||||
|
||||
@@ -76,7 +76,7 @@ macro(PrintFinalReport)
|
||||
value(CMAKE_CXX_STANDARD)
|
||||
value(CMAKE_CXX_FLAGS)
|
||||
value(CMAKE_BUILD_TYPE)
|
||||
value(BUILD_TEST)
|
||||
value(ENABLE_DEVELOPER_TESTS)
|
||||
value(FREECAD_USE_FREETYPE)
|
||||
value(FREECAD_USE_EXTERNAL_SMESH)
|
||||
value(BUILD_SMESH)
|
||||
|
||||
@@ -23,7 +23,7 @@ if(BUILD_GUI)
|
||||
list (APPEND FREECAD_QT_COMPONENTS Designer)
|
||||
endif()
|
||||
endif()
|
||||
if (BUILD_TEST)
|
||||
if (ENABLE_DEVELOPER_TESTS)
|
||||
list (APPEND FREECAD_QT_COMPONENTS Test)
|
||||
endif ()
|
||||
|
||||
|
||||
@@ -232,7 +232,7 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
|
||||
%endif
|
||||
-DPACKAGE_WCREF="%{release} (Git)" \
|
||||
-DPACKAGE_WCURL="git://github.com/%{github_name}/FreeCAD.git master" \
|
||||
-DBUILD_TEST=FALSE \
|
||||
-DENABLE_DEVELOPER_TESTS=FALSE \
|
||||
../
|
||||
|
||||
make fc_version
|
||||
|
||||
@@ -210,12 +210,22 @@ PyObject* Application::sLoadFile(PyObject * /*self*/, PyObject *args)
|
||||
}
|
||||
}
|
||||
|
||||
// path could contain characters that need escaping, such as quote signs
|
||||
// therefore use its representation in the Python code string
|
||||
PyObject *pathObj = PyUnicode_FromString(path);
|
||||
PyObject *pathReprObj = PyObject_Repr(pathObj);
|
||||
const char *pathRepr = PyUnicode_AsUTF8(pathReprObj);
|
||||
|
||||
std::stringstream str;
|
||||
str << "import " << module << std::endl;
|
||||
if (fi.hasExtension("FCStd"))
|
||||
str << module << ".openDocument('" << path << "')" << std::endl;
|
||||
str << module << ".openDocument(" << pathRepr << ")" << std::endl;
|
||||
else
|
||||
str << module << ".insert('" << path << "','" << doc << "')" << std::endl;
|
||||
str << module << ".insert(" << pathRepr << ",'" << doc << "')" << std::endl;
|
||||
|
||||
Py_DECREF(pathObj);
|
||||
Py_DECREF(pathReprObj);
|
||||
|
||||
Base::Interpreter().runString(str.str().c_str());
|
||||
Py_Return;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ Data::Segment* ComplexGeoData::getSubElementByName(const char* name) const
|
||||
boost::regex ex("^([^0-9]*)([0-9]*)$");
|
||||
boost::cmatch what;
|
||||
|
||||
if (boost::regex_match(name, what, ex)) {
|
||||
if (name && boost::regex_match(name, what, ex)) {
|
||||
element = what[1].str();
|
||||
index = std::atoi(what[2].str().c_str());
|
||||
}
|
||||
|
||||
@@ -830,10 +830,14 @@ Document::Document(const char* documentName)
|
||||
auto paramGrp {App::GetApplication().GetParameterGroupByPath(
|
||||
"User parameter:BaseApp/Preferences/Document")};
|
||||
auto index = static_cast<int>(paramGrp->GetInt("prefLicenseType", 0));
|
||||
const char* name = App::licenseItems.at(index).at(App::posnOfFullName);
|
||||
const char* url = App::licenseItems.at(index).at(App::posnOfUrl);
|
||||
std::string licenseUrl = (paramGrp->GetASCII("prefLicenseUrl", url));
|
||||
|
||||
const char* name = "";
|
||||
const char* url = "";
|
||||
std::string licenseUrl = "";
|
||||
if (index >= 0 && index < App::countOfLicenses) {
|
||||
name = App::licenseItems.at(index).at(App::posnOfFullName);
|
||||
url = App::licenseItems.at(index).at(App::posnOfUrl);
|
||||
licenseUrl = (paramGrp->GetASCII("prefLicenseUrl", url));
|
||||
}
|
||||
ADD_PROPERTY_TYPE(License, (name), 0, Prop_None, "License string of the Item");
|
||||
ADD_PROPERTY_TYPE(
|
||||
LicenseURL, (licenseUrl.c_str()), 0, Prop_None, "URL to the license text/contract");
|
||||
|
||||
+5
-1
@@ -24,6 +24,7 @@
|
||||
#define APP_LICENSE_H
|
||||
|
||||
#include <array>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
|
||||
namespace App
|
||||
@@ -64,8 +65,11 @@ constexpr std::array<TLicenseArr, countOfLicenses> licenseItems {{
|
||||
|
||||
int constexpr findLicense(const char* identifier)
|
||||
{
|
||||
if (!identifier || identifier[0] == '\0') {
|
||||
return -1;
|
||||
}
|
||||
for (int i = 0; i < countOfLicenses; i++) {
|
||||
if (licenseItems.at(i).at(posnOfIdentifier) == identifier) {
|
||||
if (strcmp(licenseItems.at(i).at(posnOfIdentifier), identifier) == 0) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,9 +87,9 @@ std::string PropertyPythonObject::toString() const
|
||||
throw Py::Exception();
|
||||
Py::Callable method(pickle.getAttr(std::string("dumps")));
|
||||
Py::Object dump;
|
||||
if (this->object.hasAttr("__getstate__")) {
|
||||
if (this->object.hasAttr("dumps")) {
|
||||
Py::Tuple args;
|
||||
Py::Callable state(this->object.getAttr("__getstate__"));
|
||||
Py::Callable state(this->object.getAttr("dumps"));
|
||||
dump = state.apply(args);
|
||||
}
|
||||
else if (this->object.hasAttr("__dict__")) {
|
||||
@@ -129,10 +129,10 @@ void PropertyPythonObject::fromString(const std::string& repr)
|
||||
args.setItem(0, Py::String(repr));
|
||||
Py::Object res = method.apply(args);
|
||||
|
||||
if (this->object.hasAttr("__setstate__")) {
|
||||
if (this->object.hasAttr("loads")) {
|
||||
Py::Tuple args(1);
|
||||
args.setItem(0, res);
|
||||
Py::Callable state(this->object.getAttr("__setstate__"));
|
||||
Py::Callable state(this->object.getAttr("loads"));
|
||||
state.apply(args);
|
||||
}
|
||||
else if (this->object.hasAttr("__dict__")) {
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
<location filename="../../Link.cpp" line="119"/>
|
||||
<source>Stores the last user choice of whether to apply CopyOnChange setup to all links
|
||||
that reference the same configurable object</source>
|
||||
<translation>Guarda la última opción de usuario acerca de si aplicar la configuración de CopyOnChange a todos los enlaces que hacen referencia al mismo objeto configurable</translation>
|
||||
<translation>Almacena la última opción de usuario de si aplicar la configuración de CopyOnChange a todos los enlaces
|
||||
que hacen referencia al mismo objeto configurable</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
<location filename="../../Link.cpp" line="119"/>
|
||||
<source>Stores the last user choice of whether to apply CopyOnChange setup to all links
|
||||
that reference the same configurable object</source>
|
||||
<translation type="unfinished">Stores the last user choice of whether to apply CopyOnChange setup to all links
|
||||
that reference the same configurable object</translation>
|
||||
<translation>Pamti posljednji izbor korisnika o tome treba li primijeniti postavljanje CopyOnChange
|
||||
na sve veze koje referenciraju isti konfigurabilni objekt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -24,32 +24,32 @@ that reference the same configurable object</translation>
|
||||
<message>
|
||||
<location filename="../../Origin.cpp" line="140"/>
|
||||
<source>X-axis</source>
|
||||
<translation type="unfinished">X-axis</translation>
|
||||
<translation>X-os</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../Origin.cpp" line="141"/>
|
||||
<source>Y-axis</source>
|
||||
<translation type="unfinished">Y-axis</translation>
|
||||
<translation>Y-os</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../Origin.cpp" line="142"/>
|
||||
<source>Z-axis</source>
|
||||
<translation type="unfinished">Z-axis</translation>
|
||||
<translation>Z-os</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../Origin.cpp" line="143"/>
|
||||
<source>XY-plane</source>
|
||||
<translation type="unfinished">XY-plane</translation>
|
||||
<translation>XY-ravnina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../Origin.cpp" line="144"/>
|
||||
<source>XZ-plane</source>
|
||||
<translation type="unfinished">XZ-plane</translation>
|
||||
<translation>XZ-ravnina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../Origin.cpp" line="145"/>
|
||||
<source>YZ-plane</source>
|
||||
<translation type="unfinished">YZ-plane</translation>
|
||||
<translation>YZ-ravnina</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
+17
-1
@@ -957,7 +957,8 @@ void InventorBuilder::endSeparator()
|
||||
* A more elaborate description of the constructor.
|
||||
*/
|
||||
Builder3D::Builder3D()
|
||||
: InventorBuilder(result)
|
||||
: result{}
|
||||
, builder{result}
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1010,6 +1011,21 @@ void Builder3D::saveToFile(const char* FileName)
|
||||
file << result.str();
|
||||
}
|
||||
|
||||
void Builder3D::addNode(const NodeItem& item)
|
||||
{
|
||||
builder.addNode(item);
|
||||
}
|
||||
|
||||
void Builder3D::beginSeparator()
|
||||
{
|
||||
builder.beginSeparator();
|
||||
}
|
||||
|
||||
void Builder3D::endSeparator()
|
||||
{
|
||||
builder.endSeparator();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
template<typename T>
|
||||
|
||||
+17
-3
@@ -604,7 +604,6 @@ public:
|
||||
* \brief Closes the last added separator node.
|
||||
*/
|
||||
void endSeparator();
|
||||
/** @name Appearance handling */
|
||||
|
||||
private:
|
||||
void increaseIndent();
|
||||
@@ -642,11 +641,11 @@ private:
|
||||
* \endcode
|
||||
* \see Base::ConsoleSingleton
|
||||
*/
|
||||
class BaseExport Builder3D : public InventorBuilder
|
||||
class BaseExport Builder3D
|
||||
{
|
||||
public:
|
||||
Builder3D();
|
||||
virtual ~Builder3D();
|
||||
~Builder3D();
|
||||
|
||||
/// clear the string buffer
|
||||
void clear();
|
||||
@@ -659,9 +658,24 @@ public:
|
||||
void saveToFile(const char* FileName);
|
||||
//@}
|
||||
|
||||
/*!
|
||||
* \brief addNode
|
||||
* Writes the content of the added node to the output stream.
|
||||
*/
|
||||
void addNode(const NodeItem&);
|
||||
/*!
|
||||
* \brief Sets a separator node.
|
||||
*/
|
||||
void beginSeparator();
|
||||
/*!
|
||||
* \brief Closes the last added separator node.
|
||||
*/
|
||||
void endSeparator();
|
||||
|
||||
private:
|
||||
/// the result string
|
||||
std::stringstream result;
|
||||
InventorBuilder builder;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c
|
||||
"from distutils.sysconfig import get_python_lib; print(get_python_lib(plat_specific=True))"
|
||||
OUTPUT_VARIABLE python_libs OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
if (${PYTHON_VERSION_STRING} VERSION_LESS "3.10")
|
||||
# deprecated distutils package still required for ubuntu 20.04 and similar
|
||||
# see https://bugs.launchpad.net/ubuntu/+source/python3.8/+bug/2039511
|
||||
# TODO: remove this once we drop support for 20.04
|
||||
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c
|
||||
"from distutils.sysconfig import get_python_lib; print(get_python_lib(plat_specific=True))"
|
||||
OUTPUT_VARIABLE python_libs OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
else()
|
||||
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c
|
||||
"from sysconfig import get_path; print(get_path('purelib'))"
|
||||
OUTPUT_VARIABLE python_libs OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
endif()
|
||||
|
||||
SET(PYTHON_MAIN_DIR ${python_libs})
|
||||
|
||||
set(NAMESPACE_DIR "${CMAKE_BINARY_DIR}/Ext/freecad")
|
||||
|
||||
+17
-6
@@ -344,7 +344,7 @@ namespace {
|
||||
std::stringstream str;
|
||||
str << "Image formats (";
|
||||
for (const auto& ext : supportedFormats) {
|
||||
str << "*." << ext.constData() << " ";
|
||||
str << "*." << ext.constData() << " *." << ext.toUpper().constData() << " ";
|
||||
}
|
||||
str << ")";
|
||||
|
||||
@@ -1743,6 +1743,7 @@ void setCategoryFilterRules()
|
||||
stream << "qt.qpa.xcb.warning=false\n";
|
||||
stream << "qt.qpa.mime.warning=false\n";
|
||||
stream << "qt.svg.warning=false\n";
|
||||
stream << "qt.xkb.compose.warning=false\n";
|
||||
stream.flush();
|
||||
QLoggingCategory::setFilterRules(filter);
|
||||
}
|
||||
@@ -2530,11 +2531,21 @@ void Application::setStyleSheet(const QString& qssFile, bool tiledBackground)
|
||||
void Application::checkForDeprecatedSettings()
|
||||
{
|
||||
// From 0.21, `FCBak` will be the intended default backup format
|
||||
// TODO: Check for `FCStd#` and warn user.
|
||||
bool useFCBakExtension = App::GetApplication().GetParameterGroupByPath
|
||||
("User parameter:BaseApp/Preferences/Document")->GetBool("UseFCBakExtension", true);
|
||||
if (!useFCBakExtension) {
|
||||
Base::Console().Warning("`.FCStd#` backup format is deprecated from 0.21 and may be removed in future versions. Please use `.FCBak` instead.\n");
|
||||
bool makeBackups = App::GetApplication()
|
||||
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/Document")
|
||||
->GetBool("CreateBackupFiles", true);
|
||||
if (makeBackups) {
|
||||
bool useFCBakExtension =
|
||||
App::GetApplication()
|
||||
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/Document")
|
||||
->GetBool("UseFCBakExtension", true);
|
||||
if (!useFCBakExtension) {
|
||||
// TODO: This should be translated
|
||||
Base::Console().Warning("The `.FCStd#` backup format is deprecated as of v0.21 and may "
|
||||
"be removed in future versions.\n"
|
||||
"To update, check the 'Preferences->General->Document->Use "
|
||||
"date and FCBak extension' option.\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -592,6 +592,47 @@ bool StdCmdDependencyGraph::isActive()
|
||||
return (getActiveGuiDocument() ? true : false);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// Std_ExportDependencyGraph
|
||||
//===========================================================================
|
||||
|
||||
DEF_STD_CMD_A(StdCmdExportDependencyGraph)
|
||||
|
||||
StdCmdExportDependencyGraph::StdCmdExportDependencyGraph()
|
||||
: Command("Std_ExportDependencyGraph")
|
||||
{
|
||||
sGroup = "Tools";
|
||||
sMenuText = QT_TR_NOOP("Export dependency graph...");
|
||||
sToolTipText = QT_TR_NOOP("Export the dependency graph to a file");
|
||||
sStatusTip = QT_TR_NOOP("Export the dependency graph to a file");
|
||||
sWhatsThis = "Std_ExportDependencyGraph";
|
||||
eType = 0;
|
||||
//sPixmap = "Std_ExportDependencyGraph";
|
||||
}
|
||||
|
||||
void StdCmdExportDependencyGraph::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
App::Document* doc = App::GetApplication().getActiveDocument();
|
||||
QString format = QString::fromLatin1("%1 (*.gv)").arg(Gui::GraphvizView::tr("Graphviz format"));
|
||||
QString fn = Gui::FileDialog::getSaveFileName(Gui::getMainWindow(), Gui::GraphvizView::tr("Export graph"), QString(), format);
|
||||
if (!fn.isEmpty()) {
|
||||
QFile file(fn);
|
||||
if (file.open(QFile::WriteOnly)) {
|
||||
std::stringstream str;
|
||||
doc->exportGraphviz(str);
|
||||
QByteArray buffer = QByteArray::fromStdString(str.str());
|
||||
file.write(buffer);
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool StdCmdExportDependencyGraph::isActive()
|
||||
{
|
||||
return (getActiveGuiDocument() ? true : false);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// Std_New
|
||||
//===========================================================================
|
||||
@@ -1905,6 +1946,7 @@ void CreateDocCommands()
|
||||
rcCmdMgr.addCommand(new StdCmdExport());
|
||||
rcCmdMgr.addCommand(new StdCmdMergeProjects());
|
||||
rcCmdMgr.addCommand(new StdCmdDependencyGraph());
|
||||
rcCmdMgr.addCommand(new StdCmdExportDependencyGraph());
|
||||
|
||||
rcCmdMgr.addCommand(new StdCmdSave());
|
||||
rcCmdMgr.addCommand(new StdCmdSaveAs());
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<string>Enable Notification Area</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>NotificationAreaEnabled</cstring>
|
||||
|
||||
@@ -84,6 +84,8 @@ void DlgSettingsViewColor::saveSettings()
|
||||
ui->SelectionColor->onSave();
|
||||
ui->TreeEditColor->onSave();
|
||||
ui->TreeActiveColor->onSave();
|
||||
ui->CbLabelColor->onSave();
|
||||
ui->CbLabelTextSize->onSave();
|
||||
}
|
||||
|
||||
void DlgSettingsViewColor::loadSettings()
|
||||
@@ -102,7 +104,9 @@ void DlgSettingsViewColor::loadSettings()
|
||||
ui->SelectionColor->onRestore();
|
||||
ui->TreeEditColor->onRestore();
|
||||
ui->TreeActiveColor->onRestore();
|
||||
|
||||
ui->CbLabelColor->onRestore();
|
||||
ui->CbLabelTextSize->onRestore();
|
||||
|
||||
if (ui->radioButtonSimple->isChecked())
|
||||
onRadioButtonSimpleToggled(true);
|
||||
else if(ui->radioButtonGradient->isChecked())
|
||||
|
||||
@@ -559,7 +559,140 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="spacer_3">
|
||||
<widget class="QGroupBox" name="groupColorBar">
|
||||
<property name="title">
|
||||
<string>Color Bar</string>
|
||||
</property>
|
||||
<layout class="QGridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_CbLabelColor">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>240</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Label text color</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="Gui::PrefColorButton" name="CbLabelColor">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Color Bar (used in Mesh and FEM Wbs) Label text color</string>
|
||||
</property>
|
||||
<property name="color" stdset="0">
|
||||
<color>
|
||||
<red>255</red>
|
||||
<green>255</green>
|
||||
<blue>255</blue>
|
||||
</color>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>CbLabelColor</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>View</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_CbLabelTextSize">
|
||||
<property name="text">
|
||||
<string>Label text size</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="Gui::PrefSpinBox" name="CbLabelTextSize">
|
||||
<property name="toolTip">
|
||||
<string>Color Bar (used in Mesh and FEM Wbs) Label Text Size</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>36</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>13</number>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>CbLabelTextSize</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>View</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<spacer name="spacer_6">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="spacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
@@ -594,6 +727,11 @@
|
||||
<extends>QCheckBox</extends>
|
||||
<header>Gui/PrefWidgets.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>Gui::PrefSpinBox</class>
|
||||
<extends>QSpinBox</extends>
|
||||
<header>Gui/PrefWidgets.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>checkBoxPreselection</tabstop>
|
||||
|
||||
@@ -671,10 +671,11 @@ void Document::slotNewObject(const App::DocumentObject& Obj)
|
||||
}
|
||||
else if (cName!=Obj.getViewProviderName() && !pcProvider->allowOverride(Obj)) {
|
||||
FC_WARN("View provider type '" << cName << "' does not support " << Obj.getFullName());
|
||||
delete pcProvider;
|
||||
pcProvider = nullptr;
|
||||
cName = Obj.getViewProviderName();
|
||||
}
|
||||
else {
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+17
-13
@@ -27,6 +27,7 @@
|
||||
# include <QButtonGroup>
|
||||
# include <QCompleter>
|
||||
# include <QCryptographicHash>
|
||||
# include <QDialogButtonBox>
|
||||
# include <QDir>
|
||||
# include <QGridLayout>
|
||||
# include <QGroupBox>
|
||||
@@ -899,16 +900,17 @@ SelectModule::SelectModule (const QString& type, const SelectModule::Dict& types
|
||||
spacerItem1 = new QSpacerItem(131, 31, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||||
hboxLayout->addItem(spacerItem1);
|
||||
|
||||
okButton = new QPushButton(this);
|
||||
okButton->setObjectName(QString::fromUtf8("okButton"));
|
||||
okButton->setText(tr("Select"));
|
||||
okButton->setEnabled(false);
|
||||
buttonBox = new QDialogButtonBox(this);
|
||||
buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
|
||||
buttonBox->setStandardButtons(QDialogButtonBox::Open | QDialogButtonBox::Cancel);
|
||||
buttonBox->button(QDialogButtonBox::Open)->setEnabled(false);
|
||||
|
||||
hboxLayout->addWidget(okButton);
|
||||
hboxLayout->addWidget(buttonBox);
|
||||
gridLayout->addLayout(hboxLayout, 2, 0, 1, 1);
|
||||
|
||||
// connections
|
||||
connect(okButton, &QPushButton::clicked, this, &SelectModule::accept);
|
||||
connect(buttonBox, &QDialogButtonBox::accepted, this, &SelectModule::accept);
|
||||
connect(buttonBox, &QDialogButtonBox::rejected, this, &SelectModule::reject);
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,15,0)
|
||||
connect(group, qOverload<int>(&QButtonGroup::buttonClicked), this, &SelectModule::onButtonClicked);
|
||||
#else
|
||||
@@ -928,16 +930,13 @@ void SelectModule::accept()
|
||||
|
||||
void SelectModule::reject()
|
||||
{
|
||||
if (group->checkedButton())
|
||||
QDialog::reject();
|
||||
QDialog::reject();
|
||||
}
|
||||
|
||||
void SelectModule::onButtonClicked()
|
||||
{
|
||||
if (group->checkedButton())
|
||||
okButton->setEnabled(true);
|
||||
else
|
||||
okButton->setEnabled(false);
|
||||
QWidget* button = buttonBox->button(QDialogButtonBox::Open);
|
||||
button->setEnabled(group->checkedButton() != nullptr);
|
||||
}
|
||||
|
||||
QString SelectModule::getModule() const
|
||||
@@ -1061,8 +1060,13 @@ SelectModule::Dict SelectModule::importHandler(const QStringList& fileNames, con
|
||||
if (dlg.exec()) {
|
||||
QString mod = dlg.getModule();
|
||||
const QStringList& files = fileExtension[it.key()];
|
||||
for (const auto & file : files)
|
||||
for (const auto & file : files) {
|
||||
dict[file] = mod;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Cancelled
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <FCGlobal.h>
|
||||
|
||||
class QButtonGroup;
|
||||
class QDialogButtonBox;
|
||||
class QGridLayout;
|
||||
class QGroupBox;
|
||||
class QHBoxLayout;
|
||||
@@ -269,7 +270,7 @@ private Q_SLOTS:
|
||||
void onButtonClicked();
|
||||
|
||||
private:
|
||||
QPushButton *okButton;
|
||||
QDialogButtonBox *buttonBox;
|
||||
QButtonGroup* group;
|
||||
QGridLayout *gridLayout;
|
||||
QHBoxLayout *hboxLayout;
|
||||
|
||||
@@ -295,9 +295,9 @@ InitApplications()
|
||||
Gui.activateWorkbench("NoneWorkbench")
|
||||
|
||||
# Register .py, .FCScript and .FCMacro
|
||||
FreeCAD.addImportType("Inventor V2.1 (*.iv)","FreeCADGui")
|
||||
FreeCAD.addImportType("VRML V2.0 (*.wrl *.vrml *.wrz *.wrl.gz)","FreeCADGui")
|
||||
FreeCAD.addImportType("Python (*.py *.FCMacro *.FCScript)","FreeCADGui")
|
||||
FreeCAD.addImportType("Inventor V2.1 (*.iv *.IV)","FreeCADGui")
|
||||
FreeCAD.addImportType("VRML V2.0 (*.wrl *.WRL *.vrml *.VRML *.wrz *.WRZ *.wrl.gz *.WRL.GZ)","FreeCADGui")
|
||||
FreeCAD.addImportType("Python (*.py *.FCMacro *.FCScript *.fcmacro *.fcscript)","FreeCADGui")
|
||||
FreeCAD.addExportType("Inventor V2.1 (*.iv)","FreeCADGui")
|
||||
FreeCAD.addExportType("VRML V2.0 (*.wrl *.vrml *.wrz *.wrl.gz)","FreeCADGui")
|
||||
FreeCAD.addExportType("X3D Extensible 3D (*.x3d *.x3dz)","FreeCADGui")
|
||||
|
||||
@@ -440,35 +440,45 @@ QByteArray GraphvizView::exportGraph(const QString& format)
|
||||
return dotProc.readAll();
|
||||
}
|
||||
|
||||
bool GraphvizView::onMsg(const char* pMsg,const char**)
|
||||
bool GraphvizView::onMsg(const char* pMsg, const char**)
|
||||
{
|
||||
if (strcmp("Save",pMsg) == 0 || strcmp("SaveAs",pMsg) == 0) {
|
||||
QList< QPair<QString, QString> > formatMap;
|
||||
formatMap << qMakePair(QString::fromLatin1("%1 (*.gv)").arg(tr("Graphviz format")), QString::fromLatin1("gv"));
|
||||
formatMap << qMakePair(QString::fromLatin1("%1 (*.png)").arg(tr("PNG format")), QString::fromLatin1("png"));
|
||||
formatMap << qMakePair(QString::fromLatin1("%1 (*.bmp)").arg(tr("Bitmap format")), QString::fromLatin1("bmp"));
|
||||
formatMap << qMakePair(QString::fromLatin1("%1 (*.gif)").arg(tr("GIF format")), QString::fromLatin1("gif"));
|
||||
formatMap << qMakePair(QString::fromLatin1("%1 (*.jpg)").arg(tr("JPG format")), QString::fromLatin1("jpg"));
|
||||
formatMap << qMakePair(QString::fromLatin1("%1 (*.svg)").arg(tr("SVG format")), QString::fromLatin1("svg"));
|
||||
formatMap << qMakePair(QString::fromLatin1("%1 (*.pdf)").arg(tr("PDF format")), QString::fromLatin1("pdf"));
|
||||
//formatMap << qMakePair(tr("VRML format (*.vrml)"), QString::fromLatin1("vrml"));
|
||||
|
||||
QStringList filter;
|
||||
for (QList< QPair<QString, QString> >::iterator it = formatMap.begin(); it != formatMap.end(); ++it)
|
||||
filter << it->first;
|
||||
for (const auto & it : qAsConst(formatMap)) {
|
||||
filter << it.first;
|
||||
}
|
||||
|
||||
QString selectedFilter;
|
||||
QString fn = Gui::FileDialog::getSaveFileName(this, tr("Export graph"), QString(), filter.join(QLatin1String(";;")), &selectedFilter);
|
||||
if (!fn.isEmpty()) {
|
||||
QString format;
|
||||
for (QList< QPair<QString, QString> >::iterator it = formatMap.begin(); it != formatMap.end(); ++it) {
|
||||
if (selectedFilter == it->first) {
|
||||
format = it->second;
|
||||
for (const auto & it : qAsConst(formatMap)) {
|
||||
if (selectedFilter == it.first) {
|
||||
format = it.second;
|
||||
break;
|
||||
}
|
||||
}
|
||||
QByteArray buffer = exportGraph(format);
|
||||
if (buffer.isEmpty())
|
||||
QByteArray buffer;
|
||||
if (format == QLatin1String("gv")) {
|
||||
std::stringstream str;
|
||||
doc.exportGraphviz(str);
|
||||
buffer = QByteArray::fromStdString(str.str());
|
||||
}
|
||||
else {
|
||||
buffer = exportGraph(format);
|
||||
}
|
||||
if (buffer.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
QFile file(fn);
|
||||
if (file.open(QFile::WriteOnly)) {
|
||||
file.write(buffer);
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Пераўтварыць</translation>
|
||||
</message>
|
||||
@@ -8555,8 +8555,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Экспарт у PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Незахаваны дакумент</translation>
|
||||
</message>
|
||||
@@ -10346,8 +10346,8 @@ the current copy will be lost.
|
||||
<translation>Стварыць новы пусты дакумент</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Без назвы</translation>
|
||||
</message>
|
||||
@@ -12713,7 +12713,7 @@ after FreeCAD launches</source>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskImage.cpp" line="450"/>
|
||||
<source>Enter desired distance between the points</source>
|
||||
<translation>Увядзіце жаданую адлегласць паміж кропкамі</translation>
|
||||
<translation>Увядзіце патрэбную адлегласць паміж кропкамі</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformar</translation>
|
||||
</message>
|
||||
@@ -8543,8 +8543,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>S'està exportant a PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>El document no s'ha desat</translation>
|
||||
</message>
|
||||
@@ -10330,8 +10330,8 @@ la còpia actual es perdrà.</translation>
|
||||
<translation>Crea un document buit nou</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sense nom</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformace</translation>
|
||||
</message>
|
||||
@@ -8558,8 +8558,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Exportovat PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Neuložený dokument</translation>
|
||||
</message>
|
||||
@@ -10351,8 +10351,8 @@ na aktuální kopii budou ztraceny.
|
||||
<translation>Vytvořit nový prázdný dokument</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Nepojmenovaný</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformieren</translation>
|
||||
</message>
|
||||
@@ -7045,7 +7045,7 @@ How do you want to proceed?</source>
|
||||
<message>
|
||||
<location filename="../OpenCascadeNavigationStyle.cpp" line="57"/>
|
||||
<source>Press CTRL and right mouse button</source>
|
||||
<translation>Drücken Sie STRG und die Rechte Maustaste</translation>
|
||||
<translation>Drücken Sie STRG und die rechte Maustaste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../OpenCascadeNavigationStyle.cpp" line="59"/>
|
||||
@@ -7738,7 +7738,7 @@ Möchten Sie ein anderes Verzeichnis angeben?</translation>
|
||||
<message>
|
||||
<location filename="../TinkerCADNavigationStyle.cpp" line="57"/>
|
||||
<source>Press right mouse button</source>
|
||||
<translation>Rechte Maustaste drücken</translation>
|
||||
<translation>Drücken Sie die rechte Maustaste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../TinkerCADNavigationStyle.cpp" line="59"/>
|
||||
@@ -7761,7 +7761,7 @@ Möchten Sie ein anderes Verzeichnis angeben?</translation>
|
||||
<message>
|
||||
<location filename="../TouchpadNavigationStyle.cpp" line="56"/>
|
||||
<source>Press ALT button</source>
|
||||
<translation>Bitte ALT drücken</translation>
|
||||
<translation>Drücken Sie die ALT-Taste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../TouchpadNavigationStyle.cpp" line="58"/>
|
||||
@@ -8549,8 +8549,8 @@ Möchten Sie ein anderes Verzeichnis angeben?</translation>
|
||||
<translation>Exportiert als PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Nicht gespeichertes Dokument</translation>
|
||||
</message>
|
||||
@@ -10340,8 +10340,8 @@ the current copy will be lost.
|
||||
<translation>Neues Dokument erstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Unbenannt</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Μετατόπιση</translation>
|
||||
</message>
|
||||
@@ -8558,8 +8558,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Πραγματοποιείται εξαγωγή αρχείου PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Μη αποθηκευμένο έγγραφο</translation>
|
||||
</message>
|
||||
@@ -10350,8 +10350,8 @@ the current copy will be lost.
|
||||
<translation>Δημιουργήστε ένα νέο κενό έγγραφο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Ανώνυμο</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformar</translation>
|
||||
</message>
|
||||
@@ -2209,12 +2209,12 @@ la pantalla de bienvenida</translation>
|
||||
<message>
|
||||
<location filename="../DlgGeneralImp.cpp" line="454"/>
|
||||
<source>Apply the %1 preference pack</source>
|
||||
<translation>Aplicar el paquete de preferencias %1</translation>
|
||||
<translation>Aplicar el %1 paquete de preferencias</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgGeneralImp.cpp" line="515"/>
|
||||
<source>Choose a FreeCAD config file to import</source>
|
||||
<translation>Elija un archivo de configuración de FreeCAD para importar</translation>
|
||||
<translation>Elige un archivo de configuración de FreeCAD para importar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgGeneralImp.cpp" line="526"/>
|
||||
@@ -2386,7 +2386,7 @@ Este archivo ya existe.</translation>
|
||||
<message>
|
||||
<location filename="../DlgMacroExecuteImp.cpp" line="447"/>
|
||||
<source>Do you really want to delete the macro '%1'?</source>
|
||||
<translation>¿Realmente quiere borrar la macro '%1'?</translation>
|
||||
<translation>¿Realmente desea eliminar la macro '%1'?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgMacroExecuteImp.cpp" line="476"/>
|
||||
@@ -8553,8 +8553,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Exportando a PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Documento sin guardar</translation>
|
||||
</message>
|
||||
@@ -10344,8 +10344,8 @@ la copia actual se perderá.
|
||||
<translation>Crea un documento vacío nuevo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sin nombre</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformar</translation>
|
||||
</message>
|
||||
@@ -8555,8 +8555,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Exportando a PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Documento sin guardar</translation>
|
||||
</message>
|
||||
@@ -10346,8 +10346,8 @@ la copia actual se perderá.
|
||||
<translation>Crea un documento vacío nuevo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sin nombre</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformatu</translation>
|
||||
</message>
|
||||
@@ -8569,8 +8569,8 @@ Beste direktorio bat aukeratu nahi al duzu?</translation>
|
||||
<translation>PDFa esportatzen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Gorde gabeko dokumentua</translation>
|
||||
</message>
|
||||
@@ -10361,8 +10361,8 @@ egindako aldaketak galdu egingo direla.</translation>
|
||||
<translation>Sortu dokumentu huts berri bat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Izenik gabea</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Muunna</translation>
|
||||
</message>
|
||||
@@ -8565,8 +8565,8 @@ Haluatko valita toisen hakemiston?</translation>
|
||||
<translation>Viedään PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Tallentamaton asiakirja</translation>
|
||||
</message>
|
||||
@@ -10357,8 +10357,8 @@ the current copy will be lost.
|
||||
<translation>Luo uusi tyhjä asiakirja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Nimetön</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformer</translation>
|
||||
</message>
|
||||
@@ -5845,7 +5845,7 @@ La colonne "État" indique si le document a pu être récupéré.</translation>
|
||||
<message>
|
||||
<location filename="../Placement.ui" line="237"/>
|
||||
<source>Euler angles (zy'x'')</source>
|
||||
<translation>Angle d'Euler (zy'x'')</translation>
|
||||
<translation>Angles d'Euler (zy'x'')</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Placement.ui" line="290"/>
|
||||
@@ -5890,7 +5890,7 @@ La colonne "État" indique si le document a pu être récupéré.</translation>
|
||||
<message>
|
||||
<location filename="../Placement.ui" line="451"/>
|
||||
<source>Apply incremental changes</source>
|
||||
<translation>Appliquer les modifications incrémentielles</translation>
|
||||
<translation>Appliquer des modifications incrémentielles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Placement.ui" line="471"/>
|
||||
@@ -8552,8 +8552,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Exportation PDF ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Document non sauvegardé</translation>
|
||||
</message>
|
||||
@@ -10344,8 +10344,8 @@ apportée à la copie en cours sera perdue.
|
||||
<translation>Créer un nouveau document vide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sans nom</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformar</translation>
|
||||
</message>
|
||||
@@ -8571,8 +8571,8 @@ Quere especificar outro directorio?</translation>
|
||||
<translation>Exportando en PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Documento non gardado</translation>
|
||||
</message>
|
||||
@@ -10362,8 +10362,8 @@ the current copy will be lost.
|
||||
<translation>Abrir un documento novo baleiro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sen nome</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformiraj</translation>
|
||||
</message>
|
||||
@@ -8620,8 +8620,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Izvoz PDF ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Nespremljeni dokument</translation>
|
||||
</message>
|
||||
@@ -10424,8 +10424,8 @@ trenutnu kopiju će biti izgubljene.</translation>
|
||||
<translation>Kreira novi prazni dokument</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Neimenovano</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Átalakítás</translation>
|
||||
</message>
|
||||
@@ -8561,8 +8561,8 @@ Meg szeretne adni egy másik könyvtárat?</translation>
|
||||
<translation>PDF exportálása...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Nem mentett dokumentum</translation>
|
||||
</message>
|
||||
@@ -10354,8 +10354,8 @@ az aktuális példány elveszik.
|
||||
<translation>Új üres munkalap létrehozása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Névtelen</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Trasforma</translation>
|
||||
</message>
|
||||
@@ -8562,8 +8562,8 @@ Vuoi specificare un'altra cartella?</translation>
|
||||
<translation>Esportazione PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Documento non salvato</translation>
|
||||
</message>
|
||||
@@ -10356,8 +10356,8 @@ la copia corrente andranno perse.
|
||||
<translation>Crea un documento vuoto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Senza nome</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>変換</translation>
|
||||
</message>
|
||||
@@ -8524,8 +8524,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>PDF ファイルをエクスポートしています</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>未保存のドキュメント</translation>
|
||||
</message>
|
||||
@@ -10311,8 +10311,8 @@ the current copy will be lost.
|
||||
<translation>新しい空のドキュメントを作成</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Unnamed</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>გარდაქმნა</translation>
|
||||
</message>
|
||||
@@ -8555,8 +8555,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>PDF-ად გატანა...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>შეუნახავი დოკუმენტი</translation>
|
||||
</message>
|
||||
@@ -10348,8 +10348,8 @@ the current copy will be lost.
|
||||
<translation>ახალი ცარიელი პროექტის შექმნა</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>უსახელო</translation>
|
||||
</message>
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
<location filename="../CommandTest.cpp" line="718"/>
|
||||
<location filename="../CommandTest.cpp" line="719"/>
|
||||
<source>Run test cases to verify console messages</source>
|
||||
<translation type="unfinished">Run test cases to verify console messages</translation>
|
||||
<translation>시험삼아 콘솔 메시지를 확인해보기 위해 테스용 샘플을 실행 해 보세요</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -195,8 +195,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>변환하기</translation>
|
||||
</message>
|
||||
@@ -5118,13 +5118,13 @@ Larger value eases to pick things, but can make small features impossible to sel
|
||||
<location filename="../DlgSettingsViewColor.ui" line="329"/>
|
||||
<location filename="../DlgSettingsViewColor.cpp" line="148"/>
|
||||
<source>Top:</source>
|
||||
<translation type="unfinished">Top:</translation>
|
||||
<translation>상단:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgSettingsViewColor.ui" line="356"/>
|
||||
<location filename="../DlgSettingsViewColor.cpp" line="149"/>
|
||||
<source>Middle:</source>
|
||||
<translation type="unfinished">Middle:</translation>
|
||||
<translation>중앙:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgSettingsViewColor.ui" line="315"/>
|
||||
@@ -5150,7 +5150,7 @@ Larger value eases to pick things, but can make small features impossible to sel
|
||||
<location filename="../DlgSettingsViewColor.ui" line="399"/>
|
||||
<location filename="../DlgSettingsViewColor.cpp" line="150"/>
|
||||
<source>Bottom:</source>
|
||||
<translation type="unfinished">Bottom:</translation>
|
||||
<translation>하단:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgSettingsViewColor.ui" line="433"/>
|
||||
@@ -5185,7 +5185,7 @@ Larger value eases to pick things, but can make small features impossible to sel
|
||||
<message>
|
||||
<location filename="../DlgSettingsViewColor.cpp" line="157"/>
|
||||
<source>Midway:</source>
|
||||
<translation type="unfinished">Midway:</translation>
|
||||
<translation>중간:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgSettingsViewColor.cpp" line="158"/>
|
||||
@@ -6962,7 +6962,7 @@ How do you want to proceed?</source>
|
||||
<message>
|
||||
<location filename="../ManualAlignment.cpp" line="1135"/>
|
||||
<source>Point_%1</source>
|
||||
<translation type="unfinished">Point_%1</translation>
|
||||
<translation>포인트_%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ManualAlignment.cpp" line="1237"/>
|
||||
@@ -6982,12 +6982,12 @@ How do you want to proceed?</source>
|
||||
<message>
|
||||
<location filename="../ManualAlignment.cpp" line="1262"/>
|
||||
<source>&Align</source>
|
||||
<translation type="unfinished">&Align</translation>
|
||||
<translation>정렬하기(&A)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ManualAlignment.cpp" line="1263"/>
|
||||
<source>&Remove last point</source>
|
||||
<translation type="unfinished">&Remove last point</translation>
|
||||
<translation>마지막 포인트 제거(&R)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ManualAlignment.cpp" line="1265"/>
|
||||
@@ -8036,7 +8036,7 @@ Do you want to specify another directory?</source>
|
||||
<message>
|
||||
<location filename="../Tree.cpp" line="906"/>
|
||||
<source>Tree settings</source>
|
||||
<translation type="unfinished">Tree settings</translation>
|
||||
<translation>트리 설정</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Tree.cpp" line="910"/>
|
||||
@@ -8557,8 +8557,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>PDF로 내보내기...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>저장하지 않은 문서</translation>
|
||||
</message>
|
||||
@@ -8836,7 +8836,7 @@ Do you want to continue?</source>
|
||||
<location filename="../NotificationArea.cpp" line="553"/>
|
||||
<location filename="../NotificationArea.cpp" line="1021"/>
|
||||
<source>Notifier</source>
|
||||
<translation type="unfinished">Notifier</translation>
|
||||
<translation>알림이</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../NotificationArea.cpp" line="553"/>
|
||||
@@ -8847,7 +8847,7 @@ Do you want to continue?</source>
|
||||
<message>
|
||||
<location filename="../NotificationArea.cpp" line="963"/>
|
||||
<source>Notifier: </source>
|
||||
<translation type="unfinished">Notifier: </translation>
|
||||
<translation>알림이: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../NotificationArea.cpp" line="965"/>
|
||||
@@ -10346,8 +10346,8 @@ the current copy will be lost.
|
||||
<translation>비어 있는 새 문서 만들기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>이름없음</translation>
|
||||
</message>
|
||||
@@ -12544,7 +12544,7 @@ after FreeCAD launches</source>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskImage.ui" line="247"/>
|
||||
<source>Interactively scale the image by setting a length between two points of the image.</source>
|
||||
<translation type="unfinished">Interactively scale the image by setting a length between two points of the image.</translation>
|
||||
<translation>이미지의 두 포인트 사이의 길이를 설정하여 서로 작용하게 이미지 크기를 조정합니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskImage.ui" line="250"/>
|
||||
@@ -12711,7 +12711,7 @@ after FreeCAD launches</source>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskImage.cpp" line="450"/>
|
||||
<source>Enter desired distance between the points</source>
|
||||
<translation type="unfinished">Enter desired distance between the points</translation>
|
||||
<translation>포인트 사이의 원하는 거리를 입력합니다</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformeren</translation>
|
||||
</message>
|
||||
@@ -8558,8 +8558,8 @@ Wilt u een andere map opgeven?</translation>
|
||||
<translation>Exporteren van PDF ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Niet-opgeslagen document</translation>
|
||||
</message>
|
||||
@@ -10350,8 +10350,8 @@ the current copy will be lost.
|
||||
<translation>Maak een nieuw leeg document</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Naamloos</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Przemieszczenie</translation>
|
||||
</message>
|
||||
@@ -2339,7 +2339,7 @@ wyświetli ekran powitalny</translation>
|
||||
<location filename="../DlgMacroExecuteImp.cpp" line="96"/>
|
||||
<location filename="../DlgMacroExecuteImp.cpp" line="653"/>
|
||||
<source>Macros</source>
|
||||
<translation>Makrodefinicje</translation>
|
||||
<translation>Makropolecenie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgMacroExecuteImp.cpp" line="372"/>
|
||||
@@ -4532,7 +4532,7 @@ Możesz również skorzystać z formatki: John Doe <john@doe.com></transla
|
||||
<message>
|
||||
<location filename="../DlgSettingsMacro.ui" line="14"/>
|
||||
<source>Macro</source>
|
||||
<translation>Makrodefinicje</translation>
|
||||
<translation>Makropolecenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgSettingsMacro.ui" line="20"/>
|
||||
@@ -6802,7 +6802,7 @@ Do you want to save your changes?</source>
|
||||
<message>
|
||||
<location filename="../DlgKeyboardImp.cpp" line="383"/>
|
||||
<source>Macros</source>
|
||||
<translation>Makropolecenie</translation>
|
||||
<translation>Makrodefinicje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Command.cpp" line="1146"/>
|
||||
@@ -8560,8 +8560,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Eksportuj do PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Niezapisany dokument</translation>
|
||||
</message>
|
||||
@@ -10352,8 +10352,8 @@ bieżącej kopii zostaną utracone.
|
||||
<translation>Utwórz nowy pusty dokument</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Nienazwany</translation>
|
||||
</message>
|
||||
@@ -11590,7 +11590,7 @@ bieżącej kopii zostaną utracone.
|
||||
<message>
|
||||
<location filename="../CommandView.cpp" line="1607"/>
|
||||
<source>Fullscreen</source>
|
||||
<translation>Cały ekran</translation>
|
||||
<translation>Pełny ekran</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandView.cpp" line="1608"/>
|
||||
@@ -11828,7 +11828,7 @@ bieżącej kopii zostaną utracone.
|
||||
<location filename="../CommandView.cpp" line="1670"/>
|
||||
<location filename="../CommandView.cpp" line="1672"/>
|
||||
<source>Display the active view either in fullscreen, in undocked or docked mode</source>
|
||||
<translation>Wyświetl aktywny widok na pełnym ekranie, w trybie niezadokowanym lub zadokowanym</translation>
|
||||
<translation>Wyświetl aktywny widok w trybie pełnoekranowym, w trybie niezadokowanym lub zadokowanym</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -11836,7 +11836,7 @@ bieżącej kopii zostaną utracone.
|
||||
<message>
|
||||
<location filename="../CommandView.cpp" line="1639"/>
|
||||
<source>Fullscreen</source>
|
||||
<translation>Pełny ekran</translation>
|
||||
<translation>Cały ekran</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandView.cpp" line="1640"/>
|
||||
@@ -11870,7 +11870,7 @@ bieżącej kopii zostaną utracone.
|
||||
<location filename="../CommandView.cpp" line="1579"/>
|
||||
<location filename="../CommandView.cpp" line="1581"/>
|
||||
<source>Display the active view either in fullscreen, in undocked or docked mode</source>
|
||||
<translation>Wyświetl aktywny widok w trybie pełnoekranowym, w trybie niezadokowanym lub zadokowanym</translation>
|
||||
<translation>Wyświetl aktywny widok na pełnym ekranie, w trybie niezadokowanym lub zadokowanym</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -12189,7 +12189,7 @@ Czy nadal chcesz kontynuować?</translation>
|
||||
<message>
|
||||
<location filename="../Workbench.cpp" line="547"/>
|
||||
<source>Macro</source>
|
||||
<translation>Makropolecenia</translation>
|
||||
<translation>Makrodefinicje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Workbench.cpp" line="548"/>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformar</translation>
|
||||
</message>
|
||||
@@ -8551,8 +8551,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Exportar PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Documento não salvo</translation>
|
||||
</message>
|
||||
@@ -10340,8 +10340,8 @@ cópia atual será perdida.
|
||||
<translation>Criar um novo documento vazio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sem nome</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformar</translation>
|
||||
</message>
|
||||
@@ -405,7 +405,7 @@
|
||||
<message>
|
||||
<location filename="../DownloadItem.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation>Formulário</translation>
|
||||
<translation>De</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DownloadItem.ui" line="29"/>
|
||||
@@ -8560,8 +8560,8 @@ Quer especificar outro diretório?</translation>
|
||||
<translation>A exportar PDF ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Documento não guardado</translation>
|
||||
</message>
|
||||
@@ -10351,8 +10351,8 @@ the current copy will be lost.
|
||||
<translation>Criar um Novo Documento vazio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sem nome</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transformare</translation>
|
||||
</message>
|
||||
@@ -8560,8 +8560,8 @@ Doriţi să specificaţi un alt director?</translation>
|
||||
<translation>Export PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Document nesalvat</translation>
|
||||
</message>
|
||||
@@ -10351,8 +10351,8 @@ copia curentă va fi pierdută.
|
||||
<translation>Creaţi un nou document gol</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Nedenumit</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Переместить</translation>
|
||||
</message>
|
||||
@@ -8553,8 +8553,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Экспорт PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Документ не сохранён</translation>
|
||||
</message>
|
||||
@@ -10343,8 +10343,8 @@ the current copy will be lost.
|
||||
<translation>Создать новый пустой документ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Безымянный</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Preoblikuj</translation>
|
||||
</message>
|
||||
@@ -2109,11 +2109,11 @@ Prilagodite jo lahko glede na velikost zaslona ali po lastnem okusu</translation
|
||||
'ComboView': combine tree view and property view into one panel.
|
||||
'TreeView and PropertyView': split tree view and property view into separate panel.
|
||||
'Both': keep all three panels, and you can have two sets of tree view and property view.</source>
|
||||
<translation>Prilagodi način prikazovanja drevesnega prikaza v plošči (potreben vnovični zagon).
|
||||
<translation>Prilagodi način prikazovanja drevesnega prikaza v podoknu (potreben vnovični zagon).
|
||||
|
||||
"Sestavljen pogled": v eno ploščo združen drevesni pprikaz in lastnostni prikaz.
|
||||
"Drevesni in Lastnostni prikaz": drevesni in lastnostni prikaz, vsak na svoji plošči.
|
||||
"Oboje": ohrani vse tri plošče tako, da imate lahko dva drevesna in dva lastnostna prikaza.</translation>
|
||||
"Sestavljen pogled": v eno podokno združen drevesni prikaz in lastnostni prikaz.
|
||||
"Drevesni in Lastnostni prikaz": drevesni in lastnostni prikaz, vsak v svojem podoknu.
|
||||
"Oboje": ohrani vsa tri podokna tako, da imate lahko dva drevesna in dva lastnostna prikaza.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgGeneral.ui" line="264"/>
|
||||
@@ -3237,7 +3237,7 @@ vidno poročevalno pogovorno okno</translation>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="283"/>
|
||||
<source>Font color for normal messages in Report view panel</source>
|
||||
<translation>Barva pisave pri običajnih sporočilih in plošči poročevalnega pogleda</translation>
|
||||
<translation>Barva pisave pri običajnih sporočilih v poročilnem podoknu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="306"/>
|
||||
@@ -3247,7 +3247,7 @@ vidno poročevalno pogovorno okno</translation>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="341"/>
|
||||
<source>Font color for log messages in Report view panel</source>
|
||||
<translation>Barva pisave pri dnevniških sporočilih in plošči poročevalnega pogleda</translation>
|
||||
<translation>Barva pisave pri dnevniških sporočilih v poročilnem podoknu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="364"/>
|
||||
@@ -3257,7 +3257,7 @@ vidno poročevalno pogovorno okno</translation>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="399"/>
|
||||
<source>Font color for warning messages in Report view panel</source>
|
||||
<translation>Barva pisave pri opozorilnih sporočilih in plošči poročevalnega pogleda</translation>
|
||||
<translation>Barva pisave pri opozorilnih sporočilih v poročilnem podoknu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="422"/>
|
||||
@@ -3267,7 +3267,7 @@ vidno poročevalno pogovorno okno</translation>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="457"/>
|
||||
<source>Font color for error messages in Report view panel</source>
|
||||
<translation>Barva pisave pri sporočilih o napakah in plošči poročevalnega pogleda</translation>
|
||||
<translation>Barva pisave pri sporočilih o napakah v poročilnem podoknu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="501"/>
|
||||
@@ -3279,7 +3279,7 @@ vidno poročevalno pogovorno okno</translation>
|
||||
<source>Internal Python output will be redirected
|
||||
from Python console to Report view panel</source>
|
||||
<translation>Pythonov notranji izpis bo preusmerjen s
|
||||
Pythonove ukazne mize na ploščo poročevalnega pogleda</translation>
|
||||
Pythonove ukazne mize na poročilno podokno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="511"/>
|
||||
@@ -3291,7 +3291,7 @@ Pythonove ukazne mize na ploščo poročevalnega pogleda</translation>
|
||||
<source>Internal Python error messages will be redirected
|
||||
from Python console to Report view panel</source>
|
||||
<translation>Notranja Pythonova sporočila o napakah bodo preusmerjena
|
||||
s Pythonove ukazne mize na ploščo poročevalnega pogleda</translation>
|
||||
s Pythonove ukazne mize na poročilno podokno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DlgReportView.ui" line="531"/>
|
||||
@@ -6197,7 +6197,7 @@ izbrani pred odprtjem tega pogovrnega okna</translation>
|
||||
<message>
|
||||
<location filename="../PropertyView.cpp" line="558"/>
|
||||
<source>Property View</source>
|
||||
<translation>Pogled z lastnostmi</translation>
|
||||
<translation>Lastnostni prikaz</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -8567,8 +8567,8 @@ Ali želite navesti drugo mapo?</translation>
|
||||
<translation>Izvažanje PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Neshranjen dokument</translation>
|
||||
</message>
|
||||
@@ -10361,8 +10361,8 @@ bodo izgubljene.
|
||||
<translation>Ustvari nov, prazen dokument</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Neimenovan</translation>
|
||||
</message>
|
||||
@@ -12474,7 +12474,7 @@ ob zagodu FreeCAD-a</translation>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskOrientation.ui" line="53"/>
|
||||
<source>Reverse direction</source>
|
||||
<translation type="unfinished">Reverse direction</translation>
|
||||
<translation>Nasprotna smer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskOrientation.ui" line="81"/>
|
||||
@@ -12512,7 +12512,7 @@ ob zagodu FreeCAD-a</translation>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskImage.ui" line="76"/>
|
||||
<source>Reverse direction</source>
|
||||
<translation type="unfinished">Reverse direction</translation>
|
||||
<translation>Nasprotna smer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../TaskView/TaskImage.ui" line="83"/>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Pomeri</translation>
|
||||
</message>
|
||||
@@ -8563,8 +8563,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Izvozim PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Nesačuvan dokument</translation>
|
||||
</message>
|
||||
@@ -10357,8 +10357,8 @@ the current copy will be lost.
|
||||
<translation>Napravi novi prazan dokument</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Bez imena</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Помери</translation>
|
||||
</message>
|
||||
@@ -8563,8 +8563,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Извозим PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Несачуван документ</translation>
|
||||
</message>
|
||||
@@ -10357,8 +10357,8 @@ the current copy will be lost.
|
||||
<translation>Направи нови празан документ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Без имена</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Omvandla</translation>
|
||||
</message>
|
||||
@@ -8565,8 +8565,8 @@ Vill du ange en annan katalog?</translation>
|
||||
<translation>Exporterar PDF ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Osparat dokument</translation>
|
||||
</message>
|
||||
@@ -10359,8 +10359,8 @@ the current copy will be lost.
|
||||
<translation>Skapa ett nytt tomt dokument</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Namnlös</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Dönüştür</translation>
|
||||
</message>
|
||||
@@ -8562,8 +8562,8 @@ Başka bir dizin belirlemek ister misiniz?</translation>
|
||||
<translation>PDF dışa aktarılıyor...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Kaydedilmemiş belge</translation>
|
||||
</message>
|
||||
@@ -10351,8 +10351,8 @@ the current copy will be lost.
|
||||
<translation>Yeni, boş bir belge oluştur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Adsız</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Перетворити</translation>
|
||||
</message>
|
||||
@@ -8559,8 +8559,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>Експорт в PDF ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>Незбережений документ</translation>
|
||||
</message>
|
||||
@@ -10354,8 +10354,8 @@ the current copy will be lost.
|
||||
<translation>Створює новий порожній документ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Без назви</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>Transforma</translation>
|
||||
</message>
|
||||
@@ -8548,8 +8548,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>S'està exportant a PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>El document no s'ha guardat.</translation>
|
||||
</message>
|
||||
@@ -10337,8 +10337,8 @@ the current copy will be lost.
|
||||
<translation>Crea un document buit nou</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>Sense nom</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>变换</translation>
|
||||
</message>
|
||||
@@ -8533,8 +8533,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>导出 PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>未保存的文件</translation>
|
||||
</message>
|
||||
@@ -10323,8 +10323,8 @@ the current copy will be lost.
|
||||
<translation>创建一个新空白文档</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>未命名</translation>
|
||||
</message>
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Transform.cpp" line="105"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<location filename="../ViewProviderDragger.cpp" line="222"/>
|
||||
<location filename="../ViewProviderAnnotation.cpp" line="416"/>
|
||||
<source>Transform</source>
|
||||
<translation>轉換</translation>
|
||||
</message>
|
||||
@@ -8546,8 +8546,8 @@ Do you want to specify another directory?</source>
|
||||
<translation>匯出 PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<location filename="../MainWindow.cpp" line="692"/>
|
||||
<location filename="../CommandDoc.cpp" line="1189"/>
|
||||
<source>Unsaved document</source>
|
||||
<translation>未儲存文件</translation>
|
||||
</message>
|
||||
@@ -10327,8 +10327,8 @@ the current copy will be lost.
|
||||
<translation>建立一個新的空白檔案</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<location filename="../MainWindow.cpp" line="2053"/>
|
||||
<location filename="../DocumentRecovery.cpp" line="393"/>
|
||||
<source>Unnamed</source>
|
||||
<translation>未命名</translation>
|
||||
</message>
|
||||
|
||||
@@ -247,7 +247,7 @@ struct MainWindowP
|
||||
QMdiArea* mdiArea;
|
||||
QPointer<MDIView> activeView;
|
||||
QSignalMapper* windowMapper;
|
||||
QSplashScreen* splashscreen;
|
||||
SplashScreen* splashscreen;
|
||||
StatusBarObserver* status;
|
||||
bool whatsthis;
|
||||
QString whatstext;
|
||||
@@ -394,7 +394,7 @@ MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags f)
|
||||
|
||||
auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/NotificationArea");
|
||||
|
||||
auto notificationAreaEnabled = hGrp->GetBool("NotificationAreaEnabled", true);
|
||||
auto notificationAreaEnabled = hGrp->GetBool("NotificationAreaEnabled", false);
|
||||
|
||||
if(notificationAreaEnabled) {
|
||||
NotificationArea* notificationArea = new NotificationArea(statusBar());
|
||||
@@ -1649,6 +1649,11 @@ void MainWindow::startSplasher()
|
||||
// first search for an external image file
|
||||
if (hGrp->GetBool("ShowSplasher", true)) {
|
||||
d->splashscreen = new SplashScreen(this->splashImage());
|
||||
|
||||
if (!hGrp->GetBool("ShowSplasherMessages", true)) {
|
||||
d->splashscreen->setShowMessages(false);
|
||||
}
|
||||
|
||||
d->splashscreen->show();
|
||||
}
|
||||
else
|
||||
|
||||
+57
-6
@@ -943,6 +943,12 @@ SbRotation NaviCubeImplementation::getNearestOrientation(PickId pickId) {
|
||||
SbVec3f standardZ;
|
||||
standardOrientation.multVec(SbVec3f(0, 0, 1), standardZ);
|
||||
|
||||
// Cleanup near zero values
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (abs(standardZ[i]) < 1e-6) standardZ[i] = 0.0F;
|
||||
}
|
||||
standardZ.normalize();
|
||||
|
||||
// Rotate the camera to the selected face by the smallest angle to align the z-axis
|
||||
SbRotation intermediateOrientation = cameraOrientation * SbRotation(cameraZ, standardZ);
|
||||
|
||||
@@ -952,26 +958,71 @@ SbRotation NaviCubeImplementation::getNearestOrientation(PickId pickId) {
|
||||
SbRotation rotation = intermediateOrientation.inverse() * standardOrientation;
|
||||
rotation.getValue(axis, angle);
|
||||
|
||||
// Make sure the found axis aligns with the standardZ axis
|
||||
if (standardZ.dot(axis) < 0) {
|
||||
axis.negate();
|
||||
angle *= -1;
|
||||
}
|
||||
|
||||
// Make angle positive
|
||||
if (angle < 0) {
|
||||
angle += 2 * M_PI;
|
||||
}
|
||||
|
||||
// f is a small value used to control orientation priority when the camera is almost exactly between two
|
||||
// orientations (e.g. +45 and -45 degrees). The standard orientation is preferred compared to
|
||||
// +90 and -90 degree orientations and the +90 and -90 degree orientations are preferred compared to an
|
||||
// upside down standard orientation
|
||||
float f = angle > M_PI ? 0.00001 : -0.00001;
|
||||
float f = 0.00001;
|
||||
|
||||
// Find the angle to rotate to the nearest orientation
|
||||
if (m_Faces[pickId].type == ShapeId::Corner) {
|
||||
// 6 possible orientations for the corners
|
||||
angle = angle - floor((angle + f + M_PI / 6.0) / (M_PI / 3.0)) * (M_PI / 3.0);
|
||||
if (angle <= (M_PI / 6 + f)) {
|
||||
angle = 0;
|
||||
}
|
||||
else if (angle <= (M_PI_2 + f)) {
|
||||
angle = M_PI / 3;
|
||||
}
|
||||
else if (angle < (5 * M_PI / 6 - f)) {
|
||||
angle = 2 * M_PI / 3;
|
||||
}
|
||||
else if (angle <= (M_PI + M_PI / 6 + f)) {
|
||||
angle = M_PI;
|
||||
}
|
||||
else if (angle < (M_PI + M_PI_2 - f)) {
|
||||
angle = M_PI + M_PI / 3;
|
||||
}
|
||||
else if (angle < (M_PI + 5 * M_PI / 6 - f)) {
|
||||
angle = M_PI + 2 * M_PI / 3;
|
||||
}
|
||||
else {
|
||||
angle = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// 4 possible orientations for the main and edge faces
|
||||
angle = angle - floor((angle + f + M_PI_4) / M_PI_2) * M_PI_2;
|
||||
if (angle <= (M_PI_4 + f)) {
|
||||
angle = 0;
|
||||
}
|
||||
else if (angle <= (3 * M_PI_4 + f)) {
|
||||
angle = M_PI_2;
|
||||
}
|
||||
else if (angle < (M_PI + M_PI_4 - f)) {
|
||||
angle = M_PI;
|
||||
}
|
||||
else if (angle < (M_PI + 3 * M_PI_4 - f)) {
|
||||
angle = M_PI + M_PI_2;
|
||||
}
|
||||
else {
|
||||
angle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Set the rotation to go from the intermediateOrientation to the nearest orientation
|
||||
rotation.setValue(axis, angle);
|
||||
// Set the rotation to go from the standard orientation to the nearest orientation
|
||||
rotation.setValue(standardZ, angle);
|
||||
|
||||
return intermediateOrientation * rotation;
|
||||
return standardOrientation * rotation.inverse();
|
||||
}
|
||||
|
||||
bool NaviCubeImplementation::mouseReleased(short x, short y) {
|
||||
|
||||
@@ -1078,8 +1078,9 @@ void NavigationStyle::saveCursorPosition(const SoEvent * const ev)
|
||||
if (!cam) // no camera
|
||||
return;
|
||||
|
||||
// Get the bounding box center of the physical object group
|
||||
SoGetBoundingBoxAction action(viewer->getSoRenderManager()->getViewportRegion());
|
||||
action.apply(viewer->getSceneGraph());
|
||||
action.apply(viewer->objectGroup);
|
||||
SbBox3f boundingBox = action.getBoundingBox();
|
||||
SbVec3f boundingBoxCenter = boundingBox.getCenter();
|
||||
setRotationCenter(boundingBoxCenter);
|
||||
|
||||
@@ -10,12 +10,6 @@
|
||||
<height>394</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Ignored" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Placement</string>
|
||||
</property>
|
||||
|
||||
@@ -226,33 +226,42 @@ void Gui::PreferencePackManager::importConfig(const std::string& packName,
|
||||
}
|
||||
|
||||
void Gui::PreferencePackManager::FindPreferencePacksInPackage(const fs::path &mod)
|
||||
{
|
||||
try {
|
||||
TryFindPreferencePacksInPackage(mod);
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
Base::Console().Error("%s\n", e.what());
|
||||
}
|
||||
catch (...) {
|
||||
// Failed to read the metadata, or to create the preferencePack based on it...
|
||||
auto packageMetadataFile = mod / "package.xml";
|
||||
Base::Console().Error("Failed to read %s\n", packageMetadataFile.string().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void PreferencePackManager::TryFindPreferencePacksInPackage(const boost::filesystem::path& mod)
|
||||
{
|
||||
auto packageMetadataFile = mod / "package.xml";
|
||||
static const auto modDirectory = fs::path(App::Application::getUserAppDataDir()) / "Mod" / "SavedPreferencePacks";
|
||||
static const auto resourcePath = fs::path(App::Application::getResourceDir()) / "Gui" / "PreferencePacks";
|
||||
|
||||
if (fs::exists(packageMetadataFile) && fs::is_regular_file(packageMetadataFile)) {
|
||||
try {
|
||||
App::Metadata metadata(packageMetadataFile);
|
||||
auto content = metadata.content();
|
||||
auto basename = mod.filename().string();
|
||||
if (mod == modDirectory)
|
||||
basename = "##USER_SAVED##";
|
||||
else if (mod == resourcePath)
|
||||
basename = "##BUILT_IN##";
|
||||
for (const auto& item : content) {
|
||||
if (item.first == "preferencepack") {
|
||||
if (isVisible(basename, item.second.name())) {
|
||||
PreferencePack newPreferencePack(mod / item.second.name(), item.second);
|
||||
_preferencePacks.insert(std::make_pair(newPreferencePack.name(), newPreferencePack));
|
||||
}
|
||||
App::Metadata metadata(packageMetadataFile);
|
||||
auto content = metadata.content();
|
||||
auto basename = mod.filename().string();
|
||||
if (mod == modDirectory)
|
||||
basename = "##USER_SAVED##";
|
||||
else if (mod == resourcePath)
|
||||
basename = "##BUILT_IN##";
|
||||
for (const auto& item : content) {
|
||||
if (item.first == "preferencepack") {
|
||||
if (isVisible(basename, item.second.name())) {
|
||||
PreferencePack newPreferencePack(mod / item.second.name(), item.second);
|
||||
_preferencePacks.insert(std::make_pair(newPreferencePack.name(), newPreferencePack));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
// Failed to read the metadata, or to create the preferencePack based on it...
|
||||
Base::Console().Error(("Failed to read " + packageMetadataFile.string()).c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -194,6 +194,7 @@ namespace Gui {
|
||||
private:
|
||||
|
||||
void FindPreferencePacksInPackage(const boost::filesystem::path& mod);
|
||||
void TryFindPreferencePacksInPackage(const boost::filesystem::path& mod);
|
||||
|
||||
void BackupCurrentConfig() const;
|
||||
|
||||
|
||||
@@ -170,6 +170,9 @@ public:
|
||||
if (locale.positiveSign() != plus)
|
||||
copy.replace(locale.positiveSign(), plus);
|
||||
|
||||
QString reverseUnitStr = unitStr;
|
||||
std::reverse(reverseUnitStr.begin(), reverseUnitStr.end());
|
||||
|
||||
//Prep for expression parser
|
||||
//This regex matches chunks between +,-,$,^ accounting for matching parenthesis.
|
||||
QRegularExpression chunkRe(QString::fromUtf8("(?<=^|[\\+\\-])((\\((?>[^()]|(?2))*\\))|[^\\+\\-\n])*(?=$|[\\+\\-])"));
|
||||
@@ -187,18 +190,31 @@ public:
|
||||
static const std::string regexConstants = "e|ip|lomm|lom";
|
||||
static const std::string regexNumber = "\\d+\\s*\\.?\\s*\\d*|\\.\\s*\\d+";
|
||||
|
||||
//Find units and replace 1/2mm -> 1/2*(1mm), 1^2mm -> 1^2*(1mm)
|
||||
copyChunk.replace(QRegularExpression(QString::fromStdString("("+regexUnits+")(\\)|(?:\\*|(?:\\)(?:(?:\\s*(?:"+regexConstants+"|\\)(?:[^()]|(?R))*\\((?:"+regexUnitlessFunctions+")|"+regexNumber+"))|(?R))*\\(|(?:\\s*(?:"+regexConstants+"|\\)(?:[^()]|(?R))*\\((?:"+regexUnitlessFunctions+")|"+regexNumber+"))))+[\\/\\^](?!("+regexUnits+")))")), QString::fromUtf8(")\\11(*\\2"));
|
||||
// If expression does not contain /*() or ^, this regex will not find anything
|
||||
if (copy.contains(QLatin1Char('/')) || copy.contains(QLatin1Char('*')) || copy.contains(QLatin1Char('(')) || copy.contains(QLatin1Char(')')) || copy.contains(QLatin1Char('^'))){
|
||||
//Find units and replace 1/2mm -> 1/2*(1mm), 1^2mm -> 1^2*(1mm)
|
||||
QRegularExpression fixUnits(QString::fromStdString("("+regexUnits+")(\\s*\\)|(?:\\*|(?:\\)(?:(?:\\s*(?:"+regexConstants+"|\\)(?:[^()]|(?R))*\\((?:"+regexUnitlessFunctions+")|"+regexNumber+"))|(?R))*\\(|(?:\\s*(?:"+regexConstants+"|\\)(?:[^()]|(?R))*\\((?:"+regexUnitlessFunctions+")|"+regexNumber+"))))+(?:[\\/\\^]|(.*$))(?!("+regexUnits+")))"));
|
||||
QRegularExpressionMatch fixUnitsMatch = fixUnits.match(copyChunk);
|
||||
|
||||
//3rd capture group being filled indicates regex bailed out; no match.
|
||||
if (fixUnitsMatch.lastCapturedIndex() == 2 || (fixUnitsMatch.lastCapturedIndex() == 3 && fixUnitsMatch.captured(3).isEmpty())){
|
||||
QString matchUnits = fixUnitsMatch.captured(1);
|
||||
QString matchNumbers = fixUnitsMatch.captured(2);
|
||||
copyChunk.replace(matchUnits+matchNumbers, QString::fromUtf8(")")+matchUnits+QString::fromUtf8("1(*")+matchNumbers);
|
||||
}
|
||||
}
|
||||
|
||||
//Add default units to string if none are present
|
||||
QRegularExpression unitsRe(QString::fromStdString("(?<=\\b|[^a-zA-Z])("+regexUnits+")(?=\\b|[^a-zA-Z])|°|″|′|\"|'|\\p{L}\\.\\p{L}|\\[\\p{L}"));
|
||||
if (!copyChunk.contains(reverseUnitStr)){ // Fast check
|
||||
QRegularExpression unitsRe(QString::fromStdString("(?<=\\b|[^a-zA-Z])("+regexUnits+")(?=\\b|[^a-zA-Z])|°|″|′|\"|'|\\p{L}\\.\\p{L}|\\[\\p{L}"));
|
||||
|
||||
QRegularExpressionMatch match = unitsRe.match(copyChunk);
|
||||
std::reverse(copyChunk.begin(), copyChunk.end());
|
||||
if (!match.hasMatch() && !copyChunk.isEmpty()){ //If no units are found, use default units
|
||||
copyChunk.append(QString::fromUtf8("*(1")+unitStr+QString::fromUtf8(")")); // Add units to the end of chunk *(1unit)
|
||||
QRegularExpressionMatch match = unitsRe.match(copyChunk);
|
||||
if (!match.hasMatch() && !copyChunk.isEmpty()) //If no units are found, use default units
|
||||
copyChunk.prepend(QString::fromUtf8(")")+reverseUnitStr+QString::fromUtf8("1(*")); // Add units to the end of chunk *(1unit)
|
||||
}
|
||||
|
||||
std::reverse(copyChunk.begin(), copyChunk.end());
|
||||
|
||||
copy.replace(matchChunk.capturedStart() + lengthOffset,
|
||||
matchChunk.capturedEnd() - matchChunk.capturedStart(), copyChunk);
|
||||
lengthOffset += copyChunk.length() - origionalChunk.length();
|
||||
|
||||
@@ -90,6 +90,10 @@ TDragger::TDragger()
|
||||
{
|
||||
SO_KIT_CONSTRUCTOR(TDragger);
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
this->ref();
|
||||
#endif
|
||||
|
||||
SO_KIT_ADD_CATALOG_ENTRY(translatorSwitch, SoSwitch, TRUE, geomSeparator, "", TRUE);
|
||||
SO_KIT_ADD_CATALOG_ENTRY(translator, SoSeparator, TRUE, translatorSwitch, "", TRUE);
|
||||
SO_KIT_ADD_CATALOG_ENTRY(translatorActive, SoSeparator, TRUE, translatorSwitch, "", TRUE);
|
||||
@@ -130,6 +134,11 @@ TDragger::~TDragger()
|
||||
{
|
||||
fieldSensor.setData(nullptr);
|
||||
fieldSensor.detach();
|
||||
|
||||
this->removeStartCallback(&TDragger::startCB);
|
||||
this->removeMotionCallback(&TDragger::motionCB);
|
||||
this->removeFinishCallback(&TDragger::finishCB);
|
||||
removeValueChangedCallback(&TDragger::valueChangedCB);
|
||||
}
|
||||
|
||||
void TDragger::buildFirstInstance()
|
||||
@@ -198,18 +207,21 @@ SoGroup* TDragger::buildGeometry()
|
||||
void TDragger::startCB(void *, SoDragger *d)
|
||||
{
|
||||
auto sudoThis = static_cast<TDragger *>(d);
|
||||
assert(sudoThis);
|
||||
sudoThis->dragStart();
|
||||
}
|
||||
|
||||
void TDragger::motionCB(void *, SoDragger *d)
|
||||
{
|
||||
auto sudoThis = static_cast<TDragger *>(d);
|
||||
assert(sudoThis);
|
||||
sudoThis->drag();
|
||||
}
|
||||
|
||||
void TDragger::finishCB(void *, SoDragger *d)
|
||||
{
|
||||
auto sudoThis = static_cast<TDragger *>(d);
|
||||
assert(sudoThis);
|
||||
sudoThis->dragFinish();
|
||||
}
|
||||
|
||||
@@ -367,6 +379,10 @@ RDragger::RDragger()
|
||||
{
|
||||
SO_KIT_CONSTRUCTOR(RDragger);
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
this->ref();
|
||||
#endif
|
||||
|
||||
SO_KIT_ADD_CATALOG_ENTRY(rotatorSwitch, SoSwitch, TRUE, geomSeparator, "", TRUE);
|
||||
SO_KIT_ADD_CATALOG_ENTRY(rotator, SoSeparator, TRUE, rotatorSwitch, "", TRUE);
|
||||
SO_KIT_ADD_CATALOG_ENTRY(rotatorActive, SoSeparator, TRUE, rotatorSwitch, "", TRUE);
|
||||
@@ -408,6 +424,11 @@ RDragger::~RDragger()
|
||||
{
|
||||
fieldSensor.setData(nullptr);
|
||||
fieldSensor.detach();
|
||||
|
||||
this->removeStartCallback(&RDragger::startCB);
|
||||
this->removeMotionCallback(&RDragger::motionCB);
|
||||
this->removeFinishCallback(&RDragger::finishCB);
|
||||
removeValueChangedCallback(&RDragger::valueChangedCB);
|
||||
}
|
||||
|
||||
void RDragger::buildFirstInstance()
|
||||
@@ -474,18 +495,21 @@ SoGroup* RDragger::buildGeometry()
|
||||
void RDragger::startCB(void *, SoDragger *d)
|
||||
{
|
||||
auto sudoThis = static_cast<RDragger *>(d);
|
||||
assert(sudoThis);
|
||||
sudoThis->dragStart();
|
||||
}
|
||||
|
||||
void RDragger::motionCB(void *, SoDragger *d)
|
||||
{
|
||||
auto sudoThis = static_cast<RDragger *>(d);
|
||||
assert(sudoThis);
|
||||
sudoThis->drag();
|
||||
}
|
||||
|
||||
void RDragger::finishCB(void *, SoDragger *d)
|
||||
{
|
||||
auto sudoThis = static_cast<RDragger *>(d);
|
||||
assert(sudoThis);
|
||||
sudoThis->dragFinish();
|
||||
}
|
||||
|
||||
@@ -820,6 +844,17 @@ SoFCCSysDragger::SoFCCSysDragger()
|
||||
|
||||
SoFCCSysDragger::~SoFCCSysDragger()
|
||||
{
|
||||
translationSensor.setData(nullptr);
|
||||
translationSensor.detach();
|
||||
rotationSensor.setData(nullptr);
|
||||
rotationSensor.detach();
|
||||
cameraSensor.setData(nullptr);
|
||||
cameraSensor.detach();
|
||||
idleSensor.setData(nullptr);
|
||||
idleSensor.unschedule();
|
||||
|
||||
removeValueChangedCallback(&SoFCCSysDragger::valueChangedCB);
|
||||
removeFinishCallback(&SoFCCSysDragger::finishDragCB, this);
|
||||
}
|
||||
|
||||
|
||||
@@ -877,6 +912,8 @@ SbBool SoFCCSysDragger::setUpConnections(SbBool onoff, SbBool doitalways)
|
||||
void SoFCCSysDragger::translationSensorCB(void *f, SoSensor *)
|
||||
{
|
||||
auto sudoThis = static_cast<SoFCCSysDragger *>(f);
|
||||
if(!f)
|
||||
return;
|
||||
|
||||
SbMatrix matrix = sudoThis->getMotionMatrix(); // clazy:exclude=rule-of-two-soft
|
||||
sudoThis->workFieldsIntoTransform(matrix);
|
||||
@@ -886,6 +923,8 @@ void SoFCCSysDragger::translationSensorCB(void *f, SoSensor *)
|
||||
void SoFCCSysDragger::rotationSensorCB(void *f, SoSensor *)
|
||||
{
|
||||
auto sudoThis = static_cast<SoFCCSysDragger *>(f);
|
||||
if(!f)
|
||||
return;
|
||||
|
||||
SbMatrix matrix = sudoThis->getMotionMatrix(); // clazy:exclude=rule-of-two-soft
|
||||
sudoThis->workFieldsIntoTransform(matrix);
|
||||
@@ -944,6 +983,8 @@ void SoFCCSysDragger::setUpAutoScale(SoCamera *cameraIn)
|
||||
void SoFCCSysDragger::cameraCB(void *data, SoSensor *)
|
||||
{
|
||||
auto sudoThis = static_cast<SoFCCSysDragger *>(data);
|
||||
if (!sudoThis)
|
||||
return;
|
||||
if (!sudoThis->idleSensor.isScheduled())
|
||||
sudoThis->idleSensor.schedule();
|
||||
}
|
||||
@@ -989,6 +1030,8 @@ void SoFCCSysDragger::handleEvent(SoHandleEventAction * action)
|
||||
void SoFCCSysDragger::idleCB(void *data, SoSensor *)
|
||||
{
|
||||
auto sudoThis = static_cast<SoFCCSysDragger *>(data);
|
||||
if (!data)
|
||||
return;
|
||||
SoField* field = sudoThis->cameraSensor.getAttachedField();
|
||||
if (field)
|
||||
{
|
||||
@@ -1012,6 +1055,7 @@ void SoFCCSysDragger::idleCB(void *data, SoSensor *)
|
||||
void SoFCCSysDragger::finishDragCB(void *data, SoDragger *)
|
||||
{
|
||||
auto sudoThis = static_cast<SoFCCSysDragger *>(data);
|
||||
assert(sudoThis);
|
||||
|
||||
// note: when creating a second view of the document and then closing
|
||||
// the first viewer it deletes the camera. However, the attached field
|
||||
|
||||
@@ -126,15 +126,23 @@ float SoFCColorBarBase::getBounds(const SbVec2s& size, float& fMinX, float&fMinY
|
||||
// The cam height is set in SoFCColorBarBase::getBoundingWidth to 10.
|
||||
// Therefore the normalized coordinates are in the range [-5, +5] x [-5ratio, +5ratio] if ratio > 1
|
||||
// and [-5ratio, +5ratio] x [-5, +5] if ratio < 1.
|
||||
// We don't want the whole height covered by the color bar (to have e.g space to the axis cross)
|
||||
// thus we take as base 4.
|
||||
float baseYValue = 4.0f;
|
||||
// We don't want the whole height covered by the color bar (to have e.g space to the axis cross
|
||||
// and the Navigation Cube) thus we take as base 3 or if the height reduces significantly it is 2.5.
|
||||
|
||||
float baseYValue;
|
||||
if (fRatio > 3.0f) {
|
||||
baseYValue = 2.5f;
|
||||
}
|
||||
else {
|
||||
baseYValue = 3.0f;
|
||||
}
|
||||
float barWidth = 0.5f;
|
||||
|
||||
// we want the color bar at the rightmost position, therefore we take 5 as base
|
||||
fMinX = 5.0f * fRatio; // must be scaled with the ratio to assure it stays at the right
|
||||
// we want the color bar at the rightmost position, therefore we take 4.95 as base
|
||||
fMinX = 4.95f * fRatio; // must be scaled with the ratio to assure it stays at the right
|
||||
|
||||
fMaxX = fMinX + barWidth;
|
||||
fMinY = -baseYValue;
|
||||
fMinY = -baseYValue - 0.6f; // Extend shortened bar towards axis cross
|
||||
fMaxY = baseYValue; // bar has the height of almost whole window height
|
||||
|
||||
if (fRatio < 1.0f) {
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
# include <Inventor/fields/SoMFString.h>
|
||||
# include <Inventor/nodes/SoBaseColor.h>
|
||||
# include <Inventor/nodes/SoCoordinate3.h>
|
||||
# include <Inventor/nodes/SoFont.h>
|
||||
# include <Inventor/nodes/SoIndexedFaceSet.h>
|
||||
# include <Inventor/nodes/SoMaterial.h>
|
||||
# include <Inventor/nodes/SoText2.h>
|
||||
@@ -35,6 +36,7 @@
|
||||
# include <Inventor/nodes/SoTransparencyType.h>
|
||||
#endif
|
||||
|
||||
#include <Base/Parameter.h>
|
||||
#include "SoFCColorGradient.h"
|
||||
#include "SoTextLabel.h"
|
||||
#include "DlgSettingsColorGradientImp.h"
|
||||
@@ -99,19 +101,27 @@ void SoFCColorGradient::setMarkerLabel(const SoMFString& label)
|
||||
SbVec2f minPt = _bbox.getMin();
|
||||
float fStep = (maxPt[1] - minPt[1]) / ((float)num - 1);
|
||||
auto trans = new SoTransform;
|
||||
|
||||
ParameterGrp::handle hGrp = Gui::WindowParameter::getDefaultParameter()->GetGroup("View");
|
||||
auto LabelTextSize = hGrp->GetInt("CbLabelTextSize", 13);
|
||||
auto LabelTextColor =
|
||||
App::Color((uint32_t)hGrp->GetUnsigned("CbLabelColor", 0xffffffff));
|
||||
auto textFont = new SoFont;
|
||||
auto color = new SoBaseColor;
|
||||
textFont->name.setValue("Helvetica,Arial,Times New Roman");
|
||||
textFont->size.setValue(LabelTextSize);
|
||||
trans->translation.setValue(maxPt[0] + 0.1f, maxPt[1] - 0.05f + fStep, 0.0f);
|
||||
color->rgb.setValue(LabelTextColor.r,LabelTextColor.g,LabelTextColor.b);
|
||||
labels->addChild(trans);
|
||||
labels->addChild(color);
|
||||
labels->addChild(textFont);
|
||||
|
||||
for (int i = 0; i < num; i++) {
|
||||
auto trans = new SoTransform;
|
||||
auto color = new SoBaseColor;
|
||||
auto text2 = new SoColorBarLabel;
|
||||
|
||||
trans->translation.setValue(0, -fStep, 0);
|
||||
color->rgb.setValue(0, 0, 0);
|
||||
text2->string.setValue(label[i]);
|
||||
labels->addChild(trans);
|
||||
labels->addChild(color);
|
||||
labels->addChild(text2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ SoFCUnifiedSelection::getPickedList(SoHandleEventAction* action, bool singlePick
|
||||
int cur_prio = getPriority(info.pp);
|
||||
const SbVec3f& cur_pt = info.pp->getPoint();
|
||||
|
||||
if ((cur_prio > picked_prio) && picked_pt.equals(cur_pt, 0.01f)) {
|
||||
if ((cur_prio > picked_prio) && picked_pt.equals(cur_pt, 0.2F)) {
|
||||
itPicked = it;
|
||||
picked_prio = cur_prio;
|
||||
}
|
||||
|
||||
@@ -250,6 +250,14 @@ void SplashScreen::drawContents ( QPainter * painter )
|
||||
QSplashScreen::drawContents(painter);
|
||||
}
|
||||
|
||||
void SplashScreen::setShowMessages(bool on)
|
||||
{
|
||||
messages->bErr = on;
|
||||
messages->bMsg = on;
|
||||
messages->bLog = on;
|
||||
messages->bWrn = on;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
AboutDialogFactory* AboutDialogFactory::factory = nullptr;
|
||||
|
||||
@@ -44,6 +44,8 @@ public:
|
||||
explicit SplashScreen( const QPixmap & pixmap = QPixmap ( ), Qt::WindowFlags f = Qt::WindowFlags() );
|
||||
~SplashScreen() override;
|
||||
|
||||
void setShowMessages(bool on);
|
||||
|
||||
protected:
|
||||
void drawContents ( QPainter * painter ) override;
|
||||
|
||||
|
||||
@@ -67,6 +67,16 @@ TaskCSysDragger::~TaskCSysDragger()
|
||||
Gui::Application::Instance->commandManager().getCommandByName("Std_PerspectiveCamera")->setEnabled(true);
|
||||
}
|
||||
|
||||
void TaskCSysDragger::dragStartCallback(void *, SoDragger *)
|
||||
{
|
||||
// This is called when a manipulator is about to manipulating
|
||||
if(firstDrag)
|
||||
{
|
||||
Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Transform"));
|
||||
firstDrag=false;
|
||||
}
|
||||
}
|
||||
|
||||
void TaskCSysDragger::setupGui()
|
||||
{
|
||||
auto incrementsBox = new Gui::TaskView::TaskBox(
|
||||
@@ -117,6 +127,7 @@ void TaskCSysDragger::onRIncrementSlot(double freshValue)
|
||||
|
||||
void TaskCSysDragger::open()
|
||||
{
|
||||
dragger->addStartCallback(dragStartCallback, this);
|
||||
//we can't have user switching camera types while dragger is shown.
|
||||
Gui::Application::Instance->commandManager().getCommandByName("Std_OrthographicCamera")->setEnabled(false);
|
||||
Gui::Application::Instance->commandManager().getCommandByName("Std_PerspectiveCamera")->setEnabled(false);
|
||||
@@ -141,6 +152,7 @@ bool TaskCSysDragger::accept()
|
||||
if (dObject) {
|
||||
Gui::Document* document = Gui::Application::Instance->getDocument(dObject->getDocument());
|
||||
assert(document);
|
||||
firstDrag = true;
|
||||
document->commitCommand();
|
||||
document->resetEdit();
|
||||
document->getDocument()->recompute();
|
||||
@@ -148,4 +160,18 @@ bool TaskCSysDragger::accept()
|
||||
return Gui::TaskView::TaskDialog::accept();
|
||||
}
|
||||
|
||||
bool TaskCSysDragger::reject()
|
||||
{
|
||||
App::DocumentObject* dObject = vpObject.getObject();
|
||||
if (dObject) {
|
||||
Gui::Document* document = Gui::Application::Instance->getDocument(dObject->getDocument());
|
||||
assert(document);
|
||||
firstDrag = true;
|
||||
document->abortCommand();
|
||||
document->resetEdit();
|
||||
document->getDocument()->recompute();
|
||||
}
|
||||
return Gui::TaskView::TaskDialog::reject();
|
||||
}
|
||||
|
||||
#include "moc_TaskCSysDragger.cpp"
|
||||
|
||||
@@ -20,12 +20,14 @@
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef TASKCSYSDRAGGER_H
|
||||
#define TASKCSYSDRAGGER_H
|
||||
|
||||
#include "TaskView/TaskDialog.h"
|
||||
#include <App/DocumentObserver.h>
|
||||
|
||||
class SoDragger;
|
||||
|
||||
namespace Gui
|
||||
{
|
||||
@@ -40,13 +42,16 @@ namespace Gui
|
||||
TaskCSysDragger(ViewProviderDocumentObject *vpObjectIn, SoFCCSysDragger *draggerIn);
|
||||
~TaskCSysDragger() override;
|
||||
QDialogButtonBox::StandardButtons getStandardButtons() const override
|
||||
{ return QDialogButtonBox::Ok;}
|
||||
{ return QDialogButtonBox::Ok | QDialogButtonBox::Cancel;}
|
||||
void open() override;
|
||||
bool accept() override;
|
||||
bool reject() override;
|
||||
private Q_SLOTS:
|
||||
void onTIncrementSlot(double freshValue);
|
||||
void onRIncrementSlot(double freshValue);
|
||||
private:
|
||||
static inline bool firstDrag = true;
|
||||
static void dragStartCallback(void * data, SoDragger * d);
|
||||
void setupGui();
|
||||
App::DocumentObjectT vpObject;
|
||||
SoFCCSysDragger *dragger;
|
||||
|
||||
@@ -411,6 +411,30 @@ void TaskView::keyPressEvent(QKeyEvent* ke)
|
||||
}
|
||||
}
|
||||
|
||||
void TaskView::triggerMinimumSizeHint()
|
||||
{
|
||||
// NOLINTNEXTLINE
|
||||
QTimer::singleShot(100, this, &TaskView::adjustMinimumSizeHint);
|
||||
}
|
||||
|
||||
void TaskView::adjustMinimumSizeHint()
|
||||
{
|
||||
QSize ms = minimumSizeHint();
|
||||
setMinimumWidth(ms.width());
|
||||
}
|
||||
|
||||
QSize TaskView::minimumSizeHint() const
|
||||
{
|
||||
QSize ms = QScrollArea::minimumSizeHint();
|
||||
int spacing = 0;
|
||||
if (QLayout* layout = taskPanel->layout()) {
|
||||
spacing = 2 * layout->spacing();
|
||||
}
|
||||
|
||||
ms.setWidth(taskPanel->minimumSizeHint().width() + spacing);
|
||||
return ms;
|
||||
}
|
||||
|
||||
void TaskView::slotActiveDocument(const App::Document& doc)
|
||||
{
|
||||
Q_UNUSED(doc);
|
||||
@@ -481,6 +505,7 @@ void TaskView::showDialog(TaskDialog *dlg)
|
||||
ActiveCtrl->buttonBox->setStandardButtons(dlg->getStandardButtons());
|
||||
TaskDialogAttorney::setButtonBox(dlg, ActiveCtrl->buttonBox);
|
||||
|
||||
// clang-format off
|
||||
// make connection to the needed signals
|
||||
connect(ActiveCtrl->buttonBox, &QDialogButtonBox::accepted,
|
||||
this, &TaskView::accept);
|
||||
@@ -490,6 +515,7 @@ void TaskView::showDialog(TaskDialog *dlg)
|
||||
this, &TaskView::helpRequested);
|
||||
connect(ActiveCtrl->buttonBox, &QDialogButtonBox::clicked,
|
||||
this, &TaskView::clicked);
|
||||
// clang-format on
|
||||
|
||||
const std::vector<QWidget*>& cont = dlg->getDialogContent();
|
||||
|
||||
@@ -520,6 +546,7 @@ void TaskView::showDialog(TaskDialog *dlg)
|
||||
ActiveDialog->open();
|
||||
|
||||
getMainWindow()->updateActions();
|
||||
triggerMinimumSizeHint();
|
||||
}
|
||||
|
||||
void TaskView::removeDialog()
|
||||
@@ -558,6 +585,8 @@ void TaskView::removeDialog()
|
||||
remove->emitDestructionSignal();
|
||||
delete remove;
|
||||
}
|
||||
|
||||
triggerMinimumSizeHint();
|
||||
}
|
||||
|
||||
void TaskView::updateWatcher()
|
||||
@@ -595,6 +624,8 @@ void TaskView::updateWatcher()
|
||||
// give it the focus back.
|
||||
if (fwp && fwp->isVisible())
|
||||
fwp->setFocus();
|
||||
|
||||
triggerMinimumSizeHint();
|
||||
}
|
||||
|
||||
void TaskView::addTaskWatcher(const std::vector<TaskWatcher*> &Watcher)
|
||||
|
||||
@@ -158,15 +158,21 @@ public:
|
||||
void clearActionStyle();
|
||||
void restoreActionStyle();
|
||||
|
||||
QSize minimumSizeHint() const override;
|
||||
|
||||
protected Q_SLOTS:
|
||||
void accept();
|
||||
void reject();
|
||||
void helpRequested();
|
||||
void clicked (QAbstractButton * button);
|
||||
|
||||
private:
|
||||
void triggerMinimumSizeHint();
|
||||
void adjustMinimumSizeHint();
|
||||
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent*) override;
|
||||
bool event(QEvent*) override;
|
||||
void keyPressEvent(QKeyEvent* event) override;
|
||||
bool event(QEvent* event) override;
|
||||
|
||||
void addTaskWatcher();
|
||||
void removeTaskWatcher();
|
||||
|
||||
@@ -88,16 +88,14 @@ void Thumbnail::SaveDocFile (Base::Writer &writer) const
|
||||
if (!this->viewer)
|
||||
return;
|
||||
QImage img;
|
||||
if (this->viewer->isActiveWindow()) {
|
||||
if (this->viewer->thread() != QThread::currentThread()) {
|
||||
qWarning("Cannot create a thumbnail from non-GUI thread");
|
||||
return;
|
||||
}
|
||||
|
||||
QColor invalid;
|
||||
this->viewer->imageFromFramebuffer(this->size, this->size, 4, invalid, img);
|
||||
if (this->viewer->thread() != QThread::currentThread()) {
|
||||
qWarning("Cannot create a thumbnail from non-GUI thread");
|
||||
return;
|
||||
}
|
||||
|
||||
QColor invalid;
|
||||
this->viewer->imageFromFramebuffer(this->size, this->size, 4, invalid, img);
|
||||
|
||||
// Get app icon and resize to half size to insert in topbottom position over the current view snapshot
|
||||
QPixmap appIcon = Gui::BitmapFactory().pixmap(App::Application::Config()["AppIcon"].c_str());
|
||||
QPixmap px = appIcon;
|
||||
|
||||
@@ -4179,11 +4179,6 @@ void DocumentItem::updateItemSelection(DocumentObjectItem* item) {
|
||||
App::DocumentObject* topParent = nullptr;
|
||||
item->getSubName(str, topParent);
|
||||
if (topParent) {
|
||||
if (topParent->hasExtension(App::GeoFeatureGroupExtension::getExtensionClassTypeId())) {
|
||||
// remove legacy selection, i.e. those without subname
|
||||
Gui::Selection().rmvSelection(obj->getDocument()->getName(),
|
||||
obj->getNameInDocument(), nullptr);
|
||||
}
|
||||
if (!obj->redirectSubName(str, topParent, nullptr))
|
||||
str << obj->getNameInDocument() << '.';
|
||||
obj = topParent;
|
||||
|
||||
@@ -332,6 +332,7 @@ View3DInventorViewer::View3DInventorViewer(QWidget* parent, const QtGLWidget* sh
|
||||
: Quarter::SoQTQuarterAdaptor(parent, sharewidget)
|
||||
, SelectionObserver(false, ResolveMode::NoResolve)
|
||||
, editViewProvider(nullptr)
|
||||
, objectGroup(nullptr)
|
||||
, navigation(nullptr)
|
||||
, renderType(Native)
|
||||
, framebuffer(nullptr)
|
||||
@@ -350,6 +351,7 @@ View3DInventorViewer::View3DInventorViewer(const QtGLFormat& format, QWidget* pa
|
||||
: Quarter::SoQTQuarterAdaptor(format, parent, sharewidget)
|
||||
, SelectionObserver(false, ResolveMode::NoResolve)
|
||||
, editViewProvider(nullptr)
|
||||
, objectGroup(nullptr)
|
||||
, navigation(nullptr)
|
||||
, renderType(Native)
|
||||
, framebuffer(nullptr)
|
||||
@@ -477,6 +479,11 @@ void View3DInventorViewer::init()
|
||||
pcEditingRoot->addChild(pcEditingTransform);
|
||||
pcViewProviderRoot->addChild(pcEditingRoot);
|
||||
|
||||
// Create group for the physical object
|
||||
objectGroup = new SoGroup();
|
||||
objectGroup->ref();
|
||||
pcViewProviderRoot->addChild(objectGroup);
|
||||
|
||||
// Set our own render action which show a bounding box if
|
||||
// the SoFCSelection::BOX style is set
|
||||
//
|
||||
@@ -564,6 +571,8 @@ View3DInventorViewer::~View3DInventorViewer()
|
||||
coinRemoveAllChildren(this->pcViewProviderRoot);
|
||||
this->pcViewProviderRoot->unref();
|
||||
this->pcViewProviderRoot = nullptr;
|
||||
this->objectGroup->unref();
|
||||
this->objectGroup = nullptr;
|
||||
this->backlight->unref();
|
||||
this->backlight = nullptr;
|
||||
|
||||
@@ -754,8 +763,15 @@ void View3DInventorViewer::addViewProvider(ViewProvider* pcProvider)
|
||||
SoSeparator* root = pcProvider->getRoot();
|
||||
|
||||
if (root) {
|
||||
if(pcProvider->canAddToSceneGraph())
|
||||
pcViewProviderRoot->addChild(root);
|
||||
if (pcProvider->canAddToSceneGraph()) {
|
||||
// Add to the physical object group if related to the physical object otherwise add to the scene graph
|
||||
if (pcProvider->isPartOfPhysicalObject()) {
|
||||
objectGroup->addChild(root);
|
||||
}
|
||||
else {
|
||||
pcViewProviderRoot->addChild(root);
|
||||
}
|
||||
}
|
||||
_ViewProviderMap[root] = pcProvider;
|
||||
}
|
||||
|
||||
@@ -779,9 +795,15 @@ void View3DInventorViewer::removeViewProvider(ViewProvider* pcProvider)
|
||||
SoSeparator* root = pcProvider->getRoot();
|
||||
|
||||
if (root) {
|
||||
int index = pcViewProviderRoot->findChild(root);
|
||||
if(index>=0)
|
||||
int index = objectGroup->findChild(root);
|
||||
if (index >= 0) {
|
||||
objectGroup->removeChild(index);
|
||||
}
|
||||
|
||||
index = pcViewProviderRoot->findChild(root);
|
||||
if (index >= 0) {
|
||||
pcViewProviderRoot->removeChild(index);
|
||||
}
|
||||
_ViewProviderMap.erase(root);
|
||||
}
|
||||
|
||||
|
||||
@@ -483,7 +483,10 @@ private:
|
||||
SoSeparator * foregroundroot;
|
||||
SoDirectionalLight* backlight;
|
||||
|
||||
// Scene graph root
|
||||
SoSeparator * pcViewProviderRoot;
|
||||
// Child group in the scene graph that contains view providers related to the physical object
|
||||
SoGroup* objectGroup;
|
||||
|
||||
std::unique_ptr<View3DInventorSelection> inventorSelection;
|
||||
|
||||
|
||||
@@ -1677,7 +1677,7 @@ void View3DInventorPy::eventCallback(void * ud, SoEventCallback * n)
|
||||
// Type
|
||||
dict.setItem("Type", Py::String(std::string(e->getTypeId().getName().getString())));
|
||||
// Time
|
||||
dict.setItem("Time", Py::String(std::string(e->getTime().formatDate().getString())));
|
||||
dict.setItem("Time", Py::String(std::string(e->getTime().formatDate("%Y-%m-%d %H:%M:%S").getString())));
|
||||
SbVec2s p = n->getEvent()->getPosition();
|
||||
Py::Tuple pos(2);
|
||||
pos.setItem(0, Py::Int(p[0]));
|
||||
|
||||
@@ -142,6 +142,8 @@ public:
|
||||
virtual SoSeparator* getBackRoot() const;
|
||||
///Indicate whether to be added to scene graph or not
|
||||
virtual bool canAddToSceneGraph() const {return true;}
|
||||
// Indicate whether to be added to object group (true) or only to scene graph (false)
|
||||
virtual bool isPartOfPhysicalObject() const {return true;}
|
||||
|
||||
/** deliver the children belonging to this object
|
||||
* this method is used to deliver the objects to
|
||||
|
||||
@@ -150,7 +150,6 @@ bool ViewProviderDragger::setEdit(int ModNum)
|
||||
pcTransform->translation.connectFrom(&csysDragger->translation);
|
||||
pcTransform->rotation.connectFrom(&csysDragger->rotation);
|
||||
|
||||
csysDragger->addStartCallback(dragStartCallback, this);
|
||||
csysDragger->addFinishCallback(dragFinishCallback, this);
|
||||
|
||||
// dragger node is added to viewer's editing root in setEditViewer
|
||||
@@ -216,12 +215,6 @@ void ViewProviderDragger::unsetEditViewer(Gui::View3DInventorViewer* viewer)
|
||||
}
|
||||
}
|
||||
|
||||
void ViewProviderDragger::dragStartCallback(void *, SoDragger *)
|
||||
{
|
||||
// This is called when a manipulator is about to manipulating
|
||||
Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Transform"));
|
||||
}
|
||||
|
||||
void ViewProviderDragger::dragFinishCallback(void *data, SoDragger *d)
|
||||
{
|
||||
// This is called when a manipulator has done manipulating
|
||||
@@ -230,7 +223,7 @@ void ViewProviderDragger::dragFinishCallback(void *data, SoDragger *d)
|
||||
auto dragger = static_cast<SoFCCSysDragger *>(d);
|
||||
updatePlacementFromDragger(sudoThis, dragger);
|
||||
|
||||
Gui::Application::Instance->activeDocument()->commitCommand();
|
||||
//Gui::Application::Instance->activeDocument()->commitCommand();
|
||||
}
|
||||
|
||||
void ViewProviderDragger::updatePlacementFromDragger(ViewProviderDragger* sudoThis, SoFCCSysDragger* draggerIn)
|
||||
|
||||
@@ -72,9 +72,7 @@ protected:
|
||||
SoFCCSysDragger *csysDragger = nullptr;
|
||||
|
||||
private:
|
||||
static void dragStartCallback(void * data, SoDragger * d);
|
||||
static void dragFinishCallback(void * data, SoDragger * d);
|
||||
|
||||
static void updatePlacementFromDragger(ViewProviderDragger *sudoThis, SoFCCSysDragger *draggerIn);
|
||||
|
||||
bool checkLink();
|
||||
|
||||
@@ -120,6 +120,11 @@ ViewProviderMeasureDistance::~ViewProviderMeasureDistance()
|
||||
pLines->unref();
|
||||
}
|
||||
|
||||
bool ViewProviderMeasureDistance::isPartOfPhysicalObject() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void ViewProviderMeasureDistance::onChanged(const App::Property* prop)
|
||||
{
|
||||
if (prop == &Mirror || prop == &DistFactor) {
|
||||
@@ -313,6 +318,11 @@ ViewProviderPointMarker::~ViewProviderPointMarker()
|
||||
pMarker->unref();
|
||||
}
|
||||
|
||||
bool ViewProviderPointMarker::isPartOfPhysicalObject() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void ViewProviderMeasureDistance::measureDistanceCallback(void * ud, SoEventCallback * n)
|
||||
{
|
||||
auto view = static_cast<Gui::View3DInventorViewer*>(n->getUserData());
|
||||
|
||||
@@ -66,6 +66,7 @@ class GuiExport ViewProviderPointMarker : public ViewProviderDocumentObject
|
||||
public:
|
||||
ViewProviderPointMarker();
|
||||
~ViewProviderPointMarker() override;
|
||||
bool isPartOfPhysicalObject() const override;
|
||||
|
||||
protected:
|
||||
SoCoordinate3 * pCoords;
|
||||
@@ -81,6 +82,7 @@ public:
|
||||
/// Constructor
|
||||
ViewProviderMeasureDistance();
|
||||
~ViewProviderMeasureDistance() override;
|
||||
bool isPartOfPhysicalObject() const override;
|
||||
|
||||
// Display properties
|
||||
App::PropertyColor TextColor;
|
||||
|
||||
@@ -83,11 +83,11 @@ void ViewProviderPlane::attach ( App::DocumentObject *obj ) {
|
||||
|
||||
auto material = new SoMaterial();
|
||||
material->transparency.setValue(0.95f);
|
||||
auto color = new SbColor();
|
||||
SbColor color;
|
||||
float alpha = 0.0f;
|
||||
color->setPackedValue(ViewProviderOrigin::defaultColor, alpha);
|
||||
material->ambientColor.setValue(*color);
|
||||
material->diffuseColor.setValue(*color);
|
||||
color.setPackedValue(ViewProviderOrigin::defaultColor, alpha);
|
||||
material->ambientColor.setValue(color);
|
||||
material->diffuseColor.setValue(color);
|
||||
faceSeparator->addChild(material);
|
||||
|
||||
// disable backface culling and render with two-sided lighting
|
||||
|
||||
@@ -706,6 +706,7 @@ MenuItem* StdWorkbench::setupMenuBar() const
|
||||
<< "Std_ViewLoadImage"
|
||||
<< "Std_SceneInspector"
|
||||
<< "Std_DependencyGraph"
|
||||
<< "Std_ExportDependencyGraph"
|
||||
<< "Std_ProjectUtil"
|
||||
<< "Separator"
|
||||
<< "Std_MeasureDistance"
|
||||
|
||||
@@ -98,6 +98,7 @@ private:
|
||||
int main( int argc, char ** argv )
|
||||
{
|
||||
#if defined (FC_OS_LINUX) || defined(FC_OS_BSD)
|
||||
setlocale(LC_ALL, ""); // use native environment settings
|
||||
// Make sure to setup the Qt locale system before setting LANG and LC_ALL to C.
|
||||
// which is needed to use the system locale settings.
|
||||
(void)QLocale::system();
|
||||
|
||||
@@ -1272,18 +1272,18 @@ installed addons will be checked for available updates
|
||||
<translation>Не атрымалася выканаць макрас. Падрабязныя звесткі аб збоі глядзіце ў кансолі.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Суправаджальнік</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Аўтар</translation>
|
||||
</message>
|
||||
@@ -1499,8 +1499,8 @@ installed addons will be checked for available updates
|
||||
<translation>Прывязкі Python да QtWebEngine не ўсталяваныя - ужытае замяняе адлюстраванне README.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation>Паспяхова завершана</translation>
|
||||
@@ -1632,9 +1632,9 @@ installed addons will be checked for available updates
|
||||
<translation>Абраць файл гузіку для гэтага элемента зместу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation>{} не з'яўляецца ўкладзеным каталогам {}</translation>
|
||||
</message>
|
||||
|
||||
@@ -1267,18 +1267,18 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">Execution of macro failed. See console for failure details.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation type="unfinished">Maintainer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Autor</translation>
|
||||
</message>
|
||||
@@ -1494,8 +1494,8 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">QtWebEngine Python bindings not installed -- using fallback README display.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished">Success</translation>
|
||||
@@ -1627,9 +1627,9 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">Select an icon file for this content item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation type="unfinished">{} is not a subdirectory of {}</translation>
|
||||
</message>
|
||||
|
||||
@@ -1269,18 +1269,18 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace
|
||||
<translation>Provedení makra selhalo. Podrobnosti o selhání viz konzola.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Správce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Autor</translation>
|
||||
</message>
|
||||
@@ -1496,8 +1496,8 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace
|
||||
<translation>QtWebEngine bindings Python není nainstalován -- používá záložní README displej.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation>Úspěšně</translation>
|
||||
@@ -1629,9 +1629,9 @@ nainstalované doplňky budou zkontrolovány pro dostupné aktualizace
|
||||
<translation>Vyberte soubor ikony pro tuto položku obsahu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation>{} není podadresář {}</translation>
|
||||
</message>
|
||||
|
||||
Binary file not shown.
@@ -1267,18 +1267,18 @@ installed addons will be checked for available updates
|
||||
<translation>Ausführen des Makros schlug fehl. Siehe Konsole für Fehlerdetails.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Maintainer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Autor</translation>
|
||||
</message>
|
||||
@@ -1494,8 +1494,8 @@ installed addons will be checked for available updates
|
||||
<translation>QtWebEngine Python Bindings nicht installiert -- verwendet Fallback LIESMICH Anzeige.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation>Erfolgreich</translation>
|
||||
@@ -1627,9 +1627,9 @@ installed addons will be checked for available updates
|
||||
<translation>Wählen Sie eine Symboldatei für dieses Inhaltselement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation>{} ist kein Unterverzeichnis von {}</translation>
|
||||
</message>
|
||||
@@ -1982,7 +1982,7 @@ installed addons will be checked for available updates
|
||||
<message>
|
||||
<location filename="../../package_list.py" line="408"/>
|
||||
<source>Tags</source>
|
||||
<translation>Tags</translation>
|
||||
<translation>Schlagwörter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../package_list.py" line="428"/>
|
||||
@@ -2116,7 +2116,7 @@ installed addons will be checked for available updates
|
||||
<location filename="../../change_branch.py" line="179"/>
|
||||
<source>Tag</source>
|
||||
<comment>git terminology</comment>
|
||||
<translation>Markierung</translation>
|
||||
<translation>Schlagwort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../change_branch.py" line="262"/>
|
||||
|
||||
@@ -1270,18 +1270,18 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">Execution of macro failed. See console for failure details.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Συντηρητής</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Συγγραφέας</translation>
|
||||
</message>
|
||||
@@ -1497,8 +1497,8 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">QtWebEngine Python bindings not installed -- using fallback README display.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished">Success</translation>
|
||||
@@ -1630,9 +1630,9 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">Select an icon file for this content item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation type="unfinished">{} is not a subdirectory of {}</translation>
|
||||
</message>
|
||||
|
||||
@@ -1267,18 +1267,18 @@ los complementos instalados serán revisados por actualizaciones disponibles
|
||||
<translation>Falló la ejecución de la macro. Vea la consola para detalles del fallo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Mantenedor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Autor</translation>
|
||||
</message>
|
||||
@@ -1494,8 +1494,8 @@ los complementos instalados serán revisados por actualizaciones disponibles
|
||||
<translation>No se han instalado enlaces Python QtWebEngine -- usando la pantalla README de respaldo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation>Éxito</translation>
|
||||
@@ -1627,9 +1627,9 @@ los complementos instalados serán revisados por actualizaciones disponibles
|
||||
<translation>Seleccione un archivo de icono para este elemento de contenido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation>{} no es un subdirectorio de {}</translation>
|
||||
</message>
|
||||
|
||||
@@ -1266,18 +1266,18 @@ installed addons will be checked for available updates
|
||||
<translation>Falló la ejecución de la macro. Vea la consola para detalles del fallo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Mantenedor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Autor</translation>
|
||||
</message>
|
||||
@@ -1493,8 +1493,8 @@ installed addons will be checked for available updates
|
||||
<translation>No se han instalado enlaces Python QtWebEngine -- usando la pantalla README de respaldo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation>Éxito</translation>
|
||||
@@ -1626,9 +1626,9 @@ installed addons will be checked for available updates
|
||||
<translation>Seleccione un archivo de icono para este elemento de contenido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation>{} no es un subdirectorio de {}</translation>
|
||||
</message>
|
||||
|
||||
@@ -1269,18 +1269,18 @@ denean gehigarrien eguneraketarik dagoen begiratuko da
|
||||
<translation>Makroaren exekuzioak huts egin du. Begiratu kontsola xehetasun gehiagorako.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Mantentzailea</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Egilea</translation>
|
||||
</message>
|
||||
@@ -1496,8 +1496,8 @@ denean gehigarrien eguneraketarik dagoen begiratuko da
|
||||
<translation>QtWebEngine Python loturak ez daude instalatuta -- ordezko README bistaratzea erabiliko da.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation>Eginda</translation>
|
||||
@@ -1629,9 +1629,9 @@ denean gehigarrien eguneraketarik dagoen begiratuko da
|
||||
<translation>Hautatu ikono-fitxategi bat eduki-elementu honetarako</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation>{} ez da {} direktorioaren azpidirektorio bat</translation>
|
||||
</message>
|
||||
|
||||
@@ -1269,18 +1269,18 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">Execution of macro failed. See console for failure details.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Ylläpitäjä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Kehittäjä</translation>
|
||||
</message>
|
||||
@@ -1496,8 +1496,8 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">QtWebEngine Python bindings not installed -- using fallback README display.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished">Success</translation>
|
||||
@@ -1629,9 +1629,9 @@ installed addons will be checked for available updates
|
||||
<translation type="unfinished">Select an icon file for this content item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation type="unfinished">{} is not a subdirectory of {}</translation>
|
||||
</message>
|
||||
|
||||
@@ -1269,18 +1269,18 @@ les mises à jour disponibles seront vérifiées pour les extensions installées
|
||||
<translation>L'exécution de la macro a échoué. Voir la console pour les détails de l'échec.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="88"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="116"/>
|
||||
<location filename="../../package_list.py" line="398"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="47"/>
|
||||
<source>Maintainer</source>
|
||||
<translation>Mainteneur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../addonmanager_devmode_people_table.py" line="89"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="117"/>
|
||||
<location filename="../../package_list.py" line="435"/>
|
||||
<location filename="../../addonmanager_devmode_person_editor.py" line="50"/>
|
||||
<source>Author</source>
|
||||
<translation>Auteur</translation>
|
||||
</message>
|
||||
@@ -1496,8 +1496,8 @@ les mises à jour disponibles seront vérifiées pour les extensions installées
|
||||
<translation>Les bindings Python de QtWebEngine ne sont pas installés -- utilisation de l'affichage README de remplacement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../package_details.py" line="682"/>
|
||||
<location filename="../../addonmanager_installer_gui.py" line="476"/>
|
||||
<location filename="../../AddonManagerTest/gui/test_installer_gui.py" line="54"/>
|
||||
<source>Success</source>
|
||||
<translation>Opération réussie</translation>
|
||||
@@ -1629,9 +1629,9 @@ les mises à jour disponibles seront vérifiées pour les extensions installées
|
||||
<translation>Sélectionner un fichier d'icône pour cet élément de contenu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="293"/>
|
||||
<location filename="../../addonmanager_devmode_add_content.py" line="332"/>
|
||||
<location filename="../../addonmanager_devmode.py" line="732"/>
|
||||
<source>{} is not a subdirectory of {}</source>
|
||||
<translation>{} n'est pas un sous-répertoire de {}</translation>
|
||||
</message>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user