Ejemplo n.º 1
0
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();
	}
}
Ejemplo n.º 2
0
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);
}