]> Creatis software - creaContours.git/commitdiff
Feature #1991 Update doxygen documentation
authorEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Fri, 19 Apr 2013 15:12:45 +0000 (17:12 +0200)
committerEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Fri, 19 Apr 2013 15:12:45 +0000 (17:12 +0200)
Feature #1992  Flip contours

13 files changed:
lib/Interface_Icons_NDimensions/interfIOMenu.cxx
lib/Interface_Icons_NDimensions/interfMainPanel.cxx
lib/Interface_Icons_NDimensions/interfMainPanel.h
lib/Interface_Icons_NDimensions/interfSegmentationPanels.cxx
lib/Interface_Icons_NDimensions/interfSegmentationPanels.h
lib/Interface_Icons_NDimensions/interfToolsMenu.cxx
lib/Interface_Icons_NDimensions/interfToolsMenu.h
lib/Interface_Icons_NDimensions/interfToolsPanels.cxx
lib/Interface_Icons_NDimensions/interfToolsPanels.h
lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx
lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h
lib/doxygen/CMakeLists.txt
lib/doxygen/DoxyMainPage.txt.in

index bd1cc5c7366c802ae0d8dfa2ab2a044e59edba8e..027ab579542a88a811dd24d6311d3936315f9042 100644 (file)
@@ -67,18 +67,23 @@ void interfIOMenu::initButtons(wxEvtHandler* evtHandler) {
        this->connectEvents(evtHandler);
 
 }
