Distance::System // (static) Distance::ident_system(const synfig::String& x) { synfig::String str; // Make it all upper case, and remove white space for(unsigned int i=0;i<x.size();i++)if(x[i]!=' ' && x[i]!='\t')str+=toupper(x[i]); // If it is plural, make it singular if(str[str.size()-1]=='S') str=synfig::String(str.begin(),str.end()-1); if(str.empty() || str=="U" || str=="UNIT") return SYSTEM_UNITS; if(str=="PX" || str=="PIXEL") return SYSTEM_PIXELS; if(str=="PT" || str=="POINT") return SYSTEM_POINTS; if(str=="IN" || str=="\"" || str=="INCHE" || str=="INCH") return SYSTEM_INCHES; if(str=="M" || str=="METER") return SYSTEM_METERS; if(str=="CM" || str=="CENTIMETER") return SYSTEM_CENTIMETERS; if(str=="MM" || str=="MILLIMETER") return SYSTEM_MILLIMETERS; synfig::warning("Distance::ident_system(): Unknown distance system \"%s\"",x.c_str()); return SYSTEM_UNITS; }
bool Settings::get_value(const synfig::String& key, synfig::String& value)const { // Search for the value in any children domains DomainMap::const_iterator iter; for(iter=domain_map.begin();iter!=domain_map.end();++iter) { // if we have a domain hit if(key.size()>iter->first.size() && String(key.begin(),key.begin()+iter->first.size())==iter->first) { synfig::String key_(key.begin()+iter->first.size()+1,key.end()); // If the domain has it, then we have got a hit if(iter->second->get_value(key_,value)) return true; } } // Search for the value in our simple map if(simple_value_map.count(key)) { value=simple_value_map.find(key)->second; return true; } // key not found return false; }
//! Compare two key names, putting pref.* keys first static bool compare_pref_first (synfig::String first, synfig::String second) { return first.substr(0, 5) == "pref." ? second.substr(0, 5) == "pref." ? first < second : true : second.substr(0, 5) == "pref." ? false : first < second; }
synfig::String Action::Base::get_layer_descriptions(const std::list<std::pair<synfig::Layer::Handle,int> > layers, synfig::String singular_prefix, synfig::String plural_prefix) { String ret; bool first = true; if (plural_prefix.empty()) plural_prefix = singular_prefix; if (layers.empty()) return plural_prefix; if (layers.size() == 1) ret = singular_prefix; else ret = plural_prefix; if (!ret.empty()) ret.push_back(' '); for(std::list<std::pair<synfig::Layer::Handle,int> >::const_iterator iter=layers.begin(); iter!=layers.end(); ++iter) { if (first) first = false; else ret += ", "; ret += strprintf("'%s'", iter->first->get_non_empty_description().c_str()); } return ret; }
bool Settings::load_from_file(const synfig::String& filename) { std::ifstream file(filename.c_str()); if(!file) return false; while(file) { std::string line; getline(file,line); if(!line.empty() && ((line[0]>='a' && line[0]<='z')||(line[0]>='A' && line[0]<='Z'))) { std::string::iterator equal(find(line.begin(),line.end(),'=')); if(equal==line.end()) continue; std::string key(line.begin(),equal); std::string value(equal+1,line.end()); //synfig::info("Settings::load_from_file(): Trying Key \"%s\" with a value of \"%s\".",key.c_str(),value.c_str()); try{ if(!set_value(key,value)) synfig::warning("Settings::load_from_file(): Key \"%s\" with a value of \"%s\" was rejected.",key.c_str(),value.c_str()); } catch(...) { synfig::error("Settings::load_from_file(): Attempt to set key \"%s\" with a value of \"%s\" has thrown an exception.",key.c_str(),value.c_str()); throw; } } } return true; }
bool Settings::save_to_file(const synfig::String& filename)const { synfig::String tmp_filename(filename+".TMP"); try { std::ofstream file(tmp_filename.c_str()); if(!file)return false; KeyList key_list(get_key_list()); // Save the keys { KeyList::const_iterator iter; for(iter=key_list.begin();iter!=key_list.end();++iter) { if(!file)return false; String ret = get_value(*iter); if (ret != String()) file<<*iter<<'='<<(ret == "none" ? "normal" : ret)<<endl; } } if(!file) return false; }catch(...) { return false; } #ifdef _WIN32 char old_file[80]="sif.XXXXXXXX"; mktemp(old_file); rename(filename.c_str(),old_file); if(rename(tmp_filename.c_str(),filename.c_str())!=0) { rename(old_file,tmp_filename.c_str()); return false; } remove(old_file); #else if(rename(tmp_filename.c_str(),filename.c_str())!=0) return false; #endif return true; }
bool Settings::set_value(const synfig::String& key,const synfig::String& value) { // Search for the key in any children domains DomainMap::iterator iter; for(iter=domain_map.begin();iter!=domain_map.end();++iter) { // if we have a domain hit if(key.size()>iter->first.size() && String(key.begin(),key.begin()+iter->first.size())==iter->first) { synfig::String key_(key.begin()+iter->first.size()+1,key.end()); return iter->second->set_value(key_,value); } } simple_value_map[key]=value; return true; }
bool IPC::process_command(const synfig::String& command_line) { if(command_line.empty()) return false; char cmd = command_line[0]; String args(command_line.begin()+1,command_line.end()); // erase leading spaces while (!args.empty() && args[0] == ' ') args.erase(args.begin()); // erase trailing newlines and spaces while (!args.empty() && (args[args.size()-1] == '\n' || args[args.size()-1] == ' ')) args.erase(args.end()-1); switch(toupper(cmd)) { case 'F': // Focus/Foreground App::signal_present_all()(); break; case 'N': // New file App::signal_present_all()(); App::new_instance(); break; case 'O': // Open <arg> App::signal_present_all()(); App::open(args); break; case 'X': // Quit case 'Q': // Quit App::quit(); break; default: synfig::warning("Received unknown command '%c' with arg '%s'",cmd,args.c_str()); break; } return true; }
// This function pre-processes the message so that we // don't get any CVS syntax errors. inline synfig::String fix_msg(const synfig::String& message) { synfig::String ret; int i; for(i=0;i<(int)message.size();i++) { if(message[i]=='\'') ret+="'\"'\"'"; else ret+=message[i]; } return ret; }
void Toolbox::change_state(const synfig::String& statename) { etl::handle<studio::CanvasView> canvas_view(studio::App::get_selected_canvas_view()); if(canvas_view) { if(statename==canvas_view->get_smach().get_state_name()) { return; } if(state_button_map.count(statename)) { state_button_map[statename]->clicked(); } else { synfig::error("Unknown state \"%s\"",statename.c_str()); } } }
bool DialogSettings::set_value(const synfig::String& key,const synfig::String& value) { int screen_w(Gdk::screen_width()); int screen_h(Gdk::screen_height()); if(value.empty()) return false; if(key=="pos") { int x,y; if(!strscanf(value,"%d %d",&x, &y)) return false; if (x > screen_w) x = screen_w - 150; if (x < 0) x = 0; if (y > screen_h) y = screen_h - 150; if (y < 0) y = 0; window->move(x,y); return true; } if(key=="size") { int x,y; if(!strscanf(value,"%d %d",&x, &y)) return false; if (x > screen_w) x = 150; if (x < 0) x = 0; if (y > screen_h) y = 150; if (y < 0) y = 0; window->set_default_size(x,y); return true; } if(key=="x") { int x,y; window->get_position(x,y); x=atoi(value.c_str()); window->move(x,y); return true; } if(key=="y") { int x,y; window->get_position(x,y); y=atoi(value.c_str()); window->move(x,y); return true; } if(key=="w") { int x,y; window->get_size(x,y); x=atoi(value.c_str()); window->set_default_size(x,y); return true; } if(key=="h") { int x,y; window->get_size(x,y); y=atoi(value.c_str()); window->set_default_size(x,y); return true; } if(key=="visible") { if(value=="0") window->hide(); else window->present(); return true; } return synfigapp::Settings::set_value(key,value); }