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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: demo_workspace.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 21:15:04  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: demo_workspace.cpp,v 1000.1 2004/06/01 21:15:04 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, Andrey Yazhuk
  35.  *
  36.  * File Description:
  37.  *    Test application for demonstartion of Workspace and Window Manager
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <corelib/ncbiapp.hpp>
  41. #include <corelib/ncbienv.hpp>
  42. #include <corelib/ncbiargs.hpp>
  43. #include <gui/widgets/workspace/frame_window.hpp>
  44. #include <gui/widgets/workspace/workspace.hpp>
  45. #include <gui/widgets/workspace/test_client.hpp>
  46. #include <FL/Fl_Group.H>
  47. USING_NCBI_SCOPE;
  48. enum EWSDemoCommands   {
  49.     eCmdExit = 10000,
  50. };
  51. /////////////////////////////////////////////////////////////////////////////
  52. //  CWorkspaceApp::
  53. class CWorkspaceApp :   public CNcbiApplication,
  54.                         public CCommandTarget
  55. {
  56. private:
  57.     virtual void Init(void);
  58.     virtual int  Run(void);
  59.     virtual void Exit(void);
  60.     void    x_Create();
  61.     void    x_Destroy();
  62.     
  63.     DECLARE_CMD_MAP()
  64.     void    OnExit();
  65. private:
  66.     CFrameWindow    *m_Frame;
  67.     CWorkspace*      m_Workspace;
  68. };
  69. void CWorkspaceApp::Init(void)
  70. {
  71.     // Create command-line argument descriptions class
  72.     auto_ptr<CArgDescriptions> arg_desc(new CArgDescriptions);
  73.     // Specify USAGE context
  74.     arg_desc->SetUsageContext(GetArguments().GetProgramBasename(),
  75.                               "Workspace Demo");
  76.     arg_desc->AddFlag("plastic", "Use the plastic scheme");
  77.     // Setup arg.descriptions for this application
  78.     SetupArgDescriptions(arg_desc.release());
  79. }
  80. /////////////////////////////////////////////////////////////////////////////
  81. //  Run test (printout arguments obtained from command-line)
  82. int CWorkspaceApp::Run(void)
  83. {
  84.     //Fl::scheme("plastic");
  85.     // Get arguments
  86.     CArgs args = GetArgs();
  87.     if (args["plastic"]) {
  88.         Fl::scheme("plastic");
  89.     }
  90.     x_Create();
  91.     m_Frame->show();
  92.     while (m_Frame->shown()) {
  93.         Fl::wait();
  94.     }
  95.     x_Destroy();
  96.     return 0;
  97. }
  98. /////////////////////////////////////////////////////////////////////////////
  99. //  Cleanup
  100. void CWorkspaceApp::Exit(void)
  101. {
  102.     SetDiagStream(0);
  103. }
  104. /////////////////////////////////////////////////////////////////////////////
  105. //  MAIN
  106. int main(int argc, const char* argv[])
  107. {
  108.     // Execute main application function
  109.     return CWorkspaceApp().AppMain(argc, argv, 0, eDS_Default, 0);
  110. }
  111. /////////////////////////////////////////////////////////////////////////////
  112. //  Application logic
  113. /// Here we define static part of top-level menu. It contains empty submenus that
  114. /// will be later used as merge points for clients
  115. DEFINE_MENU(BaseMenu)
  116.     SUBMENU("File")
  117.         MENU_ITEM(eCmdExit, "Exit")
  118.     END_SUBMENU()    
  119. END_MENU()
  120. BEGIN_CMD_MAP(CWorkspaceApp, CCommandTarget)
  121.     ON_COMMAND(eCmdExit, &CWorkspaceApp::OnExit)
  122. END_CMD_MAP()
  123. void    CWorkspaceApp::x_Create()
  124. {
  125.     // initilize Resource Manager and Menu 
  126.     CRef<CResourceManager> rm(new CResourceManager("e:\Projects\Graphics\"));
  127.     CMenu::SetResourceManager(rm);
  128.     
  129.     m_Frame = new CFrameWindow(800, 600, "");    
  130.     m_Frame->end();
  131.     m_Workspace = new CWorkspace(0, 0, 800, 600);
  132.     m_Frame->SetClient(m_Workspace);
  133.     /// create backbone of top-level menu
  134.     CMenuItem* root = CreateMenuItems(BaseMenu);
  135.     m_Frame->ResetMenu(*root);   
  136.     delete root;
  137.     
  138.     /// add Client and merge client menus
  139.     //###
  140.     m_Frame->AddChildCmdTarget(this); // let application process commands
  141. }
  142. void    CWorkspaceApp::x_Destroy()
  143. {
  144.     m_Frame->SetClient(NULL);
  145.     delete m_Workspace;
  146.     delete m_Frame;
  147. }
  148. void CWorkspaceApp::OnExit()
  149. {
  150.     m_Frame->hide();
  151. }
  152. /*
  153.  * ===========================================================================
  154.  * $Log: demo_workspace.cpp,v $
  155.  * Revision 1000.1  2004/06/01 21:15:04  gouriano
  156.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3
  157.  *
  158.  * Revision 1.3  2004/05/21 22:27:56  gorelenk
  159.  * Added PCH ncbi_pch.hpp
  160.  *
  161.  * Revision 1.2  2004/05/07 14:28:52  yazhuk
  162.  * Completely redesigned
  163.  *
  164.  * Revision 1.1  2004/02/04 19:57:15  yazhuk
  165.  * Initial revision
  166.  *
  167.  * ===========================================================================
  168.  */