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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: demo_taxplot3d_ui.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 21:13:56  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: demo_taxplot3d_ui.cpp,v 1000.1 2004/06/01 21:13:56 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:  Vladimir Tereshkov
  35.  *
  36.  * File Description:  
  37.  *   User interface demonstrating taxplot3d widgets
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include "demo_taxplot3d_ui.hpp"
  41. #include <gui/utils/message_box.hpp>
  42. #include <objmgr/bioseq_handle.hpp>
  43. BEGIN_NCBI_SCOPE
  44. #include "demo_taxplot3d_ui_.cpp"
  45. // that's for demo purposes only
  46. int xTax=7227, yTax=6239, zTax=4932;
  47. string labelx, labely, labelz;
  48. Fl_Menu_Item taxonomy[] = {
  49.     {"A. gambiae str. PEST", 0,0, (void*)"180454"},
  50.     {"A. thaliana (thale cress)",0,0,(void*)"3702"},
  51.     {"C. elegans", 0,0,(void*)"6239"},
  52.     {"C. parvum", 0,0,(void*)"5807"},
  53.     {"Candida albicans", 0,0,(void*)"5476"},
  54.     {"D. melanogaster (fruit fly)", 0,0,(void*)"7227"},
  55.     {"E. cuniculi", 0,0,(void*)"6035"},
  56.     {"E. histolytica",0,0,(void*)"5759"},
  57.     {"G. lamblia ATCC 50803", 0,0,(void*)"184922"},
  58.     {"Homo sapiens (human)", 0,0,(void*)"9606"},
  59.     {"Leishmania major", 0,0,(void*)"5664"},
  60.     {"M. grisea 70-15", 0,0,(void*)"242507"},
  61.     {"Mus musculus (house mouse)",0,0,(void*)"10090"},
  62.     {"Neurospora crassa", 0,0,(void*)"5141"},
  63.     {"P. falciparum 3D7", 0,0,(void*)"36329"},
  64.     {"P. yoelii yoelii", 0,0,(void*)"73239"},
  65.     {"Rattus norvegicus", 0,0,(void*)"10116"},
  66.     {"S. cerevisiae", 0,0,(void*)"4932"},  
  67.     {"S. pombe (fission yeast)", 0,0,(void*)"4896"},
  68.     {"Trypanosoma brucei", 0,0,(void*)"5691"},
  69.     {"Trypanosoma cruzi", 0,0,(void*)"5693"},
  70.     {0}
  71. };
  72. void cb_Tax1(Fl_Widget * widget, void * data)
  73. {
  74.     Fl_Menu_* mw = (Fl_Menu_*)widget;
  75.     const   Fl_Menu_Item* m = mw->mvalue();
  76.     xTax      = NStr::StringToInt(string((char*)m->user_data()));
  77.     labelx    = m->label();
  78.     if(data) ((CDemo3DUI*)data)->updateDatasource();
  79. }
  80. void cb_Tax2(Fl_Widget * widget, void * data)
  81. {
  82.     Fl_Menu_* mw = (Fl_Menu_*)widget;
  83.     const   Fl_Menu_Item* m = mw->mvalue();  
  84.     yTax      = NStr::StringToInt(string((char*)m->user_data()));
  85.     labely = m->label();
  86.     if(data) ((CDemo3DUI*)data)->updateDatasource();
  87. }
  88. void cb_Tax3(Fl_Widget * widget, void * data)
  89. {
  90.     Fl_Menu_* mw = (Fl_Menu_*)widget;
  91.     const   Fl_Menu_Item* m = mw->mvalue();  
  92.     zTax      = NStr::StringToInt(string((char*)m->user_data()));
  93.     labelz = m->label();
  94.     if(data) ((CDemo3DUI*)data)->updateDatasource();
  95. }
  96. CDemo3DUI::CDemo3DUI()
  97. {
  98.     m_Window.reset(x_CreateWindow());
  99.     m_ShiLoader = new ShiLoader();
  100.     m_Progress->minimum(0);
  101.     m_Progress->maximum(100);
  102.     m_Progress->value(0);
  103.     m_Tax1->deactivate();
  104.     m_Tax2->deactivate();
  105.     m_Tax3->deactivate();
  106. }
  107. CDemo3DUI::~CDemo3DUI()
  108. {
  109.     m_Window.reset();
  110.     m_Scope.Reset();
  111.     m_ObjMgr.Reset();
  112.     if (m_ShiLoader) delete m_ShiLoader;
  113. }
  114. void CDemo3DUI::Show(int argc, char** argv)
  115. {
  116.     m_Tax1->menu(taxonomy); m_Tax1->value(5);
  117.     m_Tax2->menu(taxonomy); m_Tax2->value(2);
  118.     m_Tax3->menu(taxonomy); m_Tax3->value(17);
  119.     m_Tax1->callback(cb_Tax1,(void*)this);  
  120.     m_Tax2->callback(cb_Tax2,(void*)this);  
  121.     m_Tax3->callback(cb_Tax3,(void*)this);
  122.     cb_Tax1(m_Tax1, NULL);  
  123.     cb_Tax2(m_Tax2, NULL);  
  124.     cb_Tax3(m_Tax3, NULL);  
  125.     m_FileName->value("\\medic\users\taxplot\data\10090.shi");
  126.     m_Window->show(argc, argv);
  127.     
  128.     Fl::run();
  129. }
  130. void CDemo3DUI::x_OnLoadAccession()
  131. {  
  132.     m_ShiLoader->setConnectionPoint(this);
  133.     m_ShiLoader->loadFileNew(m_FileName->value());
  134.     m_Tax1->activate();
  135.     m_Tax2->activate();
  136.     m_Tax3->activate();
  137.     updateDatasource();
  138. }
  139. void CDemo3DUI::updateDatasource()
  140. {   
  141.     CTaxplot3dDataSource * ds = m_ShiLoader->getData(xTax, yTax, zTax);
  142.     ds->xLabel() = labelx; ds->yLabel() = labely; ds->zLabel() = labelz;
  143.     m_3DWidget->SetDataSource(ds);  
  144. }
  145. void CDemo3DUI::x_OnLoadFile()
  146. {
  147.     m_Window->hide();
  148. }
  149. void CDemo3DUI::fireEvent(eEventType eType, void * data)
  150. {
  151.     switch (eType){
  152.     case IShiLoaderEvents::eProgress:{
  153.         int val = *(int*)data;   
  154.         m_Progress->value(val);
  155.         string str("Loading, " + NStr::IntToString(val) + "% done");
  156.         m_Progress->label(str.c_str());  
  157.         if (Fl::ready()) Fl::check();      
  158.         break;
  159.     }
  160.     case IShiLoaderEvents::eLoaded:{
  161.         m_Progress->value(0);
  162.         m_Progress->label("");  
  163.         break;
  164.     }
  165.     }
  166. }
  167. END_NCBI_SCOPE
  168. /*
  169.  * ===========================================================================
  170.  * $Log: demo_taxplot3d_ui.cpp,v $
  171.  * Revision 1000.1  2004/06/01 21:13:56  gouriano
  172.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  173.  *
  174.  * Revision 1.4  2004/05/21 22:27:56  gorelenk
  175.  * Added PCH ncbi_pch.hpp
  176.  *
  177.  * Revision 1.3  2004/01/15 17:00:41  tereshko
  178.  * Fix for 64 bit compiler
  179.  *
  180.  * Revision 1.2  2004/01/07 17:39:06  vasilche
  181.  * Fixed include path to genbank loader.
  182.  *
  183.  * Revision 1.1  2004/01/05 16:21:22  tereshko
  184.  * Initial revision
  185.  *
  186.  * ===========================================================================
  187.  */