Browse Source

use cdb diff system if set

Nicolas Cannasse 5 years ago
parent
commit
cf695fd79c
1 changed files with 33 additions and 16 deletions
  1. 33 16
      hide/Ide.hx

+ 33 - 16
hide/Ide.hx

@@ -24,6 +24,7 @@ class Ide {
 
 	var databaseFile : String;
 	var pakFile : hxd.fmt.pak.FileSystem;
+	var originDataBase : cdb.Database;
 
 	var config : {
 		global : Config,
@@ -632,20 +633,6 @@ class Ide {
 		js.Browser.location.reload();
 	}
 
-	function loadDatabase( ?checkExists ) {
-		var exists = fileExists(databaseFile);
-		if( checkExists && !exists )
-			return; // cancel load
-		database = new cdb.Database();
-		if( exists ) {
-			try {
-				database.load(getFile(databaseFile).toString());
-			} catch( e : Dynamic ) {
-				error(e);
-			}
-		}
-	}
-
 	public function fileExists( path : String ) {
 		if( sys.FileSystem.exists(getPath(path)) ) return true;
 		if( pakFile != null && pakFile.exists(path) ) return true;
@@ -663,9 +650,39 @@ class Ide {
 		}
 	}
 
+
+	function loadDatabase( ?checkExists ) {
+		var exists = fileExists(databaseFile);
+		if( checkExists && !exists )
+			return; // cancel load
+		database = new cdb.Database();
+		if( !exists ) return;
+		try {
+			database.load(getFile(databaseFile).toString());
+		} catch( e : Dynamic ) {
+			error(e);
+			return;
+		}
+		var diff = config.project.get("cdb.diffFile");
+		if( diff != null ) {
+			originDataBase = new cdb.Database();
+			originDataBase.load(getFile(databaseFile).toString());
+			if( fileExists(diff) ) {
+				var d = new cdb.DiffFile();
+				d.apply(database,parseJSON(getFile(diff).toString()),config.project.get("cdb.view"));
+			}
+		}
+	}
+
 	public function saveDatabase() {
-		fileWatcher.ignoreNextChange(databaseFile);
-		sys.io.File.saveContent(getPath(databaseFile), database.save());
+		var diff = config.project.get("cdb.diffFile");
+		if( diff != null ) {
+			fileWatcher.ignoreNextChange(diff);
+			sys.io.File.saveContent(getPath(diff), toJSON(new cdb.DiffFile().make(originDataBase,database)));
+		} else {
+			fileWatcher.ignoreNextChange(databaseFile);
+			sys.io.File.saveContent(getPath(databaseFile), database.save());
+		}
 	}
 
 	public function createDBSheet( ?index : Int ) {