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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: featgroup_config_panel.cpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/06/01 21:15:28  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. // generated by Fast Light User Interface Designer (fluid) version 1.0104
  10. #include <ncbi_pch.hpp>
  11. #include "featgroup_config_panel.hpp"
  12. BEGIN_NCBI_SCOPE
  13. #include "featgroup_config_panel_.cpp"
  14. CFeatGroupConfigPanel::CFeatGroupConfigPanel()
  15. {
  16.     x_MakeWidgets();
  17.     CTreeBrowser::Node* top_node = x_FillTree();
  18.         
  19.     x_TestInits();
  20. }
  21. void CFeatGroupConfigPanel::x_TestInits()
  22. {
  23.     m_FeatGroups->add("Prime Dogma");
  24.     m_FeatGroups->add("feature group 1");
  25.     m_FeatGroups->add("feature group 2");
  26.     m_FeatGroups->add("feature group 3");
  27.     m_FeatGroups->add("all others");
  28.     m_FeatGroups->deselect();
  29.     m_FeatGroups->value(1);
  30. }
  31. Fl_Group* CFeatGroupConfigPanel::GetConfigPanel(void)
  32. {
  33.     return m_ConfigPanel;
  34. }
  35. CTreeBrowser::Node* CFeatGroupConfigPanel::x_FillTree()
  36. {
  37.     m_Tree->clear();
  38.     m_Tree->insertion_mode(FLU_INSERT_BACK);
  39.     m_Tree->selection_mode(FLU_SINGLE_SELECT);
  40.     
  41.     CFeatConfigItem rootItem;
  42.     _ASSERT(m_FeatList.GetItem(objects::CSeqFeatData::e_not_set, 
  43.                                objects::CSeqFeatData::eSubtype_any, rootItem));
  44.     CTreeBrowser::Node* rootNode =
  45.         m_Tree->set_root(rootItem.GetDescription().c_str());
  46.     CTreeBrowser::Node* parent = rootNode;
  47.     int current_type = objects::CSeqFeatData::e_not_set;
  48.     
  49.     // Fill up m_Tree with labels from m_FeatList
  50.     ITERATE(CFeatConfigList, fc_it, m_FeatList) {
  51.         // if done with a subcategory, popup.
  52.         if (current_type != objects::CSeqFeatData::e_not_set  &&  
  53.                 current_type != fc_it->GetType() ) {
  54.             parent = rootNode;
  55.             current_type = objects::CSeqFeatData::e_not_set;
  56.         }
  57.         if (fc_it->GetSubtype() == objects::CSeqFeatData::eSubtype_any)  {
  58.             if (fc_it->GetType() == objects::CSeqFeatData::e_not_set) {
  59.                 continue; // already done.
  60.             }
  61.             //parent = m_Tree->add(fc_it->GetDescription().c_str(), true, 0, 0, rootNode);
  62.             parent = m_Tree->AddChild(fc_it->GetDescription(), parent);
  63.             parent->open(true);
  64.             current_type = fc_it->GetType();
  65.         } else {
  66.             //m_Tree->add(fc_it->GetDescription().c_str(), false, 0, 0, parent);
  67.             m_Tree->AddLeaf(fc_it->GetDescription(), parent);
  68.         }
  69.     }
  70.     
  71.     m_Tree->open(true);
  72.     m_Tree->unselect_all();
  73.     
  74.     return rootNode;
  75. }
  76. void CFeatGroupConfigPanel::x_OnUp()
  77. {
  78.     int current_pos = m_FeatGroups->value();
  79.     if (current_pos == 0  || current_pos == 1)
  80.         return;
  81.     
  82.     int new_pos = current_pos - 1;
  83.     m_FeatGroups->move(current_pos, new_pos);
  84.     m_FeatGroups->value(new_pos);
  85.     m_FeatGroups->redraw();
  86. }
  87. void CFeatGroupConfigPanel::x_OnDown()
  88. {
  89.     int current_pos = m_FeatGroups->value();
  90.     if (current_pos == 0  || current_pos == m_FeatGroups->size())
  91.         return;
  92.     
  93.     int new_pos = current_pos + 1;  
  94.     m_FeatGroups->move(current_pos, new_pos);
  95.     m_FeatGroups->value(new_pos);
  96.     m_FeatGroups->redraw();
  97. }
  98. void CFeatGroupConfigPanel::x_IntoGroup()
  99. {
  100.     CTreeBrowser::Node* node = m_Tree->GetSelected();
  101.     if (node) {
  102.         m_FeatGroupItems->add(node->label());    
  103.     }
  104. }
  105. void CFeatGroupConfigPanel::x_OutofGroup()
  106. {
  107.     int sel_item = m_FeatGroupItems->value();
  108.     if (sel_item != 0) {
  109.         m_FeatGroupItems->remove(sel_item);
  110.     }
  111. }
  112. void CFeatGroupConfigPanel::x_OnFeatGroupClick()
  113. {
  114.     int current_pos = m_FeatGroups->value();
  115.     if (current_pos != 0) {
  116.         const char *group_name = m_FeatGroups->text(current_pos);
  117.         if (group_name != NULL) {
  118.             m_CurrentGroupName->value(group_name);
  119.         }
  120.     }
  121. }
  122. void CFeatGroupConfigPanel::cbEnable(Fl_Widget* a, const Fl_Button* o)
  123. {
  124.     if (o->value()) {
  125.         a->activate();
  126.     } else {
  127.         a->deactivate();
  128.     }
  129. }
  130. END_NCBI_SCOPE