bool _HYConsoleWindow::_Close (Ptr )
{
    _String closingNow ("Please confirm that you want to close HyPhy, terminating all unfinished tasks.");
    if (ProceedPrompt (closingNow, (Ptr)this)) {
        gtk_main_quit();
    }
    return false;
}
Esempio n. 2
0
void    _HYObjectInspector::KillObject (void)
{
    _HYTable*       dl = (_HYTable*)GetCellObject (HY_OBJECT_INSPECTOR_TABLE_ROW,0);
    _HYButtonBar*   b1 = (_HYButtonBar*)GetCellObject (0,0);
    _HYPullDown*    p1 = (_HYPullDown*)GetCellObject (0,2);

    _SimpleList     sel;
    dl->GetSelection (sel);
    if (sel.lLength) {
        b1->EnableButton (0,true);
        long f;
        switch (p1->GetSelection()) {
        case 0: {
            for (f = 0; f<sel.lLength; f+=2) {
                long treeID = LocateVarByName (*(_String*)dl->GetCellData (0,sel.lData[f]/2));
                if (treeID>=0)
#ifndef USE_AVL_NAMES
                    treeID = variableReindex.lData[treeID];
#else
                    treeID = variableNames.GetXtra(treeID);
#endif
                if (dl->cellTypes.lData[sel.lData[f]] & HY_TABLE_BOLD) {
                    _String prompt ("Tree ");
                    prompt = prompt & *LocateVar (treeID)->GetName() & objectInspectorKillPrompt;
                    if (warnTree||(!ProceedPromptWithCheck (prompt,donotWarnAgain,warnTree))) {
                        continue;
                    }
                }
                postTreeKillEvent (GetID(), treeID);
            }
            break;
        }
        case 1: {
            for (f = 0; f<sel.lLength; f+=2) {
                long dsID = dataSetNamesList.Find ((_String*)dl->GetCellData (0,sel.lData[f]/2));
                if (dsID>=0) {
                    if (dl->cellTypes.lData[sel.lData[f]] & HY_TABLE_BOLD) {
                        _String prompt ("Dataset ");
                        prompt = prompt & *(_String*)dataSetNamesList(dsID) & objectInspectorKillPrompt;
                        if (!((!warnTree)&&ProceedPromptWithCheck (prompt,donotWarnAgain,warnDS))) {
                            continue;
                        }
                    }
                    postDSKillEvent (GetID(), dsID);
                }
            }
            break;
        }
        case 2: {
            for (f = 0; f<sel.lLength; f+=2) {
                if (sel.lData[f]/2<modelTemplates.lLength) {
                    _List* modelT = FindModelTemplate((_String*)dl->GetCellData (0,sel.lData[f]/2));
                    if (modelT) { // template model
                        _String*fileLocation = (_String*)(*modelT)(2),
                                errMsg (*(_String*)dl->GetCellData (0,sel.lData[f]/2));

                        if (dl->cellTypes.lData[sel.lData[f]] & HY_TABLE_ITALIC) {
                            errMsg = errMsg & " is a template model. If you wish to delete it, please do so by removing the appropriate file from the \"Substitution Models\" directory.";
                            ProblemReport (errMsg);
                        } else {
                            errMsg = errMsg & " is about to be deleted. This action is NOT undoable.";
                            if (ProceedPrompt (errMsg,(Ptr)this)) {
                                if (remove (fileLocation->sData)) {
                                    errMsg = "File delete operation failed.";
                                    ProblemReport (errMsg);
                                } else {
                                    errMsg = *(_String*)dl->GetCellData (0,sel.lData[f]/2);
                                    for (long k=0; k<modelTemplates.lLength; k++) {
                                        _List* thisList = (_List*)modelTemplates(k);
                                        if (errMsg.Equal((_String*)(*thisList)(0))) {
                                            modelTemplates.Delete (k);
                                        }
                                    }
                                    BuildListOfObjects (2);
                                }
                            }
                        }
                    }
                }
            }
            break;
        }
        }
    }
}