User Tools

Site Tools


tutorials:first-steps:save-load

Save/load static variables

This tutorial cover how to save/load static parameters in your projects.

Create project

In a newRGG project, add a new file called “paramfile”. (in the file explorer click “new>file>” enter paramfile - no extensions).

In the Model.rgg file copy:

import java.io.Writer;
import java.io.Reader;
 
 
import de.grogra.pf.ui.registry.RunAfterSave;
import de.grogra.pf.ui.registry.RunAfterLoad;
import de.grogra.pf.registry.RegistryContext;
 
 
global float myFloat = 1f;
public static int myInt = 3;
public static String myString = "initValue";
 
public class LoadParam implements RunAfterLoad{
	public void load(RegistryContext ctx){
		Object f = getFileFromProject("paramfile");
		Reader r = ctx.getRegistry().getFileSystem().getReader(f);
		char[] buf = new char[2048];
		r.read(buf);
		String alltext = new String (buf);
		String[] lines = alltext.split("\n");
		for (String line : lines){
			String[] param = line.split("=");
			if ("myInt".contentEquals(param[0])) {
				myInt = Integer.valueOf(param[1]);
			} else 
			if ("myString".contentEquals(param[0])){
				myString = param[1];
			}
		}
	}
}
 
public class SaveParam implements RunAfterSave{
	public void save(RegistryContext ctx){
		Object f = getFileFromProject("paramfile");
		Writer w = ctx.getRegistry().getFileSystem().getWriter(f, false);
		w.append("myInt="+myInt+"\n");
		w.append("myString="+myString+"\n");
		w.close();
	}
}
 
protected void init ()
[
	Axiom ==> ;
]
public void r(){
	myInt ++;
	myString = "anotherValue";
        myFloat++;
}
 
public void p ()
{
println(myInt);
println(myString);
println(myFloat);
}

Note:

  • The variable myFloat is not included in the save and load methods. As a global it is automatically included in GroIMP serialization.
  • Any other serialization methods can be used. Here we “simply” write varName=varValue as string in a text file. But, any other approach would work (e.g. write in csv, …). The file do not have to be within the project (as paramfile is).
  • To reset the three variables to their initial values, the project needs to be either recompiled or reset.

You can run the r() command to change the value of the variables. Save the project, close it, re open it, and run p() to print their current value.

tutorials/first-steps/save-load.txt · Last modified: 2025/03/25 12:00 by gaetan