git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4337 818b1a75-f10b-46b9-bf7c-635c3b92a50f
261 lines
11 KiB
C
261 lines
11 KiB
C
#include <gtk/gtk.h>
|
|
|
|
#include "rc.h"
|
|
#include "ui_main_screen.h"
|
|
#include "ui_menu_bar.h"
|
|
#include "ui_callbacks.h"
|
|
|
|
static const guint BUTTON_SPACE = 0;
|
|
static const guint LABEL_SPACE = 5;
|
|
static const guint SEPARATOR_SPACE = 5;
|
|
|
|
void ui_set_sensitive_move_buttons(gboolean enable)
|
|
{
|
|
// gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.signals_clear_button), enable);
|
|
// gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.signals_go_to_button), enable);
|
|
gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.signals_go_to_last_button), enable);
|
|
gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.signals_go_to_first_button), enable);
|
|
}
|
|
|
|
int ui_menu_bar_create(GtkWidget *vbox)
|
|
{
|
|
GtkWidget *menubar;
|
|
GtkWidget *filemenu, *helpmenu;
|
|
GtkWidget *file;
|
|
GtkWidget *help;
|
|
GtkWidget *open_messages;
|
|
GtkWidget *save_messages;
|
|
GtkWidget *open_filters;
|
|
GtkWidget *save_filters;
|
|
GtkWidget *quit;
|
|
GtkWidget *about;
|
|
GtkWidget *separator1;
|
|
GtkWidget *separator2;
|
|
|
|
if (!vbox)
|
|
return RC_BAD_PARAM;
|
|
|
|
menubar = gtk_menu_bar_new();
|
|
|
|
/* Create the File submenu */
|
|
filemenu = gtk_menu_new();
|
|
|
|
file = gtk_menu_item_new_with_label("File");
|
|
open_messages = gtk_menu_item_new_with_label("Open messages file");
|
|
save_messages = gtk_menu_item_new_with_label("Save messages file");
|
|
open_filters = gtk_menu_item_new_with_label("Open filters file");
|
|
save_filters = gtk_menu_item_new_with_label("Save filters file");
|
|
quit = gtk_menu_item_new_with_label("Quit");
|
|
separator1 = gtk_menu_item_new();
|
|
separator2 = gtk_menu_item_new();
|
|
|
|
gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu);
|
|
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), open_messages);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), save_messages);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), separator1);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), open_filters);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), save_filters);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), separator2);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quit);
|
|
|
|
/* Create the Help submenu */
|
|
helpmenu = gtk_menu_new();
|
|
|
|
help = gtk_menu_item_new_with_label("Help");
|
|
about = gtk_menu_item_new_with_label("About");
|
|
|
|
gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), helpmenu);
|
|
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), help);
|
|
gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu), about);
|
|
|
|
/* Add the menubar to the vbox */
|
|
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3);
|
|
|
|
g_signal_connect(G_OBJECT(open_messages), "activate",
|
|
G_CALLBACK(ui_callback_on_open_messages), NULL);
|
|
|
|
g_signal_connect(G_OBJECT(save_messages), "activate",
|
|
G_CALLBACK(ui_callback_on_save_messages), NULL);
|
|
|
|
g_signal_connect(G_OBJECT(open_filters), "activate",
|
|
G_CALLBACK(ui_callback_on_open_filters), NULL);
|
|
|
|
g_signal_connect(G_OBJECT(save_filters), "activate",
|
|
G_CALLBACK(ui_callback_on_save_filters), NULL);
|
|
|
|
g_signal_connect(G_OBJECT(quit), "activate",
|
|
G_CALLBACK(gtk_main_quit), NULL);
|
|
|
|
g_signal_connect(G_OBJECT(about), "activate",
|
|
G_CALLBACK(ui_callback_on_about), NULL);
|
|
|
|
return RC_OK;
|
|
}
|
|
|
|
int ui_toolbar_create(GtkWidget *vbox)
|
|
{
|
|
GtkWidget *hbox;
|
|
GtkWidget *filters_label;
|
|
GtkWidget *messages_label;
|
|
GtkWidget *ip_label;
|
|
GtkWidget *port_label;
|
|
|
|
if (!vbox)
|
|
return RC_BAD_PARAM;
|
|
|
|
hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
|
|
|
|
filters_label = gtk_label_new("Filters");
|
|
messages_label = gtk_label_new("Messages");
|
|
|
|
/* Button to open filters file */
|
|
{
|
|
ui_main_data.open_filters_file = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.open_filters_file),
|
|
"Open filters file");
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.open_filters_file), "clicked",
|
|
G_CALLBACK(ui_callback_on_open_filters), NULL);
|
|
}
|
|
|
|
/* Button to save filters file */
|
|
{
|
|
ui_main_data.save_filters_file = gtk_tool_button_new_from_stock(GTK_STOCK_SAVE);
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.save_filters_file),
|
|
"Save filters file");
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.save_filters_file), "clicked",
|
|
G_CALLBACK(ui_callback_on_save_filters), NULL);
|
|
}
|
|
|
|
/* Button to open replay file */
|
|
{
|
|
ui_main_data.open_replay_file = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.open_replay_file),
|
|
"Open messages file");
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.open_replay_file), "clicked",
|
|
G_CALLBACK(ui_callback_on_open_messages), NULL);
|
|
}
|
|
|
|
/* Button to save replay file */
|
|
{
|
|
ui_main_data.save_replay_file = gtk_tool_button_new_from_stock(GTK_STOCK_SAVE);
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.save_replay_file),
|
|
"Save messages file");
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.save_replay_file), "clicked",
|
|
G_CALLBACK(ui_callback_on_save_messages), NULL);
|
|
}
|
|
|
|
#if 0 /* This function is already handled by GTK */
|
|
/* Button to go given signal number */
|
|
{
|
|
ui_main_data.signals_go_to_button = gtk_tool_button_new_from_stock(GTK_STOCK_INDEX);
|
|
/* Set the tooltip text */
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.signals_go_to_button),
|
|
"Goto signal");
|
|
|
|
gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.signals_go_to_button), FALSE);
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.signals_go_to_button), "clicked",
|
|
G_CALLBACK(ui_callback_signal_go_to), NULL);
|
|
}
|
|
#endif
|
|
|
|
/* Button to go to first signal in list */
|
|
{
|
|
ui_main_data.signals_go_to_first_button = gtk_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
|
|
/* Set the tooltip text */
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.signals_go_to_first_button),
|
|
"Goto first signal");
|
|
|
|
gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.signals_go_to_first_button), FALSE);
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.signals_go_to_first_button), "clicked",
|
|
G_CALLBACK(ui_callback_signal_go_to_first), NULL);
|
|
}
|
|
|
|
/* Button to go to last signal in list */
|
|
{
|
|
ui_main_data.signals_go_to_last_button = gtk_tool_button_new_from_stock(GTK_STOCK_GOTO_LAST);
|
|
/* Set the tooltip text */
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.signals_go_to_last_button),
|
|
"Goto last signal");
|
|
|
|
gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.signals_go_to_last_button), FALSE);
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.signals_go_to_last_button), "clicked",
|
|
G_CALLBACK(ui_callback_signal_go_to_last), NULL);
|
|
}
|
|
|
|
/* Button to connect to remote */
|
|
{
|
|
ui_main_data.connect = gtk_tool_button_new_from_stock(GTK_STOCK_CONNECT);
|
|
/* Set the tooltip text */
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.connect),
|
|
"Connect to remote host");
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.connect), "clicked",
|
|
G_CALLBACK(ui_callback_on_connect), NULL);
|
|
}
|
|
|
|
/* Button to disconnect from remote */
|
|
{
|
|
ui_main_data.disconnect = gtk_tool_button_new_from_stock(GTK_STOCK_DISCONNECT);
|
|
/* Set the tooltip text */
|
|
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.disconnect),
|
|
"Disconnect from remote host");
|
|
|
|
/* Disabled at startup. Will be activated when a connection is established */
|
|
gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.disconnect), FALSE);
|
|
|
|
g_signal_connect(G_OBJECT(ui_main_data.disconnect), "clicked",
|
|
G_CALLBACK(ui_callback_on_disconnect), NULL);
|
|
}
|
|
|
|
ip_label = gtk_label_new("ip:");
|
|
port_label = gtk_label_new("port:");
|
|
|
|
ui_main_data.ip_entry = gtk_entry_new();
|
|
/* Width of 15 characters for port number (ipv4 address) */
|
|
gtk_entry_set_width_chars(GTK_ENTRY(ui_main_data.ip_entry), 15);
|
|
gtk_entry_set_text(GTK_ENTRY(ui_main_data.ip_entry), ui_main_data.ip_entry_init);
|
|
|
|
ui_main_data.port_entry = gtk_entry_new();
|
|
/* Width of 5 characters for port number (uint16_t) */
|
|
gtk_entry_set_width_chars(GTK_ENTRY(ui_main_data.port_entry), 5);
|
|
gtk_entry_set_text(GTK_ENTRY(ui_main_data.port_entry), ui_main_data.port_entry_init);
|
|
|
|
gtk_box_pack_start(GTK_BOX(hbox), filters_label, FALSE, FALSE, LABEL_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.open_filters_file), FALSE, FALSE, BUTTON_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.save_filters_file), FALSE, FALSE, BUTTON_SPACE);
|
|
|
|
gtk_box_pack_start(GTK_BOX(hbox), gtk_separator_new(GTK_ORIENTATION_VERTICAL), FALSE, FALSE, SEPARATOR_SPACE);
|
|
|
|
gtk_box_pack_start(GTK_BOX(hbox), messages_label, FALSE, FALSE, LABEL_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.open_replay_file), FALSE, FALSE, BUTTON_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.save_replay_file), FALSE, FALSE, BUTTON_SPACE);
|
|
|
|
gtk_box_pack_start(GTK_BOX(hbox), gtk_separator_new(GTK_ORIENTATION_VERTICAL), FALSE, FALSE, SEPARATOR_SPACE);
|
|
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.signals_go_to_first_button), FALSE, FALSE, BUTTON_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.signals_go_to_last_button), FALSE, FALSE, BUTTON_SPACE);
|
|
|
|
gtk_box_pack_start(GTK_BOX(hbox), gtk_separator_new(GTK_ORIENTATION_VERTICAL), FALSE, FALSE, SEPARATOR_SPACE);
|
|
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.connect), FALSE, FALSE, BUTTON_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.disconnect), FALSE, FALSE, BUTTON_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), ip_label, FALSE, FALSE, LABEL_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), ui_main_data.ip_entry, FALSE, FALSE, BUTTON_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), port_label, FALSE, FALSE, LABEL_SPACE);
|
|
gtk_box_pack_start(GTK_BOX(hbox), ui_main_data.port_entry, FALSE, FALSE, BUTTON_SPACE);
|
|
|
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
|
|
|
|
return RC_OK;
|
|
}
|