-void interfIOMenu::onLoad(wxCommandEvent& event){
+void interfIOMenu::onLoad(wxCommandEvent& event)
+{
        interfMainPanel::getInstance()->onLoad();
 }
-void interfIOMenu::onSave(wxCommandEvent& event){
+void interfIOMenu::onSave(wxCommandEvent& event)
+{
        interfMainPanel::getInstance()->onSave();
 }
 
-void interfIOMenu::onImport(wxCommandEvent& event){
+void interfIOMenu::onImport(wxCommandEvent& event)
+{
        interfMainPanel::getInstance()->onImport();
 }
 
-void interfIOMenu::onTest(wxCommandEvent& event){
+void interfIOMenu::onTest(wxCommandEvent& event)
+{
+       printf("EED interfIOMenu::onTest\n");
        interfMainPanel::getInstance()->onTest();
 }
 
index a1d38ca12cb2c264a1c5e1744e05a9092a39af4b..7d77c933622ace10e4195237b09823ef94fbae81 100644 (file)
@@ -55,6 +55,7 @@ interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtH
        colorImageLayerPanel    = NULL;
        currentWindow                   = NULL;
        testPanel                               = NULL;
+       flipPanel                               = NULL;
 
 //CMRU 17-08-09 ------------------------------------------------------------------
        infoPanelCalibration = NULL;
@@ -472,11 +473,14 @@ void interfMainPanel::onSave()
        wxContourMainFrame::getInstance()->onSave();
 }
 
-void interfMainPanel::onImport(){
+void interfMainPanel::onImport()
+{
        wxContourMainFrame::getInstance()->onImport();
 }
 
-void interfMainPanel::onTest(){
+void interfMainPanel::onTest()
+{
+       printf("EED interfMainPanel::onTest \n");
        if(testPanel==NULL)
        {
                testPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition,
@@ -485,17 +489,15 @@ void interfMainPanel::onTest(){
                testPanel->SetSizer(flexsizer, true);
                testPanel->SetAutoLayout( true );
                panelTest = new interfTestPanel(testPanel);
-
-               wxStaticText* stattext = new wxStaticText(mirrorPanel,  -1,
+               wxStaticText* stattext = new wxStaticText(testPanel,  -1,
                        wxString(_T("   Test Panel   ")),
                        wxDefaultPosition, wxDefaultSize,
                        wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
-
                flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
                flexsizer->Add(panelTest, wxEXPAND);
                testPanel->Layout();
-               showPanel(testPanel);
        }
+       showPanel(testPanel);
 }
 
 void interfMainPanel::RefreshInterface()
@@ -964,6 +966,38 @@ void interfMainPanel::SetContourGroup(int contourGroup)
        wxContourMainFrame::getInstance()->SetContourGroup( contourGroup);
 }
 
+
+void interfMainPanel::onFlipContours()
+{
+       printf("EED interfMainPanel::onFlipContours() \n");
+       if(flipPanel==NULL)
+       {
+               flipPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition,
+                       wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));
+               wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);
+               flipPanel->SetSizer(flexsizer, true);
+               flipPanel->SetAutoLayout( true );
+               panelFlip = new interfFlipPanel(flipPanel);
+               wxStaticText* stattext = new wxStaticText(flipPanel,  -1,
+                       wxString(_T("         Flip Contours   ")),
+                       wxDefaultPosition, wxDefaultSize,
+                       wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
+               flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
+               flexsizer->Add(panelFlip, wxEXPAND);
+               flipPanel->Layout();
+       }
+       showPanel(flipPanel);
+}
+
+
+void interfMainPanel::FlipContours(int typeContourFlip, int flipDirection)
+{
+       printf("EED interfMainPanel::FlipContours( %d , %d ) \n",typeContourFlip,  flipDirection );
+       wxContourMainFrame::getInstance()->FlipContours( typeContourFlip , flipDirection );
+}
+
+
+
 //CMRU 17-08-09 ---------------------------------------------
 void interfMainPanel::onPrintLabel ()
 {
index d19c1b0df2b01584fe1fafbbf0cd710758d71221..4513de238b78d2c0183ea9ed4745506c4172e6be 100644 (file)
@@ -195,7 +195,10 @@ public:
        virtual bool Show(bool show);
        void ShowResultImages(int typeContourGroup, int selection, int minZ, int maxZ);
        void SetContourGroup(int contourGroup);
+       void onFlipContours();
+       void FlipContours(int typeContourFlip, int flipDirection);
 
+       
 //CMRU 29-08-09-----------------------------------------------------------------------------------------------
 
        /**
@@ -203,7 +206,6 @@ public:
        */
        void onPrintLabel();
 
-
        /**
        * Calculates the pixel value in milimeters according to the current contour if the selected contour is a Line Contour
        * @param size Size in milimeters of the selected contour
@@ -291,6 +293,9 @@ private:
        wxPanel                         *testPanel;
        interfTestPanel         *panelTest;
 
+       wxPanel                         *flipPanel;
+       interfFlipPanel         *panelFlip;
+       
        wxPanel                         *mirrorPanel;
        interfMirrorPanel       *panelMirror;
 
index 995344bcf3f31d432af84dd01fa56fdb003e436c..e7bb971e5ca0a122979b7f46e89fd189a6127648 100644 (file)
@@ -290,15 +290,11 @@ void interfMirrorPanel::onChangeWidth(wxScrollEvent& event)
 }
 
 
-
-
-
-
-
 BEGIN_EVENT_TABLE(interfMirrorPanel, wxPanel)
 EVT_SCROLL(interfMirrorPanel :: onChangeWidth)
 END_EVENT_TABLE()
 
+
 //////////////////////////////////////////////////////////////
 
 interfTestPanel::interfTestPanel(wxWindow* parent)
@@ -331,3 +327,7 @@ void interfTestPanel::onButton2Pressed(wxCommandEvent& event)
 {
        std::cout << "Button 2 has been pressed" << std::endl;
 }
+
+
+
+
index eba01a888277c70c854a3af5ab7e18e96aab37de..3f4550550c8d9fc4288bf420e6da82f26902c794 100644 (file)
@@ -125,6 +125,9 @@ private:
        DECLARE_EVENT_TABLE()
 };
 
+
+
+
 class interfTestPanel
        : public wxPanel
 {
index d7bb7abff4eaeb443e60196160e938c495f797d5..7f97b64be8aa3261c759fd3f4b768935ac462bea 100644 (file)
@@ -69,6 +69,11 @@ void interfToolsMenu::initButtons(wxEvtHandler* evtHandler) {
 //-------------------------------------------------------------------------------
 
 
+       path.push_back(datadir + "/FlipContours.png");
+       nom.push_back("Flop contours");
+       funct.push_back((wxObjectEventFunction) &interfToolsMenu:: onFlipPressed);
+
+       
        this->addButtons(path, nom);    
        this->setVectorFunction(funct);
 
@@ -109,3 +114,8 @@ void interfToolsMenu::onPrintLabel(wxCommandEvent& event)
        interfMainPanel::getInstance()->onPrintLabel();
 }
 
+void interfToolsMenu::onFlipPressed(wxCommandEvent& event)
+{
+       printf("EED interfToolsMenu::onFlipLabel \n");
+       interfMainPanel::getInstance()->onFlipContours();
+}
index 5f60f9f6a3358ec02724822b79e2a32832933d49..9849ba82c7bad8410f1f95b24f94f2ed890de309 100644 (file)
@@ -51,6 +51,8 @@ public:
        void onSpreadPressed(wxCommandEvent& event);
        void onMirrorPressed(wxCommandEvent& event);
        void onPrintLabel(wxCommandEvent& event);
+       void onFlipPressed(wxCommandEvent& event);
+
 
 private:
 
index fc28256cfa42ac89005724d16cf095cfb52da10c..baa8cd810574b04aa25fa41ab78fd3dabd8e2727 100644 (file)
@@ -551,3 +551,55 @@ void interfCalibrationPanel::onCalibrate(wxCommandEvent& event)
 }
 //------------------------------------------------------------------------------------------------------------
 
+
+
+//////////////////////////////////////////////////////////////
+
+interfFlipPanel::interfFlipPanel(wxWindow* parent)
+: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
+{
+       wxButton *buttonFlipX = new wxButton(this,wxID_ANY,_T("Flip Horizontally"), wxDefaultPosition, wxSize(200,35) );
+       wxButton *buttonFlipY = new wxButton(this,wxID_ANY,_T("Flip Vertically"), wxDefaultPosition, wxSize(200,35) );
+
+       wxString lstOptions[3];
+       lstOptions[0]=_T("Flip selected contours");
+       lstOptions[1]=_T("Flip all contours of actual slice");
+       lstOptions[2]=_T("Flip all contours");
+       _wichContoursRadioBox = new wxRadioBox(this, -1, _T("Transform"), wxDefaultPosition, wxDefaultSize, 3 , lstOptions,  1, wxRA_SPECIFY_COLS);
+       _wichContoursRadioBox->SetSelection(2);
+
+       
+       Connect( buttonFlipX->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfFlipPanel::onFlipXPressed );
+       Connect( buttonFlipY->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfFlipPanel::onFlipYPressed ); 
+       
+       wxFlexGridSizer * sizer         = new wxFlexGridSizer(1);
+       sizer -> Add( _wichContoursRadioBox, 1, wxGROW );
+       sizer -> Add( buttonFlipX, 1, wxGROW );
+       sizer -> Add( buttonFlipY, 1, wxGROW );
+
+       this->SetSizer( sizer );
+       this->SetAutoLayout( true );
+       this->Layout();
+}
+
+
+
+
+interfFlipPanel::~interfFlipPanel(){
+}
+
+void interfFlipPanel::onFlipXPressed(wxCommandEvent& event)
+{
+       std::cout << "interfToolsPanels.cxx  interfFlipPanel::onFlipXPressed     FlipX (btn)" << std::endl;
+       int typeContoursFlip = _wichContoursRadioBox->GetSelection(); 
+       interfMainPanel::getInstance()->FlipContours( typeContoursFlip , 0 );  // type, direction
+}
+
+void interfFlipPanel::onFlipYPressed(wxCommandEvent& event)
+{
+       std::cout << "interfToolsPanels.cxx   interfFlipPanel::onFlipYPressed FlipY  (btn)" << std::endl;
+       int typeContoursFlip = _wichContoursRadioBox->GetSelection(); 
+       interfMainPanel::getInstance()->FlipContours( typeContoursFlip , 1 );  // type, direction
+}
+
+
index 5f87c5d495b82b37154fd0513391e7de43055efb..23d20119948c876ee7d374f7b375164bbbf6f269 100644 (file)
@@ -113,11 +113,26 @@ private:
        void onContourGroup(wxCommandEvent& event);
        void FillGridWithContoursInformation();
        void onRangeSliceInformation(wxCommandEvent& event);
+};
+
 
+class interfFlipPanel
+       : public wxPanel
+{
+public:
+       interfFlipPanel(wxWindow * parent);             
+       ~interfFlipPanel();
 
+       wxRadioBox *_wichContoursRadioBox;
 
+private:
+       void onFlipXPressed(wxCommandEvent& event);
+
+       void onFlipYPressed(wxCommandEvent& event);
 
 };
+
+
 //CMRU 29-08-09-----------------------------------------------------------------------------------------------
 /**
 * This class represents the calibration panel in the interface icons
@@ -152,7 +167,9 @@ private:
        */
        wxRadioBox * _unitsRadiobox;
 };
+
 //------------------------------------------------------------------------------------------------------------
+
 #endif
 
 
index ef396dc2264adba9c3b4b1c05dd15e5f7a76ea7f..2bf2f0a825bec796a7ee39ed520f7c09bf3d671a 100644 (file)
@@ -981,6 +981,46 @@ void wxContourMainFrame::onLoad()
 }
 
 
+void  wxContourMainFrame::SetZForAllContours(int pz)
+{
+       printf("EED wxContourMainFrame::SetZForAllContours\n");
+
+       //-- Normal Contours
+
+       std::vector< std::string > lstNameThings;       
+       int i,sizeLstNameThings;
+       int ii,sizeLstPoints;
+       
+       lstNameThings           = kernelManager->GetLstNameThings();
+       sizeLstNameThings       = lstNameThings.size(); 
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+printf("EED wxContourMainFrame::SetZForAllContours contour=%d \n", i );
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               sizeLstPoints = manualModel->GetSizeLstPoints();
+               for (ii=0 ; ii<sizeLstPoints ; ii++)
+               {
+                        manualModel->GetManualPoint(ii)->SetPointZ(-900);
+               }// for ii  list of points
+       }// for i  list of Things
+
+       //-- Static Contours
+
+       lstNameThings           = kernelManager->GetLstNameThingsStatic();
+       sizeLstNameThings       = lstNameThings.size();
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               sizeLstPoints = manualModel->GetSizeLstPoints();
+               for (ii=0 ; ii<sizeLstPoints ; ii++)
+               {
+                        manualModel->GetManualPoint(ii)->SetPointZ(-900);
+               }// for ii  list of points
+       }// for i  list of static things
+}
+
+
+
 void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool interactiveInterface)
 {
        char tmp[255];
@@ -1014,6 +1054,10 @@ void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool int
                fscanf(pFile,"%s",tmp); // 1.0.3 || 1.0.2 || 1.0.1 || 1.0.0
                std::string version(tmp);
 
+
+printf("EED wxContourMainFrame::onLoadContours  version%s \n", version.c_str() );
+
+
                //AD:02-06-09
         _tmpReadFileTypeOfTransformation=-1;
                if (version=="1.0.3")
@@ -1021,15 +1065,16 @@ void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool int
                    readDimSpc(pFile,interactiveInterface);   // DimSpc interactive ON
                        openContours(pFile,pFileData,false);
                        openContours(pFile,pFileData,true);     //Load StaticContours
-               }
+               }       
 
                if (version=="1.0.2")
                {
 //EED001
-                   readDimSpc(pFile,interactiveInterface);  // DimSpc interactive ON
+                       readDimSpc(pFile,interactiveInterface); // DimSpc interactive ON
                        openContours(pFile,pFileData,false);
-                   readDimSpc(pFile,false);  // DimSpc interactive OFF
-                       openContours(pFile,pFileData,true);     //Load StaticContours
+                       readDimSpc(pFile,false);                // DimSpc interactive OFF
+                       openContours(pFile,pFileData,true);     // Load StaticContours
+                       SetZForAllContours(-900);
                }
 
                //AD:02-06-09
