Commit [97571d] Maximize Restore History

Introdotto il modulo Easy C.A. Rinominato QSimple in QEasy.

Michele Mocciola Michele Mocciola 2014-07-05

1 2 3 > >> (Page 1 of 3)
removed libqsimple
removed libqsimple/libqsimple.pro
removed libqsimple/loadresultant.h
removed libqsimple/simplesectionrcncrrect.cpp
removed libqsimple/simplesectionrcncrrect.h
removed libqsimplegui
removed libqsimplegui/libqsimplegui.pro
removed libqsimplegui/loadresultantgui.h
removed libqsimplegui/loadresultantgui.ui
removed libqsimplegui/qsimplegui.cpp
removed libqsimplegui/qsimplegui.h
removed libqsimplegui/qsimplegui.ui
removed libqsimplegui/simplesectionrcncrrectgui.cpp
removed libqsimplegui/simplesectionrcncrrectgui.h
removed libqsimplegui/simplesectionrcncrrectgui.ui
removed libqstructure/simplemodule.cpp
removed libqstructure/simplemodule.h
changed images/retainingwall.svg
changed libqstructure/libqstructure.pro
changed libqstructure/qstructuregui.cpp
changed libqstructure/retainingwallmodule.cpp
copied libqsimple/loadresultant.cpp -> images/easy.svg
copied libqsimplegui/loadresultantgui.cpp -> images/easycncr.svg
libqsimple
File was removed.
libqsimple/libqsimple.pro
File was removed.
libqsimple/loadresultant.h
File was removed.
libqsimplegui
File was removed.
libqsimplegui/qsimplegui.cpp
File was removed.
libqsimplegui/qsimplegui.h
File was removed.
libqsimplegui/qsimplegui.ui
File was removed.
libqstructure/simplemodule.cpp
File was removed.
libqstructure/simplemodule.h
File was removed.
images/retainingwall.svg Diff Switch to side-by-side view
Loading...
libqstructure/libqstructure.pro Diff Switch to side-by-side view
Loading...
libqstructure/qstructuregui.cpp Diff Switch to side-by-side view
Loading...
libqstructure/retainingwallmodule.cpp Diff Switch to side-by-side view
Loading...
libqsimple/loadresultant.cpp to images/easy.svg
--- a/libqsimple/loadresultant.cpp
+++ b/images/easy.svg
@@ -1,268 +1,370 @@
-#include "loadresultant.h"
-#include "tablemodelplusprivate.h"
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 
-#include "doubleplus.h"
-#include "qstringplus.h"
-
-#include <QFile>
-#include <QTextStream>
-#include <QXmlStreamWriter>
-#include <QStringList>
-
-LoadSimple::LoadSimple( UnitMeasure * ump,
-                        double PxInp, double PyInp, double PzInp,
-                        double FxInp, double FyInp, double FzInp,
-                        double MxInp, double MyInp, double MzInp ):
-    VarPlusContainer(ump, "LoadSimple", ""){
-
-    xP = new DoublePlus( PxInp, "xP", ump, UnitMeasure::length, false );
-    xP->setRichName( trUtf8("x<span style=\" vertical-align:sub;\">C</span>") );
-    connect(xP, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( xP );
-
-    yP = new DoublePlus( PyInp, "yP", ump, UnitMeasure::length, false );
-    yP->setRichName( trUtf8("y<span style=\" vertical-align:sub;\">C</span>") );
-    connect(yP, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( yP );
-
-    zP = new DoublePlus( PzInp, "zP", ump, UnitMeasure::length, false );
-    zP->setRichName( trUtf8("z<span style=\" vertical-align:sub;\">C</span>") );
-    connect(zP, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( zP );
-
-    Fx = new DoublePlus( FxInp, "Fx", ump, UnitMeasure::loadF, false );
-    Fx->setRichName( trUtf8("F<span style=\" vertical-align:sub;\">x</span>") );
-    connect(Fx, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( Fx );
-
-    Fy = new DoublePlus( FyInp, "Fy", ump, UnitMeasure::loadF, false );
-    Fy->setRichName( trUtf8("F<span style=\" vertical-align:sub;\">y</span>") );
-    connect(Fy, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( Fy );
-
-    Fz = new DoublePlus( FzInp, "Fz", ump, UnitMeasure::loadF, false );
-    Fz->setRichName( trUtf8("F<span style=\" vertical-align:sub;\">z</span>") );
-    connect(Fz, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( Fz );
-
-    Mx = new DoublePlus( MxInp, "Mx", ump, UnitMeasure::loadM, false );
-    Mx->setRichName( trUtf8("M<span style=\" vertical-align:sub;\">x</span>") );
-    connect(Mx, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( Mx );
-
-    My = new DoublePlus( MyInp, "My", ump, UnitMeasure::loadM, false );
-    My->setRichName( trUtf8("M<span style=\" vertical-align:sub;\">y</span>") );
-    connect(My, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( My );
-
-    Mz = new DoublePlus( MzInp, "Mz", ump, UnitMeasure::loadM, false );
-    Mz->setRichName( trUtf8("M<span style=\" vertical-align:sub;\">z</span>") );
-    connect(Mz, SIGNAL(valueChanged(QString)), this, SIGNAL(loadChanged()) );
-    addVarToContainer( Mz );
-}
-
-#include <QList>
-
-typedef QList<LoadSimple *>::iterator LoadIterator;
-
-class LoadResultantPrivate{
-public:
-    LoadResultantPrivate(){
-    };
-    QList<LoadSimple *> loadContainer;
-};
-
-LoadResultant::LoadResultant( UnitMeasure * ump, QObject * parent ):
-    TableModelPlus( "LoadResultant", ump, parent ),
-    m_dd( new LoadResultantPrivate() ){
-
-    connect( ump, SIGNAL(stringsChanged(UnitMeasure::unitMeasure)), this, SLOT(updateHeaders()) );
-    updateHeaders();
-
-    R = new LoadSimple( ump );
-    connect( R->xP, SIGNAL(valueChanged(QString)), this, SIGNAL(modelChanged()) );
-    connect( R->yP, SIGNAL(valueChanged(QString)), this, SIGNAL(modelChanged()) );
-    connect( R->zP, SIGNAL(valueChanged(QString)), this, SIGNAL(modelChanged()) );
-    R->Fx->setReadOnly( true );
-    R->Fy->setReadOnly( true );
-    R->Fz->setReadOnly( true );
-    R->Mx->setReadOnly( true );
-    R->My->setReadOnly( true );
-    R->Mz->setReadOnly( true );
-
-    connect( this, SIGNAL(modelChanged()), this, SLOT(updateR()));
-}
-
-void LoadResultant::updateHeaders(){
-    QList<QString> headerList;
-    headerList << trUtf8("Tag")
-               << trUtf8("xC [%1]").arg( m_d->unitMeasure->string(UnitMeasure::length ) )
-               << trUtf8("yC [%1]").arg( m_d->unitMeasure->string(UnitMeasure::length ) )
-               << trUtf8("zC [%1]").arg( m_d->unitMeasure->string(UnitMeasure::length ) )
-               << trUtf8("Fx [%1]").arg( m_d->unitMeasure->string(UnitMeasure::loadF ) )
-               << trUtf8("Fy [%1]").arg( m_d->unitMeasure->string(UnitMeasure::loadF ) )
-               << trUtf8("Fz [%1]").arg( m_d->unitMeasure->string(UnitMeasure::loadF ) )
-               << trUtf8("Mx [%1]").arg( m_d->unitMeasure->string(UnitMeasure::loadM ) )
-               << trUtf8("My [%1]").arg( m_d->unitMeasure->string(UnitMeasure::loadM ) )
-               << trUtf8("Mz [%1]").arg( m_d->unitMeasure->string(UnitMeasure::loadM ) );
-    setHeaders( headerList );
-}
-
-void LoadResultant::insertRows( int position, int count ){
-    if (position < 0 || position > m_dd->loadContainer.size() || count <= 0 )
-        return;
-    for( int i=0; i < count; ++i){
-        LoadSimple * addedLoad = new LoadSimple( m_d->unitMeasure );
-        insertRowsPrivate( position );
-        m_dd->loadContainer.insert( position, addedLoad );
-        setVarValueRow( position, addedLoad->name,
-                        addedLoad->xP, addedLoad->yP, addedLoad->zP,
-                        addedLoad->Fx, addedLoad->Fy, addedLoad->Fz,
-                        addedLoad->Mx, addedLoad->My, addedLoad->Mz);
-        connect(addedLoad, SIGNAL(loadChanged()), this, SIGNAL(modelChanged()) );
-    }
-    emit modelChanged();
-}
-
-void LoadResultant::appendRows(int count) {
-    insertRows( m_dd->loadContainer.size(), count );
-}
-
-void LoadResultant::removeRows(int position, int count) {
-    if (position < 0 || (position + count) > m_dd->loadContainer.size())
-        return;
-
-    for (int row = position; row < (position+count); row++){
-        // scolleghiamo la sezione
-        disconnect(m_dd->loadContainer.at(position), SIGNAL(loadChanged()), this, SIGNAL(modelChanged()) );
-
-        // procediamo a cancellare la riga
-        removeRowsPrivate( position );
-        delete m_dd->loadContainer.at(position);
-        m_dd->loadContainer.removeAt(position);
-    }
-    emit modelChanged();
-}
-
-void LoadResultant::writeXml(QXmlStreamWriter *writer) {
-    writer->setAutoFormatting(true);
-    writer->setCodec("UTF-8");
-
-    writer->writeStartDocument();
-    writer->writeStartElement( m_d->modelName );
-    for( LoadIterator i = m_dd->loadContainer.begin(); i!= m_dd->loadContainer.end(); ++i ){
-        (*i)->writeXml( writer );
-    }
-    writer->writeEndElement();
-    writer->writeEndDocument();
-}
-
-void LoadResultant::readXml(QXmlStreamReader *reader) {
-    QXmlStreamReader::TokenType t = reader->tokenType();
-    QString n = reader->name().toString().toUpper();
-    QString myName = m_d->modelName.toUpper();
-
-    while( !((t == QXmlStreamReader::StartElement) && (n == myName))  &&
-           !(reader->hasError() ) &&
-           (t != QXmlStreamReader::EndDocument) ){
-        t = reader->readNext();
-        n = reader->name().toString().toUpper();
-    }
-
-    while( !((t == QXmlStreamReader::EndElement) && (n == myName)) &&
-           !(reader->hasError() ) &&
-           (t != QXmlStreamReader::EndDocument) ){
-        if( (t == QXmlStreamReader::StartElement) && (n == "LOADSIMPLE")){
-            appendRows();
-            m_dd->loadContainer.last()->loadFromXML( reader->attributes() );
-        }
-        t = reader->readNext();
-        n = reader->name().toString().toUpper();
-    }
-}
-
-void LoadResultant::updateR() {
-    double Fx = 0.0, Fy = 0.0, Fz = 0.0;
-    double Mx = 0.0, My = 0.0, Mz = 0.0;
-    for( LoadIterator i = m_dd->loadContainer.begin(); i != m_dd->loadContainer.end(); ++i){
-        Fx += (*i)->Fx->valueNormal();
-        Fy += (*i)->Fy->valueNormal();
-        Fz += (*i)->Fz->valueNormal();
-        Mx += (*i)->Mx->valueNormal()
-                - (*i)->Fy->valueNormal() * ((*i)->zP->valueNormal() - R->zP->valueNormal())
-                + (*i)->Fz->valueNormal() * ((*i)->yP->valueNormal() - R->yP->valueNormal());
-        My += (*i)->My->valueNormal()
-                + (*i)->Fx->valueNormal() * ((*i)->zP->valueNormal() - R->zP->valueNormal())
-                - (*i)->Fz->valueNormal() * ((*i)->xP->valueNormal() - R->xP->valueNormal());
-        Mz += (*i)->Mz->valueNormal()
-                - (*i)->Fx->valueNormal() * ((*i)->yP->valueNormal() - R->yP->valueNormal())
-                + (*i)->Fy->valueNormal() * ((*i)->xP->valueNormal() - R->xP->valueNormal());
-    }
-    R->Fx->setValueNormal( Fx );
-    R->Fy->setValueNormal( Fy );
-    R->Fz->setValueNormal( Fz );
-    R->Mx->setValueNormal( Mx );
-    R->My->setValueNormal( My );
-    R->Mz->setValueNormal( Mz );
-}
-
-void LoadResultant::loadFromFileTXT( QFile & file ){
-    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
-        return;
-
-    QTextStream in( &file );
-
-    // legge prima riga con intestazioni
-    QStringList headersList;
-    if( !in.atEnd()){
-        QString line = in.readLine();
-        QStringList list = line.split( '\t', QString::SkipEmptyParts );
-        for( int i=0; i < list.size(); i++ ){
-            headersList.append( list.at(i).toUpper() );
-        }
-    }
-
-    // legge seconda riga con conversioni unit��  di misura
-    QList<double> UMList;
-    if( !in.atEnd()){
-        QString line = in.readLine();
-        QStringList list = line.split( '\t', QString::SkipEmptyParts );
-        for( int i=0; i < list.size(); i++ ){
-            UMList.append( list.at(i).toDouble() );
-        }
-    }
-
-    int nColHUM = qMin( UMList.size(), headersList.size() );
-    while (!in.atEnd()) {
-        QString line = in.readLine();
-        QStringList dataList = line.split( '\t', QString::SkipEmptyParts );
-        if( dataList.size() >= 0 ){
-            int nCol = qMin( dataList.size(), nColHUM );
-            appendRows();
-            LoadSimple * load = m_dd->loadContainer.last();
-            for( int i=0; i < nCol; i++ ){
-                if( headersList.at(i).toUpper() == "TAG" ){
-                    load->tag->setValueNormal( dataList.at(i) );
-                } else if( headersList.at(i).toUpper() == "XP" ){
-                    load->xP->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "YP" ){
-                    load->yP->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "ZP" ){
-                    load->zP->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "FX" ){
-                    load->Fx->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "FY" ){
-                    load->Fy->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "FZ" ){
-                    load->Fz->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "MX" ){
-                    load->Mx->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "MY" ){
-                    load->My->setValueNormal( dataList.at(i).toDouble() * UMList.at(i));
-                } else if( headersList.at(i).toUpper() == "MZ" ){
-                    load->Mz->setValueNormal(  dataList.at(i).toDouble() * UMList.at(i));
-                }
-            }
-        }
-    }
-}
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="512"
+   height="512"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="easy.svg"
+   inkscape:export-filename="/home/mickele/prog-work/struct/qmasonry/images/freewall.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;">
+      <path
+         id="path4064"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;">
+      <path
+         id="path4082"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         id="path3677"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Sstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Sstart"
+       style="overflow:visible">
+      <path
+         id="path3665"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.2) translate(6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         id="path3671"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3653"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient3663">
+      <stop
+         style="stop-color:#033908;stop-opacity:1;"
+         offset="0"
+         id="stop3665" />
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:0;"
+         offset="1"
+         id="stop3667" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3624">
+      <stop
+         style="stop-color:#42364d;stop-opacity:1;"
+         offset="0"
+         id="stop3626" />
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:0;"
+         offset="1"
+         id="stop3628" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2826"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3624"
+       id="linearGradient3630"
+       x1="129.33333"
+       y1="267.55554"
+       x2="372"
+       y2="-48"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.56207104,0,0,0.7939155,43.381723,743.48983)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3663"
+       id="linearGradient3626"
+       x1="40"
+       y1="512"
+       x2="800"
+       y2="32"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,0,0,0.9,25.6,567.56215)" />
+    <inkscape:perspective
+       id="perspective3717"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2844"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3624-8"
+       id="linearGradient3630-1"
+       x1="129.33333"
+       y1="267.55554"
+       x2="372"
+       y2="-48"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3375,0,0,0.5558821,264.35,784.10349)" />
+    <linearGradient
+       id="linearGradient3624-8">
+      <stop
+         style="stop-color:#42364d;stop-opacity:1;"
+         offset="0"
+         id="stop3626-7" />
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:0;"
+         offset="1"
+         id="stop3628-9" />
+    </linearGradient>
+    <linearGradient
+       y2="-48"
+       x2="372"
+       y1="267.55554"
+       x1="129.33333"
+       gradientTransform="matrix(0.45,0,0,0.66176447,61.8,548.24495)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2853"
+       xlink:href="#linearGradient3624-8"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective4676"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart-0"
+       style="overflow:visible">
+      <path
+         id="path3677-2"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)" />
+    </marker>
+    <inkscape:perspective
+       id="perspective4704"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart-7"
+       style="overflow:visible">
+      <path
+         id="path3677-5"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)" />
+    </marker>
+    <inkscape:perspective
+       id="perspective4732"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart-2"
+       style="overflow:visible">
+      <path
+         id="path3677-28"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="298.02284"
+     inkscape:cy="285.99724"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     showguides="false"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1314"
+     inkscape:window-height="748"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2840"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="8px"
+       spacingy="8px" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="256,112"
+       id="guide2826" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="24,400"
+       id="guide3674" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="24,24"
+       id="guide3676" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="488,8"
+       id="guide3678" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-540.36215)">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 250,59.142857 81.428571,327.71429"
+       id="path3030"
+       inkscape:connector-curvature="0"
+       transform="translate(0,540.36215)" />
+    <path
+       style="fill:none;stroke:#ff0000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
+       d="m 251.42857,596.38839 0,389.66179"
+       id="path3862"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3031"
+       d="m 187.58221,987.92776 128.87495,0"
+       style="fill:none;stroke:#000000;stroke-width:20.20532227;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#b9a386;fill-opacity:1;stroke:#000000;stroke-width:8;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3854"
+       sodipodi:cx="69.285713"
+       sodipodi:cy="327"
+       sodipodi:rx="56.42857"
+       sodipodi:ry="56.42857"
+       d="m 125.71428,327 a 56.42857,56.42857 0 1 1 -112.857137,0 56.42857,56.42857 0 1 1 112.857137,0 z"
+       transform="translate(34.285714,513.2193)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#b9a386;fill-opacity:1;stroke:#000000;stroke-width:8;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3856"
+       sodipodi:cx="256.8313"
+       sodipodi:cy="57.178818"
+       sodipodi:rx="14.394673"
+       sodipodi:ry="14.394673"
+       d="m 271.22597,57.178818 a 14.394673,14.394673 0 1 1 -28.78934,0 14.394673,14.394673 0 1 1 28.78934,0 z"
+       transform="translate(-6.0609153,543.89768)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Livello" />
+</svg>
libqsimplegui/loadresultantgui.cpp to images/easycncr.svg
--- a/libqsimplegui/loadresultantgui.cpp
+++ b/images/easycncr.svg
@@ -1,144 +1,378 @@
-#include "loadresultantgui.h"
-#include "ui_loadresultantgui.h"
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 
-#include "loadresultant.h"
-#include "doubleplus.h"
-#include "varplusguiutility.h"
-
-#include <QXmlStreamWriter>
-#include <QFileDialog>
-#include <QMessageBox>
-
-class LoadResultantGUIPrivate{
-public:
-    LoadResultantGUIPrivate():
-        ui(new Ui::LoadResultantGUI) {
-    };
-    ~LoadResultantGUIPrivate(){
-        delete ui;
-    }
-    Ui::LoadResultantGUI *ui;
-    LoadResultant * loadModel;
-};
-
-LoadResultantGUI::LoadResultantGUI( UnitMeasure * ump, QWidget *parent) :
-    QWidget(parent),
-    m_d( new LoadResultantGUIPrivate() ) {
-    m_d->loadModel = new LoadResultant(ump, parent);
-    m_d->ui->setupUi(this);
-    connectVar();
-    connect( m_d->ui->addFPushButton, SIGNAL(clicked()), this, SLOT(insertLoad()) );
-    connect( m_d->ui->delFPushButton, SIGNAL(clicked()), this, SLOT(removeLoad()) );
-    connect( m_d->ui->dataFromFileTXTPushButton, SIGNAL(clicked()), this, SLOT(loadDataFromFileTXT()) );
-    connect( m_d->ui->dataFromFileXMLPushButton, SIGNAL(clicked()), this, SLOT(loadDataFromFileXML()) );
-    connect( m_d->ui->dataToFileXMLPushButton, SIGNAL(clicked()), this, SLOT(writeDataToFileXML()) );
-}
-
-LoadResultantGUI::~LoadResultantGUI() {
-    delete m_d;
-}
-
-void LoadResultantGUI::connectVar() {
-    m_d->ui->tableViewF->setModel( m_d->loadModel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->xP, m_d->ui->xPLabel, m_d->ui->xPLineEdit, m_d->ui->xPUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->yP, m_d->ui->yPLabel, m_d->ui->yPLineEdit, m_d->ui->yPUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->zP, m_d->ui->zPLabel, m_d->ui->zPLineEdit, m_d->ui->zPUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->Fx, m_d->ui->FxLabel, m_d->ui->FxLineEdit, m_d->ui->FxUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->Fy, m_d->ui->FyLabel, m_d->ui->FyLineEdit, m_d->ui->FyUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->Fz, m_d->ui->FzLabel, m_d->ui->FzLineEdit, m_d->ui->FzUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->Mx, m_d->ui->MxLabel, m_d->ui->MxLineEdit, m_d->ui->MxUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->My, m_d->ui->MyLabel, m_d->ui->MyLineEdit, m_d->ui->MyUMLabel );
-    VarPlusGUI::connectVar( m_d->loadModel->R->Mz, m_d->ui->MzLabel, m_d->ui->MzLineEdit, m_d->ui->MzUMLabel );
-}
-
-void LoadResultantGUI::insertLoad() {
-    QModelIndexList rowListSelected = m_d->ui->tableViewF->selectionModel()->selectedRows();
-    QList<int> rowList;
-    for( int i=0; i < rowListSelected.size(); i++ ){
-        if( !rowList.contains(rowListSelected.at(i).row()) ){
-            rowList.append( rowListSelected.at(i).row() );
-        }
-    }
-    qSort( rowList.begin(), rowList.end() );
-
-    if( rowList.size() > 0 ){
-        m_d->loadModel->insertRows( rowList.first(), rowList.size());
-    } else {
-        int row = m_d->ui->tableViewF->currentIndex().row();
-        if( row < 0 || row > m_d->loadModel->rowCount() )
-            row = m_d->loadModel->rowCount() - 1;
-        m_d->loadModel->insertRows( row + 1 );
-    }
-}
-
-void LoadResultantGUI::removeLoad() {
-    QModelIndexList rowListSelected = m_d->ui->tableViewF->selectionModel()->selectedRows();
-    QList<int> rowList;
-    for( int i=0; i < rowListSelected.size(); i++ ){
-        if( !rowList.contains(rowListSelected.at(i).row()) ){
-            rowList.append( rowListSelected.at(i).row() );
-        }
-    }
-    qSort( rowList.begin(), rowList.end() );
-
-    for( int i=(rowList.size()-1); i >= 0; i-- ){
-        m_d->loadModel->removeRows( rowList.at(i) );
-    }
-}
-
-void LoadResultantGUI::loadDataFromFileTXT(){
-    QString fileName = QFileDialog::getOpenFileName(this, trUtf8("Apri file TXT"), "", trUtf8("File TXT(%1)").arg("*.txt") );
-    if (!fileName.isEmpty()) {
-        QFile file(fileName);
-
-        if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
-            if( !m_d->ui->addDataCheckBox->isChecked() ){
-                m_d->loadModel->clear();
-            }
-            m_d->loadModel->loadFromFileTXT( file );
-            file.close();
-        } else {
-            QMessageBox::warning( this, trUtf8("QStruct"), trUtf8("Non riesco ad aprire il file file %1:\n%2.").arg(fileName).arg(file.errorString()));
-            return;
-        }
-    }
-}
-
-void LoadResultantGUI::loadDataFromFileXML(){
-    QString fileName = QFileDialog::getOpenFileName(this, trUtf8("Apri file XML"), "", trUtf8("File XML (%1)").arg("*.xml") );
-    if (!fileName.isEmpty()) {
-        QFile file(fileName);
-
-        if(file.open(QIODevice::ReadOnly | QIODevice::Text)) {
-            if( !m_d->ui->addDataCheckBox->isChecked() ){
-                m_d->loadModel->clear();
-            }
-            QXmlStreamReader reader( &file );
-            m_d->loadModel->readXml( &reader );
-            file.close();
-        } else {
-            QMessageBox::warning( this, trUtf8("QStruct"), trUtf8("Non riesco ad aprire il file %1:\n%2.").arg(fileName).arg(file.errorString()));
-            return;
-        }
-    }
-
-}
-
-void LoadResultantGUI::writeDataToFileXML(){
-    QString fileName = QFileDialog::getSaveFileName(this,
-                                                    trUtf8("Salva su file XML"), ".",
-                                                    trUtf8("File XML (%1)").arg("*.xml"));
-    if (!fileName.isEmpty()){
-        QFile file( fileName );
-        if (file.open(QIODevice::ReadWrite | QIODevice::Text)) {
-            file.resize(0);
-            QXmlStreamWriter writer(&file);
-            m_d->loadModel->writeXml( &writer );
-            file.flush();
-            file.close();
-        } else {
-            QMessageBox::warning( this, trUtf8("QStruct"), trUtf8("Non riesco ad aprire il file %1:\n%2.").arg(fileName).arg(file.errorString()));
-            return;
-        }
-    }
-}
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="512"
+   height="512"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="easycncr.svg"
+   inkscape:export-filename="/home/mickele/prog-work/struct/qmasonry/images/freewall.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         id="path3677"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Sstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Sstart"
+       style="overflow:visible">
+      <path
+         id="path3665"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.2) translate(6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         id="path3671"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3653"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient3663">
+      <stop
+         style="stop-color:#033908;stop-opacity:1;"
+         offset="0"
+         id="stop3665" />
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:0;"
+         offset="1"
+         id="stop3667" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3624">
+      <stop
+         style="stop-color:#42364d;stop-opacity:1;"
+         offset="0"
+         id="stop3626" />
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:0;"
+         offset="1"
+         id="stop3628" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2826"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3624"
+       id="linearGradient3630"
+       x1="129.33333"
+       y1="267.55554"
+       x2="372"
+       y2="-48"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.56207104,0,0,0.7939155,43.381723,743.48983)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3663"
+       id="linearGradient3626"
+       x1="40"
+       y1="512"
+       x2="800"
+       y2="32"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,0,0,0.9,25.6,567.56215)" />
+    <inkscape:perspective
+       id="perspective3717"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2844"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3624-8"
+       id="linearGradient3630-1"
+       x1="129.33333"
+       y1="267.55554"
+       x2="372"
+       y2="-48"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3375,0,0,0.5558821,264.35,784.10349)" />
+    <linearGradient
+       id="linearGradient3624-8">
+      <stop
+         style="stop-color:#42364d;stop-opacity:1;"
+         offset="0"
+         id="stop3626-7" />
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:0;"
+         offset="1"
+         id="stop3628-9" />
+    </linearGradient>
+    <linearGradient
+       y2="-48"
+       x2="372"
+       y1="267.55554"
+       x1="129.33333"
+       gradientTransform="matrix(0.45,0,0,0.66176447,61.8,548.24495)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2853"
+       xlink:href="#linearGradient3624-8"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective4676"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart-0"
+       style="overflow:visible">
+      <path
+         id="path3677-2"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)" />
+    </marker>
+    <inkscape:perspective
+       id="perspective4704"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart-7"
+       style="overflow:visible">
+      <path
+         id="path3677-5"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)" />
+    </marker>
+    <inkscape:perspective
+       id="perspective4732"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mstart-2"
+       style="overflow:visible">
+      <path
+         id="path3677-28"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(0.6,0.6)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="520.95875"
+     inkscape:cy="194.85652"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     showguides="false"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1314"
+     inkscape:window-height="748"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2840"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="8px"
+       spacingy="8px" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="256,112"
+       id="guide2826" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="24,400"
+       id="guide3674" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="24,24"
+       id="guide3676" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="488,8"
+       id="guide3678" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-540.36215)">
+    <rect
+       style="fill:#0000ce;stroke:none;stroke-width:6;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:0.42578125000000000"
+       id="rect3846"
+       width="358.57144"
+       height="191.42857"
+       x="81.428574"
+       y="40.57143"
+       transform="translate(0,540.36215)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:18.00000191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path4083"
+       sodipodi:cx="240"
+       sodipodi:cy="360"
+       sodipodi:rx="24"
+       sodipodi:ry="24"
+       d="m 264,360 a 24,24 0 1 1 -48,0 24,24 0 1 1 48,0 z"
+       transform="matrix(0.3333333,0,0,0.3333333,187.98074,840.10985)" />
+    <path
+       transform="matrix(0.3333333,0,0,0.3333333,47.534025,840.10984)"
+       d="m 264,360 a 24,24 0 1 1 -48,0 24,24 0 1 1 48,0 z"
+       sodipodi:ry="24"
+       sodipodi:rx="24"
+       sodipodi:cy="360"
+       sodipodi:cx="240"
+       id="path4085"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:18.00000191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(0.3333333,0,0,0.3333333,321.32088,840.10985)"
+       d="m 264,360 a 24,24 0 1 1 -48,0 24,24 0 1 1 48,0 z"
+       sodipodi:ry="24"
+       sodipodi:rx="24"
+       sodipodi:cy="360"
+       sodipodi:cx="240"
+       id="path3869"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:18.00000191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:18.00000191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3871"
+       sodipodi:cx="240"
+       sodipodi:cy="360"
+       sodipodi:rx="24"
+       sodipodi:ry="24"
+       d="m 264,360 a 24,24 0 1 1 -48,0 24,24 0 1 1 48,0 z"
+       transform="matrix(0.3333333,0,0,0.3333333,319.30057,498.67829)" />
+    <path
+       transform="matrix(0.3333333,0,0,0.3333333,49.589845,500.69859)"
+       d="m 264,360 a 24,24 0 1 1 -48,0 24,24 0 1 1 48,0 z"
+       sodipodi:ry="24"
+       sodipodi:rx="24"
+       sodipodi:cy="360"
+       sodipodi:cx="240"
+       id="path3873"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:18.00000191;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       sodipodi:type="arc" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:6;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3032"
+       width="357.63284"
+       height="420.48999"
+       x="82.612144"
+       y="583.54572" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 35.714286,232 442.857144,1.42857"
+       id="path3844"
+       inkscape:connector-curvature="0"
+       transform="translate(0,540.36215)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Livello" />
+</svg>
1 2 3 > >> (Page 1 of 3)