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

📄 records_table.cpp

📁 ncbi源码
💻 CPP
字号:
/* * =========================================================================== * PRODUCTION $Log: records_table.cpp,v $ * PRODUCTION Revision 1000.2  2004/06/01 20:48:47  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.23 * PRODUCTION * =========================================================================== *//*  $Id: records_table.cpp,v 1000.2 2004/06/01 20:48:47 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:  Mike DiCuccio * * File Description: *    CGBenchApp -- main application class for GBENCH */#include <ncbi_pch.hpp>#include "records_table.hpp"#include <gui/core/doc_manager.hpp>#include <gui/core/idocument.hpp>#include <gui/utils/fltk_utils.hpp>#include <objects/seq/Seq_hist.hpp>#include <objects/seq/Seq_inst.hpp>#include <objects/seqloc/Seq_id.hpp>#include <objmgr/util/sequence.hpp>#include <FL/fl_draw.H>BEGIN_NCBI_SCOPE//// requirement for the tabe: sort by underlying data structure//bool operator< (const IDocument& doc0, const IDocument& doc1){    return (&doc0 < &doc1);}//// default ctor//CRecordsTable::CRecordsTable(int x, int y, int w, int h, const char* label)    : CTablePanel<IDocument*>(x, y, w, h, label){    //    // set up the actual columns for our internal data    //    SetColumn(eBriefTitle, "Brief",         eString, FL_ALIGN_LEFT,  1.0f);    SetColumn(eTitle,      "Title",         eString, FL_ALIGN_LEFT,  4.0f);    SetColumn(eViews,      "Views",         eString, FL_ALIGN_RIGHT, 1.0f);    //SetColumn(eOrganism,   "Organism",      eString, FL_ALIGN_LEFT,  0.1f);    /**    // set the default virtual columns    // this defines the order in which all the columns appear    m_VirtCols.push_back(eBriefTitle);    m_VirtCols.push_back(eTitle);    m_VirtCols.push_back(eViews);    **/    Update(fAllEvents);}//// dtor//CRecordsTable::~CRecordsTable(){}//// Update()// Here we fill our internal data structures with information from the document// manager.//void CRecordsTable::Update(TUpdateFlags flags){    if ( (flags & fDocumentChanged)  ||  (flags & fDocumentCreated)  ||         (flags & fDocumentReleased) ) {        int row = 0;        NON_CONST_ITERATE(CDocManager::TDocList, iter,                          CDocManager::GetDocuments()) {            IDocument* doc = *iter;            if ( !doc ) {                return;            }            SetCell(row, eTitle, doc->GetTitle());            SetCell(row, eBriefTitle, doc->GetShortTitle());            SetCell(row, eViews, NStr::IntToString(doc->GetViews().size()));            SetData(row, doc);            ++row;        }        /**        m_Data.clear();        NON_CONST_ITERATE(CDocManager::TDocList, iter,                          CDocManager::GetDocuments()) {            IDocument* doc = *iter;            if ( !doc ) {                return;            }            TColumns cols(eMaxCols);            cols[eTitle     ] = doc->GetTitle();            cols[eBriefTitle] = doc->GetShortTitle();            cols[eViews     ] = NStr::IntToString(doc->GetViews().size());            TRow row;            row.m_Data = doc;            row.m_Columns = cols;            m_Data.push_back(row);        }        // make sure that the added document appears in sorted order!        int sort_idx = -1;        ITERATE (TColInfo, col_iter, m_ColInfo) {            if (col_iter->m_SortState != eNotSorted) {                sort_idx = col_iter - m_ColInfo.begin();                break;            }        }        if (sort_idx != -1) {            if (m_ColInfo[sort_idx].m_SortState == eAscending) {                m_ColInfo[sort_idx].m_SortState = eDescending;            } else {                m_ColInfo[sort_idx].m_SortState = eAscending;            }            SortByCol(sort_idx);        }        **/    }    if ( flags & fViewCreated ) {        for (size_t i = 0;  i < GetRows();  ++i) {            SetCell(i, eViews,                    NStr::IntToString(GetData(i)->GetViews().size()));        }    }    // finalize the view    redraw();}//// handle()// generic FLTK event handler//int CRecordsTable::handle(int event){    switch (event)    {    case FL_PUSH:        {{            CFltkEvent::EEvent ev = CFltkEvent::GetProcessedEvent();            // we ignore events bound to our internal popup state            // this removes an artifact with selection mode - it protects our            // selections when we popup our context menu            if (ev == CFltkEvent::ePopupState) {                break;            }            int ev_y = Fl::event_y();            int widget_y = y();            int hdr_ht = col_header_height();            if (ev_y >= y()  &&  ev_y <= y() + col_header_height()  &&                ev == CFltkEvent::eMultiSelectState) {                //ShowColSelectDlg();                return 1;            }        }}        break;    default:        break;    };    return CTablePanel<IDocument*>::handle(event);}END_NCBI_SCOPE/* * =========================================================================== * $Log: records_table.cpp,v $ * Revision 1000.2  2004/06/01 20:48:47  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.23 * * Revision 1.23  2004/05/21 22:27:42  gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.22  2004/05/07 15:34:37  dicuccio * Fixed unsigned/signed comparison * * Revision 1.21  2004/01/20 18:15:52  dicuccio * Changed to match new API in CTablePanel * * Revision 1.20  2003/12/04 18:12:55  dicuccio * Changed to match API change in CTablePanel * * Revision 1.19  2003/09/29 15:43:01  dicuccio * Deprecated gui/scope.hpp.  Merged gui/core/types.hpp into gui/types.hpp * * Revision 1.18  2003/09/04 14:02:36  dicuccio * Introduce IDocument as abstract base class for CDocument; replace use of * CDocument with IDocument * * Revision 1.17  2003/08/06 13:24:31  dicuccio * Deprecated old main window; introduced new, compact window for multiple * document management * * Revision 1.16  2003/07/28 11:51:47  dicuccio * Rewrote CTablePanel<> to be more flexible and better contained.  Added standard * multicolumn list dialog.  Deprecated use of COutputDlg. * * Revision 1.15  2003/07/25 13:43:40  dicuccio * Replaced Flv_Table with Fl_Table * * Revision 1.14  2003/06/02 16:06:19  dicuccio * Rearranged src/objects/ subtree.  This includes the following shifts: *     - src/objects/asn2asn --> arc/app/asn2asn *     - src/objects/testmedline --> src/objects/ncbimime/test *     - src/objects/objmgr --> src/objmgr *     - src/objects/util --> src/objmgr/util *     - src/objects/alnmgr --> src/objtools/alnmgr *     - src/objects/flat --> src/objtools/flat *     - src/objects/validator --> src/objtools/validator *     - src/objects/cddalignview --> src/objtools/cddalignview * In addition, libseq now includes six of the objects/seq... libs, and libmmdb * replaces the three libmmdb? libs. * * Revision 1.13  2003/04/24 16:36:49  dicuccio * Removed unnecessary / unavailable columns from display.  Updated to reflect * changes in IDocument API * * Revision 1.12  2003/03/21 17:02:17  dicuccio * Moved fltk_utils.hpp --> gui/utils.  Added link against libgui_utils * * Revision 1.11  2003/03/11 15:18:57  kuznets * iterate -> ITERATE * * Revision 1.10  2003/02/28 20:42:29  lebedev * Popup bug fixed * * Revision 1.9  2003/02/26 14:30:15  dicuccio * Fixed thinko in handling of mouse clicks and pop-up events - was preventing * selecting multiple documents and using the pop-up menu with these multiple * documents * * Revision 1.8  2003/02/05 19:57:34  dicuccio * Make sure that records added to the table don't upset the sort order for the table * * Revision 1.7  2003/01/15 21:12:49  dicuccio * Added update flags - allows partial updates, for example, when a view is created * * Revision 1.6  2003/01/13 13:10:10  dicuccio * Namespace clean-up.  Retired namespace gui -> converted all to namespace ncbi. * Moved all FLUID-generated code into namespace ncbi. * * Revision 1.5  2003/01/08 15:02:26  dicuccio * Moved column selection dialog into base class.  Added ability to sort columns * based on column type (string vs. numeric) * * Revision 1.4  2003/01/03 17:29:06  dicuccio * Added ability to select columns for viewing and sorting * * Revision 1.3  2002/12/30 20:51:43  dicuccio * Tweak to avoid compiler warnings in Windows * * Revision 1.2  2002/12/30 18:51:53  dicuccio * Updated to support new table widget base class.  Updated to add new tabular * views. * * Revision 1.1  2002/12/23 16:40:13  dicuccio * Initial revision * * =========================================================================== */

⌨️ 快捷键说明

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