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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: settings.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 18:17:30  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GUI_CORE___SETTINGS__HPP
  10. #define GUI_CORE___SETTINGS__HPP
  11. /*  $Id: settings.hpp,v 1000.0 2004/04/12 18:17:30 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:  Mike DiCuccio, Robert Smith
  37.  *
  38.  * File Description:
  39.  *    CSettings -- Repository for application settings.
  40.  */
  41. #include <corelib/ncbireg.hpp>
  42. #include <gui/config/PluginConfigCache.hpp>
  43. BEGIN_NCBI_SCOPE
  44. class NCBI_GUICONFIG_EXPORT CSettings : public CObject
  45. {
  46. public:
  47.     CSettings();
  48.     void    ShutDown(void);
  49.         
  50.     /// access the plugins' configurations.
  51.     bool                        IsSetPluginConfig(void) const;
  52.     bool                        CanGetPluginConfig(void) const;
  53.     const objects::CPluginConfigCache&   GetPluginConfig(void) const;
  54.     objects::CPluginConfigCache&         SetPluginConfig(void);
  55.     void                        SetPluginConfig(objects::CPluginConfigCache& pcc);
  56.     
  57.     /** reading the plugin config file */
  58.     /// Load the plugin config cache from the standard places.
  59.     void    LoadPluginConfig(void);
  60.     
  61.     /// Load the plugin config cache from a particular file.
  62.     /// path resolution for <std> and <home> is done.
  63.     void    LoadPluginConfig(const string& pcfile);
  64.     
  65.     /// Load the plugin config cache from a number of specified files.
  66.     /// path resolution for <std> and <home> is done.
  67.     /// paths are separated by new lines, returns, tabs or commas.
  68.     /// so can not contains any of those characters.
  69.     void    LoadPluginConfigs(const string& pcfiles);
  70.     
  71.     /** Writing the plugin config file */
  72.     /// write the plugin config cache to the standard place.
  73.     void    SavePluginConfig(void);
  74.     /// write the plugin config cache to a particular file.
  75.     void    SavePluginConfig(const string& pcfile);
  76.     
  77.     /** the file used as a default by SavePluginConfig, and Shutdown */
  78.     string  SetPluginConfigWriteFile(const string file_name);
  79.     string  GetPluginConfigWriteFile() const;
  80.     /// Load the plugin config cache from a string in memory.
  81.     /// assumed to be in ASN.1 text format.
  82.     void    LoadPluginConfigFromString(const string& asn1_str);
  83.     
  84.     /// Get the string containing our built-in config settings in ASN format.
  85.     static string  GetBuiltInPluginConfig();
  86.     
  87.     /// The following are Where the work is actually done.
  88.     /// They are static so they may be used independently without linking in the CSystemPath stuff
  89.     
  90.     /// Serialize the given plugin config cache to the given file.
  91.     static void    WritePluginConfig(const string& pcfile,
  92.                         const objects::CPluginConfigCache& pcc);
  93.     /// Serialize the given file into the plugin config cache.
  94.     static bool    ReadPluginConfig(const string& pcfile,
  95.                         objects::CPluginConfigCache& pcc);
  96.     /// Serialize the string into the plugin config cache.                    
  97.     static bool    ReadPluginConfigFromString(const string& asn1_str, 
  98.                         objects::CPluginConfigCache& config_cache);
  99.     /// Concatenate a bunch of cstrings into one string.
  100.     /// useful since on some platforms string literals must be of limited size 
  101.     /// <2048 on some Windows compilers.
  102.     static string   BuildString(const char* cstrings[]);
  103.     
  104. private:
  105.     /// Set the plugin config cache if it doesn't exist yet.
  106.     /// or merge it with this pcc if it does.
  107.     void    x_LoadPluginConfig(objects::CPluginConfigCache& pcc);
  108.     
  109.     /// our one and only cache of plugin configurations.
  110.     ///  read from ASN.1 file(s) and strings.
  111.     CRef<objects::CPluginConfigCache>  m_PCC;
  112.     /// the file to which we will write our PCC by default.    
  113.     string          m_PluginConfigSaveFile;
  114.     
  115.     /// array of c-strings that make up our 'built-in' configuration definitions.
  116.     /// last element must be a 0.  
  117.     /// see scripts/internal/
  118.     //static const char *    m_BuiltInASN[];
  119.     
  120. };
  121. END_NCBI_SCOPE
  122. #endif  // GUI_CORE___SETTINGS__HPP
  123. /*
  124.  * ===========================================================================
  125.  * $Log: settings.hpp,v $
  126.  * Revision 1000.0  2004/04/12 18:17:30  gouriano
  127.  * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.3
  128.  *
  129.  * Revision 1.3  2004/02/20 16:12:15  rsmith
  130.  * make GetBuiltInPluginConfig static
  131.  *
  132.  * Revision 1.2  2004/02/18 17:15:26  dicuccio
  133.  * Use correct export specifier
  134.  *
  135.  * Revision 1.1  2004/02/17 20:35:18  rsmith
  136.  * moved core/settings.[ch]pp and core/system_path.[ch]pp to config and utils, respectively.
  137.  *
  138.  * Revision 1.10  2004/01/16 21:43:14  rsmith
  139.  * Support for built-in configuration settings.
  140.  *
  141.  * Revision 1.9  2004/01/06 19:53:14  rsmith
  142.  * Add method to read PCC ASN.1 values from strings.
  143.  * Reorganize methods with static methods so that PCC reading and writing could be done
  144.  * without linking in all the gui framework stuff.
  145.  *
  146.  * Revision 1.8  2003/11/06 19:58:27  dicuccio
  147.  * Removed USING_SCOPE(objects).  Un-inlined code
  148.  *
  149.  * Revision 1.7  2003/10/10 18:40:32  ucko
  150.  * PluginConfigCache.hpp is now in gui/config.
  151.  *
  152.  * Revision 1.6  2003/08/25 18:54:01  rsmith
  153.  * took out all the color stuff and made this the manager of the Plugin Config Cache, including reading writing it to disk.
  154.  *
  155.  * Revision 1.5  2003/08/22 15:54:01  dicuccio
  156.  * Removed config file - accessible through CNcbiApplication.  Removed
  157.  * 'USING_SCOPE(objects)'
  158.  *
  159.  * Revision 1.4  2003/06/25 16:59:41  dicuccio
  160.  * Changed CPluginHandle into a pointer-to-implementation (the previous
  161.  * implementation is now the pointer held).  Lots of #include file clean-ups.
  162.  *
  163.  * Revision 1.3  2003/02/25 14:40:59  dicuccio
  164.  * Expanded CSettings functionality - store config file here
  165.  *
  166.  * Revision 1.2  2003/01/16 18:23:46  dicuccio
  167.  * Added export specifier to settings.hpp
  168.  *
  169.  * Revision 1.1  2003/01/15 20:55:58  dicuccio
  170.  * Initial revision
  171.  *
  172.  * ===========================================================================
  173.  */