valerror_display.cpp
来自「ncbi源码」· C++ 代码 · 共 270 行
CPP
270 行
/* * =========================================================================== * PRODUCTION $Log: valerror_display.cpp,v $ * PRODUCTION Revision 1000.1 2004/06/01 21:03:20 gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * PRODUCTION * =========================================================================== *//* $Id: valerror_display.cpp,v 1000.1 2004/06/01 21:03:20 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: Mati Shomrat * * File Description: * * */#include <ncbi_pch.hpp>#include <corelib/ncbistd.hpp>#include <objtools/validator/validator.hpp>#include <FL/Fl.H>#include <FL/Fl_Group.H>#include <FL/Fl_Scroll.H>#include <FL/Fl_Pack.H>#include <FL/Fl_Box.H>#include "valerror_display.hpp"#include "erritem_view.hpp"#include "filter.hpp"#include "statistics.hpp"USING_SCOPE(ncbi::objects::validator);BEGIN_NCBI_SCOPE// static variables initializersconst string CValidErrorDisplay::sm_ShownLabel = "Error shown: ";// public:CValidErrorDisplay::CValidErrorDisplay(int x, int y, int w, int h) : Fl_Group(x, y, w, h, 0), m_Scroll(0), m_Pack(0), m_Shown(0), m_Stats(0){ m_Shown = CreateShown(x, y, w, 25); SetShown(0); m_Scroll = CreateScroll(x, y + 25, w, h - 55); m_Pack = CreatePack(x, y + 25, w, h - 55); m_Scroll->add(m_Pack); m_Stats = new CValidErrorStats(x + 10, y + h - 25 , w, 25); end();}CValidErrorDisplay::~CValidErrorDisplay(void){}void CValidErrorDisplay::Update(const CValidatorFilter* filter){ EDiagSev min = eDiag_Info; EDiagSev max = eDiag_Critical; string err_code = kEmptyStr; string search_str = kEmptyStr; CValidErrItemView::EMessage message = CValidErrItemView::eMessage_Verbose; if ( filter ) { min = filter->GetMinSev(); max = filter->GetMaxSev(); err_code = filter->GetErrCode(); if ( err_code == "All" ) { err_code = kEmptyStr; } search_str = filter->GetSearchString(); message = filter->GetMessage(); } m_Pack->clear(); for ( CValidError_CI iter(*m_Errors, err_code, min, max); iter; ++iter ) { if ( search_str.empty() || NStr::FindNoCase(iter->GetMsg(), search_str) != NPOS) { m_Pack->add(new CValidErrItemView(*iter, w(), message)); } } SetShown(m_Pack->children()); m_Scroll->redraw();}void CValidErrorDisplay::SetValidError(const CValidError& errors){ m_Errors.Reset(&errors); m_Stats->SetValidError(errors); Update();}void CValidErrorDisplay::DisplayVerbose(bool verbose){ Fl_Widget*const* items = m_Pack->array(); SIZE_TYPE num_items = m_Pack->children(); CValidErrItemView::EMessage message = verbose ? CValidErrItemView::eMessage_Verbose : CValidErrItemView::eMessage_Terse; for ( SIZE_TYPE i = 0; i < num_items; ++i ) { CValidErrItemView* item = dynamic_cast<CValidErrItemView*>(items[i]); item->SetMessage(message); } m_Scroll->position(0,0); m_Scroll->redraw();}// private:class CMyScroll : public Fl_Scroll {public: CMyScroll(int x, int y, int w, int h, const char* label = 0) : Fl_Scroll(x, y, w, h, label) {} // Insure the scrollbars are the last children: void fix_scrollbar_order() { Fl_Widget** a = (Fl_Widget**)array(); if (a[children()-1] != &scrollbar) { int i,j; for (i = j = 0; j < children(); j++) if (a[j] != &hscrollbar && a[j] != &scrollbar) a[i++] = a[j]; a[i++] = &hscrollbar; a[i++] = &scrollbar; } } virtual void resize(int X, int Y, int W, int H) { fix_scrollbar_order(); // size all the children: int _W = W - scrollbar.w(); int _H = H - hscrollbar.h(); Fl_Widget*const* a = array(); for (int i=children()-2; i--;) { Fl_Widget* o = *a++; o->resize(o->x()+X-x(), o->y()+Y-y(), _W, _H); } Fl_Widget::resize(X,Y,W,H); }};Fl_Scroll* CValidErrorDisplay::CreateScroll(int X, int Y, int W, int H){ Fl_Boxtype box_type = FL_DOWN_FRAME; int dx = Fl::box_dx(box_type); int dy = Fl::box_dy(box_type); int dw = Fl::box_dw(box_type); int dh = Fl::box_dh(box_type); Fl_Group* group = new Fl_Group(X, Y, W, H); group->box(box_type); resizable(group); Fl_Scroll* scroll = new CMyScroll(X + dx, Y + dy, W - dw, H - dh); scroll->type(Fl_Scroll::VERTICAL); scroll->color(FL_WHITE); scroll->end(); group->end(); return scroll;}Fl_Pack* CValidErrorDisplay::CreatePack(int x, int y, int w, int h){ Fl_Pack* pack = new Fl_Pack(x, y, w, h, 0); pack->end(); return pack;}Fl_Box* CValidErrorDisplay::CreateShown(int x, int y, int w, int h){ Fl_Box* shown = new Fl_Box(x, y, w, h, 0); shown->labelfont(FL_COURIER); shown->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); return shown;}void CValidErrorDisplay::SetShown(int num){ m_ShownLabel = "Errors Shown: " + NStr::IntToString(num); m_Shown->label(m_ShownLabel.c_str());}END_NCBI_SCOPE/* * =========================================================================== * * $Log: valerror_display.cpp,v $ * Revision 1000.1 2004/06/01 21:03:20 gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * * Revision 1.4 2004/05/21 22:27:50 gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.3 2003/06/02 16:06:25 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.2 2003/04/22 16:24:52 shomrat * Fl -> FL * * Revision 1.1 2003/04/18 19:57:16 shomrat * Initial revision * * * =========================================================================== */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?