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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: config_mediator.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 20:45:34  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: config_mediator.cpp,v 1000.1 2004/06/01 20:45:34 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:  Robert Smith
  35.  *
  36.  * File Description:
  37.  *  Configuration Panel Interpreter default implementation.
  38.  *  The interface that any configuration/preference dialog uses
  39.  *  to modify its data and get its particular gui widges (IPanel).
  40.  *
  41.  *  Derived classes with this interface mediate between IConfigPanel 
  42.  *  and classes with the CSettingsSet base class, in the context of a
  43.  *  CConfigDlg.
  44.  */
  45. #include <ncbi_pch.hpp>
  46. #include <gui/dialogs/config/config_mediator.hpp>
  47. #include <gui/config/settings_set.hpp>
  48. #include <gui/dialogs/config/config_panel.hpp>
  49. BEGIN_NCBI_SCOPE
  50. CConfigMediator::CConfigMediator(
  51.     CSettingsSet & data, 
  52.     IConfigPanel& widget_group)
  53.     : m_DataSet(&data),
  54.       m_ConfigPanel(&widget_group)
  55. {
  56. }
  57. CConfigMediator::~CConfigMediator()
  58. {
  59. }
  60.    
  61. /// return the object that can give us our Fl_Widget.
  62. IConfigPanel& CConfigMediator::GetPanel(void) 
  63. {
  64.     return *m_ConfigPanel;    
  65. }
  66.     
  67. /// return all the states this dialog knows about
  68. /// These constitute the valid arguments to the other methods taking 
  69. /// 'state' parameters.
  70. list<string> CConfigMediator::GetStates(void) const
  71. {
  72.     return m_DataSet->GetStyleNames();
  73. }
  74. string CConfigMediator::GetCurrentState(void) const
  75. {
  76.     return m_DataSet->GetCurrentStyleName();
  77. }
  78. /// If the following methods return true the list of states has changed.
  79. /// and the dialog should call GetStates to repopulate and redisplay the list of states.
  80. /// if they return false the method failed and no changes to the states were done.
  81. /// If succesful new_state is the name of the state just added.
  82. bool CConfigMediator::AddState(string& new_state)
  83. {
  84.     string the_state = m_DataSet->AddStyle();
  85.     if (the_state.empty()) {
  86.         return false;
  87.     }
  88.     new_state = the_state;
  89.     return true;
  90. }
  91. bool CConfigMediator::DuplicateState(const string& state, string& new_state)
  92. {
  93.     string the_state =  m_DataSet->DuplicateStyle(state);
  94.     if (the_state.empty()) {
  95.         return false;
  96.     }
  97.     new_state = the_state;
  98.     return true;
  99. }
  100. bool CConfigMediator::RenameState(const string& state, 
  101.                                         const string& req_state, 
  102.                                         string& new_state)
  103. {
  104.     string the_state = m_DataSet->RenameStyle(state, req_state);
  105.     if (the_state.empty()) {
  106.         return false;
  107.     }
  108.     new_state = the_state;
  109.     return true;
  110. }
  111. bool CConfigMediator::CanRenameState(const string& state)
  112. {
  113.     return m_DataSet->CanRenameStyle(state);
  114. }
  115. bool CConfigMediator::DeleteState(const string& state)
  116. {
  117.    return m_DataSet->DeleteStyle(state);
  118. }
  119. END_NCBI_SCOPE
  120. /*
  121.  * ===========================================================================
  122.  * $Log: config_mediator.cpp,v $
  123.  * Revision 1000.1  2004/06/01 20:45:34  gouriano
  124.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  125.  *
  126.  * Revision 1.4  2004/05/25 17:09:52  dicuccio
  127.  * Removed unnecessary #include guards
  128.  *
  129.  * Revision 1.3  2004/05/24 18:43:41  gorelenk
  130.  * PCH moved upmost
  131.  *
  132.  * Revision 1.2  2004/05/21 22:27:41  gorelenk
  133.  * Added PCH ncbi_pch.hpp
  134.  *
  135.  * Revision 1.1  2003/12/30 14:09:40  dicuccio
  136.  * Initial check-in - moved from gui/config
  137.  *
  138.  * Revision 1.1  2003/10/10 17:43:42  rsmith
  139.  * moved from gui/core to gui/config
  140.  *
  141.  * Revision 1.1  2003/09/26 18:15:31  rsmith
  142.  * plugin configration data and dialog
  143.  *
  144.  * ===========================================================================
  145.  */