filter.cpp
来自「ncbi源码」· C++ 代码 · 共 301 行
CPP
301 行
/* * =========================================================================== * PRODUCTION $Log: filter.cpp,v $ * PRODUCTION Revision 1000.1 2004/06/01 21:03:16 gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3 * PRODUCTION * =========================================================================== *//* $Id: filter.cpp,v 1000.1 2004/06/01 21:03:16 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 <FL/Fl.H>#include <FL/Fl_Choice.H>#include <FL/Fl_Box.H>#include <FL/Fl_Button.H>#include <FL/Fl_Check_Button.H>#include <FL/Fl_Input.H>#include <algorithm>#include "filter.hpp"#include "valerror_display.hpp"#include "erritem_view.hpp"BEGIN_NCBI_SCOPE// Public:CValidatorFilter::CValidatorFilter(int x, int y, EDiagSev min, EDiagSev max, bool verbose) : Fl_Group(x, y, 580, 134, 0){ box(FL_ENGRAVED_BOX); resizable(0); AddSeverityFilter(min, max); AddErrCodeFilter(); AddSearchFilter(); AddVerboseFilter(verbose); end();}CValidatorFilter::~CValidatorFilter(void){}string CValidatorFilter::GetErrCode(void) const{ return (m_ErrCodesChoice->value() == 0) ? kEmptyStr : m_ErrCodesChoice->text();}string CValidatorFilter::GetSearchString(void) const{ return m_SearchInput->value();}EDiagSev CValidatorFilter::GetMinSev(void) const{ return static_cast<EDiagSev>(m_MinSevChoice->value());}EDiagSev CValidatorFilter::GetMaxSev(void) const{ return static_cast<EDiagSev>(m_MaxSevChoice->value());}CValidErrItemView::EMessage CValidatorFilter::GetMessage(void) const{ return m_VerboseButton->value() ? CValidErrItemView::eMessage_Verbose : CValidErrItemView::eMessage_Terse;}void CValidatorFilter::SetErrCodes(const set<string>& errcodes){ m_ErrCodesChoice->clear(); ITERATE( set<string>, errcode, errcodes ) { m_ErrCodesChoice->add(errcode->c_str(), 0, 0); } m_ErrCodesChoice->value(0);}// Private:void CValidatorFilter::AddSeverityFilter(EDiagSev min, EDiagSev max){ static const char* sevstr = "Info|Warning|Error|Critical"; Fl_Box* b = new Fl_Box(x() + 2, y() + 5, 130, 25, "Severity - Min:"); b->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); b->labelfont(FL_COURIER); m_MinSevChoice = new Fl_Choice(x() + 130, y() + 5, 85, 25); m_MinSevChoice->labelfont(FL_COURIER); m_MinSevChoice->add(sevstr); m_MinSevChoice->value(min); m_MinSevChoice->callback((Fl_Callback*)CValidatorFilter::cb_OnSevChange, this); b = new Fl_Box(x() + 230, y() + 5, 50, 25, "Max:"); b->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); b->labelfont(FL_COURIER); m_MaxSevChoice = new Fl_Choice(x() + 270, y() + 5, 85, 25); m_MaxSevChoice->labelfont(FL_COURIER); m_MaxSevChoice->add(sevstr); m_MaxSevChoice->value(max); m_MaxSevChoice->callback((Fl_Callback*)CValidatorFilter::cb_OnSevChange, this); InactivateSev();}void CValidatorFilter::AddErrCodeFilter(void){ Fl_Box* b = new Fl_Box(x() + 2, y() + 42, 130, 25, "Error Codes:"); b->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); b->labelfont(FL_COURIER); m_ErrCodesChoice = new Fl_Choice(x() + 130, y() + 42, 250, 25); m_ErrCodesChoice->labelfont(FL_COURIER); m_ErrCodesChoice->callback((Fl_Callback*)CValidatorFilter::cb_OnErrCodeChange, this);}void CValidatorFilter::AddSearchFilter(void) { m_SearchButton = new Fl_Button(x() + 5, y() + 78, 90, 25, "Search:"); m_SearchButton->labelfont(FL_COURIER); m_SearchButton->deactivate(); m_SearchButton->callback((Fl_Callback*)CValidatorFilter::cb_OnSearchPressed, this); m_SearchInput = new Fl_Input(x() + 130, y() + 78, 200, 25, 0); m_SearchInput->callback((Fl_Callback*)CValidatorFilter::cb_OnSearchInput, this); m_SearchInput->when(FL_WHEN_CHANGED | FL_WHEN_ENTER_KEY_ALWAYS);}void CValidatorFilter::AddVerboseFilter(bool verbose){ m_VerboseButton = new Fl_Check_Button(x() + 2, y() + 110, 25 , 25, " Verbose"); m_VerboseButton->labelfont(FL_COURIER); m_VerboseButton->when(FL_WHEN_RELEASE); m_VerboseButton->value(verbose); m_VerboseButton->callback((Fl_Callback*)CValidatorFilter::cb_OnVerboseChange, this);}void CValidatorFilter::InactivateSev(void){ int size = m_MinSevChoice->size() - 1; unsigned int flag; for ( int i = 0; i < size; ++i) { flag = (i > m_MaxSevChoice->value()) ? FL_MENU_INACTIVE : 0; m_MinSevChoice->mode(i, flag); } for ( int i = 0; i < size; ++i) { flag = (i < m_MinSevChoice->value()) ? FL_MENU_INACTIVE : 0; m_MaxSevChoice->mode(i, flag); }}// Callbacks:void CValidatorFilter::cb_OnSevChange(Fl_Choice*, CValidatorFilter* _this){ _this->x_OnSevChange();}void CValidatorFilter::x_OnSevChange(void){ InactivateSev(); m_Display->Update(this);}void CValidatorFilter::cb_OnErrCodeChange(Fl_Choice*, CValidatorFilter* _this){ _this->x_OnOnErrCodeChange();}void CValidatorFilter::x_OnOnErrCodeChange(void){ m_Display->Update(this);}void CValidatorFilter::cb_OnSearchPressed(Fl_Button*, CValidatorFilter* _this){ _this->x_OnSearchPressed();}void CValidatorFilter::x_OnSearchPressed(void){ m_Display->Update(this);}void CValidatorFilter::cb_OnSearchInput(Fl_Input*, CValidatorFilter* _this){ _this->x_OnSearchInput();}void CValidatorFilter::x_OnSearchInput(void){ string value = m_SearchInput->value(); if ( value.empty() ) { m_SearchButton->deactivate(); } else { m_SearchButton->activate(); } if ( value.empty() || Fl::event_key() == FL_Enter ) { m_Display->Update(this); }}void CValidatorFilter::cb_OnVerboseChange(Fl_Check_Button* b, CValidatorFilter* _this){ _this->x_OnVerboseChange(b);}void CValidatorFilter::x_OnVerboseChange(Fl_Check_Button* b){ m_Display->DisplayVerbose(b->value() != 0);}END_NCBI_SCOPE/* * =========================================================================== * * $Log: filter.cpp,v $ * Revision 1000.1 2004/06/01 21:03:16 gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3 * * Revision 1.3 2004/05/21 22:27:50 gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.2 2003/04/22 16:25:32 shomrat * Fl -> FL * * Revision 1.1 2003/04/18 19:56:49 shomrat * Initial revision * * * =========================================================================== */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?