//#include "interfMainPanel.h"
+#if defined(MACOSX) // assume this is OSX
+# include <sys/param.h>
+# include <mach-o/dyld.h> // _NSGetExecutablePath : must add -framework CoreFoundation to link line
+# include <string.h>
+# ifndef PATH_MAX
+# define PATH_MAX MAXPATHLEN
+# endif
+#endif // MACOSX
+
+#ifndef PATH_MAX // If not defined yet : do it
+# define PATH_MAX 2048
+#endif
+
+
+
+
wxContourMainFrame* wxTheApplication::frame = 0;
//----------------------------------------------------------------------------------------------------------------
// This macro implements the entry point (main function) for the application
//----------------------------------------------------------------------------------------------------------------
+
+
+/*
//EED
// http://lists.wxwidgets.org/archive/wx-dev/msg30449.html
-wxString getExecutablePath()
+wxString GetExecutablePath()
{
char buf[512];
char* slash;
return wxString(buf, wxConvUTF8 );
}
+*/
+
+
+
+
+//=========================================================================
+// From http://www.fltk.org/newsgroups.php?gfltk.general+v:22083
+//
+int get_app_path (char *pname, size_t pathsize)
+{
+#ifdef LINUX
+ /* Oddly, the readlink(2) man page says no NULL is appended. */
+ /* So you have to do it yourself, based on the return value: */
+ pathsize --; /* Preserve a space to add the trailing NULL */
+ long result = readlink("/proc/self/exe", pname, pathsize);
+ if (result > 0)
+ {
+ pname[result] = 0; /* add the #@!%ing NULL */
+
+ if ((access(pname, 0) == 0))
+ return 0; /* file exists, return OK */
+ /*else name doesn't seem to exist, return FAIL (falls
+ through) */
+ }
+#endif /* LINUX */
+
+#ifdef WIN32
+ long result = GetModuleFileName(NULL, pname, pathsize);
+ if (result > 0)
+ {
+ /* fix up the dir slashes... */
+ int len = strlen(pname);
+ int idx;
+ for (idx = 0; idx < len; idx++)
+ {
+ if (pname[idx] == '\\') pname[idx] = '/';
+ }
+
+ for (idx = len-1; idx >=0 ; idx--)
+ {
+ if (pname[idx] == '/')
+ {
+ pname[idx+1] = '\0';
+ idx = -1;
+ }
+ }
+
+ if ((access(pname, 0) == 0))
+ return 0; /* file exists, return OK */
+ /*else name doesn't seem to exist, return FAIL (falls
+ through) */
+ }
+#endif /* WIN32 */
+
+#ifdef SOLARIS
+ char *p = getexecname();
+ if (p)
+ {
+ /* According to the Sun manpages, getexecname will
+ "normally" return an */
+ /* absolute path - BUT might not... AND that IF it is not,
+ pre-pending */
+ /* getcwd() will "usually" be the correct thing... Urgh!
+ */
+
+ /* check pathname is absolute (begins with a / ???) */
+ if (p[0] == '/') /* assume this means we have an
+ absolute path */
+ {
+ strncpy(pname, p, pathsize);
+ if ((access(pname, 0) == 0))
+ return 0; /* file exists, return OK */
+ }
+ else /* if not, prepend getcwd() then check if file
+ exists */
+ {
+ getcwd(pname, pathsize);
+ long result = strlen(pname);
+ strncat(pname, "/", (pathsize - result));
+ result ++;
+ strncat(pname, p, (pathsize - result));
+
+ if ((access(pname, 0) == 0))
+ return 0; /* file exists, return OK */
+ /*else name doesn't seem to exist, return FAIL
+ (falls through) */
+ }
+ }
+#endif /* SOLARIS */
+
+#ifdef MACOSX /* assume this is OSX */
+ /*
+ from http://www.hmug.org/man/3/NSModule.html
+
+ extern int _NSGetExecutablePath(char *buf, unsigned long
+ *bufsize);
+
+ _NSGetExecutablePath copies the path of the executable
+ into the buffer and returns 0 if the path was successfully
+ copied in the provided buffer. If the buffer is not large
+ enough, -1 is returned and the expected buffer size is
+ copied in *bufsize. Note that _NSGetExecutablePath will
+ return "a path" to the executable not a "real path" to the
+ executable. That is the path may be a symbolic link and
+ not the real file. And with deep directories the total
+ bufsize needed could be more than MAXPATHLEN.
+ */
+
+ int status = -1;
+ char *given_path = (char*)malloc(MAXPATHLEN * 2);
+ if (!given_path) return status;
+
+ uint32_t npathsize = MAXPATHLEN * 2;
+ long result = _NSGetExecutablePath(given_path, &npathsize);
+ if (result == 0)
+ { /* OK, we got something - now try and resolve the real path...
+ */
+ if (realpath(given_path, pname) != NULL)
+ {
+ if ((access(pname, 0) == 0))
+ status = 0; /* file exists, return OK */
+ }
+ }
+ free (given_path);
+ return status;
+#endif /* MACOSX */
+
+ return -1; /* Path Lookup Failed */
+}
+//=========================================================================
+
+#if defined(_WIN32)
+#define CREACONTOUR_VALID_FILE_SEPARATOR_CHAR '\\'
+#else
+#define CREACONTOUR_VALID_FILE_SEPARATOR_CHAR '/'
+#endif
+
+
+//=========================================================================
+std::string GetExecutablePath()
+{
+ char name[PATH_MAX];
+ int err = get_app_path(name, PATH_MAX);
+ if (err)
+ {
+ printf("Could not determine current executable path ? ");
+ }
+
+ // remove the exe name
+ char *slash;
+ slash = strrchr(name, CREACONTOUR_VALID_FILE_SEPARATOR_CHAR);
+ if (slash)
+ {
+ *slash = 0;
+ }
+ return name;
+}
+//=========================================================================
+
+
+
image_type,
threads);
w.ShowModal();
-
+
+ std::string datadir( GetExecutablePath() ) ;
+
+#ifdef MACOSX /* assume this is OSX */
+ datadir=datadir+"/../../..";
+#endif // MACOSX
+
//vtkImageData* selectedimage=NULL;
std::vector<vtkImageData*> images;
if(w.GetReturnCode() == wxID_OK){
}else if (w.GetReturnCode() == wxID_CANCEL){
vtkMetaImageReader *reader = vtkMetaImageReader::New();
- wxString filename= getExecutablePath()+ wxString( _T("/data/hola.mhd") , wxConvUTF8 );
- reader->SetFileName( (const char*)(filename.mb_str()) );
+ std::string filename= datadir + "/data/hola.mhd";
+ reader->SetFileName( filename.c_str() );
reader->Update();
images.push_back(reader->GetOutput());
}else{
wxFrame* frame1 = new wxFrame(NULL, wxID_ANY, wxT("ROI Application - Evaluation version, 09 Feb 2009 "), wxPoint(400,50), wxSize(800, 600) );
//frame = new wxContourMainFrame( frame1, wxID_ANY, wxString(_T("")), wxPoint(50,50), wxSize(800, 600), images );
- frame = wxContourMainFrame::getInstance(frame1, wxID_ANY, wxString(_T("")), wxPoint(200,50), wxSize(800, 600), images, wxDEFAULT_FRAME_STYLE | wxSUNKEN_BORDER,(const char*)( getExecutablePath().mb_str() ) );
+ frame = wxContourMainFrame::getInstance(frame1, wxID_ANY, wxString(_T("")), wxPoint(200,50), wxSize(800, 600), images, wxDEFAULT_FRAME_STYLE | wxSUNKEN_BORDER,datadir );
frame1->CreateStatusBar();
frame1->Show(TRUE);
-
-
+ frame->RefreshInterface();
return TRUE;
}
#ifndef __interfMENUBARH__
#define __interfMENUBARH__
+#include <string>
#include <wx/wx.h>
#include <vector>
#include <wx/image.h>
this->SetAutoLayout( true );
//first row of the sizer, the buttons are being added
- for(int i = 0; i < vpath.size();i++){
+ for(int i = 0; i < (int)(vpath.size());i++){
std::string p = vpath[i];
wxBitmapButton* bitmapbutton = this->getButton(p, sizex, sizey);
flexsizer->Add(bitmapbutton,wxFIXED_MINSIZE);
}
//second row of the sizer, the names are being added
- for(int i = 0; i < vnom.size(); i++){
+ for(int i = 0; i < (int)(vnom.size()); i++){
//sizex = vectbutton[i]->GetSize().GetWidth();
std::string n = vnom[i];
vectbutton[i]->SetToolTip(wxString(n.c_str(),wxConvUTF8));
** and name of the button. See addButton(<vect>, <vect>)
**/
virtual void setVectorFunction(std::vector<wxObjectEventFunction> vectf){
- for(int i = 0; i < vectf.size();i++){
+ for(int i = 0; i < (int)(vectf.size());i++){
vectfunct.push_back(vectf[i]);
}
}
**/
virtual void connectEvents(wxEvtHandler* evtHandler){
- for(int i = 0; i < vectbutton.size();i++){
+ for(int i = 0; i < (int)(vectbutton.size());i++){
Connect(vectbutton[i]->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, vectfunct[i],NULL,evtHandler);
}
}
**/
virtual void connectEvents(){
- for(int i = 0; i < vectbutton.size();i++){
+ for(int i = 0; i < (int)(vectbutton.size());i++){
Connect(vectbutton[i]->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, vectfunct[i],NULL,vecthand[i]);
}
}
** @params const char name of the button see wxContour_ActionCommandsID.h to view the commands
**/
virtual void setButtonName(int i, const char c){
- if(i < vectbutton.size()){
+ if(i < (int)(vectbutton.size())){
std::string ac = c+"";
vectbutton[i]->SetName(wxString(ac.c_str(),wxConvUTF8));
}
virtual void setEventHandlers(std::vector<wxEvtHandler*> hand){
- for(int i = 0; i < hand.size();i++){
+ for(int i = 0; i < (int)(hand.size());i++){
vecthand.push_back(hand[i]);
}
}
inredo = 0;
inundo = 0;
- kernelManager = new KernelManagerContour(images,datadir+"/data/");
+#if defined(__GNUC__)
+ std::string str_home(getenv("HOME"));
+#elif defined(_WIN32)
+ std::string str_home(getenv("USERPROFILE"));
+#endif
+ std::string strCreaContourDataTmp = str_home + "/.creaContourDataTemp/";
+// std::string command("mkdir "+strCreaContourDataTmp);
+// system( command.c_str() );
+
+ kernelManager = new KernelManagerContour( images , datadir+"/data/" , strCreaContourDataTmp );
//kernelManager->setVectImages(images);
//kernelManager->initializeEnvironment();
double pnt1X = refPoint1->GetX();
double pnt1Y = refPoint1->GetY();
- double pnt1Z = refPoint1->GetZ();
+// double pnt1Z = refPoint1->GetZ();
double pnt2X = refPoint2->GetX();
double pnt2Y = refPoint2->GetY();
- double pnt2Z = refPoint2->GetZ();
+// double pnt2Z = refPoint2->GetZ();
double angle = (atan2(pnt2Y - pnt1Y, pnt2X - pnt1X) * 180 / 3.1415926535897932384626433832795)+90;
vtkTransform *t = vtkTransform::New();
{
id = polyDataResult->GetLines()->GetData()->GetValue(ii);
p = polyDataResult->GetPoint(id);
- double x=p[0];
- double y=p[1];
+// double x=p[0];
+// double y=p[1];
vecX.push_back( p[0] );
vecY.push_back( p[1] );
vecZ.push_back( -900 );
int iTitle,sizeTitle = (maxX / _numberOfVariablesStatistics);
for ( iTitle=0; iTitle<sizeTitle ; iTitle++)
{
- fprintf(pFile,"-- \t %d-Size \t SizeRange \t Min \t Max \t Ave \t StDv \t" , iTitle,tmpString.c_str() );
+ // fprintf(pFile,"-- \t %d-Size \t SizeRange \t Min \t Max \t Ave \t StDv \t" , iTitle,tmpString.c_str() );
+ fprintf(pFile,"-- \t %d-Size \t SizeRange \t Min \t Max \t Ave \t StDv \t" , iTitle );
}
fprintf(pFile,"\n" );
wxDialog* dialog = new wxDialog(this, -1, wxString(_T("Snake")));
wxPanel* panel = new wxPanel(dialog,-1);
- wxStaticText* sttext = new wxStaticText(panel, -1, wxString(_T("Panel para snake")));
+ // wxStaticText* sttext = new wxStaticText(panel, -1, wxString(_T("Panel para snake")));
+ new wxStaticText(panel, -1, wxString(_T("Panel para snake")));
dialog->ShowModal();
} // if