view_val_plg.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: view_val_plg.cpp,v $
  4.  * PRODUCTION Revision 1000.4  2004/06/01 21:03:26  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.17
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: view_val_plg.cpp,v 1000.4 2004/06/01 21:03:26 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Mati Shomrat
  35.  *
  36.  * File Description:
  37.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include "valview.hpp"
  41. #include "view_val_plg.hpp"
  42. #include <FL/Fl.H>
  43. #include <FL/Fl_Window.H>
  44. #include <corelib/ncbistd.hpp>
  45. #include <gui/core/plugin_utils.hpp>
  46. #include <gui/core/version.hpp>
  47. #include <gui/plugin/PluginRequest.hpp>
  48. #include <gui/plugin/PluginCommand.hpp>
  49. #include <gui/plugin/PluginCommandSet.hpp>
  50. #include <gui/utils/message_box.hpp>
  51. #include <objects/seqset/Seq_entry.hpp>
  52. #include <objtools/validator/validator.hpp>
  53. BEGIN_NCBI_SCOPE
  54. USING_SCOPE(objects);
  55. USING_SCOPE(validator);
  56.     
  57. void CViewValidator::GetInfo(CPluginInfo& info)
  58. {
  59.     info.Reset();
  60.     // version info macro
  61.     info.SetInfo(CPluginVersion::eMajor, CPluginVersion::eMinor, 0,
  62.                  string(__DATE__) + " " + string(__TIME__),
  63.                  "CViewValidator",
  64.                  "",
  65.                  "Default validator viewer",
  66.                  "");
  67.     // command info
  68.     CPluginCommand& cmd =
  69.         info.SetCommands().AddViewCommand(eViewCommand_new_view);
  70.     cmd.AddArgument("errors", "Validation errors",
  71.                     CPluginArg::eObject);
  72.     // The following arguments are needed for re-validation
  73.     cmd.AddOptionalArgument("object", "The validated object", 
  74.                             CSeq_entry::GetTypeInfo());
  75.     cmd.AddOptionalArgument("scope", "Scope of validation", 
  76.                             CPluginArg::eObject );
  77.     cmd.AddOptionalArgument("options", "Options for validation", 
  78.                             CPluginArg::eInteger);
  79. }
  80. static void s_ExitCallback(Fl_Widget* w, void* data)
  81. {
  82.     CViewValidator* view = static_cast<CViewValidator*>(data);
  83.     if (view) {
  84.         view->OnExit();
  85.     }
  86. }
  87. CViewValidator::CViewValidator(const CPluginMessage& msg, const string& pool)
  88.      : CView(),
  89.        m_ValidatorWindow(0)
  90. {
  91.     const CPluginCommand& args = msg.GetRequest().GetCommand();
  92.     if ( CPluginUtils::IsValid(args["errors"]) ) {
  93.         const CValidError& errors = 
  94.             dynamic_cast<const CValidError&>(args["errors"].AsObject());
  95.         if ( errors.TotalSize() == 0 ) {
  96.             NcbiMessageBox("Validation succeeded!", eDialog_Ok, eIcon_Info);
  97.         } else {
  98.             m_ValidatorWindow = new CValidatorView;
  99.             m_Window.reset(m_ValidatorWindow);
  100.             m_Window->callback(s_ExitCallback, this);
  101.             m_ValidatorWindow->SetValidError(errors);
  102.             x_SetDocument(args["document"].AsDocument());
  103.         }
  104.     } else {
  105.         // throw exception;
  106.     }
  107. }
  108.     
  109. CViewValidator::~CViewValidator(void)
  110. {
  111. }
  112. void CViewValidator::Update(TUpdateFlags flags)
  113. {
  114. }
  115. const string& CViewValidator::GetTitle() const
  116. {
  117.     static string s_str("Validator View");
  118.     return s_str;
  119. }
  120. END_NCBI_SCOPE
  121. /*
  122.  * ===========================================================================
  123.  *
  124.  * $Log: view_val_plg.cpp,v $
  125.  * Revision 1000.4  2004/06/01 21:03:26  gouriano
  126.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.17
  127.  *
  128.  * Revision 1.17  2004/05/21 22:27:50  gorelenk
  129.  * Added PCH ncbi_pch.hpp
  130.  *
  131.  * Revision 1.16  2004/05/20 12:40:07  dicuccio
  132.  * Use Fl_Window instead of CChild; include Fl_Window where necessary
  133.  *
  134.  * Revision 1.15  2004/04/07 13:05:11  dicuccio
  135.  * Changed view API - require CPluginMessage instead of CPluginArgSet
  136.  *
  137.  * Revision 1.14  2003/11/24 15:45:48  dicuccio
  138.  * Renamed CVersion to CPluginVersion
  139.  *
  140.  * Revision 1.13  2003/11/20 13:19:19  dicuccio
  141.  * Fixed calling parameters for views to match new requirements - pass view's message pool name as second param
  142.  *
  143.  * Revision 1.12  2003/10/10 17:20:29  dicuccio
  144.  * Implemented OnExit() as callback for all views when closed from system icon
  145.  *
  146.  * Revision 1.11  2003/09/04 14:54:24  dicuccio
  147.  * Use IDocument instead of CDocument.  Changed APIs to match changes in IView
  148.  *
  149.  * Revision 1.10  2003/07/23 19:14:10  dicuccio
  150.  * Moved logic for validating plugin arguments into CPluginUtils.
  151.  *
  152.  * Revision 1.9  2003/07/14 14:59:02  shomrat
  153.  * Removed menu item description
  154.  *
  155.  * Revision 1.8  2003/06/25 17:03:02  dicuccio
  156.  * Split CPluginHandle into a handle (pointer-to-implementation) and
  157.  * implementation file.  Lots of #include file clean-ups.
  158.  *
  159.  * Revision 1.7  2003/06/20 14:53:54  dicuccio
  160.  * Revised plugin registration - moved GetInfo() into the plugin handler
  161.  *
  162.  * Revision 1.6  2003/06/02 16:06:25  dicuccio
  163.  * Rearranged src/objects/ subtree.  This includes the following shifts:
  164.  *     - src/objects/asn2asn --> arc/app/asn2asn
  165.  *     - src/objects/testmedline --> src/objects/ncbimime/test
  166.  *     - src/objects/objmgr --> src/objmgr
  167.  *     - src/objects/util --> src/objmgr/util
  168.  *     - src/objects/alnmgr --> src/objtools/alnmgr
  169.  *     - src/objects/flat --> src/objtools/flat
  170.  *     - src/objects/validator --> src/objtools/validator
  171.  *     - src/objects/cddalignview --> src/objtools/cddalignview
  172.  * In addition, libseq now includes six of the objects/seq... libs, and libmmdb
  173.  * replaces the three libmmdb? libs.
  174.  *
  175.  * Revision 1.5  2003/05/30 14:15:44  dicuccio
  176.  * Renamed MessageBox to NcbiMessageBox because brain-dead MSVC thinks this is
  177.  * ::MessageBox and rewrites the symbol as MessageBoxA, which results in an
  178.  * unresolved external and conflict with the Win32 API :(.
  179.  *
  180.  * Revision 1.4  2003/05/30 13:04:14  dicuccio
  181.  * Use MessageBox() instead of fl_message()
  182.  *
  183.  * Revision 1.3  2003/05/01 19:04:11  shomrat
  184.  * Added call to set the view's document
  185.  *
  186.  * Revision 1.2  2003/04/22 16:24:05  shomrat
  187.  * Fl -> FL
  188.  *
  189.  * Revision 1.1  2003/04/18 19:57:41  shomrat
  190.  * Initial revision
  191.  *
  192.  *
  193.  * ===========================================================================
  194.  */