]> Creatis software - creaImageIO.git/blob - appli/TestWxGimmickReaderDialog/main.cxx
new Output format and structure for Gimmick. Based on creaImageIO Output document...
[creaImageIO.git] / appli / TestWxGimmickReaderDialog / main.cxx
1 #include <creaImageIOSystem.h>
2 #include <creaWx.h>
3 #include <creaImageIOWxGimmickReaderDialog.h>
4 #include "vtkMetaImageWriter.h"
5 #include "vtkMetaImageReader.h"
6 #include <creaVtkBasicSlicer.h>
7
8
9
10 //#pragma comment(lib, "creaImageIO.lib")
11 //#pragma comment(lib, "DelayImp.lib")
12 //
13 //
14 //// Tell the linker that my DLL should be delay loaded
15 ////#pragma comment(linker, "/DelayLoad:creaImageIO.Dll")
16 //\ f
17 //// Tell the linker that I want to be able to unload my DLL
18 //#pragma comment(linker, "/Delay:unload")
19 //
20
21 class myApp : public wxApp
22 {
23 public:
24   bool OnInit( );
25   int  OnExit() { return true; }
26 };
27
28 IMPLEMENT_APP(myApp);
29
30 CREA_WXMAIN_WITH_CONSOLE
31
32 bool myApp::OnInit( )
33 {
34   wxApp::OnInit();
35 #ifdef __WXGTK__
36   //See http://www.wxwindows.org/faqgtk.htm#locale
37   setlocale(LC_NUMERIC, "C");
38 #endif
39    wxInitAllImageHandlers();
40
41    creaImageIO::SetGimmickMessageLevel(5);
42    creaImageIO::SetGimmickDebugMessageLevel(0);
43
44    int min_dim = GIMMICK_2D_IMAGE_SELECTION;
45    int max_dim = GIMMICK_3D_IMAGE_SELECTION;
46
47 //EED
48 //   int output_dim = NATIVE;
49    int output_dim = _3D;
50
51    int threads = 1;
52  
53    creaImageIO::WxGimmickReaderDialog w(
54                     0,
55                    -1, 
56                                    "localdatabase_Descriptor.dscp",
57                                    "Local Database",
58                    _T("Select image(s)        - Gimmick! (c) CREATIS-LRMN 2008"),
59                    wxDefaultPosition,
60                    wxSize(810,750),
61                    min_dim,
62                    max_dim,
63                    output_dim,
64        
65                                    threads);
66   /* clock_t endwait;
67                 endwait = clock () +  CLOCKS_PER_SEC ;
68                 while (clock() < endwait ) {}*/
69    w.ShowModal();
70
71    if (w.GetReturnCode() == wxID_OK)
72      {
73        std::cout << "$$$$ main : user clicked 'OK' $$$$"<<std::endl;
74        std::cout << "$$$$ selected files : "<<std::endl;
75        //Puts filenames
76        std::vector<std::string> s;
77        w.GetSelectedFiles(s);
78        std::vector<std::string>::iterator i;
79        for (i=s.begin();i!=s.end();++i) 
80          {
81            std::cout << *i << std::endl;
82          }
83        std::cout << "$$$$ "<<std::endl;
84
85        //Puts images
86        std::vector<vtkImageData*> images;
87            w.GetSelectedImages(images,3);
88
89         
90
91
92
93            std::vector<creaImageIO::OutStrGimmick> out;
94                 std::vector<std::string> attr;
95                 //attr.push_back("ALL");
96                 attr.push_back("D0008_1070");
97                 w.getSelected(out, attr,true,"");
98
99
100
101 // images[1]->UpdateInformation();
102         /*   vtkMetaImageReader *r= vtkMetaImageReader::New();
103                    r->SetFileName("c:\\toto.mhd");
104            double zz[3];
105                  images[0]->GetSpacing(zz);
106
107            vtkMetaImageWriter* ww = vtkMetaImageWriter::New(); 
108                  ww->SetFileName("c:\\toto2.mhd"); 
109                  ww->SetInput(images[0]);
110                  ww->GetInput()->ShallowCopy(images[0]);
111                  ww->UpdateInformation();
112                  ww->GetInput()->GetSpacing(zz);
113                  
114
115 //>GetImageDataInput(0)->GetSpacing(zz);
116          images[0]->Delete();
117         
118     ww->Write(); 
119    ww->Delete();
120 */
121
122
123
124        //w.GetSelectedImages(images,output_dim);
125        std::cout<<images.size()<<std::endl;
126
127        crea::VtkBasicSlicer(images.front());
128        images.front()->Delete();
129        w.OnExit();
130
131      }
132    else if (w.GetReturnCode() == wxID_CANCEL)
133      {
134                 
135        w.OnExit();
136        std::cout << "$$$$ main : user clicked 'CANCEL' $$$$"<<std::endl;
137      }
138    else 
139      {
140        w.OnExit();
141        std::cout << "$$$$ main : dialog ended without return code ! $$$$"
142                  <<std::endl;    
143      }
144
145
146    //   std::cout << "$$$$ main : deleting dialog"<<std::endl;
147    //   delete w;
148    std::cout << "$$$$$$$$$$$$$$$$$$$$ main ended "<<std::endl;
149    return false;
150 }