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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: textaln_widget_demo.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 21:08:12  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. // generated by Fast Light User Interface Designer (fluid) version 1.0105
  10. /* $Id: textaln_widget_demo.cpp,v 1000.1 2004/06/01 21:08:12 gouriano Exp $ */
  11. #include <ncbi_pch.hpp>
  12. #include "textaln_widget_demo.hpp"
  13. static void closeWindowCB( Fl_Widget*, void* ) {
  14.   delete mainWindow;
  15. }
  16. void backColorBtnCB(Fl_Widget* o, void*) {
  17.   Fl_Color c = fl_show_colormap( o->color() );
  18. o->color(c);
  19. m_TextAlnView->SetColor(CTextAlnView::eBackground, c);
  20. }
  21. void gridColorBtnCB(Fl_Widget* o, void*) {
  22.   Fl_Color c = fl_show_colormap( o->color() );
  23. o->color(c);
  24. m_TextAlnView->SetColor(CTextAlnView::eGrid, c);
  25. }
  26. void numColorBtnCB(Fl_Widget* o, void*) {
  27.   Fl_Color c = fl_show_colormap( o->color() );
  28. o->color(c);
  29. m_TextAlnView->SetColor(CTextAlnView::eNumbers, c);
  30. }
  31. void selColorBtnCB(Fl_Widget* o, void*) {
  32.   Fl_Color c = fl_show_colormap( o->color() );
  33. o->color(c);
  34. m_TextAlnView->SetColor(CTextAlnView::eSelection, c);
  35. }
  36. void loadSeqCB(Fl_Widget* o, void*) {
  37.   CTextAlnViewTestDS* ds = new CTextAlnViewTestDS();
  38.  
  39. m_TextAlnView->SetDataSource( ds );
  40. }
  41. void showMMCB(Fl_Widget*, void*) {
  42.   bool show_mm = m_ShowMM->value();
  43. m_TextAlnView->ShowSequenceAsDots(show_mm);
  44. }
  45. Fl_Double_Window *mainWindow=(Fl_Double_Window *)0;
  46. Fl_Menu_Item menu_[] = {
  47.  {"&File", 0,  0, 0, 64, 0, 0, 14, 56},
  48.  {"&Load Aln. results", 0,  (Fl_Callback*)loadSeqCB, 0, 128, 0, 0, 14, 56},
  49.  {"&Exit", 0,  (Fl_Callback*)closeWindowCB, 0, 0, 0, 0, 14, 56},
  50.  {0},
  51.  {0}
  52. };
  53. CTextAlnView *m_TextAlnView=(CTextAlnView *)0;
  54. Fl_Check_Button *m_Anchor=(Fl_Check_Button *)0;
  55. Fl_Check_Button *m_ShowMM=(Fl_Check_Button *)0;
  56. Fl_Light_Button *m_EditMode=(Fl_Light_Button *)0;
  57. Fl_Round_Button *m_FeatOff=(Fl_Round_Button *)0;
  58. Fl_Round_Button *m_FeatBase=(Fl_Round_Button *)0;
  59. Fl_Round_Button *m_FeatAll=(Fl_Round_Button *)0;
  60. Fl_Check_Button *m_ShowLongInfo=(Fl_Check_Button *)0;
  61. int main(int argc, char **argv) {
  62.   Fl_Double_Window* w;
  63.   { Fl_Double_Window* o = mainWindow = new Fl_Double_Window(925, 527, "Text Alignment Viewer");
  64.     w = o;
  65.     { Fl_Menu_Bar* o = new Fl_Menu_Bar(0, 0, 925, 30);
  66.       o->menu(menu_);
  67.     }
  68.     { Fl_Button* o = new Fl_Button(820, 485, 95, 25, "Close");
  69.       o->tooltip("Click to close the window");
  70.       o->callback((Fl_Callback*)closeWindowCB);
  71.     }
  72.     { CTextAlnView* o = m_TextAlnView = new CTextAlnView(10, 40, 695, 420);
  73.       o->box(FL_FLAT_BOX);
  74.       o->color(FL_BACKGROUND2_COLOR);
  75.       o->selection_color(FL_BACKGROUND_COLOR);
  76.       o->labeltype(FL_NO_LABEL);
  77.       o->labelfont(0);
  78.       o->labelsize(14);
  79.       o->labelcolor(FL_BLACK);
  80.       o->align(FL_ALIGN_CENTER);
  81.       o->when(FL_WHEN_RELEASE);
  82.       o->end();
  83.       Fl_Group::current()->resizable(o);
  84.     }
  85.     { Fl_Button* o = new Fl_Button(715, 125, 35, 25, "Background Color");
  86.       o->color((Fl_Color)55);
  87.       o->callback((Fl_Callback*)backColorBtnCB);
  88.       o->align(FL_ALIGN_RIGHT);
  89.     }
  90.     { Fl_Button* o = new Fl_Button(715, 155, 35, 25, "Selection Color");
  91.       o->color((Fl_Color)4);
  92.       o->callback((Fl_Callback*)selColorBtnCB);
  93.       o->align(FL_ALIGN_RIGHT);
  94.     }
  95.     { Fl_Box* o = new Fl_Box(10, 470, 905, 5);
  96.       o->box(FL_THIN_DOWN_FRAME);
  97.       o->labeltype(FL_NO_LABEL);
  98.     }
  99.     { Fl_Button* o = new Fl_Button(715, 215, 35, 25, "Numbers Color");
  100.       o->color((Fl_Color)4);
  101.       o->callback((Fl_Callback*)numColorBtnCB);
  102.       o->align(FL_ALIGN_RIGHT);
  103.     }
  104.     { Fl_Button* o = new Fl_Button(715, 185, 35, 25, "Grid Color");
  105.       o->callback((Fl_Callback*)gridColorBtnCB);
  106.       o->align(FL_ALIGN_RIGHT);
  107.     }
  108.     { Fl_Check_Button* o = m_Anchor = new Fl_Check_Button(715, 40, 185, 25, "Anchor Base Sequence");
  109.       o->down_box(FL_DOWN_BOX);
  110.       o->callback((Fl_Callback*)setAnchor);
  111.       o->when(FL_WHEN_CHANGED);
  112.     }
  113.     { Fl_Check_Button* o = m_ShowMM = new Fl_Check_Button(715, 65, 185, 25, "Show Mismatches Only");
  114.       o->down_box(FL_DOWN_BOX);
  115.       o->callback((Fl_Callback*)showMMCB);
  116.       o->when(FL_WHEN_CHANGED);
  117.     }
  118.     { Fl_Button* o = new Fl_Button(715, 245, 35, 25, "Sequence Color");
  119.       o->color(FL_FOREGROUND_COLOR);
  120.       o->callback((Fl_Callback*)seqColorBtnCB);
  121.       o->align(FL_ALIGN_RIGHT);
  122.     }
  123.     { Fl_Button* o = new Fl_Button(715, 435, 160, 25, "Load Aln. results");
  124.       o->callback((Fl_Callback*)loadSeqCB);
  125.     }
  126.     m_EditMode = new Fl_Light_Button(715, 405, 160, 25, "Edit Mode");
  127.     { Fl_Group* o = new Fl_Group(715, 350, 160, 50, "Features Display:");
  128.       o->box(FL_THIN_DOWN_FRAME);
  129.       o->align(FL_ALIGN_TOP_LEFT);
  130.       { Fl_Round_Button* o = m_FeatOff = new Fl_Round_Button(715, 350, 160, 20, "Off");
  131.         o->type(102);
  132.         o->down_box(FL_ROUND_DOWN_BOX);
  133.         o->value(1);
  134.         o->callback((Fl_Callback*)setFeatures);
  135.       }
  136.       { Fl_Round_Button* o = m_FeatBase = new Fl_Round_Button(715, 365, 160, 20, "Base Sequence");
  137.         o->type(102);
  138.         o->down_box(FL_ROUND_DOWN_BOX);
  139.         o->callback((Fl_Callback*)setFeatures);
  140.       }
  141.       { Fl_Round_Button* o = m_FeatAll = new Fl_Round_Button(715, 380, 160, 20, "All Sequences");
  142.         o->type(102);
  143.         o->down_box(FL_ROUND_DOWN_BOX);
  144.         o->callback((Fl_Callback*)setFeatures);
  145.       }
  146.       o->end();
  147.     }
  148.     { Fl_Check_Button* o = m_ShowLongInfo = new Fl_Check_Button(715, 90, 185, 25, "Show Long Name");
  149.       o->down_box(FL_DOWN_BOX);
  150.     }
  151.     { Fl_Button* o = new Fl_Button(715, 285, 85, 25, "Select All");
  152.       o->callback((Fl_Callback*)selectCB);
  153.     }
  154.     { Fl_Button* o = new Fl_Button(805, 285, 85, 25, "Deselect All");
  155.       o->callback((Fl_Callback*)deselectCB);
  156.     }
  157.     o->end();
  158.   }
  159.   w->show(argc, argv);
  160.   return Fl::run();
  161. }
  162. void seqColorBtnCB(Fl_Widget* o, void*) {
  163.   Fl_Color c = fl_show_colormap( o->color() );
  164. o->color(c);
  165. m_TextAlnView->SetColor(CTextAlnView::eSequence, c);
  166. }
  167. void setAnchor(Fl_Widget*, void*) {
  168.   bool anchor = m_Anchor->value();
  169. if (anchor) m_TextAlnView->SetAnchor(0);
  170. else m_TextAlnView->UnsetAnchor();
  171. }
  172. void setFeatures(Fl_Widget*, void*) {
  173.   if (m_FeatOff->value()) m_TextAlnView->SetFeatureDisplay(CTextAlnView::eOff);
  174. if (m_FeatBase->value()) m_TextAlnView->SetFeatureDisplay(CTextAlnView::eBase);
  175. if (m_FeatAll->value()) m_TextAlnView->SetFeatureDisplay(CTextAlnView::eAll);
  176. }
  177. void selectCB(Fl_Widget* o, void*) {
  178.   m_TextAlnView->SelectAll( true );
  179. }
  180. void deselectCB(Fl_Widget* o, void*) {
  181.   m_TextAlnView->SelectAll( false );
  182. }