074ecd2a60c72615af8bbea8a3e963e08dc21ffc
[mussa.git] / mussa_gui_seq_text.cc
1 #include "mussa_gui_seq_text.hh"
2
3
4 void
5 get_seq_cb(Fl_Button* o, void* v)
6 {
7   SeqTextWin* T=(SeqTextWin*)v;
8   T->real_get_seq_cb();
9 }
10
11 void
12 SeqTextWin::real_get_seq_cb()
13 {
14   string sub_seq_formatted;
15   int seq_len, i, line_len;
16
17
18   cout << "length = " << seq_end-seq_start << endl;
19
20   // make sure inputed values within valid ranges
21   if ((seq_end > seq_start) && (seq_id > -1) && (seq_id < the_Seqs.size()) )
22   {
23     sub_sequence = the_Seqs[seq_id].subseq(seq_start, seq_end-seq_start);
24
25     sub_seq_formatted = "";
26     seq_len = sub_sequence.size();
27     line_len = 40;
28     for (i = 0; i < seq_len; i += line_len)
29     {
30       sub_seq_formatted.append(sub_sequence.substr(i,line_len));
31       sub_seq_formatted.append("\n");
32     }
33
34     seq_display->value((const char *)sub_seq_formatted.c_str());
35   }
36 }
37
38
39 // *** input seq index id
40
41 void
42 set_seq_id_cb(Fl_Input* o, void* v)
43 {
44   SeqTextWin* T=(SeqTextWin*)v;
45   T->real_set_seq_id_cb(o);
46 }
47
48 void
49 SeqTextWin::real_set_seq_id_cb(Fl_Input* o)
50 {
51   seq_id = atoi(o->value()) - 1;   // -1 since arrays start at 0
52 }
53
54
55 // *** input seq start index
56
57 void
58 set_seq_start_cb(Fl_Input* o, void* v)
59 {
60   SeqTextWin* T=(SeqTextWin*)v;
61   T->real_set_seq_start_cb(o);
62 }
63
64 void
65 SeqTextWin::real_set_seq_start_cb(Fl_Input* o)
66 {
67   seq_start = atoi(o->value());
68 }
69
70 // *** input seq end index
71
72 void
73 set_seq_end_cb(Fl_Input* o, void* v)
74 {
75   SeqTextWin* T=(SeqTextWin*)v;
76   T->real_set_seq_end_cb(o);
77 }
78
79 void
80 SeqTextWin::real_set_seq_end_cb(Fl_Input* o)
81 {
82   seq_end = atoi(o->value());
83 }
84
85
86 SeqTextWin::SeqTextWin(int w, int h, const char* title,
87                        vector<Sequence> some_Seqs):Fl_Window(w,h,title)
88 {
89   string a_name;
90   color(FL_WHITE);
91   the_Seqs = some_Seqs;
92
93
94   seq_id = -1;
95   seq_start = 1000000;
96   seq_end = -1000000;
97
98   begin();
99
100   seq_id_input = new Fl_Input(80,10,30,30, "Seq num: ");
101   seq_id_input->value("");
102   seq_id_input->callback((Fl_Callback*)set_seq_id_cb, this);
103
104   seq_start_input = new Fl_Input(160,10,100,30, " start: ");
105   seq_start_input->value("");
106   seq_start_input->callback((Fl_Callback*)set_seq_start_cb, this);
107
108   seq_end_input = new Fl_Input(310,10,100,30, "end: ");
109   seq_end_input->value("");
110   seq_end_input->callback((Fl_Callback*)set_seq_end_cb, this);
111
112   seq_display = new Fl_Multiline_Output(10, 50, w-20, h-60, "");
113   seq_display->value("");
114
115   //seq_display2 = new Fl_Text_Display(10,100, w-20, h-110,"");
116
117   // button to get the sequence
118   get_seq_but = new Fl_Button(w-80,10,80,30,"Get Seq");
119   get_seq_but->callback((Fl_Callback*)get_seq_cb, this);
120
121
122   end();
123   //resizable(this);
124   show();
125 }
126
127
128 SeqTextWin::~SeqTextWin(){}
129
130 /*
131   cout << "fee\n";
132   cout << "fie\n";
133   cout << "foe\n";
134   cout << "fum\n";
135 */