1 #include "mussa_gui_seq.hh"
4 SeqWinMaster::SeqWinMaster(int x_size, string name, int sq_num,
5 vector<Sequence> *some_seqs,
6 list<vector<int> > some_paths,
8 vector<motif> *some_motifs)
13 // give 50 pixels of height per sequence
16 // most of this stuff is here just to pass to SeqView object
22 the_motifs = some_motifs;
27 set_align_cb(Fl_Widget* widg, void* the_data)
29 menu_align_data_bundle * blah = (menu_align_data_bundle *) the_data;
30 SeqWinMaster* T= blah->swm_ptr;
31 T->real_set_align_cb(blah->which_align);
36 SeqWinMaster::real_set_align_cb(int which_align)
43 window_length = a_path[0];
44 cout << window_length << endl;
47 seq_box->align_offsets(which_align);
53 show_align_cb(Fl_Widget* widg, void* the_data)
55 menu_align_data_bundle * blah = (menu_align_data_bundle *) the_data;
56 SeqWinMaster* T= blah->swm_ptr;
57 T->real_show_align_cb(blah->which_align);
62 SeqWinMaster::real_show_align_cb(int which_align)
69 seq_box->toggle_align(which_align);
75 toggle_bars_cb(Fl_Button* o, void* v)
77 SeqWinMaster* T=(SeqWinMaster*)v;
78 T->real_toggle_bars_cb();
83 SeqWinMaster::real_toggle_bars_cb()
85 seq_box->toggle_bars();
90 toggle_motifs_cb(Fl_Button* o, void* v)
92 SeqWinMaster* T=(SeqWinMaster*)v;
93 T->real_toggle_motifs_cb();
98 SeqWinMaster::real_toggle_motifs_cb()
100 seq_box->toggle_motifs();
105 SeqWinMaster::make_window()
107 menu_align_data_bundle * some_menu_data;
110 int window_length, align_number;
112 ostringstream align_id_ostr;
113 string align_id_string;
114 list<vector<int> >::iterator align_iter;
116 Fl_Double_Window *seq_window = new Fl_Double_Window(x_max, y_max,
118 //seq_window->resizable();
119 seq_window->color(FL_WHITE);
122 // make the menu that allows alignment selection
123 choose_align_menu = new Fl_Menu_Button(3, 2, 180, 30, "Choose Alignment");
124 choose_align_menu->color(FL_WHITE,FL_BLUE);
125 choose_align_menu->box(FL_PLASTIC_UP_BOX);
126 choose_align_menu->clear();
128 // make the menu that allows alignment selection
129 show_align_menu = new Fl_Menu_Button(186, 2, 180, 30, "Show Alignment");
130 show_align_menu->color(FL_WHITE,FL_BLUE);
131 show_align_menu->box(FL_PLASTIC_UP_BOX);
132 show_align_menu->clear();
133 align_iter = P.begin();
135 while(align_iter != P.end())
137 some_menu_data = new menu_align_data_bundle;
138 some_menu_data->swm_ptr = this;
139 some_menu_data->which_align = align_number;
140 align_id_ostr << (*align_iter)[0] << ": ";
141 for(i = 1; i <= seq_num; i++)
142 align_id_ostr << (*align_iter)[i] << ", ";
143 align_id_string = align_id_ostr.str();
144 choose_align_menu->add((const char*)align_id_string.c_str(), 0,
145 (Fl_Callback *) set_align_cb,
146 (void*) some_menu_data);
147 show_align_menu->add((const char*)align_id_string.c_str(), 0,
148 (Fl_Callback *) show_align_cb,
149 (void*) some_menu_data, FL_MENU_TOGGLE|FL_MENU_VALUE);
151 align_id_ostr.str("");
157 show_align_menu->add("f&ee");
158 show_align_menu->add("f&ie");
159 show_align_menu->add("f&oe");
160 show_align_menu->add("f&um");
163 Fl_Button *test_but = new Fl_Button(369, 2, 180, 30, "Toggle Motifs");
164 test_but->color(FL_WHITE,FL_BLUE);
165 test_but->box(FL_PLASTIC_UP_BOX);
166 test_but->callback((Fl_Callback*) toggle_motifs_cb, this);
168 toggle_bars = new Fl_Button(552, 2, 180, 30, "Toggle 10bp bars");
169 toggle_bars->color(FL_WHITE,FL_BLUE);
170 toggle_bars->box(FL_PLASTIC_UP_BOX);
171 toggle_bars->callback((Fl_Callback*) toggle_bars_cb, this);
174 // make the view of the sequence
175 seq_box = new SeqView(0, 34, x_max, y_max-34);
176 seq_box->setup(ana_name, seq_num, S, P, seq_lens, the_motifs);
177 //real_set_align_cb(2);
180 Fl::visual(FL_DOUBLE|FL_INDEX);
185 some_menu_data = new menu_align_data_bundle;
186 some_menu_data->swm_ptr = this;
187 some_menu_data->which_align = 2;
188 choose_align_menu->add("f&ie", FL_ALT+'i', (Fl_Callback *) set_align_cb,
189 (void*) some_menu_data);
191 some_menu_data = new menu_align_data_bundle;
192 some_menu_data->swm_ptr = this;
193 some_menu_data->which_align = 3;
194 choose_align_menu->add("f&oe", FL_ALT+'o', (Fl_Callback *) set_align_cb,
195 (void*) some_menu_data);
197 some_menu_data = new menu_align_data_bundle;
198 some_menu_data->swm_ptr = this;
199 some_menu_data->which_align = 4;
200 choose_align_menu->add("f&um", FL_ALT+'u', (Fl_Callback *) set_align_cb,
201 (void*) some_menu_data);