Salome HOME
Merge from V6_main 12/04/2013
authorvsr <vsr@opencascade.com>
Fri, 12 Apr 2013 14:40:29 +0000 (14:40 +0000)
committervsr <vsr@opencascade.com>
Fri, 12 Apr 2013 14:40:29 +0000 (14:40 +0000)
12 files changed:
configure.ac
resources/SalomeApp.xml.in
src/Controls/SMESH_Controls.cxx
src/SMESH/SMESH_Gen.cxx
src/SMESH/SMESH_MeshEditor.cxx
src/SMESHGUI/SMESHGUI_FilterDlg.cxx
src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx
src/StdMeshers/StdMeshers_ProjectionUtils.cxx
src/Tools/YamsPlug/Makefile.am
src/Tools/YamsPlug/doc/Makefile.am [new file with mode: 0644]
src/Tools/YamsPlug/doc/conf.py [deleted file]
src/Tools/YamsPlug/doc/conf.py.in [new file with mode: 0644]

index 51b8f4504f538d181afffbd88646a7bab013a317..2a233a55e1cac10bbc87a28e5fe6be1a490bcbdd 100644 (file)
@@ -576,6 +576,8 @@ AC_OUTPUT([ \
   src/Tools/Makefile \
   src/Tools/MeshCut/Makefile \
   src/Tools/YamsPlug/Makefile \
+  src/Tools/YamsPlug/doc/Makefile \
+  src/Tools/YamsPlug/doc/conf.py \
   src/Tools/padder/Makefile \
   src/Tools/padder/meshjob/Makefile \
   src/Tools/padder/meshjob/idl/Makefile \
index fca22ab93ff70bf4247f81a2b652186b91b15b4e..72f293f20399f6cbfa5b00739e99e811fa541718 100644 (file)
   <section name="smesh_help" >
     <parameter name="sub_menu"          value="%1 module"/>
     <parameter name="User's Guide"      value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/index.html"/>
+    <parameter name="Plug-ins/Yams plugin User's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/yams/index.html"/>
     <parameter name="Developer's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/tui/SMESH/index.html"/>
   </section>
   <section name="resources">
index 83981ac6195712c469b38fe7801c6f0af8076253..fa70861643ae1c33a859f1e342589d6212af79e5 100644 (file)
@@ -65,6 +65,7 @@
 #include <set>
 #include <limits>
 
+#include <Basics_Utils.hxx>
 
 /*
                             AUXILIARY METHODS
@@ -2662,6 +2663,7 @@ void GroupColor::SetMesh( const SMDS_Mesh* theMesh )
 
 void GroupColor::SetColorStr( const TCollection_AsciiString& theStr )
 {
+  Kernel_Utils::Localizer loc;
   TCollection_AsciiString aStr = theStr;
   aStr.RemoveAll( ' ' );
   aStr.RemoveAll( '\t' );
index 0930eec8278ec5ca629d973ebe027647492ecc30..cc7d3870711be6b44a959829543eddc6b8913412 100644 (file)
@@ -149,11 +149,12 @@ bool SMESH_Gen::Compute(SMESH_Mesh &          aMesh,
   else
     computeEvent = SMESH_subMesh::COMPUTE_SUBMESH;
 
-  if ( anUpward ) // is called from below code here
+  if ( anUpward ) // is called from the below code in this method
   {
-    // -----------------------------------------------
-    // mesh all the sub-shapes starting from vertices
-    // -----------------------------------------------
+    // ===============================================
+    // Mesh all the sub-shapes starting from vertices
+    // ===============================================
+
     smIt = sm->getDependsOnIterator(includeSelf, !complexShapeFirst);
     while ( smIt->more() )
     {
@@ -193,19 +194,21 @@ bool SMESH_Gen::Compute(SMESH_Mesh &          aMesh,
   }
   else
   {
-    // -----------------------------------------------------------------
-    // apply algos that DO NOT require Discreteized boundaries and DO NOT
-    // support submeshes, starting from the most complex shapes
-    // and collect submeshes with algos that DO support submeshes
-    // -----------------------------------------------------------------
-    list< SMESH_subMesh* > smWithAlgoSupportingSubmeshes;
+    // ================================================================
+    // Apply algos that do NOT require discreteized boundaries
+    // ("all-dimensional") and do NOT support sub-meshes, starting from
+    // the most complex shapes and collect sub-meshes with algos that 
+    // DO support sub-meshes
+    // ================================================================
+
+    list< SMESH_subMesh* > smWithAlgoSupportingSubmeshes[4]; // for each dim
 
     // map to sort sm with same dim algos according to dim of
     // the shape the algo assigned to (issue 0021217)
     multimap< int, SMESH_subMesh* > shDim2sm;
     multimap< int, SMESH_subMesh* >::reverse_iterator shDim2smIt;
     TopoDS_Shape algoShape;
-    int prevShapeDim = -1;
+    int prevShapeDim = -1, aShapeDim;
 
     smIt = sm->getDependsOnIterator(includeSelf, complexShapeFirst);
     while ( smIt->more() )
@@ -215,7 +218,7 @@ bool SMESH_Gen::Compute(SMESH_Mesh &          aMesh,
         continue;
 
       const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
-      int aShapeDim = GetShapeDim( aSubShape );
+      aShapeDim = GetShapeDim( aSubShape );
       if ( aShapeDim < 1 ) break;
       
       // check for preview dimension limitations
@@ -234,9 +237,9 @@ bool SMESH_Gen::Compute(SMESH_Mesh &          aMesh,
             prevShapeDim = aShapeDim;
             for ( shDim2smIt = shDim2sm.rbegin(); shDim2smIt != shDim2sm.rend(); ++shDim2smIt )
               if ( shDim2smIt->first == globalAlgoDim )
-                smWithAlgoSupportingSubmeshes.push_back( shDim2smIt->second );
+                smWithAlgoSupportingSubmeshes[ aShapeDim ].push_back( shDim2smIt->second );
               else
-                smWithAlgoSupportingSubmeshes.push_front( shDim2smIt->second );
+                smWithAlgoSupportingSubmeshes[ aShapeDim ].push_front( shDim2smIt->second );
             shDim2sm.clear();
           }
           // add smToCompute to shDim2sm map
@@ -255,7 +258,7 @@ bool SMESH_Gen::Compute(SMESH_Mesh &          aMesh,
           }
           shDim2sm.insert( make_pair( aShapeDim, smToCompute ));
         }
-        else
+        else // Compute w/o support of sub-meshes
         {
           if (_compute_canceled)
             return false;
@@ -270,82 +273,91 @@ bool SMESH_Gen::Compute(SMESH_Mesh &          aMesh,
     // reload sub-meshes from shDim2sm into smWithAlgoSupportingSubmeshes
     for ( shDim2smIt = shDim2sm.rbegin(); shDim2smIt != shDim2sm.rend(); ++shDim2smIt )
       if ( shDim2smIt->first == globalAlgoDim )
-        smWithAlgoSupportingSubmeshes.push_back( shDim2smIt->second );
+        smWithAlgoSupportingSubmeshes[0].push_back( shDim2smIt->second );
       else
-        smWithAlgoSupportingSubmeshes.push_front( shDim2smIt->second );
+        smWithAlgoSupportingSubmeshes[0].push_front( shDim2smIt->second );
 
-    // ------------------------------------------------------------
-    // sort list of submeshes according to mesh order
-    // ------------------------------------------------------------
-    aMesh.SortByMeshOrder( smWithAlgoSupportingSubmeshes );
+    // ======================================================
+    // Apply all-dimensional algorithms supporing sub-meshes
+    // ======================================================
 
-    // ------------------------------------------------------------
-    // compute submeshes under shapes with algos that DO NOT require
-    // Discreteized boundaries and DO support submeshes
-    // ------------------------------------------------------------
-    list< SMESH_subMesh* >::iterator subIt, subEnd;
-    subIt  = smWithAlgoSupportingSubmeshes.begin();
-    subEnd = smWithAlgoSupportingSubmeshes.end();
-    // start from lower shapes
-    for ( ; subIt != subEnd; ++subIt )
+    for ( aShapeDim = 0; aShapeDim < 4; ++aShapeDim )
     {
-      sm = *subIt;
-
-      // get a shape the algo is assigned to
-      if ( !GetAlgo( aMesh, sm->GetSubShape(), & algoShape ))
-        continue; // strange...
-
-      // look for more local algos
-      smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
-      while ( smIt->more() )
+      // ------------------------------------------------
+      // sort list of sub-meshes according to mesh order
+      // ------------------------------------------------
+      aMesh.SortByMeshOrder( smWithAlgoSupportingSubmeshes[ aShapeDim ] );
+
+      // ------------------------------------------------------------
+      // compute sub-meshes with local uni-dimensional algos under
+      // sub-meshes with all-dimensional algos
+      // ------------------------------------------------------------
+      list< SMESH_subMesh* >::iterator subIt, subEnd;
+      subIt  = smWithAlgoSupportingSubmeshes[ aShapeDim ].begin();
+      subEnd = smWithAlgoSupportingSubmeshes[ aShapeDim ].end();
+      // start from lower shapes
+      for ( ; subIt != subEnd; ++subIt )
       {
-        SMESH_subMesh* smToCompute = smIt->next();
-
-        const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
-        const int aShapeDim = GetShapeDim( aSubShape );
-        //if ( aSubShape.ShapeType() == TopAbs_VERTEX ) continue;
-        if ( aShapeDim < 1 ) continue;
+        sm = *subIt;
 
-        // check for preview dimension limitations
-        if ( aShapesId && GetShapeDim( aSubShape.ShapeType() ) > (int)aDim )
-          continue;
-        
-        SMESH_HypoFilter filter( SMESH_HypoFilter::IsAlgo() );
-        filter
-          .And( SMESH_HypoFilter::IsApplicableTo( aSubShape ))
-          .And( SMESH_HypoFilter::IsMoreLocalThan( algoShape, aMesh ));
+        // get a shape the algo is assigned to
+        if ( !GetAlgo( aMesh, sm->GetSubShape(), & algoShape ))
+          continue; // strange...
 
-        if ( SMESH_Algo* subAlgo = (SMESH_Algo*) aMesh.GetHypothesis( aSubShape, filter, true )) {
-          if ( ! subAlgo->NeedDiscreteBoundary() ) continue;
-          SMESH_Hypothesis::Hypothesis_Status status;
-          if ( subAlgo->CheckHypothesis( aMesh, aSubShape, status ))
-            // mesh a lower smToCompute starting from vertices
-            Compute( aMesh, aSubShape, /*anUpward=*/true, aDim, aShapesId );
+        // look for more local algos
+        smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+        while ( smIt->more() )
+        {
+          SMESH_subMesh* smToCompute = smIt->next();
+
+          const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
+          const int aShapeDim = GetShapeDim( aSubShape );
+          //if ( aSubShape.ShapeType() == TopAbs_VERTEX ) continue;
+          if ( aShapeDim < 1 ) continue;
+
+          // check for preview dimension limitations
+          if ( aShapesId && GetShapeDim( aSubShape.ShapeType() ) > (int)aDim )
+            continue;
+
+          SMESH_HypoFilter filter( SMESH_HypoFilter::IsAlgo() );
+          filter
+            .And( SMESH_HypoFilter::IsApplicableTo( aSubShape ))
+            .And( SMESH_HypoFilter::IsMoreLocalThan( algoShape, aMesh ));
+
+          if ( SMESH_Algo* subAlgo = (SMESH_Algo*) aMesh.GetHypothesis( aSubShape, filter, true )) {
+            if ( ! subAlgo->NeedDiscreteBoundary() ) continue;
+            SMESH_Hypothesis::Hypothesis_Status status;
+            if ( subAlgo->CheckHypothesis( aMesh, aSubShape, status ))
+              // mesh a lower smToCompute starting from vertices
+              Compute( aMesh, aSubShape, /*anUpward=*/true, aDim, aShapesId );
+          }
         }
       }
