/* * Simple Jitter program - GTK interface * Alcatel Alenia Space - 2006 * GPL Licence * Author: Nicolas Hennion */ #include "jitter.h" #include void OnRunClientBtn(GtkWidget *pEtatBtn, gpointer pToggle); int main(int argc, char **argv) { GtkWidget *pWindow; GtkWidget *pTable; /* GtkWidget *pLogo; */ GtkWidget *pTitle; GtkWidget *pNotebook; GtkWidget *pTabLabel; GtkWidget *pTabTitle; GtkWidget *pTableClient, *pTableServer; GtkWidget *pIPLabel, *pPortLabel, *pPacketNumberLabel, *pPacketSizeLabel, *pBitrateLabel; GtkWidget *pIPServer, *pPortServer, *pPacketNumber, *pPacketSize, *pBitrate; GtkWidget *pRunClientBtn; gchar *sTitle; gchar *sLabel; /* Init GTK */ gtk_init(&argc, &argv); /* Main windows */ pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(pWindow), 640, 480); gtk_window_set_title(GTK_WINDOW(pWindow), SJITTER_NAME); g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); /* Create the layer for the main window (3*2 table) */ pTable=gtk_table_new(3, 2, FALSE); gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable)); /* Widgets creation */ /* 1er line*/ /* pLogo = gtk_image_new_from_file("./sjitter.png"); */ sTitle = g_strdup_printf("%s v%s", SJITTER_NAME, SJITTER_VERSION); pTitle = gtk_label_new(sTitle); /* 2em line */ pNotebook = gtk_notebook_new(); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(pNotebook), GTK_POS_TOP); gtk_notebook_set_scrollable(GTK_NOTEBOOK(pNotebook), FALSE); /* Client tab */ pIPLabel = gtk_label_new("Server IP address / name: "); pIPServer = gtk_entry_new(); pPortLabel = gtk_label_new("Server port number: "); pPortServer = gtk_entry_new(); gtk_entry_set_text((GtkEntry *) pPortServer, g_strdup_printf("%d", DEFAULT_PORT_NUMBER)); pPacketNumberLabel = gtk_label_new("Number of packets: "); pPacketNumber = gtk_entry_new(); gtk_entry_set_text((GtkEntry *) pPacketNumber, g_strdup_printf("%d", DEFAULT_PACKET_NUMBER)); pPacketSizeLabel = gtk_label_new("Size of packets: "); pPacketSize = gtk_entry_new(); gtk_entry_set_text((GtkEntry *) pPacketSize, g_strdup_printf("%d", DEFAULT_BUFFER_SIZE)); pBitrateLabel = gtk_label_new("Bitrate: "); pBitrate = gtk_entry_new(); gtk_entry_set_text((GtkEntry *) pBitrate, g_strdup_printf("%d", DEFAULT_BITRATE)); pRunClientBtn = gtk_toggle_button_new_with_label(g_strdup_printf("Run the client")); /* g_signal_connect(G_OBJECT(pRunClientBtn), "clicked", G_CALLBACK(OnRunClientBtn), pRunClientBtn); */ g_signal_connect(G_OBJECT(pRunClientBtn), "toggled", G_CALLBACK(OnRunClientBtn), pRunClientBtn); sLabel = g_strdup_printf("%s", SJITTERC_NAME); pTabLabel = gtk_label_new(sLabel); pTableClient = gtk_table_new(7, 2, FALSE); sLabel = g_strdup_printf("%s v%s", SJITTERC_NAME, SJITTERC_VERSION); pTabTitle = gtk_label_new(sLabel); gtk_table_attach(GTK_TABLE(pTableClient), pTabTitle, 0, 2, 0, 1, 0,0,0,0); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pIPLabel, 0, 1, 1, 2); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pIPServer, 1, 2, 1, 2); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pPortLabel, 0, 1, 2, 3); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pPortServer, 1, 2, 2, 3); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pPacketNumberLabel, 0, 1, 3, 4); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pPacketNumber, 1, 2, 3, 4); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pPacketSizeLabel, 0, 1, 4, 5); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pPacketSize, 1, 2, 4, 5); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pBitrateLabel, 0, 1, 5, 6); gtk_table_attach_defaults(GTK_TABLE(pTableClient), pBitrate, 1, 2, 5, 6); gtk_table_attach(GTK_TABLE(pTableClient), pRunClientBtn, 0, 2, 6, 7, 0,0,0,0); gtk_notebook_append_page(GTK_NOTEBOOK(pNotebook), pTableClient, pTabLabel); /* Server tab */ sLabel = g_strdup_printf("%s", SJITTERS_NAME); pTabLabel = gtk_label_new(sLabel); pTableServer = gtk_table_new(2, 2, FALSE); sLabel = g_strdup_printf("%s v%s", SJITTERS_NAME, SJITTERC_VERSION); pTabTitle = gtk_label_new(sLabel); gtk_table_attach_defaults(GTK_TABLE(pTableServer), pTabTitle, 0, 2, 0, 1); gtk_notebook_append_page(GTK_NOTEBOOK(pNotebook), pTableServer, pTabLabel); /* Insert widgets in the main windows */ /* gtk_table_attach_defaults(GTK_TABLE(pTable), pLogo, 0, 1, 0, 1); */ gtk_table_attach(GTK_TABLE(pTable), pTitle, 0, 2, 0, 1, 0,0,0,0); gtk_table_attach_defaults(GTK_TABLE(pTable), pNotebook, 0, 2, 1, 2); /* Main loop */ gtk_widget_show_all(pWindow); gtk_main(); return EXIT_SUCCESS; } void OnRunClientBtn(GtkWidget *pWidget, gpointer pToggle) { gboolean bStatus; gchar *sLabel; /* Get button status */ bStatus = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pToggle)); /* Set the button label */ sLabel = g_strdup_printf("%s", bStatus?"Client is running...":"Run the client"); gtk_button_set_label(GTK_BUTTON(pToggle), sLabel); /* Free */ g_free(sLabel); }