Merge branch 'master' of https://github.com/FreeCAD/FreeCAD
This commit is contained in:
@@ -257,6 +257,7 @@ Property *DocumentObjectT::getProperty() const {
|
||||
return obj->getPropertyByName(property.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
SubObjectT::SubObjectT()
|
||||
@@ -387,6 +388,138 @@ std::vector<App::DocumentObject*> SubObjectT::getSubObjectList() const {
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
class DocumentWeakPtrT::Private {
|
||||
public:
|
||||
Private(App::Document* doc) : _document(doc) {
|
||||
if (doc) {
|
||||
connectApplicationDeletedDocument = App::GetApplication().signalDeleteDocument.connect(boost::bind
|
||||
(&Private::deletedDocument, this, _1));
|
||||
}
|
||||
}
|
||||
|
||||
void deletedDocument(const App::Document& doc) {
|
||||
if (_document == &doc)
|
||||
reset();
|
||||
}
|
||||
void reset() {
|
||||
connectApplicationDeletedDocument.disconnect();
|
||||
_document = nullptr;
|
||||
}
|
||||
|
||||
App::Document* _document;
|
||||
typedef boost::signals2::scoped_connection Connection;
|
||||
Connection connectApplicationDeletedDocument;
|
||||
};
|
||||
|
||||
DocumentWeakPtrT::DocumentWeakPtrT(App::Document* doc) noexcept
|
||||
: d(new Private(doc))
|
||||
{
|
||||
}
|
||||
|
||||
DocumentWeakPtrT::~DocumentWeakPtrT()
|
||||
{
|
||||
}
|
||||
|
||||
void DocumentWeakPtrT::reset() noexcept
|
||||
{
|
||||
d->reset();
|
||||
}
|
||||
|
||||
bool DocumentWeakPtrT::expired() const noexcept
|
||||
{
|
||||
return (d->_document == nullptr);
|
||||
}
|
||||
|
||||
App::Document* DocumentWeakPtrT::operator->() noexcept
|
||||
{
|
||||
return d->_document;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
class DocumentObjectWeakPtrT::Private {
|
||||
public:
|
||||
Private(App::DocumentObject* obj) : object(obj), indocument(false) {
|
||||
if (obj) {
|
||||
indocument = true;
|
||||
connectApplicationDeletedDocument = App::GetApplication().signalDeleteDocument.connect(boost::bind
|
||||
(&Private::deletedDocument, this, _1));
|
||||
App::Document* doc = obj->getDocument();
|
||||
connectDocumentCreatedObject = doc->signalNewObject.connect(boost::bind
|
||||
(&Private::createdObject, this, _1));
|
||||
connectDocumentDeletedObject = doc->signalDeletedObject.connect(boost::bind
|
||||
(&Private::deletedObject, this, _1));
|
||||
}
|
||||
}
|
||||
void deletedDocument(const App::Document& doc) {
|
||||
// When deleting document then there is no way to undo it
|
||||
if (object && object->getDocument() == &doc) {
|
||||
reset();
|
||||
}
|
||||
}
|
||||
void createdObject(const App::DocumentObject& obj) {
|
||||
// When undoing the removal
|
||||
if (object == &obj) {
|
||||
indocument = true;
|
||||
}
|
||||
}
|
||||
void deletedObject(const App::DocumentObject& obj) {
|
||||
if (object == &obj) {
|
||||
indocument = false;
|
||||
}
|
||||
}
|
||||
void reset() {
|
||||
connectApplicationDeletedDocument.disconnect();
|
||||
connectDocumentCreatedObject.disconnect();
|
||||
connectDocumentDeletedObject.disconnect();
|
||||
object = nullptr;
|
||||
indocument = false;
|
||||
}
|
||||
App::DocumentObject* get() const {
|
||||
return indocument ? object : nullptr;
|
||||
}
|
||||
|
||||
App::DocumentObject* object;
|
||||
bool indocument;
|
||||
typedef boost::signals2::scoped_connection Connection;
|
||||
Connection connectApplicationDeletedDocument;
|
||||
Connection connectDocumentCreatedObject;
|
||||
Connection connectDocumentDeletedObject;
|
||||
};
|
||||
|
||||
DocumentObjectWeakPtrT::DocumentObjectWeakPtrT(App::DocumentObject* obj) noexcept
|
||||
: d(new Private(obj))
|
||||
{
|
||||
}
|
||||
|
||||
DocumentObjectWeakPtrT::~DocumentObjectWeakPtrT()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
App::DocumentObject* DocumentObjectWeakPtrT::_get() const noexcept
|
||||
{
|
||||
return d->get();
|
||||
}
|
||||
|
||||
void DocumentObjectWeakPtrT::reset() noexcept
|
||||
{
|
||||
d->reset();
|
||||
}
|
||||
|
||||
bool DocumentObjectWeakPtrT::expired() const noexcept
|
||||
{
|
||||
return !d->indocument;
|
||||
}
|
||||
|
||||
App::DocumentObject* DocumentObjectWeakPtrT::operator->() noexcept
|
||||
{
|
||||
return d->get();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
DocumentObserver::DocumentObserver() : _document(0)
|
||||
{
|
||||
this->connectApplicationCreatedDocument = App::GetApplication().signalNewDocument.connect(boost::bind
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <Base/BaseClass.h>
|
||||
#include <boost/signals2.hpp>
|
||||
#include <set>
|
||||
#include <memory>
|
||||
|
||||
namespace App
|
||||
{
|
||||
@@ -144,7 +145,7 @@ private:
|
||||
std::string property;
|
||||
};
|
||||
|
||||
class AppExport SubObjectT: public DocumentObjectT
|
||||
class AppExport SubObjectT : public DocumentObjectT
|
||||
{
|
||||
public:
|
||||
/*! Constructor */
|
||||
@@ -205,6 +206,82 @@ private:
|
||||
std::string subname;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The DocumentWeakPtrT class
|
||||
*/
|
||||
class AppExport DocumentWeakPtrT
|
||||
{
|
||||
public:
|
||||
DocumentWeakPtrT(App::Document*) noexcept;
|
||||
~DocumentWeakPtrT();
|
||||
|
||||
/*!
|
||||
* \brief reset
|
||||
* Releases the reference to the managed object. After the call *this manages no object.
|
||||
*/
|
||||
void reset() noexcept;
|
||||
/*!
|
||||
* \brief expired
|
||||
* \return true if the managed object has already been deleted, false otherwise.
|
||||
*/
|
||||
bool expired() const noexcept;
|
||||
/*!
|
||||
* \brief operator ->
|
||||
* \return pointer to the document
|
||||
*/
|
||||
App::Document* operator->() noexcept;
|
||||
|
||||
private:
|
||||
// disable
|
||||
DocumentWeakPtrT(const DocumentWeakPtrT&);
|
||||
DocumentWeakPtrT& operator=(const DocumentWeakPtrT&);
|
||||
|
||||
class Private;
|
||||
std::unique_ptr<Private> d;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The DocumentObjectWeakPtrT class
|
||||
*/
|
||||
class AppExport DocumentObjectWeakPtrT
|
||||
{
|
||||
public:
|
||||
DocumentObjectWeakPtrT(App::DocumentObject*) noexcept;
|
||||
~DocumentObjectWeakPtrT();
|
||||
|
||||
/*!
|
||||
* \brief reset
|
||||
* Releases the reference to the managed object. After the call *this manages no object.
|
||||
*/
|
||||
void reset() noexcept;
|
||||
/*!
|
||||
* \brief expired
|
||||
* \return true if the managed object has already been deleted, false otherwise.
|
||||
*/
|
||||
bool expired() const noexcept;
|
||||
/*!
|
||||
* \brief operator ->
|
||||
* \return pointer to the document
|
||||
*/
|
||||
App::DocumentObject* operator->() noexcept;
|
||||
/*! Get a pointer to the object or 0 if it doesn't exist any more or the type doesn't match. */
|
||||
template<typename T>
|
||||
inline T* get() const noexcept
|
||||
{
|
||||
return Base::freecad_dynamic_cast<T>(_get());
|
||||
}
|
||||
|
||||
private:
|
||||
App::DocumentObject* _get() const noexcept;
|
||||
// disable
|
||||
DocumentObjectWeakPtrT(const DocumentObjectWeakPtrT&);
|
||||
DocumentObjectWeakPtrT& operator=(const DocumentObjectWeakPtrT&);
|
||||
|
||||
private:
|
||||
class Private;
|
||||
std::unique_ptr<Private> d;
|
||||
};
|
||||
|
||||
/**
|
||||
* The DocumentObserver class simplfies the step to write classes that listen
|
||||
* to what happens inside a document.
|
||||
|
||||
@@ -199,6 +199,137 @@ std::string ViewProviderT::getObjectPython() const
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
class DocumentWeakPtrT::Private {
|
||||
public:
|
||||
Private(Gui::Document* doc) : _document(doc) {
|
||||
if (doc) {
|
||||
connectApplicationDeletedDocument = doc->signalDeleteDocument.connect(boost::bind
|
||||
(&Private::deletedDocument, this, _1));
|
||||
}
|
||||
}
|
||||
|
||||
void deletedDocument(const Gui::Document& doc) {
|
||||
if (_document == &doc)
|
||||
reset();
|
||||
}
|
||||
void reset() {
|
||||
connectApplicationDeletedDocument.disconnect();
|
||||
_document = nullptr;
|
||||
}
|
||||
|
||||
Gui::Document* _document;
|
||||
typedef boost::signals2::scoped_connection Connection;
|
||||
Connection connectApplicationDeletedDocument;
|
||||
};
|
||||
|
||||
DocumentWeakPtrT::DocumentWeakPtrT(Gui::Document* doc) noexcept
|
||||
: d(new Private(doc))
|
||||
{
|
||||
}
|
||||
|
||||
DocumentWeakPtrT::~DocumentWeakPtrT()
|
||||
{
|
||||
}
|
||||
|
||||
void DocumentWeakPtrT::reset() noexcept
|
||||
{
|
||||
d->reset();
|
||||
}
|
||||
|
||||
bool DocumentWeakPtrT::expired() const noexcept
|
||||
{
|
||||
return (d->_document == nullptr);
|
||||
}
|
||||
|
||||
Gui::Document* DocumentWeakPtrT::operator->() noexcept
|
||||
{
|
||||
return d->_document;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
class ViewProviderWeakPtrT::Private {
|
||||
public:
|
||||
Private(ViewProviderDocumentObject* obj) : object(obj), indocument(false) {
|
||||
if (obj) {
|
||||
indocument = true;
|
||||
Gui::Document* doc = obj->getDocument();
|
||||
connectApplicationDeletedDocument = doc->signalDeleteDocument.connect(boost::bind
|
||||
(&Private::deletedDocument, this, _1));
|
||||
connectDocumentCreatedObject = doc->signalNewObject.connect(boost::bind
|
||||
(&Private::createdObject, this, _1));
|
||||
connectDocumentDeletedObject = doc->signalDeletedObject.connect(boost::bind
|
||||
(&Private::deletedObject, this, _1));
|
||||
}
|
||||
}
|
||||
void deletedDocument(const Gui::Document& doc) {
|
||||
// When deleting document then there is no way to undo it
|
||||
if (object && object->getDocument() == &doc) {
|
||||
reset();
|
||||
}
|
||||
}
|
||||
void createdObject(const Gui::ViewProvider& obj) {
|
||||
// When undoing the removal
|
||||
if (object == &obj) {
|
||||
indocument = true;
|
||||
}
|
||||
}
|
||||
void deletedObject(const Gui::ViewProvider& obj) {
|
||||
if (object == &obj) {
|
||||
indocument = false;
|
||||
}
|
||||
}
|
||||
void reset() {
|
||||
connectApplicationDeletedDocument.disconnect();
|
||||
connectDocumentCreatedObject.disconnect();
|
||||
connectDocumentDeletedObject.disconnect();
|
||||
object = nullptr;
|
||||
indocument = false;
|
||||
}
|
||||
ViewProviderDocumentObject* get() const {
|
||||
return indocument ? object : nullptr;
|
||||
}
|
||||
|
||||
Gui::ViewProviderDocumentObject* object;
|
||||
bool indocument;
|
||||
typedef boost::signals2::scoped_connection Connection;
|
||||
Connection connectApplicationDeletedDocument;
|
||||
Connection connectDocumentCreatedObject;
|
||||
Connection connectDocumentDeletedObject;
|
||||
};
|
||||
|
||||
ViewProviderWeakPtrT::ViewProviderWeakPtrT(ViewProviderDocumentObject* obj) noexcept
|
||||
: d(new Private(obj))
|
||||
{
|
||||
}
|
||||
|
||||
ViewProviderWeakPtrT::~ViewProviderWeakPtrT()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ViewProviderDocumentObject* ViewProviderWeakPtrT::_get() const noexcept
|
||||
{
|
||||
return d->get();
|
||||
}
|
||||
|
||||
void ViewProviderWeakPtrT::reset() noexcept
|
||||
{
|
||||
d->reset();
|
||||
}
|
||||
|
||||
bool ViewProviderWeakPtrT::expired() const noexcept
|
||||
{
|
||||
return !d->indocument;
|
||||
}
|
||||
|
||||
ViewProviderDocumentObject* ViewProviderWeakPtrT::operator->() noexcept
|
||||
{
|
||||
return d->get();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
DocumentObserver::DocumentObserver()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -118,6 +118,82 @@ private:
|
||||
std::string object;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The DocumentWeakPtrT class
|
||||
*/
|
||||
class GuiExport DocumentWeakPtrT
|
||||
{
|
||||
public:
|
||||
DocumentWeakPtrT(Gui::Document*) noexcept;
|
||||
~DocumentWeakPtrT();
|
||||
|
||||
/*!
|
||||
* \brief reset
|
||||
* Releases the reference to the managed object. After the call *this manages no object.
|
||||
*/
|
||||
void reset() noexcept;
|
||||
/*!
|
||||
* \brief expired
|
||||
* \return true if the managed object has already been deleted, false otherwise.
|
||||
*/
|
||||
bool expired() const noexcept;
|
||||
/*!
|
||||
* \brief operator ->
|
||||
* \return pointer to the document
|
||||
*/
|
||||
Gui::Document* operator->() noexcept;
|
||||
|
||||
private:
|
||||
// disable
|
||||
DocumentWeakPtrT(const DocumentWeakPtrT&);
|
||||
DocumentWeakPtrT& operator=(const DocumentWeakPtrT&);
|
||||
|
||||
class Private;
|
||||
std::unique_ptr<Private> d;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The ViewProviderWeakPtrT class
|
||||
*/
|
||||
class AppExport ViewProviderWeakPtrT
|
||||
{
|
||||
public:
|
||||
ViewProviderWeakPtrT(ViewProviderDocumentObject*) noexcept;
|
||||
~ViewProviderWeakPtrT();
|
||||
|
||||
/*!
|
||||
* \brief reset
|
||||
* Releases the reference to the managed object. After the call *this manages no object.
|
||||
*/
|
||||
void reset() noexcept;
|
||||
/*!
|
||||
* \brief expired
|
||||
* \return true if the managed object has already been deleted, false otherwise.
|
||||
*/
|
||||
bool expired() const noexcept;
|
||||
/*!
|
||||
* \brief operator ->
|
||||
* \return pointer to the document
|
||||
*/
|
||||
ViewProviderDocumentObject* operator->() noexcept;
|
||||
/*! Get a pointer to the object or 0 if it doesn't exist any more or the type doesn't match. */
|
||||
template<typename T>
|
||||
inline T* get() const noexcept
|
||||
{
|
||||
return Base::freecad_dynamic_cast<T>(_get());
|
||||
}
|
||||
|
||||
private:
|
||||
ViewProviderDocumentObject* _get() const noexcept;
|
||||
// disable
|
||||
ViewProviderWeakPtrT(const ViewProviderWeakPtrT&);
|
||||
ViewProviderWeakPtrT& operator=(const ViewProviderWeakPtrT&);
|
||||
|
||||
private:
|
||||
class Private;
|
||||
std::unique_ptr<Private> d;
|
||||
};
|
||||
|
||||
/**
|
||||
* The DocumentObserver class simplifies the step to write classes that listen
|
||||
* to what happens inside a document.
|
||||
|
||||
@@ -445,7 +445,8 @@ class _TaskPanelFemResultShow:
|
||||
if len(plt.get_fignums()) > 0:
|
||||
plt.show()
|
||||
else:
|
||||
QtGui.QMessageBox.information(None,
|
||||
QtGui.QMessageBox.information(
|
||||
None,
|
||||
self.result_obj.Label + " - Information",
|
||||
"No histogram available.\nPlease select a result type first."
|
||||
)
|
||||
@@ -518,11 +519,11 @@ class _TaskPanelFemResultShow:
|
||||
from ply import yacc
|
||||
import femtools.tokrules as tokrules
|
||||
identifiers = [
|
||||
'x', 'y', 'z', 'T', 'vM', 'Peeq', 'P1', 'P2', 'P3',
|
||||
'sxx', 'syy', 'szz', 'sxy', 'sxz', 'syz',
|
||||
'exx', 'eyy', 'ezz', 'exy', 'exz', 'eyz',
|
||||
'MF', 'NP', 'rx', 'ry', 'rz', 'mc',
|
||||
's1x', 's1y', 's1z', 's2x', 's2y', 's2z', 's3x', 's3y', 's3z'
|
||||
"x", "y", "z", "T", "vM", "Peeq", "P1", "P2", "P3",
|
||||
"sxx", "syy", "szz", "sxy", "sxz", "syz",
|
||||
"exx", "eyy", "ezz", "exy", "exz", "eyz",
|
||||
"MF", "NP", "rx", "ry", "rz", "mc",
|
||||
"s1x", "s1y", "s1z", "s2x", "s2y", "s2z", "s3x", "s3y", "s3z"
|
||||
]
|
||||
tokrules.names = {}
|
||||
for i in identifiers:
|
||||
|
||||
@@ -320,7 +320,7 @@ class _FemResultMechanical():
|
||||
if len(obj.Stats) == 39:
|
||||
temp = obj.Stats
|
||||
for i in range(12, -1, -1):
|
||||
del temp [3 * i + 1]
|
||||
del temp[3 * i + 1]
|
||||
obj.Stats = temp
|
||||
|
||||
def __getstate__(self):
|
||||
|
||||
@@ -89,6 +89,9 @@
|
||||
# include <BRepFill_Filling.hxx>
|
||||
#endif
|
||||
|
||||
#include <cstdio>
|
||||
#include <fstream>
|
||||
|
||||
#include <CXX/Extensions.hxx>
|
||||
#include <CXX/Objects.hxx>
|
||||
|
||||
@@ -1802,7 +1805,19 @@ private:
|
||||
|
||||
try {
|
||||
if (useFontSpec) {
|
||||
#ifdef FC_OS_WIN32
|
||||
// Windows doesn't do Utf8 by default and FreeType doesn't do wchar.
|
||||
// this is a hacky work around.
|
||||
// copy fontspec to Ascii temp name
|
||||
std::string tempFile = Base::FileInfo::getTempFileName(); //utf8/ascii
|
||||
Base::FileInfo fiIn(fontspec);
|
||||
fiIn.copyTo(tempFile.c_str());
|
||||
CharList = FT2FC(unichars,pysize,tempFile.c_str(),height,track);
|
||||
Base::FileInfo fiTemp(tempFile);
|
||||
fiTemp.deleteFile();
|
||||
#else
|
||||
CharList = FT2FC(unichars,pysize,fontspec,height,track);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
CharList = FT2FC(unichars,pysize,dir,fontfile,height,track);
|
||||
|
||||
@@ -120,13 +120,23 @@ PyObject* FT2FC(const Py_UNICODE *PyUString,
|
||||
throw std::runtime_error(ErrorMsg.str());
|
||||
}
|
||||
|
||||
// FT does not return an error if font file not found?
|
||||
std::ifstream is;
|
||||
is.open (FontSpec);
|
||||
if (!is) {
|
||||
ErrorMsg << "Font file not found: " << FontSpec;
|
||||
throw std::runtime_error(ErrorMsg.str());
|
||||
}
|
||||
|
||||
#ifdef FC_OS_WIN32
|
||||
Base::FileInfo fi(FontSpec);
|
||||
if (!fi.isReadable()) {
|
||||
ErrorMsg << "Font file not found (Win): " << FontSpec;
|
||||
throw std::runtime_error(ErrorMsg.str());
|
||||
}
|
||||
#else
|
||||
// FT does not return an error if font file not found?
|
||||
std::ifstream is;
|
||||
is.open (FontSpec);
|
||||
if (!is) {
|
||||
ErrorMsg << "Font file not found: " << FontSpec;
|
||||
throw std::runtime_error(ErrorMsg.str());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
error = FT_New_Face(FTLib,FontSpec,FaceIndex, &FTFont);
|
||||
if(error) {
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2">
|
||||
<widget class="Gui::PrefUnitSpinBox" name="plsb_FontSize" native="true">
|
||||
<widget class="Gui::PrefUnitSpinBox" name="plsb_FontSize">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
@@ -294,7 +294,7 @@
|
||||
<property name="toolTip">
|
||||
<string>Dimension font size</string>
|
||||
</property>
|
||||
<property name="value" stdset="0">
|
||||
<property name="value">
|
||||
<double>4.000000000000000</double>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
@@ -306,7 +306,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="2">
|
||||
<widget class="Gui::PrefUnitSpinBox" name="plsb_ArrowSize" native="true">
|
||||
<widget class="Gui::PrefUnitSpinBox" name="plsb_ArrowSize">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
@@ -316,7 +316,7 @@
|
||||
<property name="toolTip">
|
||||
<string>Dimension arrowhead size</string>
|
||||
</property>
|
||||
<property name="value" stdset="0">
|
||||
<property name="value">
|
||||
<double>5.000000000000000</double>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
@@ -821,20 +821,23 @@
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>SectionLineStyle</cstring>
|
||||
<cstring>SectionLineStandard</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>Mod/TechDraw/General</cstring>
|
||||
<cstring>Mod/TechDraw/Standards</cstring>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>ISO</string>
|
||||
<string>ANSI</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>ANSI</string>
|
||||
<string>ISO</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
|
||||
@@ -39,6 +39,9 @@
|
||||
#include "QGIView.h"
|
||||
#include "QGISectionLine.h"
|
||||
|
||||
#define ANSISTANDARD 0
|
||||
#define ISOSTANDARD 1
|
||||
|
||||
using namespace TechDrawGui;
|
||||
using namespace TechDraw;
|
||||
|
||||
@@ -82,8 +85,8 @@ void QGISectionLine::makeLine()
|
||||
QPointF beginExtLine1,beginExtLine2; //ext line start pts for measure Start side and measure End side
|
||||
QPointF endExtLine1, endExtLine2;
|
||||
QPointF offsetDir(m_arrowDir.x,-m_arrowDir.y);
|
||||
int format = getPrefSectionFormat();
|
||||
if (format == 0) { //"ASME"
|
||||
int format = getPrefSectionStandard();
|
||||
if (format == ANSISTANDARD) { //"ASME"/"ANSI"
|
||||
//draw from section line endpoint
|
||||
QPointF offsetBegin = m_extLen * offsetDir;
|
||||
beginExtLine1 = m_start; //from
|
||||
@@ -115,8 +118,8 @@ void QGISectionLine::makeLine()
|
||||
|
||||
void QGISectionLine::makeArrows()
|
||||
{
|
||||
int format = getPrefSectionFormat();
|
||||
if (format == 0) {
|
||||
int format = getPrefSectionStandard();
|
||||
if (format == ANSISTANDARD) {
|
||||
makeArrowsTrad();
|
||||
} else {
|
||||
makeArrowsISO();
|
||||
@@ -180,8 +183,8 @@ void QGISectionLine::makeArrowsTrad()
|
||||
|
||||
void QGISectionLine::makeSymbols()
|
||||
{
|
||||
int format = getPrefSectionFormat();
|
||||
if (format == 0) {
|
||||
int format = getPrefSectionStandard();
|
||||
if (format == ANSISTANDARD) {
|
||||
makeSymbolsTrad();
|
||||
} else {
|
||||
makeSymbolsISO();
|
||||
@@ -291,11 +294,11 @@ Qt::PenStyle QGISectionLine::getSectionStyle()
|
||||
}
|
||||
|
||||
//ASME("traditional") vs ISO("reference arrow method") arrows
|
||||
int QGISectionLine::getPrefSectionFormat()
|
||||
int QGISectionLine::getPrefSectionStandard()
|
||||
{
|
||||
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter().
|
||||
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Format");
|
||||
int format = hGrp->GetInt("SectionFormat", 0);
|
||||
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Standards");
|
||||
int format = hGrp->GetInt("SectionLineStandard", ISOSTANDARD);
|
||||
return format;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ protected:
|
||||
void makeSymbolsTrad();
|
||||
void makeSymbolsISO();
|
||||
void setTools();
|
||||
int getPrefSectionFormat();
|
||||
int getPrefSectionStandard();
|
||||
|
||||
private:
|
||||
char* m_symbol;
|
||||
|
||||
Reference in New Issue
Block a user