valview.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
- /*
- * ===========================================================================
- * PRODUCTION $Log: valview.cpp,v $
- * PRODUCTION Revision 1000.1 2004/06/01 21:03:22 gouriano
- * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
- * PRODUCTION
- * ===========================================================================
- */
- /* $Id: valview.cpp,v 1000.1 2004/06/01 21:03:22 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:
- * Main graphical view class for the validator
- *
- */
- #include <ncbi_pch.hpp>
- #include <corelib/ncbistd.hpp>
- #include <objtools/validator/validator.hpp>
- #include <FL/Fl_Double_Window.H>
- #include <FL/Fl_Menu_Item.H>
- #include <FL/Fl_Menu_Bar.H>
- #include <FL/Fl_Button.H>
- #include <FL/Fl_Return_Button.H>
- #include <FL/Fl_Box.H>
- #include <FL/Fl_Widget.H>
- #include <set>
- #include "valview.hpp"
- #include "filter.hpp"
- #include "valerror_display.hpp"
- BEGIN_NCBI_SCOPE
- USING_SCOPE(objects::validator);
- Fl_Menu_Item CValidatorView::sm_Menutable[] = {
- {"&File", 0, 0, 0, FL_SUBMENU},
- {"&Revalidate", FL_CTRL+'r', 0, 0, FL_MENU_DIVIDER},
- {"&Close", 0, (Fl_Callback*)CValidatorView::cb_OnClose},
- {0},
- {"&Edit", 0, 0, 0, FL_SUBMENU},
- {"Cu&t", FL_CTRL+'x'},
- {"&Copy", FL_CTRL+'c'},
- {"&Paste", FL_CTRL+'v', 0, 0, FL_MENU_DIVIDER},
- {"&Options...", 0, 0, 0},
- {0},
- {0}
- };
- const int CValidatorView::sm_MinW = 400;
- const int CValidatorView::sm_MinH = 500;
- CValidatorView::CValidatorView(int w, int h)
- : Fl_Window(0, 0, w, h, "Validator View"),
- m_Filter(0),
- m_Display(0),
- m_CloseButton(0),
- m_RevalidateButton(0),
- m_Menubar(0),
- m_Errors(0)
- {
- box(FL_ENGRAVED_BOX);
- resizable(0);
- AddMenuBar();
- AddFilter();
- AddDisplay();
- //resizable(m_Display);
- AddButtons();
- m_Filter->SetDisplay(m_Display);
- end();
- }
- CValidatorView::~CValidatorView(void)
- {
- }
- void CValidatorView::SetValidError(const CValidError& errors)
- {
- m_Errors.Reset(&errors);
- PopulateFilter(errors);
- m_Display->SetValidError(errors);
- }
- void CValidatorView::resize(int X, int Y, int W, int H)
- {
- if ( W < sm_MinW ) {
- W = sm_MinW;
- }
- if ( H < sm_MinH ) {
- H = sm_MinH;
- }
- Fl_Window::resize(X, Y, W, H);
- }
- void CValidatorView::cb_OnClose(Fl_Widget* w, void *user_data)
- {
- CValidatorView* _this = 0;
- if ( dynamic_cast<Fl_Button*>(w) ) {
- _this = static_cast<CValidatorView*>(user_data);
- } else if ( dynamic_cast<Fl_Menu_*>(w) ) {
- _this = static_cast<CValidatorView*>(w->user_data());
- }
- if ( _this != 0 ) {
- _this->x_OnClose();
- }
- }
- void CValidatorView::x_OnClose(void)
- {
- hide();
- }
- // Private:
- void CValidatorView::AddMenuBar(void)
- {
- m_Menubar = new Fl_Menu_Bar(1, 1, w()-2, 25, 0);
- m_Menubar->copy(sm_Menutable);
- m_Menubar->box(FL_ENGRAVED_BOX);
- m_Menubar->user_data(this);
- }
- void CValidatorView::AddFilter(void)
- {
- m_Filter = new CValidatorFilter(w() / 60, 5 * (h() / 70));
- }
- void CValidatorView::AddDisplay(void)
- {
- int fh = m_Filter->y() + m_Filter->h();
- m_Display = new CValidErrorDisplay(10, fh + 20, w() - 20, h() - fh - 80);
- }
- void CValidatorView::AddButtons(void)
- {
- int H = 25;
- int X = x();
- int Y = y() + h() - H - 5;
- int W = w();
-
- Fl_Group* g = new Fl_Group(X, Y, W, H);
- new Fl_Box(X, Y, 10, H);
- AddRevalidateButton(X + 10, Y, 100, H);
- g->resizable(new Fl_Box(X + 110, Y, W - 110, H));
-
- g->end();
- //AddCloseButton(X, Y);
- }
- void CValidatorView::AddRevalidateButton(int X, int Y, int W, int H)
- {
- m_RevalidateButton = new Fl_Button(X, Y, W, H, "Revalidate");
- }
- void CValidatorView::AddCloseButton(int X, int Y, int W, int H)
- {
- m_CloseButton = new Fl_Return_Button(X, Y, W, H, "Close");
- m_CloseButton->callback((Fl_Callback*)CValidatorView::cb_OnClose, this);
- }
- void CValidatorView::PopulateFilter(const CValidError& errors)
- {
- set<string> err_codes;
- err_codes.insert("All");
- for ( CValidError_CI iter(errors); iter; ++iter ) {
- err_codes.insert(iter->GetErrCode());
- }
- m_Filter->SetErrCodes(err_codes);
- }
- END_NCBI_SCOPE
- /*
- * ===========================================================================
- *
- * $Log: valview.cpp,v $
- * Revision 1000.1 2004/06/01 21:03:22 gouriano
- * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
- *
- * Revision 1.6 2004/05/21 22:27:50 gorelenk
- * Added PCH ncbi_pch.hpp
- *
- * Revision 1.5 2004/05/20 12:40:07 dicuccio
- * Use Fl_Window instead of CChild; include Fl_Window where necessary
- *
- * Revision 1.4 2003/10/10 17:20:29 dicuccio
- * Implemented OnExit() as callback for all views when closed from system icon
- *
- * 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:25 shomrat
- * Fl -> FL
- *
- * Revision 1.1 2003/04/18 19:57:31 shomrat
- * Initial revision
- *
- *
- * ===========================================================================
- */