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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: app_popup.hpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 19:50:51  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.10
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GUI_UTILS__APP_POPUP_HPP
  10. #define GUI_UTILS__APP_POPUP_HPP
  11. /*  $Id: app_popup.hpp,v 1000.2 2004/06/01 19:50:51 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Authors:  Peter Meric
  37.  *
  38.  * File Description:
  39.  *    CAppPopup -- launch a url in a web browser
  40.  *    widen() -- convert a string to a wstring
  41.  */
  42. #include <corelib/ncbiobj.hpp>
  43. #include <gui/gui.hpp>
  44. /** @addtogroup GUI_UTILS
  45.  *
  46.  * @{
  47.  */
  48. BEGIN_NCBI_SCOPE
  49. ///
  50. /// class CAppInfo defines an interface for application registration information
  51. ///
  52. class CAppInfo : public CObject
  53. {   
  54. public:
  55.     CAppInfo(const string& path = kEmptyStr);
  56.     virtual ~CAppInfo();
  57.     const string& GetExePath(void) const;
  58. private:
  59.     string m_Exepath;
  60. };
  61. ///
  62. /// enumerated file type information
  63. ///
  64. BEGIN_SCOPE(filetype)
  65. enum EFileType
  66. {   
  67.     eUnknown = 0,
  68.     ePdf
  69. };
  70. typedef enum EFileType TFileType;
  71. CNcbiOstream& operator<<(CNcbiOstream& strm, TFileType& ftype);
  72. END_SCOPE(filetype)
  73. ///
  74. /// class CAppRegistry defines the registry of application information for
  75. /// automated application link-outs
  76. ///
  77. class CAppRegistry
  78. {
  79. private:
  80.     typedef CRef<CAppInfo> TAppInfoRef;
  81.     typedef filetype::TFileType TFileType;
  82. public:
  83.     CAppRegistry();
  84.     virtual ~CAppRegistry();
  85.     const TAppInfoRef& Find(TFileType filetype) const;
  86.     TAppInfoRef& operator[](const TFileType& type);
  87. private:
  88.     typedef map<TFileType, TAppInfoRef> TRegistry;
  89.     TRegistry m_AppReg;
  90. };
  91. ///
  92. /// class CAppPopup allows applications to be launched based on standard
  93. /// registered types
  94. ///
  95. class NCBI_GUIUTILS_EXPORT CAppPopup
  96. {
  97. private:
  98.     typedef filetype::TFileType TFileType;
  99. public:
  100.     /// launch an application to handle a file
  101.     static bool PopupFile(const string& file,
  102.                           TFileType filetype = filetype::eUnknown);
  103.     /// launch an application to handle a URL
  104.     static bool PopupURL(const string& url);
  105.     /// retrieve the application registry
  106.     static CAppRegistry& GetRegistry(void);
  107. private:
  108.     static CAppRegistry m_Registry;
  109. };
  110. END_NCBI_SCOPE
  111. /* @} */
  112. /*
  113.  * ===========================================================================
  114.  * $Log: app_popup.hpp,v $
  115.  * Revision 1000.2  2004/06/01 19:50:51  gouriano
  116.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.10
  117.  *
  118.  * Revision 1.10  2004/05/03 12:41:09  dicuccio
  119.  * Split library into gui_utils and gui_objutils.  Added #include for gui/gui.hpp
  120.  *
  121.  * Revision 1.9  2004/04/16 14:27:17  dicuccio
  122.  * Added doxygen module tag
  123.  *
  124.  * Revision 1.8  2003/09/24 18:16:51  dicuccio
  125.  * Cleaned up C++ comment style.  Make sure to export CAppPopup.
  126.  *
  127.  * Revision 1.7  2003/08/21 12:14:57  dicuccio
  128.  * Added class descriptor comments.  Changed typedefs to be standards-compliant
  129.  *
  130.  * Revision 1.6  2003/06/21 12:05:41  meric
  131.  * removed $include <Types.h> for Mac OS
  132.  *
  133.  * Revision 1.5  2003/06/19 16:39:24  meric
  134.  * Renamed AppInfo to CAppInfo
  135.  *
  136.  * Revision 1.4  2003/06/19 16:33:06  meric
  137.  * Added CAppRegistry, a simple application registry for file types
  138.  * Added unix support for opening files associated with applications
  139.  *
  140.  * Revision 1.3  2003/06/17 19:35:21  meric
  141.  * Replace Popup() with PopupFile() and PopupURL()
  142.  *
  143.  * Revision 1.2  2003/06/16 15:55:58  dicuccio
  144.  * Work-in-progress: everything compiles, still much reorganization to be done.
  145.  * Moved generic functionality out of opengl/print/ and into gui/utils (print
  146.  * options, print dialogs, etc.).  Removed interactive state from CGlCanvas.
  147.  * Added hook in CView for opening standard print dialog, and for generic print
  148.  * handling.
  149.  *
  150.  * Revision 1.1  2003/06/13 19:01:28  meric
  151.  * Initial revision
  152.  *
  153.  *
  154.  * ===========================================================================
  155.  */
  156. #endif /// GUI_UTILS__APP_POPUP_HPP