view_hit_matrix.cpp

来自「ncbi源码」· C++ 代码 · 共 288 行

CPP
288
字号
/* * =========================================================================== * PRODUCTION $Log: view_hit_matrix.cpp,v $ * PRODUCTION Revision 1000.2  2004/06/01 20:59:19  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8 * PRODUCTION * =========================================================================== *//*  $Id: view_hit_matrix.cpp,v 1000.2 2004/06/01 20:59:19 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Andrey Yazhuk * * File Description: *    User-modifiable implementation file for extension of Dot Matrix *    viewer for GBENCH */#include <ncbi_pch.hpp>#include "view_hit_matrix.hpp"#include <gui/core/plugin_utils.hpp>#include <gui/core/version.hpp>#include <gui/plugin/PluginRequest.hpp>#include <gui/plugin/PluginCommand.hpp>#include <gui/plugin/PluginCommandSet.hpp>#include <gui/plugin/PluginInfo.hpp>#include <gui/plugin/PluginValue.hpp>#include <gui/objutils/utils.hpp>#include <serial/iterator.hpp>BEGIN_NCBI_SCOPE// We include the generated _.cpp file here.  This avoids a nasty bug in some// versions of gcc in which inline functions are not intantiated.#include "view_hit_matrix_.cpp"//// standard plugin announcement boilerplate//void CHitMatrixView::GetInfo(CPluginInfo& info){    info.Reset();    // version info macro    info.SetInfo(CPluginVersion::eMajor, CPluginVersion::eMinor, 0,                 string(__DATE__) + " " + string(__TIME__),                 "CHitMatrixView",                 "Dot Matrix Viewer",                 "Dot Matrix Viewer", "");    // command info    CPluginCommandSet& cmds = info.SetCommands();    CPluginCommand&    args = cmds.AddViewCommand(eViewCommand_new_view);    /*args.AddArgument("alignments", "Alignments to render",                     CSeq_align_set::GetTypeInfo(),                     CPluginArg::TData::e_Single);*/    args.AddArgument("alignments", "Alignments to render",                     CSeq_annot::GetTypeInfo(),                     CPluginArg::TData::e_Single);    args.SetConstraint("alignments",                       *CPluginValueConstraint::CreateAnnotType                       (CSeq_annot::TData::e_Align));    /*args.SetConstraint("alignments",                       *CPluginValueConstraint::CreateAnnotType                       (CSeq_annot::TData::e_Align));*/}staticDEFINE_MENU(Menu)    SUBMENU("Zoom")        MENU_ITEM(eCmdZoomIn, "Zoom In")        MENU_ITEM(eCmdZoomOut, "Zoom Out")        MENU_ITEM(eCmdZoomAll, "Zoom All")        MENU_ITEM(eCmdZoomObjects, "Zoom to Hits")        MENU_SEPARATOR()        MENU_ITEM(eCmdZoomSel, "Zoom to Selection")        MENU_ITEM(eCmdZoomSelObjects, "Zoom to Selected Hits")        MENU_ITEM(eCmdSetEqualScale, "Make Proportional")        MENU_SEPARATOR()        MENU_ITEM(eCmdZoomInX, "Zoom In Subject")        MENU_ITEM(eCmdZoomOutX, "Zoom Out Subject")        MENU_ITEM(eCmdZoomAllX, "Zoom All Subject")        MENU_SEPARATOR()        MENU_ITEM(eCmdZoomInY, "Zoom In Query")        MENU_ITEM(eCmdZoomOutY, "Zoom Out Query")        MENU_ITEM(eCmdZoomAllY, "Zoom All Query")            END_SUBMENU()    SUBMENU("View")        MENU_ITEM(eCmdChooseSeq, "Choose Sequences to Display...")        MENU_ITEM(eCmdColorByScore, "Color by Score...")        MENU_SEPARATOR()            END_SUBMENU()END_MENU()CHitMatrixView::CHitMatrixView(const CPluginMessage& msg,                               const string& pool_name)    : CAlnView(){    m_Window.reset(x_CreateWindow());        m_MenuBar->SetItems(Menu);    m_MenuBar->SetCmdTarget(m_AlnView);    // set our core components    const CPluginCommand& args = msg.GetRequest().GetCommand();    const CPluginArg& arg = args["alignments"];    // extract the alignments from the argument    const CSeq_annot* annot =        dynamic_cast<const CSeq_annot*>(arg.GetObject());    const IDocument* doc = arg.GetDocument();    if (annot  &&  doc) {        x_SetDocument(*doc);        m_AnnotData.Reset(annot);    }    // create the view menu manager    m_ViewMenuMgr.reset(new CViewMenuMgr(m_MenuBar, "View", this, pool_name));}void CHitMatrixView::OnDocumentChanged(){    if (!m_Document) {        return;    }    SetTitle(m_Document->GetShortTitle() + ": " + GetTitle());    // create our alignment manager    m_DataSource.Reset(            new CHitMatrixDataSource(*m_AnnotData, m_Document->GetScope()));    CHitMatrixDataSource::TIdRefCont all_ids =  m_DataSource->GetSeqIDs();    // choosing sequences to display    if(all_ids.size() >1 )  {        CHitMatrixDataSource::TIdRefCont::const_iterator  it = all_ids.begin();        CConstRef<CSeq_id>   s_id(*it);        CConstRef<CSeq_id>   q_id(*(++it));        m_DataSource->SelectIds(s_id, q_id);        m_AlnView->SetDataSource(m_DataSource.GetPointer());    }            SetSelBuffer().Clear();    SetSelBuffer().AddSelection(m_Document, *m_AnnotData);    m_ViewMenuMgr->AddActiveViews(m_Document);    m_ViewMenuMgr->AddNewViews();//   (m_Document);}void CHitMatrixView::OnSelectionChanged(const CSelectionBuffer& buf){    if (!m_Document) {        return;    }       SetSelBuffer().Clear();    SetSelBuffer().AddSelection(m_Document, *m_AnnotData);    m_ViewMenuMgr->AddActiveViews(m_Document);    m_ViewMenuMgr->AddNewViews();//   (m_Document);}const string& CHitMatrixView::GetTitle(void) const{    static string s_str("Dot Matrix View");    return s_str;}void CHitMatrixView::x_OnFileClose(){    Hide();}void CHitMatrixView::x_OnZoomIn(){    m_AlnView->OnZoomIn();}void CHitMatrixView::x_OnZoomOut(){    m_AlnView->OnZoomOut();}void CHitMatrixView::x_OnZoomAll(){    m_AlnView->OnZoomAll();}void CHitMatrixView::x_OnHelp(){}/*void CHitMatrixView::x_OnZoomSelection(){    if (m_AlnView) {        m_AlnView->OnZoomSelection();    }}void CHitMatrixView::x_OnZoomSequence(){    if (m_AlnView) {        m_AlnView->OnZoomSequence();    }}void CHitMatrixView::x_OnClearSelections(){    if (m_AlnView) {        m_AlnView->OnResetSelection();    }}*/END_NCBI_SCOPE/* * =========================================================================== * $Log: view_hit_matrix.cpp,v $ * Revision 1000.2  2004/06/01 20:59:19  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8 * * Revision 1.8  2004/05/21 22:27:49  gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.7  2004/05/03 17:53:55  dicuccio * Tweaked makefiles to support new gui_objutils library * * Revision 1.6  2004/04/16 14:44:17  dicuccio * Pass appropriate ISelection interface to dynamic menus * * Revision 1.5  2004/04/07 13:02:00  dicuccio * Changed view API - require CPluginMessage instead of CPluginArgSet in ctor. * Changed published name of view from Hit Matrix to Dot Matrix * * Revision 1.4  2004/02/12 21:08:31  yazhuk * Reorganized menu and added new commands * * Revision 1.3  2004/01/15 20:53:16  yazhuk * Renamed m_Menu to m_MenuBar, added menu definition and menu setup code * * Revision 1.2  2003/12/22 19:33:15  dicuccio * Lots of changes.  Changed to match new APIs in IView.  Added better handling of messages received from other views * * Revision 1.1  2003/12/05 20:06:05  yazhuk * Initial revision *  * =========================================================================== */

⌨️ 快捷键说明

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