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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: test_config_dlg.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 20:46:09  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id $
  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:  Robert Smith
  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 <serial/serial.hpp>
  45. #include <serial/objostr.hpp>
  46. #include <serial/objistr.hpp>
  47. #include <corelib/ncbifile.hpp>
  48. #include <gui/config/PluginConfigCache.hpp>
  49. #include <gui/config/settings.hpp>
  50. #include <gui/widgets/seq_graphic/color_conf.hpp>
  51. #include <gui/widgets/seq_graphic/render_policy_conf.hpp>
  52. #include <gui/widgets/seq_graphic/pane_content_conf.hpp>
  53. #include <gui/dialogs/config/config_dlg.hpp>
  54. #include <gui/dialogs/config/theme_dlg.hpp>
  55. #include <gui/dialogs/config/theme_mediator.hpp>
  56. #include <gui/dialogs/config/theme_config_panel.hpp>
  57. #include <gui/dialogs/config/theme_config_panel2.hpp>
  58. #include <gui/widgets/seq_graphic/seqgraphic_conf.hpp>
  59. #include <FL/Fl.H>
  60. #include <gui/utils/fltk_utils.hpp>
  61. //#include "test_theme_set.hpp"
  62. //#include "test_config_mediat.hpp"
  63. //#include "test_config_panel.hpp"
  64. //#include "test_settings.hpp"
  65. USING_NCBI_SCOPE;
  66. USING_SCOPE(objects);
  67. static string PreDefinedASN();
  68. //
  69. // a test exception class
  70. //
  71. class CPluginTestException : EXCEPTION_VIRTUAL_BASE public CException
  72. {
  73. public:
  74.     // Enumerated list of document management errors
  75.     enum EErrCode {
  76.         eTestFailed
  77.     };
  78.     // Translate the specific error code into a string representations of
  79.     // that error code.
  80.     virtual const char* GetErrCodeString(void) const
  81.     {
  82.         switch (GetErrCode()) {
  83.         case eTestFailed:   return "eTestFailed";
  84.         default:            return CException::GetErrCodeString();
  85.         }
  86.     }
  87.     NCBI_EXCEPTION_DEFAULT(CPluginTestException, CException);
  88. };
  89. class CPluginTestApp : public CNcbiApplication
  90. {
  91. public:
  92.     CPluginTestApp();
  93. private:
  94.     virtual void Init(void);
  95.     virtual int  Run(void);
  96.     virtual void Exit(void);
  97. };
  98. CPluginTestApp::CPluginTestApp()
  99. {
  100. }
  101. /////////////////////////////////////////////////////////////////////////////
  102. //  Init test for all different types of arguments
  103. void CPluginTestApp::Init(void)
  104. {
  105.     // Create command-line argument descriptions class
  106.     auto_ptr<CArgDescriptions> arg_desc(new CArgDescriptions);
  107.     // Specify USAGE context
  108.     arg_desc->SetUsageContext(GetArguments().GetProgramBasename(),
  109.                               "Test for the Configuration dialog.");
  110.     // Setup arg.descriptions for this application
  111.     SetupArgDescriptions(arg_desc.release());
  112. }
  113. int CPluginTestApp::Run(void)
  114. {
  115.     CFltkUtils::Lock();
  116.     Fl::visual(FL_DOUBLE | FL_RGB);
  117.     // Fl::scheme("plastic");
  118.     
  119.     CRef<objects::CPluginConfigCache> pcc(new objects::CPluginConfigCache);
  120.     string  pcc_file("~/test_config.asn");
  121.     CSettings::ReadPluginConfigFromString(CSettings::GetBuiltInPluginConfig(), *pcc);
  122.     CRef<CSeqGraphicConfig> configSettings(new CSeqGraphicConfig(pcc));
  123.     // create panel
  124.     {    
  125.         CThemeConfigPanel  preference_panel;
  126.            
  127.         // create configuration mediator from data set and panel
  128.         CThemeMediator preference_mediator(*configSettings, preference_panel);
  129.         
  130.         // create and display dialog given the mediator.
  131.         //CConfigDlg preference_dialog(preference_mediator);
  132.         CThemeDlg  preference_dialog(preference_mediator);
  133.         int dlg_ret = preference_dialog.ShowModal();
  134.         if (eCancel != dlg_ret) {
  135.             cerr << "ok chosen" << endl;
  136.             // CSettings::WritePluginConfig( pcc_file , *pcc);
  137.         } else {
  138.             cerr << "cancel chosen, no processing done." << endl;
  139.         }
  140.     }
  141.     {    
  142.         CThemeConfigPanel2  preference_panel;
  143.         preference_panel.SetLayoutDirection(CThemeConfigPanel2::eLayoutDirection_Vertical); 
  144.            
  145.         // create configuration mediator from data set and panel
  146.         CThemeMediator preference_mediator(*configSettings, preference_panel);
  147.         
  148.         // create and display dialog given the mediator.
  149.         //CConfigDlg preference_dialog(preference_mediator);
  150.         CThemeDlg  preference_dialog(preference_mediator);
  151.         int dlg_ret = preference_dialog.ShowModal();
  152.         if (eCancel != dlg_ret) {
  153.             cerr << "ok chosen" << endl;
  154.             // CSettings::WritePluginConfig( pcc_file , *pcc);
  155.         } else {
  156.             cerr << "cancel chosen, no processing done." << endl;
  157.         }
  158.     }
  159.     {    
  160.         CThemeConfigPanel2  preference_panel;
  161.         preference_panel.SetLayoutDirection(CThemeConfigPanel2::eLayoutDirection_Horizontal); 
  162.         // create configuration mediator from data set and panel
  163.         CThemeMediator preference_mediator(*configSettings, preference_panel);
  164.         
  165.         // create and display dialog given the mediator.
  166.         //CConfigDlg preference_dialog(preference_mediator);
  167.         CThemeDlg  preference_dialog(preference_mediator);
  168.         EDialogReturnValue dlg_ret = preference_dialog.ShowModal();
  169.         if (eCancel != dlg_ret) {
  170.             cerr << "ok chosen" << endl;
  171.             // CSettings::WritePluginConfig( pcc_file , *pcc);
  172.         } else {
  173.             cerr << "cancel chosen, no processing done." << endl;
  174.         }
  175.     }
  176.     return 0;
  177. }
  178. /////////////////////////////////////////////////////////////////////////////
  179. //  Cleanup
  180. void CPluginTestApp::Exit(void)
  181. {
  182.     SetDiagStream(0);
  183. }
  184. namespace {
  185. #include "settings_builtin.cpp"
  186. }
  187. static string PreDefinedASN() 
  188. {
  189.     string result;
  190.     
  191.     for (const char** ps = m_BuiltInASN; ps != 0  &&  *ps != 0; ++ps) {
  192.         result += *ps;
  193.     }
  194.     return result;
  195. }
  196. /////////////////////////////////////////////////////////////////////////////
  197. //  MAIN
  198. int main(int argc, const char* argv[])
  199. {
  200.     // Execute main application function
  201.     return CPluginTestApp().AppMain(argc, argv, 0, eDS_Default, 0);
  202. }
  203. /*
  204.  * ===========================================================================
  205.  * $Log: test_config_dlg.cpp,v $
  206.  * Revision 1000.1  2004/06/01 20:46:09  gouriano
  207.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  208.  *
  209.  * Revision 1.4  2004/05/21 22:27:41  gorelenk
  210.  * Added PCH ncbi_pch.hpp
  211.  *
  212.  * Revision 1.3  2004/02/20 16:07:17  rsmith
  213.  * Make a bit more portable and show all style of theme dialogs.
  214.  *
  215.  * Revision 1.2  2004/02/17 20:35:24  rsmith
  216.  * moved core/settings.[ch]pp and core/system_path.[ch]pp to config and utils, respectively.
  217.  *
  218.  * Revision 1.1  2004/02/12 14:57:45  rsmith
  219.  * initial checkin. Moved from gui/config/test
  220.  *
  221.  * Revision 1.1  2003/11/18 20:17:15  rsmith
  222.  * Initial checkin. Demo of gui_config dialog.
  223.  *
  224.  * Revision 1.14  2003/10/24 02:13:15  ucko
  225.  * Fix for new CPluginArgDialog interface
  226.  *
  227.  * Revision 1.13  2003/10/07 17:26:15  dicuccio
  228.  * FIxed for URL -> Value conversion
  229.  *
  230.  * Revision 1.12  2003/09/29 15:42:05  dicuccio
  231.  * Deprecated gui/scope.hpp.  Merged gui/core/types.hpp into gui/types.hpp
  232.  *
  233.  * Revision 1.11  2003/09/04 14:01:52  dicuccio
  234.  * Introduce IDocument and IView as abstract base classes for CDocument and CView
  235.  *
  236.  * Revision 1.10  2003/07/17 11:59:50  friedman
  237.  * Include CSelectionBuffer::TSelList for SertArgs. Test Boolesn/Flag dialog widgets.
  238.  *
  239.  * Revision 1.9  2003/07/16 15:22:36  dicuccio
  240.  * Implemented tool tips for arguments
  241.  *
  242.  * Revision 1.8  2003/06/20 14:47:41  dicuccio
  243.  * Revised handling of plugin registration (moved GetInfo() out of plugin factory
  244.  * and into each handler as a static function)
  245.  *
  246.  * Revision 1.7  2003/05/19 13:36:00  dicuccio
  247.  * Moved gui/core/plugin/ -> gui/plugin/.  Merged gui/core/algo, gui/core/doc/,
  248.  * and gui/core/view/ into one library (gui/core/)
  249.  *
  250.  * Revision 1.6  2003/05/09 16:49:01  dicuccio
  251.  * Added explicit check so that default set-constraint arguments will have their
  252.  * values shown
  253.  *
  254.  * Revision 1.5  2003/04/25 14:15:24  dicuccio
  255.  * Fix compilation errors resulting from changes to plugin API
  256.  *
  257.  * Revision 1.4  2003/04/21 15:13:15  dicuccio
  258.  * Added real-life test arguments
  259.  *
  260.  * Revision 1.3  2003/04/16 11:39:50  dicuccio
  261.  * Added torture-test menu with many entries
  262.  *
  263.  * Revision 1.2  2003/03/28 19:20:19  dicuccio
  264.  * Added default argument for testing
  265.  *
  266.  * Revision 1.1  2003/03/20 19:57:28  dicuccio
  267.  * Initial revision
  268.  *
  269.  * ===========================================================================
  270.  */