@@ -1054,7 +1099,6 @@ void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool int
        }
        _theViewPanel->getSceneManager()->removeSceneContours();
        changeInstant();
-
 }
 
 
@@ -1229,7 +1273,7 @@ void wxContourMainFrame::readDimSpc(FILE *pFile, bool interactiveOption)
                //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 2
                if (imageDim[0]!=_tmpReadFileImageDim[0] || imageDim[1]!=_tmpReadFileImageDim[1] || imageSpac[0]!=_tmpReadFileImageSpac[0] || imageSpac[1]!=_tmpReadFileImageSpac[1])
                {
-                       wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(260,160));
+                       wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(460,360));
                        wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
                        wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL);
 
@@ -3260,3 +3304,106 @@ void wxContourMainFrame::SetFileLocation(std::string newFileLocation)
        std::cout<<"GETFILELOCATION:"<<_fileLocation<<std::endl;
 }
 //------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+void wxContourMainFrame::FlipSelectedContours(int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipSelectedContours  flipDirection=%d  \n",  flipDirection ); 
+       FlipLstOfContours( 
+                           (std::vector<std::string>)_theViewPanel->getSceneManager()->getSelectedObjects() , 
+                           flipDirection
+                         );    
+               
+}
+
+void wxContourMainFrame::FlipActualSliceContours(int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipActualSliceContours  flipDirection=%d  \n",  flipDirection );       
+       FlipLstOfContours( 
+                           (std::vector<std::string>)_theViewPanel->getSceneManager()->GetlstContoursNameActualSlice() , 
+                           flipDirection
+                         );    
+}
+
+void wxContourMainFrame::FlipAllContours(int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipAllContours  flipDirection=%d  \n",  flipDirection );
+       FlipLstOfContours( 
+                           kernelManager->GetLstNameThings() , 
+                           flipDirection
+                         );
+}
+
+void wxContourMainFrame::FlipLstOfContours(std::vector<std::string> lstNameThings, int flipDirection)
+{
+       int ext[6];
+       getImageData()->GetExtent(ext);         
+       int sizeX = ext[1]-ext[0];
+       int sizeY = ext[3]-ext[2];
+
+       
+       int i,sizeLstNameThings;
+       int ii,sizeLstPoints;
+       
+       sizeLstNameThings       = lstNameThings.size(); 
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+               printf("EED wxContourMainFrame::FlipAllContours contour=%d \n", i );
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               if (flipDirection==0)
+               {
+                       manualModel->Transform_Ax_Plus_B(-1,sizeX,1,0 );
+               } else {
+                       manualModel->Transform_Ax_Plus_B(1,0,-1,sizeY );
+               }
+       }// for i  list of Things
+
+       //-- Static Contours
+
+       lstNameThings           = kernelManager->GetLstNameThingsStatic();
+       sizeLstNameThings       = lstNameThings.size();
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               if (flipDirection==0)
+               {
+                       manualModel->Transform_Ax_Plus_B(-1,sizeX,1,0 );
+               } else {
+                       manualModel->Transform_Ax_Plus_B(1,0,-1,sizeY );
+               }
+       }// for i  list of static things        
+}
+
+void wxContourMainFrame::FlipContours(int typeContourFlip, int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipContours( %d , %d ) \n",typeContourFlip,  flipDirection );
+
+       saveState();
+       
+       if (typeContourFlip==0) // 
+       {
+               FlipSelectedContours(flipDirection);
+       }
+
+       if (typeContourFlip==1) // 
+       {
+               FlipActualSliceContours(flipDirection);
+       }
+       
+       if (typeContourFlip==2) // 
+       {
+               FlipAllContours(flipDirection);
+       }
+       RefreshInterface();
+}
+
+
+
+
+
index 8bf345a000e893907e526c8fe27dde5919612e2c..606221d4bf3a89657859e083174d6fa7118531a9 100644 (file)
@@ -258,7 +258,14 @@ class wxContourMainFrame : public wxPanel {
        //AD
        void onMirror();
 
-
+       //EED
+       void FlipContours(int typeContourFlip, int flipDirection);
+       void FlipSelectedContours(int flipDirection);
+       void FlipActualSliceContours(int flipDirection);
+       void FlipAllContours(int flipDirection);
+       void FlipLstOfContours(std::vector<std::string> lstNameThings, int flipDirection);
+
+               
 //====================================================================================================
 
        void showAxis(bool show);
@@ -414,6 +421,7 @@ private:
 
        void saveFileWithContours( std::string filename );
        void onLoadContours(std::string fileNameContourROI, bool interactiveInterface);
+       void SetZForAllContours(int pz);
 
        int                         inredo;
        int                         inundo;
index 4c85dd768c82fca4b3aa60ed25775003d817920d..8f3d2679927a32d194c7b84d2adbc7ea276de174 100644 (file)
@@ -84,6 +84,7 @@ MACRO(CREA_BUILD_DOXYGEN_DOC NAME INPUT DOC_RELATIVE_INSTALL_PATH PREDEFINED)
 #IF ( ${${PROJECT_NAME}_DOC} STREQUAL ON)
 IF ( ${PROJECT_NAME}_DOC STREQUAL ON)
   CREA_CPDIR ( ${CMAKE_CURRENT_SOURCE_DIR}/bouml/GeneralArchitecture/GeneralArchitecture_HTML/ ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT}/GeneralArchitecture_HTML/ )
