void MainConfigDlg::FlagDlg() { WithConfLayout<TopWindow> cfg; CtrlLayoutOKCancel(cfg, "Configuration flags"); cfg.Sizeable().MaximizeBox(); Vector<String> flg = SplitFlags0(String(fe)); Vector<String> accepts = wspc.GetAllAccepts(0); Sort(accepts, GetLanguageInfo()); enum { CC_SET, CC_NAME, CC_PACKAGES, CC_COUNT }; cfg.accepts.AddColumn("Set").Ctrls(sSetOption).HeaderTab().Fixed(40); cfg.accepts.AddColumn("Flag", 1); cfg.accepts.AddColumn("Packages", 2); cfg.accepts.SetCount(accepts.GetCount()); for(int i = 0; i < accepts.GetCount(); i++) { String acc = accepts[i]; Vector<String> pkg; for(int p = 0; p < wspc.GetCount(); p++) if(FindIndex(wspc.package[p].accepts, acc) >= 0) pkg.Add(wspc[p]); Sort(pkg, GetLanguageInfo()); cfg.accepts.Set(i, CC_NAME, accepts[i]); cfg.accepts.Set(i, CC_PACKAGES, Join(pkg, ",")); } cfg.other.SetFilter(FlagFilterM); cfg.dll <<= cfg.gui <<= cfg.mt <<= cfg.sse2 <<= 0; String other; for(int i = 0; i < flg.GetCount(); i++) { String f = flg[i]; if(!SetSw(f, cfg.dll, "DLL") && !SetSw(f, cfg.gui, "GUI") && !SetSw(f, cfg.mt, "MT") && !SetSw(f, cfg.sse2, "SSE2")) { int x = (*f == '.' ? cfg.accepts.Find(f.Mid(1), CC_NAME) : -1); if(x >= 0) cfg.accepts.Set(x, CC_SET, true); else { if(!other.IsEmpty()) other << ' '; other << f; } } } cfg.other <<= other; if(cfg.Run() == IDOK) { String flags; flags << GetSw(cfg.dll, "DLL") << GetSw(cfg.gui, "GUI") << GetSw(cfg.mt, "MT") << GetSw(cfg.sse2, "SSE2"); for(int i = 0; i < cfg.accepts.GetCount(); i++) if(cfg.accepts.Get(i, CC_SET)) flags << '.' << cfg.accepts.Get(i, CC_NAME) << ' '; flags << cfg.other.GetText().ToString(); fe = Join(SplitFlags0(flags), " ").ToWString(); } }
int GetFlags (CalSwitch *sw, Hdr *phdr) { /* arguments: CalSwitch *sw o: values (0 or 1) of calibration switches Hdr *phdr i: primary header */ extern int status; FitsKw key; /* keyword location in header */ char flashkey[ACS_CBUF]; int GetKeyInt (Hdr *, char *, int, int, int *); if (GetSw (phdr, "ATODCORR", &sw->atodcorr)) return (status); if (GetSw (phdr, "BIASCORR", &sw->biascorr)) return (status); if (GetSw (phdr, "BLEVCORR", &sw->blevcorr)) return (status); if (GetSw (phdr, "CRCORR", &sw->crcorr)) return (status); if (GetSw (phdr, "DARKCORR", &sw->darkcorr)) return (status); if (GetSw (phdr, "DQICORR", &sw->dqicorr)) return (status); if (GetSw (phdr, "FLATCORR", &sw->flatcorr)) return (status); //if (GetSw (phdr, "PCTECORR", &sw->pctecorr)) // return (status); if (GetSw (phdr, "PCTECORR", &sw->pctecorr) == HEADER_PROBLEM) sw->pctecorr = OMIT; sprintf(flashkey,"FLSHCORR"); key = findKw (phdr, flashkey); if (key == NotFound) { sprintf(MsgText,"FLSHCORR keyword not found..."); trlwarn(MsgText); key = findKw (phdr, "POSTFLSH"); if (key != NotFound) { sprintf(flashkey,"POSTFLSH"); /* Now warn the user to change keyword name to FLSHCORR. */ sprintf(MsgText,"Using old keyword POSTFLSH!"); trlwarn(MsgText); sprintf(MsgText,"Please rename keyword to FLSHCORR in header."); trlwarn(MsgText); } } if (GetSw (phdr, flashkey, &sw->flashcorr)) return(status); if (GetSw (phdr, "GLINCORR", &sw->glincorr)) return (status); if (GetSw (phdr, "LFLGCORR", &sw->lflgcorr)) return (status); if (GetSw (phdr, "PHOTCORR", &sw->photcorr)) return (status); if (GetSw (phdr, "RPTCORR", &sw->rptcorr)) return (status); if (GetSw (phdr, "SHADCORR", &sw->shadcorr)) return (status); if (GetSw (phdr, "EXPSCORR", &sw->expscorr)) return (status); /* Check to insure that only one of these switches are set, since they are exclusive options. */ if (sw->rptcorr == PERFORM && sw->crcorr == PERFORM) { trlerror("RPTCORR and CRCORR both set to PERFORM!"); trlerror(" One switch needs to be set to OMIT!"); status = HEADER_PROBLEM; return (status); } return (status); }