import re

filename_in = "gCreate.ini"
filename_out = "gCreate.ini"

in_stream = open(filename_in, mode="r", encoding="utf-8");
lines = in_stream.read().splitlines();
in_stream.close();
file_out_stream = open(filename_out, mode="w", encoding="utf-8");
brim_type = "both";
for line in lines:
# xy compensaiton
	line = re.sub(
		r"\[first_layer_temperature]",
		"{first_layer_temperature+extruder_temperature_offset}", 
		line
	);
	line = re.sub(
		r"{first_layer_temperature}",
		"{first_layer_temperature+extruder_temperature_offset}", 
		line
	);
	line = re.sub(
		r"^elefant_foot_compensation = ([0-9]\.[0-9]*)",
		"first_layer_size_compensation = -\g<1>", 
		line
	);
# bridges
	line = re.sub(
		r"^bridge_flow_ratio = ([0-1])\.([0-9][0-9])$",
		"bridge_flow_ratio = \g<1>\g<2>%",
		line
	);
	line = re.sub(
		r"^bridge_flow_ratio = ([0-1])\.([0-9])$",
		"bridge_flow_ratio = \g<1>\g<2>0%",
		line
	);
	line = re.sub(
		r"^bridge_flow_ratio = 1$",
		"bridge_flow_ratio = 100%",
		line
	);
	line = re.sub(
		r"^thick_bridges = 0$",
		"bridge_type = flow\nbridge_overlap_min = 60%\nbridge_overlap = 75%",
		line
	);
	line = re.sub(
		r"^thick_bridges = 1$",
		"bridge_type = nozzle\nbridge_overlap_min = 80%\nbridge_overlap = 95%",
		line
	);
# brim
	if line.startswith("brim_type ="):
		brim_type = re.sub(r"^brim_type = (.*)$", "\g<1>", line);
		continue;
	if line.startswith("brim_width ="):
		if brim_type == "inner_only":
			line = re.sub(r"^brim_width = (.*)$", "brim_width_interior = \g<1>", line);
		elif brim_type == "no_brim":
			line = "brim_width = 0\nbrim_width_interior = 0";
		elif brim_type == "outer_and_inner":
			line = re.sub(r"^brim_width = (.*)$", "brim_width = \g<1>;brim_width_interior = \g<1>", line);
#others
	line = re.sub(
		r"^first_layer_speed = ([0-9.]+)",
		"first_layer_speed = \g<1>\nfirst_layer_min_speed = 0\nfirst_layer_infill_speed = 100%",
		line
	);
	line = re.sub(
		r"^resolution = 0$",
		"resolution = 0.0125",
		line
	);
	line = re.sub(
		r"support_material_contact_distance = 0$",
		"support_material_contact_distance_type = none",
		line
	);
	line = re.sub(
		r"^(extrusion_width = .*)$",
		"\g<1>\nextrusion_spacing =\nperimeter_extrusion_spacing =\nexternal_perimeter_extrusion_spacing =\nfirst_layer_extrusion_spacing =\ninfill_extrusion_spacing =\nsolid_infill_extrusion_spacing =\ntop_infill_extrusion_spacing =",
		line
	);
	line = re.sub(
		r"^overhangs = 0$",
		"overhangs_width_speed = 0",
		line
	);
	line = re.sub(
		r"^seam_position = nearest$",
		"seam_position = cost\nseam_angle_cost=50%\nseam_travel_cost=50%",
		line
	);
	line = re.sub(
		r"^(thumbnails = 1)$",
		"\g<1>\nthumbnails_with_bed = 1",
		line
	);
	# first_layer_height in % of layer height vs % of nozzle diameter
	line = re.sub(
		r"^first_layer_height = ([0-9]+%)$",
		"# From prusa: first_layer_height should be \g<1> of the first_layer_height\nfirst_layer_height = 50%",
		line
	);
	# note: if min_fan_speed is already set, you may have to delete manually one.
	line = re.sub(
		r"^cooling = 0$",
		"# From prusa: cooling = 0, so set the min fan speed to 0. Delete if already set\nmin_fan_speed = 0",
		line
	);
	
	
	
	if(line != "overhangs = 1"):
		file_out_stream.write(line);
		file_out_stream.write("\n");
file_out_stream.close();








