f26510a
diff -r 7510fdcc8b8a -r 185ccbce5421 src/3Depict.cpp
f26510a
--- src/3Depict.cpp	Mon Aug 25 14:41:48 2014 +0100
f26510a
+++ src/3Depict.cpp	Mon Aug 25 14:42:29 2014 +0100
f26510a
@@ -39,6 +39,12 @@
f26510a
 
f26510a
 class threeDepictApp: public wxApp {
f26510a
 private:
f26510a
+#ifndef DEBUG
f26510a
+	//instance of this class suppresses internal wx error dialogs.
f26510a
+	// these are a nuisance in release code, as recovered errors often annoy the user
f26510a
+	wxLogNull nullifyLogs;
f26510a
+#endif
f26510a
+
f26510a
 	MainWindowFrame* MainFrame ;
f26510a
 	wxArrayString commandLineFiles;
f26510a
 	wxLocale* usrLocale;
f26510a
@@ -62,9 +68,6 @@
f26510a
     void MacReopenFile(const wxString & fileName);
f26510a
 #endif
f26510a
 
f26510a
-#ifdef DEBUG
f26510a
-    void setEventloggerFile(const char *file);
f26510a
-#endif
f26510a
 };
f26510a
 
f26510a
 //Check version is in place because wxT is deprecated for wx 2.9
f26510a
diff -r 185ccbce5421 -r c8ff86119e58 src/backend/filters/clusterAnalysis.cpp
f26510a
--- src/backend/filters/clusterAnalysis.cpp	Mon Aug 25 14:42:29 2014 +0100
f26510a
+++ src/backend/filters/clusterAnalysis.cpp	Mon Aug 25 14:43:10 2014 +0100
f26510a
@@ -264,7 +264,7 @@
f26510a
 
f26510a
 ClusterAnalysisFilter::ClusterAnalysisFilter() : algorithm(CLUSTER_LINK_ERODE),
f26510a
 	enableCoreClassify(false), coreDist(0.0f), coreKNN(1), linkDist(0.5f), 
f26510a
-	enableBulkLink(false), bulkLink(1), enableErosion(false), dErosion(0.25),
f26510a
+	enableBulkLink(false), bulkLink(0.25), enableErosion(false), dErosion(0.25),
f26510a
 	wantClusterID(false), wantCropSize(false), nMin(0),nMax(std::numeric_limits<size_t>::max()),
f26510a
 	wantClusterSizeDist(false),logClusterSize(false),
f26510a
 	wantClusterComposition(true),normaliseComposition(true),
f26510a
diff -r c8ff86119e58 -r 55ec5e056846 src/gui/mainFrame.cpp
f26510a
--- src/gui/mainFrame.cpp	Mon Aug 25 14:43:10 2014 +0100
f26510a
+++ src/gui/mainFrame.cpp	Mon Aug 25 14:51:53 2014 +0100
f26510a
@@ -464,7 +464,7 @@
f26510a
     fileExport->Append(ID_FILE_EXPORT_IMAGE, TRANS("&Image...\tCtrl+I"), TRANS("Export Current 3D View"), wxITEM_NORMAL);
f26510a
     fileExport->Append(ID_FILE_EXPORT_IONS, TRANS("Ion&s...\tCtrl+N"), TRANS("Export Ion Data"), wxITEM_NORMAL);
f26510a
     fileExport->Append(ID_FILE_EXPORT_RANGE, TRANS("Ran&ges...\tCtrl+G"), TRANS("Export Range Data"), wxITEM_NORMAL);
f26510a
-    fileExport->Append(ID_FILE_EXPORT_FILTER_ANIMATION, TRANS("&Animate Filters...\tCtrl+A"), TRANS("Export Animated Filter"), wxITEM_NORMAL);
f26510a
+    fileExport->Append(ID_FILE_EXPORT_FILTER_ANIMATION, TRANS("&Animate Filters...\tCtrl+T"), TRANS("Export Animated Filter"), wxITEM_NORMAL);
f26510a
     fileExport->Append(ID_FILE_EXPORT_ANIMATION, TRANS("Ani&mate Camera...\tCtrl+M"), TRANS("Export Animated Camera"), wxITEM_NORMAL);
f26510a
     fileExport->Append(ID_FILE_EXPORT_PACKAGE, TRANS("Pac&kage...\tCtrl+K"), TRANS("Export analysis package"), wxITEM_NORMAL);
f26510a
 
f26510a
diff -r 9d545342c3ad -r 3c853d1f5af7 src/backend/filters/externalProgram.cpp
f26510a
--- src/backend/filters/externalProgram.cpp	Mon Aug 25 14:52:42 2014 +0100
f26510a
+++ src/backend/filters/externalProgram.cpp	Mon Aug 25 14:53:04 2014 +0100
f26510a
@@ -551,7 +551,7 @@
f26510a
 	
f26510a
 	p.name=TRANS("Work Dir");
f26510a
 	p.data= workingDir;
f26510a
-	p.type=PROPERTY_TYPE_STRING;
f26510a
+	p.type=PROPERTY_TYPE_DIR;
f26510a
 	p.helpText=TRANS("Directory to run the command in");