-    }
-    // ----------------------------------------------------------
-    // apply the algos that do not require Discreteized boundaries
-    // ----------------------------------------------------------
-    for ( subIt = smWithAlgoSupportingSubmeshes.begin(); subIt != subEnd; ++subIt )
-    {
-      sm = *subIt;
-      if ( sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
+      // --------------------------------
+      // apply the all-dimensional algos
+      // --------------------------------
+      subIt  = smWithAlgoSupportingSubmeshes[ aShapeDim ].begin();
+      for ( ; subIt != subEnd; ++subIt )
       {
-        const TopAbs_ShapeEnum aShType = sm->GetSubShape().ShapeType();
-        // check for preview dimension limitations
-        if ( aShapesId && GetShapeDim( aShType ) > (int)aDim )
-          continue;
+        sm = *subIt;
+        if ( sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
+        {
+          const TopAbs_ShapeEnum aShType = sm->GetSubShape().ShapeType();
+          // check for preview dimension limitations
+          if ( aShapesId && GetShapeDim( aShType ) > (int)aDim )
+            continue;
 
-        if (_compute_canceled)
-          return false;
-        _sm_current = sm;
-        sm->ComputeStateEngine( computeEvent );
-        _sm_current = NULL;
-        if ( aShapesId )
-          aShapesId->insert( sm->GetId() );
+          if (_compute_canceled)
+            return false;
+          _sm_current = sm;
+          sm->ComputeStateEngine( computeEvent );
+          _sm_current = NULL;
+          if ( aShapesId )
+            aShapesId->insert( sm->GetId() );
+        }
       }
-    }
+    } // loop on shape dimensions
+
     // -----------------------------------------------
     // mesh the rest sub-shapes starting from vertices
     // -----------------------------------------------
@@ -451,8 +463,8 @@ bool SMESH_Gen::Evaluate(SMESH_Mesh &          aMesh,
   else {
     // -----------------------------------------------------------------
     // apply algos that DO NOT require Discreteized boundaries and DO NOT
-    // support submeshes, starting from the most complex shapes
-    // and collect submeshes with algos that DO support submeshes
+    // support sub-meshes, starting from the most complex shapes
+    // and collect sub-meshes with algos that DO support sub-meshes
     // -----------------------------------------------------------------
     list< SMESH_subMesh* > smWithAlgoSupportingSubmeshes;
     smIt = sm->getDependsOnIterator(includeSelf, complexShapeFirst);
@@ -481,8 +493,8 @@ bool SMESH_Gen::Evaluate(SMESH_Mesh &          aMesh,
     aMesh.SortByMeshOrder( smWithAlgoSupportingSubmeshes );
 
     // ------------------------------------------------------------
-    // compute submeshes under shapes with algos that DO NOT require
-    // Discreteized boundaries and DO support submeshes
+    // compute sub-meshes under shapes with algos that DO NOT require
+    // Discreteized boundaries and DO support sub-meshes
     // ------------------------------------------------------------
     list< SMESH_subMesh* >::iterator subIt, subEnd;
     subIt  = smWithAlgoSupportingSubmeshes.begin();
@@ -650,9 +662,9 @@ static bool checkMissing(SMESH_Gen*                aGen,
   {
   case TopAbs_EDGE:
   case TopAbs_FACE:
-  case TopAbs_SOLID: break; // check this submesh, it can be meshed
+  case TopAbs_SOLID: break; // check this sub-mesh, it can be meshed
   default:
-    return true; // not meshable submesh
+    return true; // not meshable sub-mesh
   }
   if ( aCheckedMap.count( aSubMesh ))
     return true;
index b9a15a21ee12671f231aac27d9f3d98da6332e52..8ae8331ab9fa9a693e4d1fe004eba648a726acd6 100644 (file)
@@ -6065,7 +6065,26 @@ SMESH_MeshEditor::generateGroups(const SMESH_SequenceOfElemPtr& nodeGens,
           if ( resElem != sourceElem )
             resultElems.push_back( resElem );
 
-      // add resultElems to groups made by ones the sourceElem belongs to
+      // there must be a top element
+      const SMDS_MeshElement* topElem = 0;
+      if ( isNodes )
+      {
+        topElem = resultElems.back();
+        resultElems.pop_back();
+      }
+      else
+      {
+        list< const SMDS_MeshElement* >::reverse_iterator resElemIt = resultElems.rbegin();
+        for ( ; resElemIt != resultElems.rend() ; ++resElemIt )
+          if ( (*resElemIt)->GetType() == sourceElem->GetType() )
+          {
+            topElem = *resElemIt;
+            resultElems.erase( --(resElemIt.base()) ); // erase *resElemIt
+            break;
+          }
+      }
+
+      // add resultElems to groups originted from ones the sourceElem belongs to
       list< TOldNewGroup >::iterator gOldNew, gLast = groupsOldNew.end();
       for ( gOldNew = groupsOldNew.begin(); gOldNew != gLast; ++gOldNew )
       {
@@ -6074,19 +6093,15 @@ SMESH_MeshEditor::generateGroups(const SMESH_SequenceOfElemPtr& nodeGens,
         {
           // fill in a new group
           SMDS_MeshGroup & newGroup = gOldNew->get<1>()->SMDSGroup();
-          list< const SMDS_MeshElement* > rejectedElems; // elements of other type
           list< const SMDS_MeshElement* >::iterator resLast = resultElems.end(), resElemIt;
           for ( resElemIt = resultElems.begin(); resElemIt != resLast; ++resElemIt )
-            if ( !newGroup.Add( *resElemIt ))
-              rejectedElems.push_back( *resElemIt );
+            newGroup.Add( *resElemIt );
 
-          // fill "top" group
-          if ( !rejectedElems.empty() )
+          // fill "top" group
+          if ( topElem )
           {
             SMDS_MeshGroup & newTopGroup = gOldNew->get<2>()->SMDSGroup();
-            resLast = rejectedElems.end();
-            for ( resElemIt = rejectedElems.begin(); resElemIt != resLast; ++resElemIt )
-              !newTopGroup.Add( *resElemIt );
+            newTopGroup.Add( topElem );
           }
         }
       }
@@ -6116,7 +6131,9 @@ SMESH_MeshEditor::generateGroups(const SMESH_SequenceOfElemPtr& nodeGens,
 
         // make a name
         const bool isTop = ( nbNewGroups == 2 &&
-                             newGroupDS->GetType() == oldGroupDS->GetType() );
+                             newGroupDS->GetType() == oldGroupDS->GetType() &&
+                             is2nd );
+
         string name = oldGroupDS->GetStoreName();
         if ( !targetMesh ) {
           string suffix = ( isTop ? "top": postfix.c_str() );
index b345b9cc12e25059cfd7c251428242717c752a83..21c03aa24f278170db6d02bfca6676a90ff5b65e 100755 (executable)
@@ -67,6 +67,7 @@
 
 // SALOME KERNEL includes
 #include <SALOMEDSClient_Study.hxx>
+#include <Basics_Utils.hxx>
 
 // OCCT includes
 #include <StdSelect_TypeOfFace.hxx>
@@ -1246,6 +1247,7 @@ void SMESHGUI_FilterTable::GetCriterion (const int                 theRow,
     QtxColorButton* clrBtn = qobject_cast<QtxColorButton*>(aTable->cellWidget(theRow, 2));
     if ( clrBtn )
     {
+      Kernel_Utils::Localizer loc;
       const QColor qClr = clrBtn->color();
       QString clrStr = QString( "%1;%2;%3" ).
         arg( qClr.red()/256. ).arg( qClr.green()/256. ).arg( qClr.blue()/256. );
index 83140402fee720916652e35ec0d52f68d92440a3..06d98f6c2287da366f6cfc65188b930c19bb4145 100755 (executable)
@@ -607,7 +607,9 @@ void SMESHGUI_MultiEditDlg::onSelectionDone()
           anItem->setSelected(true);
       }
     }
-    myMesh = SMESH::GetMeshByIO(anIO);
+    SMESH::SMESH_Mesh_var aSelMesh = SMESH::GetMeshByIO(anIO);
+    if (!aSelMesh->_is_nil())
+      myMesh = aSelMesh;
   }
 
   if (nbSel > 0) {
@@ -662,6 +664,7 @@ void SMESHGUI_MultiEditDlg::onFilterBtn()
 
   myFilterDlg->SetSelection();
   myFilterDlg->SetMesh(myMesh);
+  myFilterDlg->SetSourceWg(myListBox, false);
 
   myFilterDlg->show();
 }
@@ -975,7 +978,7 @@ void SMESHGUI_MultiEditDlg::setSelectionMode()
 {
   SMESH::RemoveFilters();
 
-  mySelectionMgr->clearSelected();
+  //  mySelectionMgr->clearSelected();
   mySelectionMgr->clearFilters();
 
   if (mySubmeshChk->isChecked()) {
index 08136aa73352cfef83e3f6466a0a382761c43574..25bc38a4a08b9f16f1c3e434ffa18f74980eced6 100644 (file)
@@ -1000,7 +1000,8 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
       // get outer edge of theShape1
       TopoDS_Shape wire = OuterShape( face1, TopAbs_WIRE );
       //edge1 = TopoDS::Edge( OuterShape( face1, TopAbs_EDGE ));
-      map<int,TopoDS_Edge> propag_edges; // use map to find the closest propagation edge
+      // use map to find the closest propagation edge
+      map<int, pair< TopoDS_Edge, TopoDS_Edge > > propag_edges;
       for ( TopoDS_Iterator edgeIt( wire ); edgeIt.More(); edgeIt.Next() )
       {
         edge1 = TopoDS::Edge( edgeIt.Value() );
@@ -1009,7 +1010,8 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
           edge2 = TopoDS::Edge( exp.Current() );
           pair<int,TopoDS_Edge> step_edge = GetPropagationEdge( theMesh1, edge2, edge1 );
           if ( !step_edge.second.IsNull() ) { // propagation found
-            propag_edges.insert( step_edge );
+            propag_edges.insert( make_pair( step_edge.first,
+                                            ( make_pair( edge1, step_edge.second ))));
             if ( step_edge.first == 1 ) break; // most close found
           }
         }
@@ -1017,7 +1019,8 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
       }
       if ( !propag_edges.empty() ) // propagation found
       {
-        edge2 = propag_edges.begin()->second;
+        edge1 = propag_edges.begin()->second.first;
+        edge2 = propag_edges.begin()->second.second;
         TopoDS_Vertex VV1[2], VV2[2];
         TopExp::Vertices( edge1, VV1[0], VV1[1], true );
         TopExp::Vertices( edge2, VV2[0], VV2[1], true );
index 968b13e933ae2132d9300101163960d6a152bcbd..e1b8839d02441f88be29dbe20a56aa8fda732e89 100644 (file)
@@ -17,6 +17,8 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
+SUBDIRS = doc
+
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
 UIPY_FILES = YamsPlugDialog.py  ViewText.py 
diff --git a/src/Tools/YamsPlug/doc/Makefile.am b/src/Tools/YamsPlug/doc/Makefile.am
new file mode 100644 (file)
index 0000000..005a9dd
--- /dev/null
@@ -0,0 +1,72 @@
+# Makefile for Sphinx documentation
+#
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+yamsdocdir=$(docdir)/gui/SMESH/yams
+
+
+RSTFILES = lct.rst \
+          index.rst \
+          editHypo.rst \
+          Mandatory_params.rst \
+          Generics_params.rst \
+          Advanced_params.rst
+
+EXTRA_DIST += $(RSTFILES)
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SOURCEDIR     = $(srcdir)
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+CONF_FILE_DIR = .
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees -c $(CONF_FILE_DIR) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCEDIR)
+
+.PHONY: help clean html latexpdf 
+
+all:
+       make html
+
+help:
+       @echo "Please use \`make <target>' where <target> is one of"
+       @echo "  html       to make standalone HTML files"
+       @echo "  dirhtml    to make HTML files named index.html in directories"
+       @echo "  singlehtml to make a single large HTML file"
+       @echo "  pickle     to make pickle files"
+       @echo "  json       to make JSON files"
+       @echo "  htmlhelp   to make HTML files and a HTML help project"
+       @echo "  qthelp     to make HTML files and a qthelp project"
+       @echo "  devhelp    to make HTML files and a Devhelp project"
+       @echo "  epub       to make an epub"
+       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+       @echo "  text       to make text files"
+       @echo "  man        to make manual pages"
+       @echo "  changes    to make an overview of all changed/added/deprecated items"
+       @echo "  linkcheck  to check all external links for integrity"
+       @echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+install-data-local: all
+       test -z $(yamsdocdir) || mkdir -p $(yamsdocdir)
+       cp -rf $(BUILDDIR)/html/* $(yamsdocdir) ;
+
+clean:
+       -rm -rf $(BUILDDIR)/*
+
+html:
+       $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+latexpdf:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through pdflatex..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
diff --git a/src/Tools/YamsPlug/doc/conf.py b/src/Tools/YamsPlug/doc/conf.py
deleted file mode 100644 (file)
index e3d5776..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Yams PlugIn documentation build configuration file, created by
-# sphinx-quickstart on Wed Sep 14 11:40:32 2011.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# The contents of this file are pickled, so don't put values in the namespace
-# that aren't pickleable (module imports are okay, they're removed automatically).
-#
-# All configuration values have a default value; values that are commented out
-# serve to show the default value.
-
-import sys, os
-
-# If your extensions are in another directory, add it here. If the directory
-# is relative to the documentation root, use os.path.abspath to make it
-# absolute, like shown here.
-#sys.path.append(os.path.abspath('some/directory'))
-
-# General configuration
-# ---------------------
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['.templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General substitutions.
-project = 'YAMS Plug_in'
-copyright = '2011, Pascale Noyret'
-
-# The default replacements for |version| and |release|, also used in various
-# other places throughout the built documents.
-#
-# The short X.Y version.
-version = '6.4'
-# The full version, including alpha/beta/rc tags.
-release = '6.4.0'
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-today_fmt = '%B %d, %Y'
-
-# List of documents that shouldn't be included in the build.
-#unused_docs = []
-
-# List of directories, relative to source directories, that shouldn't be searched
-# for source files.
-#exclude_dirs = []
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-
-# Options for HTML output
-# -----------------------
-
-# The style sheet to use for HTML and HTML Help pages. A file of that name
-# must exist either in Sphinx' static/ path, or in one of the custom paths
-# given in html_static_path.
-html_style = 'default.css'
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (within the static path) to place at the top of
-# the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['.static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_use_modindex = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, the reST sources are included in the HTML build as _sources/<name>.
-#html_copy_source = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'YamsPlug-in doc'
-
-
-# Options for LaTeX output
-# ------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
-
-# The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, document class [howto/manual]).
-latex_documents = [
-  ('index', 'YAMSPlugIn.tex', 'Yams PlugIn Documentation',
-   'Pascale Noyret', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_use_modindex = True
diff --git a/src/Tools/YamsPlug/doc/conf.py.in b/src/Tools/YamsPlug/doc/conf.py.in
new file mode 100644 (file)
index 0000000..6f0e363
--- /dev/null
@@ -0,0 +1,179 @@
+# -*- coding: utf-8 -*-
+#
+# Yams PlugIn documentation build configuration file, created by
+# sphinx-quickstart on Wed Sep 14 11:40:32 2011.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default value; values that are commented out
+# serve to show the default value.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('some/directory'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['.templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General substitutions.
+project = 'YAMS Plug-in'
+copyright = '2011, Pascale Noyret'
+
+# The default replacements for |version| and |release|, also used in various
+# other places throughout the built documents.
+#
+# The short X.Y version.
+version = '@VERSION@'
+# The full version, including alpha/beta/rc tags.
+release = '@VERSION@'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directories, that shouldn't be searched
+# for source files.
+#exclude_dirs = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'default.css'
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (within the static path) to place at the top of
+# the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+#html_static_path = ['.static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'YamsPlug-in doc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'YAMSPlugIn.tex', 'Yams PlugIn Documentation',
+   'Pascale Noyret', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True