X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=option.c;h=701a251ca25137dcbdf4dd0330d6d6a4baba7364;hb=ac968003c13bde5c86ffa19f8819e436b5bc03e6;hp=1bccec36c73a52c8049a6522c12451084557899c;hpb=aaf072500213db1bed274a2dd8ebe711f21ab898;p=polyglot.git diff --git a/option.c b/option.c index 1bccec3..701a251 100644 --- a/option.c +++ b/option.c @@ -25,6 +25,10 @@ option_t DefaultOptions[] = { // options + { "Persist", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD}, + + { "PersistFile", "string","0","0", "" , NULL,0,NNB, PG}, + { "EngineName", "string","0","0", "" , NULL,0,NNB, PG}, { "EngineDir", "string","0","0", "." , NULL,0,NNB, PG}, { "EngineCommand", "string","0","0", "" , NULL,0,NNB, PG}, @@ -37,7 +41,7 @@ option_t DefaultOptions[] = { { "UseNice", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD|UCI}, { "NiceValue", "spin", "0","20", "5" , NULL,0,NNB, PG|XBOARD|UCI}, - { "Chess960", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, + { "Chess960", "check","0","0", "false" , NULL,0,NNB, PG}, { "Resign", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, { "ResignMoves", "spin","0","10000", "3" , NULL,0,NNB, PG|XBOARD}, @@ -74,6 +78,11 @@ option_t DefaultOptions[] = { { "WbWorkArounds", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD}, { "WbWorkArounds2", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, + + // Buttons + +// { "Defaults", "reset","0","0", "false" , NULL,0,NNB, PG|XBOARD}, + { NULL, NULL,"0","0", NULL , NULL,0,NNB, 0}, }; @@ -123,16 +132,16 @@ void option_init(option_list_t *option){ // option_insert() void option_insert(option_list_t *option, option_t *new_option){ + int i; + option_t *opt; ASSERT(option!=NULL); ASSERT(new_option!=NULL); ASSERT(new_option->name!=NULL); - option_t *opt; opt=option_find(option,new_option->name); if(!opt){ opt=&option->options[option->option_nb]; option->option_nb++; } - int i; if(option->option_nb>=OptionNb){ my_fatal("option_insert(): option list overflow\n"); } @@ -163,6 +172,11 @@ bool option_set(option_list_t *option, opt = option_find(option,name); if (opt == NULL) return FALSE; + if(my_string_case_equal(opt->type,"check")){ + value=(my_string_equal(value,"1")|| + my_string_case_equal(value,"true"))?"true":"false"; + } + my_string_set(&opt->value,value); if (UseDebug) my_log("POLYGLOT OPTION SET \"%s\" -> \"%s\"\n",opt->name,opt->value); @@ -183,7 +197,12 @@ bool option_set_default(option_list_t *option, opt = option_find(option,name); if (opt == NULL) return FALSE; - opt->default_=my_strdup(value); + if(my_string_case_equal(opt->type,"check")){ + value=(my_string_equal(value,"1")|| + my_string_case_equal(value,"true"))?"true":"false"; + } + + my_string_set(&opt->default_,value); if (UseDebug) my_log("POLYGLOT OPTION DEFAULT SET \"%s\" -> \"%s\"\n",opt->name,opt->default_); @@ -293,10 +312,14 @@ option_t * option_find(option_list_t *option, const char name[]) { return NULL; } +// option_start_iter() + void option_start_iter(option_list_t *option){ option->iter=0; } +// option_next() + option_t * option_next(option_list_t *option){ ASSERT(option->iter<=option->option_nb); if(option->iter==option->option_nb){ @@ -321,6 +344,8 @@ void option_free(option_t *option){ option->mode=0; } +// option_clear() + void option_clear(option_list_t *option){ int i; for (i = 0; i < option->option_nb; i++) { @@ -329,5 +354,18 @@ void option_clear(option_list_t *option){ option->option_nb=0; } +// option_from_ini() + +void option_from_ini(option_list_t *option, + ini_t *ini, + const char *section){ + ini_entry_t *entry; + ini_start_iter(ini); + while((entry=ini_next(ini))){ + option_set(option,entry->name,entry->value); + option_set_default(option,entry->name,entry->value); + } +} + // end of option.cpp