⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 structure_window.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    switch (event.GetId()) {        case MID_CDD_OVERVIEW:            ShowCDDOverview();            break;        case MID_EDIT_CDD_NAME: {            wxString newName = wxGetTextFromUser("Enter or edit the CDD name:",                "CDD Name", glCanvas->structureSet->GetCDDName().c_str(), this, -1, -1, false);            if (newName.size() > 0) {                if (!glCanvas->structureSet->SetCDDName(newName.c_str()))                    ERRORMSG("Error saving CDD name");                SetWorkingTitle(glCanvas->structureSet);                GlobalMessenger()->SetAllWindowTitles();            }            break;        }        case MID_EDIT_CDD_DESCR:            if (!cddDescriptionDialog) {                StructureSet::TextLines line(1);                line[0] = glCanvas->structureSet->GetCDDDescription().c_str();                cddDescriptionDialog = new MultiTextDialog(this, line,                    this, -1, "CDD Description", wxPoint(50, 50), wxSize(400, 200));            }            cddDescriptionDialog->ShowDialog(true);            break;        case MID_EDIT_CDD_NOTES:            if (!cddNotesDialog) {                StructureSet::TextLines lines;                if (!glCanvas->structureSet->GetCDDNotes(&lines)) break;                cddNotesDialog = new MultiTextDialog(this, lines,                    this, -1, "CDD Notes", wxPoint(100, 100), wxSize(500, 400));            }            cddNotesDialog->ShowDialog(true);            break;        case MID_EDIT_CDD_REFERENCES:            ShowCDDReferences();            break;        case MID_EDIT_CDD_BOOK_REFERENCES:            ShowCDDBookReferences();            break;        case MID_ANNOT_CDD:            ShowCDDAnnotations();            break;        case MID_CDD_SHOW_REJECTS:            glCanvas->structureSet->ShowRejects();            break;        case MID_CDD_REJECT_SEQ: {            // make a list of slave sequences            SeqAndDescrList seqsDescrs;            const MoleculeIdentifier *master =                glCanvas->structureSet->alignmentManager->                    GetCurrentMultipleAlignment()->GetSequenceOfRow(0)->identifier;            const StructureSet::RejectList *rejects = glCanvas->structureSet->GetRejects();            SequenceSet::SequenceList::const_iterator                s, se = glCanvas->structureSet->sequenceSet->sequences.end();            for (s=glCanvas->structureSet->sequenceSet->sequences.begin(); s!=se; ++s) {                if ((*s)->identifier != master) {                    // make sure this sequence isn't already rejected                    bool rejected = false;                    if (rejects) {                        StructureSet::RejectList::const_iterator r, re = rejects->end();                        for (r=rejects->begin(); r!=re; ++r) {                            CReject_id::TIds::const_iterator i, ie = (*r)->GetIds().end();                            for (i=(*r)->GetIds().begin(); i!=ie; ++i) {                                if ((*s)->identifier->MatchesSeqId(**i)) {                                    rejected = true;                                    break;                                }                            }                            if (rejected) break;                        }                    }                    if (rejected) continue;                    wxString description((*s)->identifier->ToString().c_str());                    if ((*s)->description.size() > 0)                        description += wxString("     ") + (*s)->description.c_str();                    seqsDescrs.resize(seqsDescrs.size() + 1);                    seqsDescrs.back().first = *s;                    seqsDescrs.back().second = description;                }            }            // sort by identifier            stable_sort(seqsDescrs.begin(), seqsDescrs.end(), CompareSequencesByIdentifier);            // user dialogs for selection and reason            wxString *choices = new wxString[seqsDescrs.size()];            int choice;            for (choice=0; choice<seqsDescrs.size(); ++choice) choices[choice] = seqsDescrs[choice].second;            choice = wxGetSingleChoiceIndex("Reject which sequence?", "Reject Sequence",                seqsDescrs.size(), choices, this);            if (choice >= 0) {                wxString message = "Are you sure you want to reject this sequence?\n\n";                message += choices[choice];                message += "\n\nIf so, enter a brief reason why:";                wxString reason = wxGetTextFromUser(message, "Reject Sequence", "", this);                if (reason.size() == 0) {                    wxMessageBox("Reject action cancelled!", "", wxOK | wxICON_INFORMATION, this);                } else {                    int purge = wxMessageBox("Do you want to purge all instances of this sequence "                        " from the multiple alignment and update list?",                        "", wxYES_NO | wxICON_QUESTION, this);                    // finally, actually perform the rejection+purge                    glCanvas->structureSet->                        RejectAndPurgeSequence(seqsDescrs[choice].first, reason.c_str(), purge == wxYES);                }            }            break;        }    }}void StructureWindow::OnAdjustView(wxCommandEvent& event){    glCanvas->SetCurrent();    switch (event.GetId()) {        case MID_ZOOM_IN:       glCanvas->renderer->ChangeView(OpenGLRenderer::eZoomIn); break;        case MID_ZOOM_OUT:      glCanvas->renderer->ChangeView(OpenGLRenderer::eZoomOut); break;        case MID_RESET:         glCanvas->renderer->ResetCamera(); break;        case MID_RESTORE:       glCanvas->renderer->RestoreSavedView(); break;        case MID_FIRST_FRAME:   glCanvas->renderer->ShowFirstFrame(); break;        case MID_LAST_FRAME:    glCanvas->renderer->ShowLastFrame(); break;        case MID_NEXT_FRAME:    glCanvas->renderer->ShowNextFrame(); break;        case MID_PREV_FRAME:    glCanvas->renderer->ShowPreviousFrame(); break;        case MID_ALL_FRAMES:    glCanvas->renderer->ShowAllFrames(); break;        case MID_STEREO:        glCanvas->renderer->EnableStereo(menuBar->IsChecked(MID_STEREO)); break;        default:            break;    }    glCanvas->Refresh(false);}void StructureWindow::OnShowHide(wxCommandEvent& event){    if (glCanvas->structureSet) {        switch (event.GetId()) {        case MID_SHOW_HIDE:        {            vector < string > structureNames;            vector < bool > structureVisibilities;            glCanvas->structureSet->showHideManager->GetShowHideInfo(&structureNames, &structureVisibilities);            wxString *titles = new wxString[structureNames.size()];            for (int i=0; i<structureNames.size(); ++i) titles[i] = structureNames[i].c_str();            ShowHideDialog dialog(                titles, &structureVisibilities, glCanvas->structureSet->showHideManager, false,                this, -1, "Show/Hide Structures", wxPoint(200, 50));            dialog.ShowModal();            //delete titles;    // apparently deleted by wxWindows            break;        }        case MID_SELECT_MOLECULE:        {            if (!glCanvas->structureSet || glCanvas->structureSet->objects.size() > 1)                return;            wxString idStr = wxGetTextFromUser("Enter an MMDB molecule ID or PDB code:", "Select molecule");            if (idStr.size() == 0)                return;            unsigned long num;            bool isNum = idStr.ToULong(&num);            if (!isNum)                idStr.MakeUpper();  // PDB names are all caps            GlobalMessenger()->RemoveAllHighlights(true);            ChemicalGraph::MoleculeMap::const_iterator m, me =                glCanvas->structureSet->objects.front()->graph->molecules.end();            for (m=glCanvas->structureSet->objects.front()->graph->molecules.begin(); m!=me; ++m) {                if ((isNum && m->second->id == (int) num) ||                    (!isNum && (                        ((m->second->type == Molecule::eDNA || m->second->type == Molecule::eRNA ||                          m->second->type == Molecule::eProtein || m->second->type == Molecule::eBiopolymer)                            && idStr.Cmp(m->second->name.c_str()) == 0) ||                        ((m->second->type == Molecule::eSolvent || m->second->type == Molecule::eNonpolymer ||                          m->second->type == Molecule::eOther)                            && m->second->residues.size() == 1                            && (((wxString) m->second->residues.begin()->second->                                nameGraph.c_str()).Strip(wxString::both) == idStr)))))                {                    if (m->second->sequence) {                        GlobalMessenger()->AddHighlights(m->second->sequence, 0, m->second->sequence->Length() - 1);                    } else {                        Molecule::ResidueMap::const_iterator r, re = m->second->residues.end();                        for (r=m->second->residues.begin(); r!=re; ++r)                            GlobalMessenger()->ToggleHighlight(m->second, r->second->id);                    }                }            }            break;        }        case MID_SHOW_ALL:            glCanvas->structureSet->showHideManager->MakeAllVisible();            break;        case MID_SHOW_DOMAINS:            glCanvas->structureSet->showHideManager->ShowAlignedDomains(glCanvas->structureSet);            break;        case MID_SHOW_ALIGNED:            glCanvas->structureSet->showHideManager->ShowResidues(glCanvas->structureSet, true);            break;        case MID_SHOW_UNALIGNED_ALL:            glCanvas->structureSet->showHideManager->ShowResidues(glCanvas->structureSet, false);            break;        case MID_SHOW_UNALIGNED_ALN_DOMAIN:            glCanvas->structureSet->showHideManager->                ShowUnalignedResiduesInAlignedDomains(glCanvas->structureSet);            break;        case MID_SHOW_SELECTED_RESIDUES:            glCanvas->structureSet->showHideManager->ShowSelectedResidues(glCanvas->structureSet);            break;        case MID_SHOW_SELECTED_DOMAINS:            glCanvas->structureSet->showHideManager->ShowDomainsWithHighlights(glCanvas->structureSet);            break;        }    }}void StructureWindow::OnAlignStructures(wxCommandEvent& event){    if (glCanvas->structureSet) {        glCanvas->structureSet->alignmentManager->RealignAllSlaveStructures();        glCanvas->SetCurrent();        glCanvas->Refresh(false);    }}#define RENDERING_SHORTCUT(type, menu) \    glCanvas->structureSet->styleManager->SetGlobalRenderingStyle(StyleSettings::type); \    SetRenderingMenuFlag(menu); \    break#define COLORING_SHORTCUT(type, menu) \    glCanvas->structureSet->styleManager->SetGlobalColorScheme(StyleSettings::type); \    SetColoringMenuFlag(menu); \    breakvoid StructureWindow::OnSetStyle(wxCommandEvent& event){    if (glCanvas->structureSet) {        glCanvas->SetCurrent();        switch (event.GetId()) {            case MID_EDIT_STYLE:                if (!glCanvas->structureSet->styleManager->EditGlobalStyle(this))                    return;                SetRenderingMenuFlag(0);                SetColoringMenuFlag(0);                break;            case MID_ANNOTATE:                if (!glCanvas->structureSet->styleManager->EditUserAnnotations(this))                    return;                break;            case MID_WORM: RENDERING_SHORTCUT(eWormShortcut, MID_WORM);            case MID_TUBE: RENDERING_SHORTCUT(eTubeShortcut, MID_TUBE);            case MID_WIRE: RENDERING_SHORTCUT(eWireframeShortcut, MID_WIRE);            case MID_BNS: RENDERING_SHORTCUT(eBallAndStickShortcut, MID_BNS);            case MID_SPACE: RENDERING_SHORTCUT(eSpacefillShortcut, MID_SPACE);            case MID_SC_TOGGLE: RENDERING_SHORTCUT(eToggleSidechainsShortcut, 0);            case MID_SECSTRUC: COLORING_SHORTCUT(eSecondaryStructureShortcut, MID_SECSTRUC);            case MID_ALIGNED: COLORING_SHORTCUT(eAlignedShortcut, MID_ALIGNED);            case MID_IDENTITY: COLORING_SHORTCUT(eIdentityShortcut, MID_IDENTITY);            case MID_VARIETY: COLORING_SHORTCUT(eVarietyShortcut, MID_VARIETY);            case MID_WGHT_VAR: COLORING_SHORTCUT(eWeightedVarietyShortcut, MID_WGHT_VAR);            case MID_INFO: COLORING_SHORTCUT(eInformationContentShortcut, MID_INFO);            case MID_FIT: COLORING_SHORTCUT(eFitShortcut, MID_FIT);            case MID_BLOCK_FIT: COLORING_SHORTCUT(eBlockFitShortcut, MID_BLOCK_FIT);            case MID_BLOCK_Z_FIT: COLORING_SHORTCUT(eBlockZFitShortcut, MID_BLOCK_Z_FIT);            case MID_BLOCK_ROW_FIT: COLORING_SHORTCUT(eBlockRowFitShortcut, MID_BLOCK_ROW_FIT);            case MID_OBJECT: COLORING_SHORTCUT(eObjectShortcut, MID_OBJECT);            case MID_DOMAIN: COLORING_SHORTCUT(eDomainShortcut, MID_DOMAIN);            case MID_MOLECULE: COLORING_SHORTCUT(eMoleculeShortcut, MID_MOLECULE);            case MID_RAINBOW: COLORING_SHORTCUT(eRainbowShortcut, MID_RAINBOW);            case MID_HYDROPHOB: COLORING_SHORTCUT(eHydrophobicityShortcut, MID_HYDROPHOB);            case MID_CHARGE: COLORING_SHORTCUT(eChargeShortcut, MID_CHARGE);            case MID_TEMP: COLORING_SHORTCUT(eTemperatureShortcut, MID_TEMP);            case MID_ELEMENT: COLORING_SHORTCUT(eElementShortcut, MID_ELEMENT);            default:                return;        }        glCanvas->structureSet->styleManager->CheckGlobalStyleSettings();        GlobalMessenger()->PostRedrawAllStructures();        GlobalMessenger()->PostRedrawAllSequenceViewers();    }}void StructureWindow::SetRenderingMenuFlag(int which){    menuBar->Check(MID_WORM, (which == MID_WORM));    menuBar->Check(MID_TUBE, (which == MID_TUBE));    menuBar->Check(MID_WIRE, (which == MID_WIRE));    menuBar->Check(MID_BNS, (which == MID_BNS));    menuBar->Check(MID_SPACE, (which == MID_SPACE));}void StructureWindow::SetColoringMenuFlag(int which){    menuBar->Check(MID_SECSTRUC, (which == MID_SECSTRUC));    menuBar->Check(MID_ALIGNED, (which == MID_ALIGNED));    menuBar->Check(MID_IDENTITY, (which == MID_IDENTITY));    menuBar->Check(MID_VARIETY, (which == MID_VARIETY));    menuBar->Check(MID_WGHT_VAR, (which == MID_WGHT_VAR));    menuBar->Check(MID_INFO, (which == MID_INFO));    menuBar->Check(MID_FIT, (which == MID_FIT));    menuBar->Check(MID_BLOCK_FIT, (which == MID_BLOCK_FIT));    menuBar->Check(MID_BLOCK_Z_FIT, (which == MID_BLOCK_Z_FIT));    menuBar->Check(MID_BLOCK_ROW_FIT, (which == MID_BLOCK_ROW_FIT));    menuBar->Check(MID_OBJECT, (which == MID_OBJECT));    menuBar->Check(MID_DOMAIN, (which == MID_DOMAIN));    menuBar->Check(MID_MOLECULE, (which == MID_MOLECULE));    menuBar->Check(MID_RAINBOW, (which == MID_RAINBOW));    menuBar->Check(MID_HYDROPHOB, (which == MID_HYDROPHOB));    menuBar->Check(MID_CHARGE, (which == MID_CHARGE));    menuBar->Check(MID_TEMP, (which == MID_TEMP));    menuBar->Check(MID_ELEMENT, (which == MID_ELEMENT));}bool StructureWindow::LoadData(const char *filename, bool force, CNcbi_mime_asn1 *mimeData){    SetCursor(*wxHOURGLASS_CURSOR);    glCanvas->SetCurrent();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -