27 GtkWidget *
title = gtk_label_new(
"");
28 gtk_label_set_markup(GTK_LABEL(title),
view->
getString(
"RecordingTitle"));
30 TabAdd(gtk_hseparator_new());
45 enabled_boxes.resize(num_channel_boxes);
46 reference_boxes.resize(num_channel_boxes);
47 entry_electrode_names.resize(num_channel_boxes);
52 GtkWidget *config_file_box = gtk_vbox_new(
false, 0);
53 GtkWidget *btn_box = gtk_hbutton_box_new();
54 gtk_button_box_set_layout(GTK_BUTTON_BOX(btn_box),GTK_BUTTONBOX_START);
56 control_btn_load = gtk_button_new_with_label(
view->
getString(
"RecordingStr1"));
57 g_signal_connect(G_OBJECT(control_btn_load),
59 G_CALLBACK(CB_LoadChannelsFile),
63 control_btn_save = gtk_button_new_with_label(
view->
getString(
"RecordingStr2"));
64 g_signal_connect(G_OBJECT(control_btn_save),
66 G_CALLBACK(CB_SaveChannelsFile),
70 control_btn_clear = gtk_button_new_with_label(
view->
getString(
"RecordingStr3"));
71 g_signal_connect(G_OBJECT(control_btn_clear),
73 G_CALLBACK(CB_ClearChannels),
77 gtk_box_pack_start(GTK_BOX(btn_box),control_btn_load,
false,
false,2);
78 gtk_box_pack_start(GTK_BOX(btn_box),control_btn_save,
false,
false,2);
79 gtk_box_pack_start(GTK_BOX(btn_box),control_btn_clear,
false,
false,2);
83 GtkWidget *label_file = gtk_label_new(
"");
84 gtk_label_set_markup(GTK_LABEL(label_file),
view->
getString(
"RecordingStr4"));
85 label_filename = gtk_label_new(channel_config_file.c_str());
86 GtkWidget *hbox_filename = gtk_hbox_new(
false,0);
88 gtk_box_pack_start(GTK_BOX(hbox_filename),label_file,
false,
false,0);
89 gtk_box_pack_start(GTK_BOX(hbox_filename),label_filename,
false,
false,0);
91 gtk_box_pack_start(GTK_BOX(config_file_box),btn_box,
false,
false, 2);
92 gtk_box_pack_start(GTK_BOX(config_file_box),hbox_filename,
false,
false, 2);
99 suppress_channel_callbacks =
false;
101 GtkWidget *main_hbox = gtk_hbox_new(
false,0);
104 GtkWidget *channels_hbox = gtk_hbox_new(
false,0);
105 GtkWidget *channels_table = gtk_table_new(num_channel_boxes + 1, cols,
false);
108 gtk_table_set_row_spacings(GTK_TABLE(channels_table),1);
109 gtk_table_set_col_spacings(GTK_TABLE(channels_table),10);
112 GtkWidget * label1 = gtk_label_new(
"");
113 gtk_label_set_markup(GTK_LABEL(label1),
view->
getString(
"RecordingStr5"));
114 GtkWidget * label2 = gtk_label_new(
"");
115 gtk_label_set_markup(GTK_LABEL(label2),
view->
getString(
"RecordingStr6"));
116 GtkWidget * label3 = gtk_label_new(
"");
117 gtk_label_set_markup(GTK_LABEL(label3),
view->
getString(
"RecordingStr7"));
118 GtkWidget * label4 = gtk_label_new(
"");
119 gtk_label_set_markup(GTK_LABEL(label4),
view->
getString(
"RecordingStr8"));
121 gtk_table_attach(GTK_TABLE(channels_table)
124 GTK_FILL, GTK_SHRINK,0,0);
125 gtk_table_attach(GTK_TABLE(channels_table)
127 ,1,2,0,1,GTK_FILL,GTK_SHRINK,0,0);
128 gtk_table_attach(GTK_TABLE(channels_table)
130 ,2,3,0,1,GTK_FILL,GTK_SHRINK,0,0);
131 gtk_table_attach(GTK_TABLE(channels_table)
133 ,3,4,0,1,GTK_FILL,GTK_SHRINK,0,0);
136 for(
int i=0;i<num_channel_boxes;i++)
139 gtk_table_attach(GTK_TABLE(channels_table)
141 ,0,1,i+1,i+2,GTK_FILL,GTK_SHRINK,0,0);
143 entry_electrode_names[i] = gtk_entry_new_with_max_length(10);
144 g_signal_connect(G_OBJECT(entry_electrode_names[i]),
146 G_CALLBACK(CB_ChangeChannel),
150 gtk_widget_set_size_request(entry_electrode_names[i], 30, 20);
151 gtk_table_attach(GTK_TABLE(channels_table)
152 ,entry_electrode_names[i]
153 ,1,2,i+1,i+2,GTK_FILL,GTK_SHRINK,0,0);
155 reference_boxes[i] = gtk_check_button_new();
156 g_signal_connect(G_OBJECT(reference_boxes[i]),
158 G_CALLBACK(CB_ChangeChannel),
160 gtk_table_attach(GTK_TABLE(channels_table)
162 ,2,3,i+1,i+2,GTK_FILL,GTK_SHRINK,0,0);
165 enabled_boxes[i] = gtk_check_button_new();
166 g_signal_connect(G_OBJECT(enabled_boxes[i]),
168 G_CALLBACK(CB_ChangeChannel),
170 gtk_table_attach(GTK_TABLE(channels_table)
172 ,3,4,i+1,i+2,GTK_FILL,GTK_SHRINK,0,0);
176 GtkWidget * scroll_window = gtk_scrolled_window_new(NULL,NULL);
177 gtk_container_border_width(GTK_CONTAINER(scroll_window),0);
178 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window),
179 GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
182 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll_window),channels_table);
183 gtk_widget_set_size_request(scroll_window,300,-1);
184 gtk_box_pack_start(GTK_BOX(channels_hbox), scroll_window,
false,
false, 0);
197 store = gtk_list_store_new(
NUM_COLS, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_INT);
200 gtk_list_store_append(store, &iter);
201 gtk_list_store_set(store, &iter,
208 gtk_list_store_append(store, &iter);
209 gtk_list_store_set(store, &iter,
216 gtk_list_store_append(store, &iter);
217 gtk_list_store_set(store, &iter,
223 GtkCellRenderer *renderer;
226 GtkTreeViewColumn *col;
227 GtkTreeSelection *selection;
230 view = gtk_tree_view_new();
233 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
234 gtk_tree_selection_set_select_function(selection, CB_SelectProcess,
this, NULL);
239 col = gtk_tree_view_column_new();
240 gtk_tree_view_column_set_title(col, this->view->getString(
"RecordingStr13"));
241 gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
242 renderer = gtk_cell_renderer_toggle_new();
243 g_signal_connect(renderer,
"toggled", (GCallback) CB_ToggleProcess,
this);
245 gtk_cell_renderer_toggle_set_active(GTK_CELL_RENDERER_TOGGLE(renderer),
true);
246 g_object_set(renderer,
"activatable", TRUE, NULL);
247 gtk_tree_view_column_pack_start(col, renderer, TRUE);
249 gtk_tree_view_column_set_attributes(col, renderer,
254 col = gtk_tree_view_column_new();
255 gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
256 gtk_tree_view_column_set_title(col, this->view->getString(
"RecordingStr14"));
257 renderer = gtk_cell_renderer_text_new();
258 gtk_tree_view_column_pack_start(col, renderer, TRUE);
259 gtk_tree_view_column_set_attributes(col, renderer,
264 model = GTK_TREE_MODEL(store);
265 this->tree_model = model;
266 gtk_tree_view_set_model(GTK_TREE_VIEW(view),model);
269 g_object_unref(model);
271 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(view)),
272 GTK_SELECTION_BROWSE);
273 gtk_widget_show_all(GTK_WIDGET(view));
276 GtkWidget *process_pane = gtk_vpaned_new();
277 gtk_widget_show(process_pane);
279 gtk_paned_pack1(GTK_PANED(process_pane),view,
true,
true);
283 description_viewer = gtk_text_view_new();
284 gtk_text_view_set_editable(GTK_TEXT_VIEW(description_viewer),
false);
285 gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(description_viewer),
false);
286 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(description_viewer),GTK_WRAP_WORD);
287 gtk_widget_set_size_request (description_viewer, 250, 110);
289 GtkWidget * frame =
TabFrameCreate(description_viewer,this->view->getString(
"RecordingStr15"));
290 gtk_paned_pack2(GTK_PANED(process_pane),frame,
false,
false);
294 gtk_box_pack_start(GTK_BOX(main_hbox),
TabFrameCreate(process_pane, this->view->getString(
"RecordingStr16")),
false,
false, 0);
297 TabAdd(main_hbox,
true,
true,5);
309 suppress_channel_callbacks =
true;
311 for(
int i=0; i<num_channel_boxes; i++)
313 gtk_entry_set_text(GTK_ENTRY(entry_electrode_names[i]),
315 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(reference_boxes[i]),
317 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enabled_boxes[i]),
321 gtk_label_set_markup(GTK_LABEL(label_filename),markup.c_str());
326 gtk_tree_model_get_iter_first(GTK_TREE_MODEL(tree_model),&iter);
331 gtk_tree_model_get(tree_model, &iter,
COL, &
id, -1);
336 gtk_list_store_set(GTK_LIST_STORE(tree_model), &iter,
338 (
getView()->getModel()->processGetReferenceEnabled()),
342 gtk_list_store_set(GTK_LIST_STORE(tree_model), &iter,
344 (
getView()->getModel()->processGetRemoveEnabled()),
348 gtk_list_store_set(GTK_LIST_STORE(tree_model), &iter,
350 (
getView()->getModel()->processGetFilterEnabled()),
357 while(gtk_tree_model_iter_next(GTK_TREE_MODEL(tree_model),&iter));
359 suppress_channel_callbacks =
false;
373 void TabEEGRecording::CB_LoadChannelsFile(GtkWidget * w, gpointer data)
395 void TabEEGRecording::CB_SaveChannelsFile(GtkWidget * w, gpointer data)
414 void TabEEGRecording::CB_ClearChannels(GtkWidget *w, gpointer data)
418 for(
int i=0; i < tab->num_channel_boxes; i++)
420 gtk_entry_set_text(GTK_ENTRY(tab->entry_electrode_names[i]),
"");
421 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tab->reference_boxes[i]),
423 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tab->enabled_boxes[i]),
433 void TabEEGRecording::CB_ToggleProcess(GtkCellRendererToggle *cell,
439 if(tab->suppress_channel_callbacks)
return;
444 gtk_tree_model_get_iter_from_string(tab->tree_model, &iter, path);
447 gboolean selected =
false;
449 gtk_tree_model_get(tab->tree_model, &iter,
COL_CHECK, &selected, -1);
450 gtk_tree_model_get(tab->tree_model, &iter,
COL, &
id, -1);
451 gtk_list_store_set(GTK_LIST_STORE(tab->tree_model), &iter,
474 gboolean TabEEGRecording::CB_SelectProcess (GtkTreeSelection *selection,
477 gboolean path_currently_selected,
487 if(path_currently_selected)
492 if(gtk_tree_model_get_iter(model, &iter, path))
495 gtk_tree_model_get(model, &iter,
COL, &
id, -1);
498 GtkTextBuffer * buffer;
499 GtkWidget *
view = tab->description_viewer;
500 buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
504 gtk_text_buffer_set_text(buffer,
509 gtk_text_buffer_set_text(buffer,
514 gtk_text_buffer_set_text(buffer,
527 void TabEEGRecording::CB_ChangeChannel(GtkWidget *w, gpointer data)
531 if(tab->suppress_channel_callbacks)
return;
533 for(
int i=0; i<tab->num_channel_boxes;i++)