Fix Bug: Saved settings should be locale independent - ID: 3111032
[synfig.git] / synfig-studio / src / gui / states / state_circle.cpp
index af83784..ff9e2ca 100644 (file)
@@ -239,101 +239,119 @@ StateCircle::~StateCircle()
 void
 StateCircle_Context::load_settings()
 {
-       String value;
+       try
+       {
+               SETTINGS_LOCALE_SAFE_AND_BACKUP
+               String value;
 
-       //parse the arguments yargh!
-       if(settings.get_value("circle.id",value))
-               set_id(value);
-       else
-               set_id("Circle");
+               //parse the arguments yargh!
+               if(settings.get_value("circle.id",value))
+                       set_id(value);
+               else
+                       set_id("Circle");
 
-       if(settings.get_value("circle.fallofftype",value) && value != "")
-               set_falloff(atoi(value.c_str()));
-       else
-               set_falloff(2);
+               if(settings.get_value("circle.fallofftype",value) && value != "")
+                       set_falloff(atoi(value.c_str()));
+               else
+                       set_falloff(2);
 
-#ifdef BLEND_METHOD_IN_TOOL_OPTIONS
-       if(settings.get_value("circle.blend",value) && value != "")
-               set_blend(atoi(value.c_str()));
-       else
-               set_blend(0);//(int)Color::BLEND_COMPOSITE); //0 should be blend composites value
-#endif // BLEND_METHOD_IN_TOOL_OPTIONS
+       #ifdef BLEND_METHOD_IN_TOOL_OPTIONS
+               if(settings.get_value("circle.blend",value) && value != "")
+                       set_blend(atoi(value.c_str()));
+               else
+                       set_blend(0);//(int)Color::BLEND_COMPOSITE); //0 should be blend composites value
+       #endif  // BLEND_METHOD_IN_TOOL_OPTIONS
 
-       if(settings.get_value("circle.feather",value))
-               set_feather(atof(value.c_str()));
-       else
-               set_feather(0);
+               if(settings.get_value("circle.feather",value))
+                       set_feather(atof(value.c_str()));
+               else
+                       set_feather(0);
 
-       if(settings.get_value("circle.number_of_bline_points",value))
-               set_number_of_bline_points(atof(value.c_str()));
-       else
-               set_number_of_bline_points(4);
+               if(settings.get_value("circle.number_of_bline_points",value))
+                       set_number_of_bline_points(atof(value.c_str()));
+               else
+                       set_number_of_bline_points(4);
 
-       if(settings.get_value("circle.bline_point_angle_offset",value))
-               set_bline_point_angle_offset(atof(value.c_str()));
-       else
-               set_bline_point_angle_offset(0);
+               if(settings.get_value("circle.bline_point_angle_offset",value))
+                       set_bline_point_angle_offset(atof(value.c_str()));
+               else
+                       set_bline_point_angle_offset(0);
 
-       if(settings.get_value("circle.invert",value) && value != "0")
-               set_invert(true);
-       else
-               set_invert(false);
+               if(settings.get_value("circle.invert",value) && value != "0")
+                       set_invert(true);
+               else
+                       set_invert(false);
 
-       if(settings.get_value("circle.layer_circle",value) && value=="0")
-               set_layer_circle_flag(false);
-       else
-               set_layer_circle_flag(true);
+               if(settings.get_value("circle.layer_circle",value) && value=="0")
+                       set_layer_circle_flag(false);
+               else
+                       set_layer_circle_flag(true);
 
-       if(settings.get_value("circle.layer_region",value) && value=="1")
-               set_layer_region_flag(true);
-       else
-               set_layer_region_flag(false);
+               if(settings.get_value("circle.layer_region",value) && value=="1")
+                       set_layer_region_flag(true);
+               else
+                       set_layer_region_flag(false);
 
-       if(settings.get_value("circle.layer_outline",value) && value=="1")
-               set_layer_outline_flag(true);
-       else
-               set_layer_outline_flag(false);
+               if(settings.get_value("circle.layer_outline",value) && value=="1")
+                       set_layer_outline_flag(true);
+               else
+                       set_layer_outline_flag(false);
 
-       if(settings.get_value("circle.layer_curve_gradient",value) && value=="1")
-               set_layer_curve_gradient_flag(true);
-       else
-               set_layer_curve_gradient_flag(false);
+               if(settings.get_value("circle.layer_curve_gradient",value) && value=="1")
+                       set_layer_curve_gradient_flag(true);
+               else
+                       set_layer_curve_gradient_flag(false);
 
-       if(settings.get_value("circle.layer_plant",value) && value=="1")
-               set_layer_plant_flag(true);
-       else
-               set_layer_plant_flag(false);
+               if(settings.get_value("circle.layer_plant",value) && value=="1")
+                       set_layer_plant_flag(true);
+               else
+                       set_layer_plant_flag(false);
 
-       if(settings.get_value("circle.layer_link_origins",value) && value=="0")
-               set_layer_link_origins_flag(false);
-       else
-               set_layer_link_origins_flag(true);
+               if(settings.get_value("circle.layer_link_origins",value) && value=="0")
+                       set_layer_link_origins_flag(false);
+               else
+                       set_layer_link_origins_flag(true);
 
-       if(settings.get_value("circle.layer_origins_at_center",value) && value=="0")
-               set_layer_origins_at_center_flag(false);
-       else
-               set_layer_origins_at_center_flag(true);
+               if(settings.get_value("circle.layer_origins_at_center",value) && value=="0")
+                       set_layer_origins_at_center_flag(false);
+               else
+                       set_layer_origins_at_center_flag(true);
+               SETTINGS_LOCALE_RESTORE
+       }
+       catch(...)
+       {
+               synfig::warning("State Circle: Caught exception when attempting to load settings.");
+       }
 }
 
 void
 StateCircle_Context::save_settings()
 {
-       settings.set_value("circle.id",get_id());
-       settings.set_value("circle.fallofftype",strprintf("%d",get_falloff()));
-#ifdef BLEND_METHOD_IN_TOOL_OPTIONS
-       settings.set_value("circle.blend",strprintf("%d",get_blend()));
-#endif // BLEND_METHOD_IN_TOOL_OPTIONS
-       settings.set_value("circle.feather",strprintf("%f",(float)get_feather()));
-       settings.set_value("circle.number_of_bline_points",strprintf("%d",(int)(get_number_of_bline_points() + 0.5)));
-       settings.set_value("circle.bline_point_angle_offset",strprintf("%f",(float)get_bline_point_angle_offset()));
-       settings.set_value("circle.invert",get_invert()?"1":"0");
-       settings.set_value("circle.layer_circle",get_layer_circle_flag()?"1":"0");
-       settings.set_value("circle.layer_outline",get_layer_outline_flag()?"1":"0");
-       settings.set_value("circle.layer_region",get_layer_region_flag()?"1":"0");
-       settings.set_value("circle.layer_curve_gradient",get_layer_curve_gradient_flag()?"1":"0");
-       settings.set_value("circle.layer_plant",get_layer_plant_flag()?"1":"0");
-       settings.set_value("circle.layer_link_origins",get_layer_link_origins_flag()?"1":"0");
-       settings.set_value("circle.layer_origins_at_center",get_layer_origins_at_center_flag()?"1":"0");
+       try
+       {
+               SETTINGS_LOCALE_SAFE_AND_BACKUP
+               settings.set_value("circle.id",get_id());
+               settings.set_value("circle.fallofftype",strprintf("%d",get_falloff()));
+       #ifdef BLEND_METHOD_IN_TOOL_OPTIONS
+               settings.set_value("circle.blend",strprintf("%d",get_blend()));
+       #endif  // BLEND_METHOD_IN_TOOL_OPTIONS
+               settings.set_value("circle.feather",strprintf("%f",(float)get_feather()));
+               settings.set_value("circle.number_of_bline_points",strprintf("%d",(int)(get_number_of_bline_points() + 0.5)));
+               settings.set_value("circle.bline_point_angle_offset",strprintf("%f",(float)get_bline_point_angle_offset()));
+               settings.set_value("circle.invert",get_invert()?"1":"0");
+               settings.set_value("circle.layer_circle",get_layer_circle_flag()?"1":"0");
+               settings.set_value("circle.layer_outline",get_layer_outline_flag()?"1":"0");
+               settings.set_value("circle.layer_region",get_layer_region_flag()?"1":"0");
+               settings.set_value("circle.layer_curve_gradient",get_layer_curve_gradient_flag()?"1":"0");
+               settings.set_value("circle.layer_plant",get_layer_plant_flag()?"1":"0");
+               settings.set_value("circle.layer_link_origins",get_layer_link_origins_flag()?"1":"0");
+               settings.set_value("circle.layer_origins_at_center",get_layer_origins_at_center_flag()?"1":"0");
+               SETTINGS_LOCALE_RESTORE
+       }
+       catch(...)
+       {
+               synfig::warning("State Circle: Caught exception when attempting to save settings.");
+       }
 }
 
 void