Changeset 6666 for trunk/WINDOW/AW_nawar.cxx
- Timestamp:
- 21/05/10 19:44:17 (2 years ago)
- Files:
-
- 1 modified
-
trunk/WINDOW/AW_nawar.cxx (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/WINDOW/AW_nawar.cxx
r6422 r6666 153 153 } 154 154 155 AW_default aw_main_root_default = (AW_default) "this is a dummy text asfasf asfd";156 157 AW_default aw_check_default_file(AW_default root_default, AW_default default_file, const char *varname)158 {159 if (default_file == aw_main_root_default) return root_default;160 if (default_file == NULL) {161 AW_ERROR("Creating variable '%s' with zero default file\n", varname);162 return root_default;163 }164 return default_file;165 }166 167 168 155 // for string 169 156 AW_awar *AW_root::awar_string(const char *var_name, const char *default_value, AW_default default_file) { 170 157 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 171 158 if (!vs) { 172 default_file = aw_check_default_file(this->application_database, default_file, var_name);159 default_file = check_properties(default_file); 173 160 vs = new AW_awar(AW_STRING, var_name, default_value, 0, default_file, this); 174 161 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); … … 182 169 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 183 170 if (!vs) { 184 default_file = aw_check_default_file(this->application_database, default_file, var_name);171 default_file = check_properties(default_file); 185 172 vs = new AW_awar(AW_INT, var_name, (char *)default_value, 0, default_file, this); 186 173 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); … … 194 181 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 195 182 if (!vs) { 196 default_file = aw_check_default_file(this->application_database, default_file, var_name);183 default_file = check_properties(default_file); 197 184 vs = new AW_awar(AW_FLOAT, var_name, "", (double)default_value, default_file, this); 198 185 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); … … 204 191 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 205 192 if (!vs) { 206 default_file = aw_check_default_file(this->application_database, default_file, var_name);193 default_file = check_properties(default_file); 207 194 vs = new AW_awar(AW_POINTER, var_name, (const char *)default_value, NULL, default_file, this); 208 195 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); … … 641 628 } 642 629 643 644 645 AW_default AW_root::open_default(const char *default_name, bool create_if_missing) 646 { 647 if (!create_if_missing) { // used to check for existing specific properties 648 const char *home = GB_getenvHOME(); 649 char *buffer = (char *)GB_calloc(sizeof(char), strlen(home) + strlen(default_name) + 2); 650 651 sprintf(buffer, "%s/%s", home, default_name); 652 653 struct stat st; 654 bool found = stat(buffer, &st) == 0; 655 656 free(buffer); 657 658 if (!found) return 0; 659 } 660 661 #if defined(DEVEL_RALF) 662 #warning gb_default is never closed 663 // close it somewhere and call AWT_browser_forget_db as well 664 #endif // DEVEL_RALF 665 630 AW_awar::~AW_awar() { 631 remove_all_target_vars(); 632 unlink(); 633 free(awar_name); 634 } 635 636 const char *AW_root::property_DB_fullname(const char *default_name) { 637 const char *home = GB_getenvHOME(); 638 return GBS_global_string("%s/%s", home, default_name); 639 } 640 641 bool AW_root::property_DB_exists(const char *default_name) { 642 return GB_is_regularfile(property_DB_fullname(default_name)); 643 } 644 645 AW_default AW_root::load_properties(const char *default_name) { 666 646 GBDATA *gb_default = GB_open(default_name, "rwcD"); 667 647 … … 682 662 } 683 663 684 685 AW_error *AW_root::save_default(const char *var_name) { 686 return save_default(var_name, NULL); 687 } 688 689 AW_error *AW_root::save_default(const char *var_name, const char *file_name) { 690 AW_awar *vs; 691 if ((vs = this->awar(var_name))) { 692 AW_root::save_default((AW_default)vs->gb_var, file_name); 693 return 0; 694 } 695 else { 696 AW_ERROR("AW_root::save_default: Variable %s not defined", var_name); 697 } 698 return 0; 699 700 } 701 702 AW_error *AW_root::save_default(AW_default aw_default, const char *file_name) 703 { 704 GBDATA *gb_main = GB_get_root((GBDATA *)aw_default); 705 GB_push_transaction(gb_main); 706 aw_update_awar_window_geometry(this); 707 GB_pop_transaction(gb_main); 708 GB_save_in_home(gb_main, file_name, "a"); 709 return 0; 710 } 711 712 AW_default AW_root::get_default(const char *varname) { 713 GBDATA *gbd; 714 AW_awar *vs; 715 if ((vs = this->awar(varname))) { 716 gbd = vs->gb_var; 717 return (AW_default)GB_get_root(gbd); 718 } 719 else { 720 AW_ERROR("AW_root::get_default: Variable %s not defined", varname); 721 } 722 return 0; 723 } 664 GB_ERROR AW_root::save_properties(const char *filename) { 665 GB_ERROR error = NULL; 666 GBDATA *gb_main = application_database; 667 668 if (!gb_main) { 669 error = "No properties loaded - won't save"; 670 } 671 else { 672 error = GB_push_transaction(gb_main); 673 if (!error) { 674 aw_update_awar_window_geometry(this); 675 error = GB_pop_transaction(gb_main); 676 if (!error) error = GB_save_in_home(gb_main, filename, "a"); 677 } 678 } 679 680 return error; 681 } 682 724 683 725 684 AW_default AW_root::get_gbdata(const char *varname) {
