diff --git a/ba/ba0.cpp b/ba/ba0.cpp index 4d33c7fb6..e0e2a7ed7 100755 --- a/ba/ba0.cpp +++ b/ba/ba0.cpp @@ -1368,7 +1368,7 @@ bool TMenu_application::choose_colors() TColor_mask * cm = new TColor_mask(); if (cm->run() == K_ENTER) { - cm->save_colors(); // Aggiorna config + cm->save_colors(); // Aggiorna config customize_colors(); // Aggiorna set di colori reload_images(); // Aggiorna bitmaps del menu @@ -1387,7 +1387,9 @@ bool TMenu_application::choose_colors() } HIDDEN bool browse_file_handler(TMask_field& f, KEY k) -{ +{ + bool ok = TRUE; + if (k == K_F9) { FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC)); @@ -1395,19 +1397,34 @@ HIDDEN bool browse_file_handler(TMask_field& f, KEY k) strcpy(fs.type, "EXE"); strcpy(fs.name, f.get()); strcpy(fs.creator, "ba0"); - - xvt_fsys_save_dir(); - if (xvt_dm_post_file_open(&fs, "Selezione programma") == FL_OK) + + DIRECTORY dir; + xvt_fsys_get_dir(&dir); + const int err = xvt_dm_post_file_open(&fs, "Selezione programma"); + xvt_fsys_set_dir(&dir); + if (err == FL_OK) { TFilename n; - xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(n.size()), n.size()); + xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(), n.size()); n.add(fs.name); f.set(n); - xvt_fsys_restore_dir(); } } - return TRUE; + if (k == K_TAB && f.focusdirty()) + { + TFilename infile(f.get()); + if (infile.not_empty()) + { + TFilename outfile; + if (*infile.ext() == '\0') + infile.ext("exe"); + if (!infile.search_in_path(outfile)) + ok = error_box("Il programma %s non esiste!", (const char*)infile); + } + } + + return ok; } HIDDEN bool link_notify(TSheet_field& s, int r, KEY k) @@ -1435,29 +1452,25 @@ bool TMenu_application::choose_editors() sm.set_handler(102, browse_file_handler); TAssoc_array& var = (TAssoc_array&)link.list_variables(); - var.restart(); - - for (THash_object* hobj = var.get_hashobj(); hobj; hobj = var.get_hashobj()) + FOR_EACH_ASSOC_STRING(var, obj, key, str) { TToken_string& row = sheet.row(-1); - row = hobj->key(); + row = key; row.lower(); - if (row.compare("txt", -1, TRUE) == 0) - sheet.disable_cell(sheet.items()-1, 0); - row.add((TString&)hobj->obj()); + row.add(str); } + sheet.rows_array().sort(); if (m.run() == K_ENTER) { link.remove_all(); - for (int r = sheet.items()-1; r >= 0; r--) + FOR_EACH_SHEET_ROW_BACK(sheet, r, row) { - TToken_string& row = sheet.row(r); - TString16 ext = row.get(0); + TString16 ext = row->get(0); if (!ext.blank()) { ext.lower(); - TFilename prg = row.get(); + TFilename prg = row->get(); link.set(ext, prg); } }