1 // This file is part of the Mussa source distribution.
2 // http://mussa.caltech.edu/
3 // Contact author: Tristan De Buysscher, tristan@caltech.edu
5 // This program and all associated source code files are Copyright (C) 2005
6 // the California Institute of Technology, Pasadena, CA, 91125 USA. It is
7 // under the GNU Public License; please see the included LICENSE.txt
8 // file for more information, or contact Tristan directly.
11 #include "mussa_gui_seq.hh"
16 set_align_cb(Fl_Widget* widg, void* the_data)
18 menu_align_data_bundle * blah = (menu_align_data_bundle *) the_data;
19 SeqWindow* T= blah->swm_ptr;
20 T->real_set_align_cb(blah->which_align);
25 SeqWindow::real_set_align_cb(int which_align)
32 window_length = a_path[0];
33 cout << window_length << endl;
36 seq_box->align_offsets(which_align);
42 show_align_cb(Fl_Widget* widg, void* the_data)
44 menu_align_data_bundle * blah = (menu_align_data_bundle *) the_data;
45 SeqWindow* T= blah->swm_ptr;
46 T->real_show_align_cb(blah->which_align);
51 SeqWindow::real_show_align_cb(int which_align)
58 seq_box->toggle_align(which_align);
64 toggle_bars_cb(Fl_Button* o, void* v)
66 SeqWindow* T=(SeqWindow*)v;
67 T->real_toggle_bars_cb();
72 SeqWindow::real_toggle_bars_cb()
74 seq_box->toggle_bars();
79 toggle_motifs_cb(Fl_Button* o, void* v)
81 SeqWindow* T=(SeqWindow*)v;
82 T->real_toggle_motifs_cb();
87 SeqWindow::real_toggle_motifs_cb()
89 seq_box->toggle_motifs();
93 // main code, window creation
95 SeqWindow::SeqWindow(int w, int h, const char* title, int sq_num,
96 vector<Sequence> *some_seqs,
97 list<vector<int> > some_paths,
98 vector<int> some_lens,
99 vector<motif> *some_motifs):
100 Fl_Double_Window(w,h,title)
102 menu_align_data_bundle * some_menu_data;
104 int window_length, align_number;
106 ostringstream align_id_ostr;
107 string align_id_string;
108 list<vector<int> >::iterator align_iter;
112 // most of this stuff is here just to pass to SeqView object
113 // some is needed to setup the window menus
117 seq_lens = some_lens;
118 the_motifs = some_motifs;
125 // make the menu that allows alignment selection
126 choose_align_menu = new Fl_Menu_Button(5, 2, 180, 30, "Choose Alignment");
127 choose_align_menu->color(FL_WHITE,FL_BLUE);
128 choose_align_menu->box(FL_BORDER_BOX);
129 choose_align_menu->clear();
131 // make the menu that allows alignment selection
132 show_align_menu = new Fl_Menu_Button(190, 2, 180, 30, "Show Alignment");
133 show_align_menu->color(FL_WHITE,FL_BLUE);
134 show_align_menu->box(FL_BORDER_BOX);
135 show_align_menu->clear();
138 // adds menu items for each path
139 align_iter = P.begin();
141 while(align_iter != P.end())
143 some_menu_data = new menu_align_data_bundle;
144 some_menu_data->swm_ptr = this;
145 some_menu_data->which_align = align_number;
146 align_id_ostr << (*align_iter)[0] << ": ";
147 for(i = 1; i <= seq_num; i++)
148 align_id_ostr << (*align_iter)[i] << ", ";
149 align_id_string = align_id_ostr.str();
150 choose_align_menu->add((const char*)align_id_string.c_str(), 0,
151 (Fl_Callback *) set_align_cb,
152 (void*) some_menu_data);
153 show_align_menu->add((const char*)align_id_string.c_str(), 0,
154 (Fl_Callback *) show_align_cb,
155 (void*) some_menu_data, FL_MENU_TOGGLE|FL_MENU_VALUE);
157 align_id_ostr.str("");
163 show_align_menu->add("f&ee");
164 show_align_menu->add("f&ie");
165 show_align_menu->add("f&oe");
166 show_align_menu->add("f&um");
169 Fl_Button *test_but = new Fl_Button(375, 2, 150, 30, "Toggle Motifs");
170 test_but->color(FL_WHITE,FL_BLUE);
171 test_but->box(FL_BORDER_BOX);
172 test_but->callback((Fl_Callback*) toggle_motifs_cb, this);
174 toggle_bars = new Fl_Button(530, 2, 150, 30, "Toggle 10bp bars");
175 toggle_bars->color(FL_WHITE,FL_BLUE);
176 toggle_bars->box(FL_BORDER_BOX);
177 toggle_bars->callback((Fl_Callback*) toggle_bars_cb, this);
180 // make the view of the sequence
181 seq_box = new SeqView(0, 34, w, h-34);
182 seq_box->setup(ana_name, seq_num, S, P, seq_lens, the_motifs);
183 //real_set_align_cb(2);
186 Fl::visual(FL_DOUBLE|FL_INDEX);
193 some_menu_data = new menu_align_data_bundle;
194 some_menu_data->swm_ptr = this;
195 some_menu_data->which_align = 2;
196 choose_align_menu->add("f&ie", FL_ALT+'i', (Fl_Callback *) set_align_cb,
197 (void*) some_menu_data);
199 some_menu_data = new menu_align_data_bundle;
200 some_menu_data->swm_ptr = this;
201 some_menu_data->which_align = 3;
202 choose_align_menu->add("f&oe", FL_ALT+'o', (Fl_Callback *) set_align_cb,
203 (void*) some_menu_data);
205 some_menu_data = new menu_align_data_bundle;
206 some_menu_data->swm_ptr = this;
207 some_menu_data->which_align = 4;
208 choose_align_menu->add("f&um", FL_ALT+'u', (Fl_Callback *) set_align_cb,
209 (void*) some_menu_data);