+  CREA_CPDIR ( ${CMAKE_CURRENT_SOURCE_DIR}/bouml/buttons/ ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT}/How_to_add_buttons_HTML/ )
 
   ADD_CUSTOM_TARGET(doxygen_${NAME} ALL
     DEPENDS  ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT}/index.html
index aebfa7b009b1eb71e259e2e61afaf9c91ee62751..459e2dfa80fe7d8ab75a1e6838771aa470bfefc4 100644 (file)
@@ -158,6 +158,17 @@ serve as building blocks for the rest of&nbsp;<strong><a
 </ul>
 <ul>
 </ul>
+
+<h4><big><big>Tutorials</big></big></h4><big><span class="text"><big><strong><a class="el" href="../GeneralArchitecture_HTML/index.html">creaContours</a></strong>
+is continously evolving. Its development it's not yet finished and tha
+application sees new features being added to it on a regular basis. The
+tutorials give a rough idea of how to contribute to the development of
+certain aspects of the application.</big><br /></span></big><ul style="font-family: Helvetica,Arial,sans-serif;"><li><a href="../How_to_add_buttons_HTML/new_button.html">How to add a new button</a>. Quick step-by-step guide on how to add&nbsp;to the application. a new button&nbsp;and its associated functionality.</li></ul>
+
+
+
+
+
 <hr />
 <h2 style="text-align: left;" class="style4">Modules
 Description</h2>
@@ -193,4 +204,4 @@ possible.</p>
 \endhtmlonly
 
          
- */
\ No newline at end of file
+ */