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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: test_arg_dialog.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 20:45:01  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.16
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: test_arg_dialog.cpp,v 1000.2 2004/06/01 20:45:01 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:  Mike DiCuccio
  35.  *
  36.  * File Description:
  37.  *    Test application for plugins
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <corelib/ncbiapp.hpp>
  41. #include <corelib/ncbiargs.hpp>
  42. #include <corelib/ncbienv.hpp>
  43. #include <corelib/ncbireg.hpp>
  44. #include <gui/core/idocument.hpp>
  45. #include <gui/core/plugin_arg_dialog.hpp>
  46. #include <gui/core/plugin_exception.hpp>
  47. #include <gui/core/selection_buffer.hpp>
  48. #include <gui/plugin/PluginArgSet.hpp>
  49. #include <objects/seq/Bioseq.hpp>
  50. #include <serial/objostr.hpp>
  51. #include <serial/serial.hpp>
  52. USING_NCBI_SCOPE;
  53. USING_SCOPE(objects);
  54. //
  55. // a test exception class
  56. //
  57. class CPluginTestException : EXCEPTION_VIRTUAL_BASE public CException
  58. {
  59. public:
  60.     // Enumerated list of document management errors
  61.     enum EErrCode {
  62.         eTestFailed
  63.     };
  64.     // Translate the specific error code into a string representations of
  65.     // that error code.
  66.     virtual const char* GetErrCodeString(void) const
  67.     {
  68.         switch (GetErrCode()) {
  69.         case eTestFailed:   return "eTestFailed";
  70.         default:            return CException::GetErrCodeString();
  71.         }
  72.     }
  73.     NCBI_EXCEPTION_DEFAULT(CPluginTestException, CException);
  74. };
  75. class CPluginTestApp : public CNcbiApplication
  76. {
  77. public:
  78.     CPluginTestApp();
  79. private:
  80.     int m_Plugins;
  81.     virtual void Init(void);
  82.     virtual int  Run(void);
  83.     virtual void Exit(void);
  84. };
  85. CPluginTestApp::CPluginTestApp()
  86.     : m_Plugins(0)
  87. {
  88. }
  89. /////////////////////////////////////////////////////////////////////////////
  90. //  Init test for all different types of arguments
  91. void CPluginTestApp::Init(void)
  92. {
  93.     // Create command-line argument descriptions class
  94.     auto_ptr<CArgDescriptions> arg_desc(new CArgDescriptions);
  95.     // Specify USAGE context
  96.     arg_desc->SetUsageContext(GetArguments().GetProgramBasename(),
  97.                               "Plug-in test application");
  98.     // Setup arg.descriptions for this application
  99.     SetupArgDescriptions(arg_desc.release());
  100. }
  101. int CPluginTestApp::Run(void)
  102. {
  103.     //
  104.     // create a dummy set of arguments for which a dialog box will be created
  105.     //
  106.     CPluginArgSet args;
  107.     args.AddArgument("bioseq", "Bioseq to blast", CBioseq::GetTypeInfo());
  108.     CPluginArg& arg =
  109.         args.AddArgument("req-type", "Request type", CPluginArg::eString);       
  110.     arg.SetLong_desc("This is the tooltipnspreading gleefully over "
  111.                      "many linesnDoes it work?");
  112.     args.SetConstraint("req-type",
  113.                        ((*CPluginValueConstraint::CreateSet()),
  114.                         "finish-params", "get-databases", "get-matrices",
  115.                         "get-search-results", "get-sequences",
  116.                         "queue-search"));
  117.     args.AddDefaultArgument("subject", "Database for search",
  118.                             CPluginArg::eString, "nr");
  119.     args.SetConstraint("subject",
  120.                        ((*CPluginValueConstraint::CreateSet()),
  121.                         "nr", "est", "est_human", "est_mouse", "est_others",
  122.                         "gss", "htgs", "pat", "pdb", "month", "alu_repeats",
  123.                         "dbsts", "chromosome", "wgs"));
  124.     args.AddArgument("service", "BLAST service", CPluginArg::eString);
  125.     args.SetConstraint("service",
  126.                        ((*CPluginValueConstraint::CreateSet()),
  127.                         "plain", "psiblast", "phiblast", "rpsblast",
  128.                         "megablast", "vecscreen"));
  129.     args.AddArgument("program", "BLAST program", CPluginArg::eString);
  130.     args.SetConstraint("program",
  131.                        ((*CPluginValueConstraint::CreateSet()),
  132.                         "blastn", "blastp", "blastx", "tblastn", 
  133.                         "tblastx"));       
  134.     args.AddArgument("file1", "Input file", CPluginArg::eString);
  135.     args.AddArgument("threshold", "Threshold", CPluginArg::eDouble);
  136.     args.AddDefaultArgument("def1", "Default Factor",
  137.                             CPluginArg::eInteger, "10000");
  138.     args.AddOptionalArgument("opt1", "Twiddle Factor",
  139.                              CPluginArg::eDouble);
  140.     args.AddOptionalArgument("opt2", "Fudge Factor",
  141.                              CPluginArg::eInteger);
  142.     args.AddDefaultArgument("Optflag", "Option Flag", 
  143.                             CPluginArg::eBoolean, "false");
  144.     args.AddDefaultArgument("Defflag", "Default Flag", 
  145.                             CPluginArg::eBoolean, "true");
  146.     args.AddArgument("Inflag", "Input Flag", CPluginArg::eBoolean);
  147.     args.AddDefaultArgument("Outflag", "Output Flag", 
  148.                             CPluginArg::eBoolean, "false");
  149.     args.AddDefaultArgument("Upflag", "Up Flag", 
  150.                             CPluginArg::eBoolean, "true");
  151.     args.AddDefaultArgument("Downflag", "Down Flag", 
  152.                             CPluginArg::eBoolean, "false");
  153.     CPluginHandle              h;
  154.     TConstScopedObjects selection;
  155.     CPluginArgDialog           dlg(h, args, selection);
  156.     dlg.Size(500, 300);
  157.     if (dlg.ShowModal() != eCancel) {
  158.         cerr << "ok chosen, will process..." << endl;
  159.         CObjectOStream* os = CObjectOStream::Open(eSerial_AsnText, cout);
  160.         *os << args;
  161.     } else {
  162.         cerr << "cancel chosen, no processing done." << endl;
  163.     }
  164.     return 0;
  165. }
  166. /////////////////////////////////////////////////////////////////////////////
  167. //  Cleanup
  168. void CPluginTestApp::Exit(void)
  169. {
  170.     SetDiagStream(0);
  171. }
  172. /////////////////////////////////////////////////////////////////////////////
  173. //  MAIN
  174. int main(int argc, const char* argv[])
  175. {
  176.     // Execute main application function
  177.     return CPluginTestApp().AppMain(argc, argv, 0, eDS_Default, 0);
  178. }
  179. /*
  180.  * ===========================================================================
  181.  * $Log: test_arg_dialog.cpp,v $
  182.  * Revision 1000.2  2004/06/01 20:45:01  gouriano
  183.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.16
  184.  *
  185.  * Revision 1.16  2004/05/21 22:27:41  gorelenk
  186.  * Added PCH ncbi_pch.hpp
  187.  *
  188.  * Revision 1.15  2004/04/07 12:49:34  dicuccio
  189.  * Use TConstScopedObjects instead of CSelectionBuffer::TSelItems
  190.  *
  191.  * Revision 1.14  2003/10/24 02:13:15  ucko
  192.  * Fix for new CPluginArgDialog interface
  193.  *
  194.  * Revision 1.13  2003/10/07 17:26:15  dicuccio
  195.  * FIxed for URL -> Value conversion
  196.  *
  197.  * Revision 1.12  2003/09/29 15:42:05  dicuccio
  198.  * Deprecated gui/scope.hpp.  Merged gui/core/types.hpp into gui/types.hpp
  199.  *
  200.  * Revision 1.11  2003/09/04 14:01:52  dicuccio
  201.  * Introduce IDocument and IView as abstract base classes for CDocument and
  202.  * CView
  203.  *
  204.  * Revision 1.10  2003/07/17 11:59:50  friedman
  205.  * Include CSelectionBuffer::TSelList for SertArgs. Test Boolesn/Flag dialog
  206.  * widgets.
  207.  *
  208.  * Revision 1.9  2003/07/16 15:22:36  dicuccio
  209.  * Implemented tool tips for arguments
  210.  *
  211.  * Revision 1.8  2003/06/20 14:47:41  dicuccio
  212.  * Revised handling of plugin registration (moved GetInfo() out of plugin
  213.  * factory and into each handler as a static function)
  214.  *
  215.  * Revision 1.7  2003/05/19 13:36:00  dicuccio
  216.  * Moved gui/core/plugin/ -> gui/plugin/.  Merged gui/core/algo, gui/core/doc/,
  217.  * and gui/core/view/ into one library (gui/core/)
  218.  *
  219.  * Revision 1.6  2003/05/09 16:49:01  dicuccio
  220.  * Added explicit check so that default set-constraint arguments will have their
  221.  * values shown
  222.  *
  223.  * Revision 1.5  2003/04/25 14:15:24  dicuccio
  224.  * Fix compilation errors resulting from changes to plugin API
  225.  *
  226.  * Revision 1.4  2003/04/21 15:13:15  dicuccio
  227.  * Added real-life test arguments
  228.  *
  229.  * Revision 1.3  2003/04/16 11:39:50  dicuccio
  230.  * Added torture-test menu with many entries
  231.  *
  232.  * Revision 1.2  2003/03/28 19:20:19  dicuccio
  233.  * Added default argument for testing
  234.  *
  235.  * Revision 1.1  2003/03/20 19:57:28  dicuccio
  236.  * Initial revision
  237.  *
  238.  * ===========================================================================
  239.  */