featgroup_config_dlg.cpp

来自「ncbi源码」· C++ 代码 · 共 279 行

CPP
279
字号
/* * =========================================================================== * PRODUCTION $Log: featgroup_config_dlg.cpp,v $ * PRODUCTION Revision 1000.0  2004/06/01 21:15:13  gouriano * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.3 * PRODUCTION * =========================================================================== *//*  $Id $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Robert Smith * * File Description: *    Test application for plugins */#include <ncbi_pch.hpp>#include <corelib/ncbiapp.hpp>#include <corelib/ncbiargs.hpp>#include <corelib/ncbienv.hpp>#include <corelib/ncbireg.hpp>#include <serial/serial.hpp>#include <serial/objostr.hpp>#include <serial/objistr.hpp>#include <corelib/ncbifile.hpp>#include <gui/config/PluginConfigCache.hpp>#include <gui/dialogs/config/config_dlg.hpp>#include <gui/widgets/seq_graphic/seqgraphic_conf.hpp>#include "featgroup_config_mediat.hpp"#include "featgroup_config_panel.hpp"USING_NCBI_SCOPE;USING_SCOPE(objects);//// a test exception class//class CPluginTestException : EXCEPTION_VIRTUAL_BASE public CException{public:    // Enumerated list of document management errors    enum EErrCode {        eTestFailed    };    // Translate the specific error code into a string representations of    // that error code.    virtual const char* GetErrCodeString(void) const    {        switch (GetErrCode()) {        case eTestFailed:   return "eTestFailed";        default:            return CException::GetErrCodeString();        }    }    NCBI_EXCEPTION_DEFAULT(CPluginTestException, CException);};class CPluginTestApp : public CNcbiApplication{public:    CPluginTestApp();private:    CRef<objects::CPluginConfigCache>  m_PCC;    virtual void Init(void);    virtual int  Run(void);    virtual void Exit(void);    void WritePluginConfig(const string& pcfile, const CPluginConfigCache& pcc);    void ReadPluginConfig(const string& pc_file);    void SetPluginConfig(CPluginConfigCache& pcc);};CPluginTestApp::CPluginTestApp(){}///////////////////////////////////////////////////////////////////////////////  Init test for all different types of argumentsvoid CPluginTestApp::Init(void){    // Create command-line argument descriptions class    auto_ptr<CArgDescriptions> arg_desc(new CArgDescriptions);    // Specify USAGE context    arg_desc->SetUsageContext(GetArguments().GetProgramBasename(),                              "Test for the Configuration dialog.");    // Setup arg.descriptions for this application    SetupArgDescriptions(arg_desc.release());}int CPluginTestApp::Run(void){    string  pcc_file("/Users/rsmith/test_config.asn");    ReadPluginConfig(pcc_file);    CRef<CSeqGraphicConfig> configSettings(new CSeqGraphicConfig(m_PCC));    // create panel    CFeatGroupConfigPanel  preference_panel;            // create configuration mediator from data set and panel    CTestConfigMediator preference_mediator(*configSettings, preference_panel);        // create and display dialog given the mediator.    CConfigDlg preference_dialog(preference_mediator);    EDialogReturnValue dlg_ret = preference_dialog.ShowModal();    if (eCancel != dlg_ret) {        cerr << "ok chosen" << endl;        WritePluginConfig( pcc_file, configSettings->SetConfigCache());    } else {        cerr << "cancel chosen, no processing done." << endl;    }    return 0;}void CPluginTestApp::WritePluginConfig(const string& pcfile, const CPluginConfigCache& pcc){    try {        auto_ptr<CObjectOStream> os(CObjectOStream::Open(eSerial_AsnText, pcfile));        *os << pcc;        cerr <<  "plugin config cache written to: " << pcfile;     } catch (...) {        cerr << "Write of plugin config cache to " << pcfile << " failed";     }          return;}void CPluginTestApp::ReadPluginConfig(const string& pcfile){    {{        // first check if the file exists.        CFile   file(pcfile);        if ( ! file.Exists() ) {            LOG_POST( Info << "CSettings::LoadPluginConfig(): "                "no plugin config cache found at " << pcfile);            return;        }    }}        // try reading in ASN.1 test format    try {        auto_ptr<CObjectIStream> is(CObjectIStream::Open(eSerial_AsnText, pcfile));        CRef<CPluginConfigCache> config_cache(new CPluginConfigCache);            *is >> *config_cache;        LOG_POST( Info << "CSettings::LoadPluginConfig(): "            "text plugin config cache read from: " << pcfile);        SetPluginConfig(*config_cache);        return;    } catch (...) {        _TRACE("read of ASN.1 text plugin config cache in " << pcfile << " failed");    }        // try reading in ASN.1 binary format    try {        auto_ptr<CObjectIStream> is(CObjectIStream::Open(eSerial_AsnBinary, pcfile));        CRef<CPluginConfigCache> config_cache(new CPluginConfigCache);            *is >> *config_cache;        LOG_POST( Info << "CSettings::LoadPluginConfig(): "            "binary plugin config cache read from: " << pcfile);        SetPluginConfig(*config_cache);        return;    } catch (...) {        _TRACE("read of ASN.1 binary plugin config cache in " << pcfile << " failed");    }    // if not, try reading in XML    try {        auto_ptr<CObjectIStream> is(CObjectIStream::Open(eSerial_Xml, pcfile));        CRef<CPluginConfigCache> config_cache(new CPluginConfigCache);            *is >> *config_cache;        LOG_POST( Info << "CSettings::LoadPluginConfig(): "            "XML plugin config cache read from: " << pcfile);        SetPluginConfig(*config_cache);        return;    } catch (...) {        _TRACE("read of XML plugin config cache in " << pcfile << " failed");    }        // Log an error and continue.    LOG_POST( Error << "CSettings::LoadPluginConfig(): "        "File does not contain a plugin config cache: " << pcfile);        return;}void CPluginTestApp::SetPluginConfig(CPluginConfigCache& pcc){    m_PCC.Reset(&pcc);}///////////////////////////////////////////////////////////////////////////////  Cleanupvoid CPluginTestApp::Exit(void){    SetDiagStream(0);}///////////////////////////////////////////////////////////////////////////////  MAINint main(int argc, const char* argv[]){    // Execute main application function    return CPluginTestApp().AppMain(argc, argv, 0, eDS_Default, 0);}/* * =========================================================================== * $Log: featgroup_config_dlg.cpp,v $ * Revision 1000.0  2004/06/01 21:15:13  gouriano * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.3 * * Revision 1.3  2004/05/21 22:27:40  gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.2  2004/02/24 16:59:03  rsmith * update include paths. * * Revision 1.1  2004/02/20 16:14:18  rsmith * Initial checkin of prototype, currenty unused code. * * =========================================================================== */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?