demo_taxplot3d_ui.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:6k
- /*
- * ===========================================================================
- * PRODUCTION $Log: demo_taxplot3d_ui.cpp,v $
- * PRODUCTION Revision 1000.1 2004/06/01 21:13:56 gouriano
- * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
- * PRODUCTION
- * ===========================================================================
- */
- /* $Id: demo_taxplot3d_ui.cpp,v 1000.1 2004/06/01 21:13:56 gouriano Exp $
- * ===========================================================================
- *
- * 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: Vladimir Tereshkov
- *
- * File Description:
- * User interface demonstrating taxplot3d widgets
- */
- #include <ncbi_pch.hpp>
- #include "demo_taxplot3d_ui.hpp"
- #include <gui/utils/message_box.hpp>
- #include <objmgr/bioseq_handle.hpp>
- BEGIN_NCBI_SCOPE
- #include "demo_taxplot3d_ui_.cpp"
- // that's for demo purposes only
- int xTax=7227, yTax=6239, zTax=4932;
- string labelx, labely, labelz;
- Fl_Menu_Item taxonomy[] = {
- {"A. gambiae str. PEST", 0,0, (void*)"180454"},
- {"A. thaliana (thale cress)",0,0,(void*)"3702"},
- {"C. elegans", 0,0,(void*)"6239"},
- {"C. parvum", 0,0,(void*)"5807"},
- {"Candida albicans", 0,0,(void*)"5476"},
- {"D. melanogaster (fruit fly)", 0,0,(void*)"7227"},
- {"E. cuniculi", 0,0,(void*)"6035"},
- {"E. histolytica",0,0,(void*)"5759"},
- {"G. lamblia ATCC 50803", 0,0,(void*)"184922"},
- {"Homo sapiens (human)", 0,0,(void*)"9606"},
- {"Leishmania major", 0,0,(void*)"5664"},
- {"M. grisea 70-15", 0,0,(void*)"242507"},
- {"Mus musculus (house mouse)",0,0,(void*)"10090"},
- {"Neurospora crassa", 0,0,(void*)"5141"},
- {"P. falciparum 3D7", 0,0,(void*)"36329"},
- {"P. yoelii yoelii", 0,0,(void*)"73239"},
- {"Rattus norvegicus", 0,0,(void*)"10116"},
- {"S. cerevisiae", 0,0,(void*)"4932"},
- {"S. pombe (fission yeast)", 0,0,(void*)"4896"},
- {"Trypanosoma brucei", 0,0,(void*)"5691"},
- {"Trypanosoma cruzi", 0,0,(void*)"5693"},
- {0}
- };
- void cb_Tax1(Fl_Widget * widget, void * data)
- {
- Fl_Menu_* mw = (Fl_Menu_*)widget;
- const Fl_Menu_Item* m = mw->mvalue();
- xTax = NStr::StringToInt(string((char*)m->user_data()));
- labelx = m->label();
- if(data) ((CDemo3DUI*)data)->updateDatasource();
- }
- void cb_Tax2(Fl_Widget * widget, void * data)
- {
- Fl_Menu_* mw = (Fl_Menu_*)widget;
- const Fl_Menu_Item* m = mw->mvalue();
- yTax = NStr::StringToInt(string((char*)m->user_data()));
- labely = m->label();
- if(data) ((CDemo3DUI*)data)->updateDatasource();
- }
- void cb_Tax3(Fl_Widget * widget, void * data)
- {
- Fl_Menu_* mw = (Fl_Menu_*)widget;
- const Fl_Menu_Item* m = mw->mvalue();
- zTax = NStr::StringToInt(string((char*)m->user_data()));
- labelz = m->label();
- if(data) ((CDemo3DUI*)data)->updateDatasource();
- }
- CDemo3DUI::CDemo3DUI()
- {
- m_Window.reset(x_CreateWindow());
- m_ShiLoader = new ShiLoader();
- m_Progress->minimum(0);
- m_Progress->maximum(100);
- m_Progress->value(0);
- m_Tax1->deactivate();
- m_Tax2->deactivate();
- m_Tax3->deactivate();
- }
- CDemo3DUI::~CDemo3DUI()
- {
- m_Window.reset();
- m_Scope.Reset();
- m_ObjMgr.Reset();
- if (m_ShiLoader) delete m_ShiLoader;
- }
- void CDemo3DUI::Show(int argc, char** argv)
- {
- m_Tax1->menu(taxonomy); m_Tax1->value(5);
- m_Tax2->menu(taxonomy); m_Tax2->value(2);
- m_Tax3->menu(taxonomy); m_Tax3->value(17);
- m_Tax1->callback(cb_Tax1,(void*)this);
- m_Tax2->callback(cb_Tax2,(void*)this);
- m_Tax3->callback(cb_Tax3,(void*)this);
- cb_Tax1(m_Tax1, NULL);
- cb_Tax2(m_Tax2, NULL);
- cb_Tax3(m_Tax3, NULL);
- m_FileName->value("\\medic\users\taxplot\data\10090.shi");
- m_Window->show(argc, argv);
-
- Fl::run();
- }
- void CDemo3DUI::x_OnLoadAccession()
- {
- m_ShiLoader->setConnectionPoint(this);
- m_ShiLoader->loadFileNew(m_FileName->value());
- m_Tax1->activate();
- m_Tax2->activate();
- m_Tax3->activate();
- updateDatasource();
- }
- void CDemo3DUI::updateDatasource()
- {
- CTaxplot3dDataSource * ds = m_ShiLoader->getData(xTax, yTax, zTax);
- ds->xLabel() = labelx; ds->yLabel() = labely; ds->zLabel() = labelz;
- m_3DWidget->SetDataSource(ds);
- }
- void CDemo3DUI::x_OnLoadFile()
- {
- m_Window->hide();
- }
- void CDemo3DUI::fireEvent(eEventType eType, void * data)
- {
- switch (eType){
- case IShiLoaderEvents::eProgress:{
- int val = *(int*)data;
- m_Progress->value(val);
- string str("Loading, " + NStr::IntToString(val) + "% done");
- m_Progress->label(str.c_str());
- if (Fl::ready()) Fl::check();
- break;
- }
- case IShiLoaderEvents::eLoaded:{
- m_Progress->value(0);
- m_Progress->label("");
- break;
- }
- }
- }
- END_NCBI_SCOPE
- /*
- * ===========================================================================
- * $Log: demo_taxplot3d_ui.cpp,v $
- * Revision 1000.1 2004/06/01 21:13:56 gouriano
- * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
- *
- * Revision 1.4 2004/05/21 22:27:56 gorelenk
- * Added PCH ncbi_pch.hpp
- *
- * Revision 1.3 2004/01/15 17:00:41 tereshko
- * Fix for 64 bit compiler
- *
- * Revision 1.2 2004/01/07 17:39:06 vasilche
- * Fixed include path to genbank loader.
- *
- * Revision 1.1 2004/01/05 16:21:22 tereshko
- * Initial revision
- *
- * ===========================================================================
- */