f26510a
 	p.key=EXTERNALPROGRAM_KEY_WORKDIR;		
f26510a
 	propertyList.addProperty(p,curGroup);
f26510a
diff -r 9d545342c3ad -r 3c853d1f5af7 src/common/constants.h
f26510a
--- src/common/constants.h	Mon Aug 25 14:52:42 2014 +0100
f26510a
+++ src/common/constants.h	Mon Aug 25 14:53:04 2014 +0100
f26510a
@@ -57,6 +57,7 @@
f26510a
 	PROPERTY_TYPE_POINT3D,
f26510a
 	PROPERTY_TYPE_CHOICE,
f26510a
 	PROPERTY_TYPE_FILE,
f26510a
+	PROPERTY_TYPE_DIR,
f26510a
 	PROPERTY_TYPE_ENUM_END //Not a prop, just end of enum
f26510a
 };
f26510a
 
f26510a
diff -r 9d545342c3ad -r 3c853d1f5af7 src/wx/propertyGridUpdater.cpp
f26510a
--- src/wx/propertyGridUpdater.cpp	Mon Aug 25 14:52:42 2014 +0100
f26510a
+++ src/wx/propertyGridUpdater.cpp	Mon Aug 25 14:53:04 2014 +0100
f26510a
@@ -61,7 +61,7 @@
f26510a
 		g->Append(new wxPropertyCategory(string("") + title,title));
f26510a
 		
f26510a
 		
f26510a
-		//Set the children of thies property
f26510a
+		//Set the children of this property
f26510a
 		for(size_t uj=0;uj
f26510a
 		{
f26510a
 			FilterProperty fp;
f26510a
@@ -83,6 +83,7 @@
f26510a
 							boolVal);
f26510a
 					break;
f26510a
 				};
f26510a
+				//TODO: we need a PROPERTY_TYPE_UINT
f26510a
 				case PROPERTY_TYPE_INTEGER:
f26510a
 				{
f26510a
 					long long iV;
f26510a
@@ -145,16 +146,24 @@
f26510a
 					
f26510a
 					break;
f26510a
 				}
f26510a
+				case PROPERTY_TYPE_DIR:
f26510a
+				{
f26510a
+					pgp = new wxDirProperty(fp.name,keyStr,fp.data);
f26510a
+					break;
f26510a
+				}
f26510a
 			}
f26510a
 
f26510a
+			//Set the tooltip
f26510a
 			pgp->SetHelpString(fp.helpText);
f26510a
 
f26510a
+			//add the property to the grid
f26510a
 			g->Append(pgp);
f26510a
 
f26510a
 			switch(fp.type)
f26510a
 			{
f26510a
 				case PROPERTY_TYPE_BOOL:
f26510a
 				{
f26510a
+					//if a bool property, use a checkbox to edit
f26510a
 					g->SetPropertyEditor(pgp,wxPGEditor_CheckBox);
f26510a
 					break;
f26510a
 				}
f26510a
diff -r 7372047ee6f9 src/common/basics.cpp
f26510a
--- src/common/basics.cpp	Sun Aug 03 16:58:06 2014 -0400
f26510a
+++ src/common/basics.cpp	Sun Aug 03 17:01:04 2014 -0400
f26510a
@@ -1471,6 +1471,21 @@
f26510a
 	return 0;
f26510a
 }
f26510a
 
f26510a
+bool isNotDirectory(const char *filename)
f26510a
+{
f26510a
+	struct stat statbuf;
f26510a
+
f26510a
+	if(stat(filename,&statbuf) == -1)
f26510a
+		return false;
f26510a
+
f26510a
+	return (statbuf.st_mode !=S_IFDIR);
f26510a
+}
f26510a
+
f26510a
+bool rmFile(const std::string &filename)
f26510a
+{
f26510a
+	return remove(filename.c_str()) == 0;
f26510a
+}
f26510a
+
f26510a
 #ifdef DEBUG
f26510a
 bool isValidXML(const char *filename)
f26510a
 {
f26510a
@@ -1503,27 +1518,6 @@
f26510a
 	return true;
f26510a
 }
f26510a
 
f26510a
-#if !defined(__WIN32__) && !defined(__WIN64)
f26510a
 	
f26510a
-bool isNotDirectory(const char *filename)
f26510a
-{
f26510a
-	struct stat statbuf;
f26510a
-
f26510a
-	if(stat(filename,&statbuf) == -1)
f26510a
-		return false;
f26510a
-
f26510a
-	return (statbuf.st_mode !=S_IFDIR);
f26510a
-}
f26510a
-
f26510a
-bool rmFile(const std::string &filename)
f26510a
-{
f26510a
-	return remove(filename.c_str()) == 0;
f26510a
-}
f26510a
-#elif defined(__WIN32) || defined(__WIN64)
f26510a
-bool rmFile(const std::string &filename)
f26510a
-{ 
f26510a
-	return DeleteFile((const wchar_t*)filename.c_str()) == 0;
f26510a
-}
f26510a
-#endif
f26510a
 
f26510a
 #endif