/* * support.c * * GPL code */ #include #include #include #include #include #include #include "support.h" #include "callbacks.h" extern char *buf; extern char *rbuf; extern char* command [10][10]; extern char* output [10][100]; /* Create window */ GtkWidget* ui_create_window (void) { GtkWidget *window; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "AT My Command"); gtk_window_set_position (GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW(window), 480, 640); g_signal_connect (GTK_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL); g_signal_connect (GTK_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL); return window; } /* To add items to tree structure */ GtkTreeModel* ui_create_and_fill_model (void) { int i; GtkTreeStore *treestore; GtkTreeIter toplevel_gsm0707, child_gsm0707[10]; /* GtkTreeIter toplevel_2, child_2[10]; */ treestore = gtk_tree_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_STRING); /* Append a second top level row, and fill it with some data */ gtk_tree_store_append (treestore, &toplevel_gsm0707, NULL); gtk_tree_store_set (treestore, &toplevel_gsm0707, COL_AT_COMMAND, "GSM 07.07", COL_OUTPUT, "", -1); for (i=0; i<10; i++) { gtk_tree_store_append (treestore, &child_gsm0707[i], &toplevel_gsm0707); gtk_tree_store_set (treestore, &child_gsm0707[i], COL_AT_COMMAND, command[i], COL_OUTPUT, output[i], -1); } /* Append a second top level row, and fill it with some data gtk_tree_store_append (treestore, &toplevel_2, NULL); gtk_tree_store_set (treestore, &toplevel_2, COL_AT_COMMAND, "GSM 07.05", COL_OUTPUT, "", -1); /* Append a child to the second top level row, and fill in some data for (i=0; i<5; i++) { gtk_tree_store_append (treestore, &child_2[i], &toplevel_2); gtk_tree_store_set (treestore, &child_2[i], COL_AT_COMMAND, "AT", COL_OUTPUT, "TRUE", -1); } */ return GTK_TREE_MODEL (treestore); } /* Creating tree like structure view */ GtkWidget *ui_create_view_and_model (void) { GtkWidget *view; GtkTreeModel *model; GtkTreeViewColumn *col; GtkCellRenderer *renderer; view = gtk_tree_view_new (); /* Column #1 */ col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, "Command"); /* pack tree view column into tree view */ gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new (); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start (col, renderer, TRUE); /* connect 'text' property of the cell renderer to model column that contains the first name */ gtk_tree_view_column_add_attribute (col, renderer, "text", COL_AT_COMMAND); /* --- Column #2 --- */ col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, "Output"); /* pack tree view column into tree view */ gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new (); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start (col, renderer, TRUE); /* connect 'text' property of the cell renderer to model column that contains the last name */ gtk_tree_view_column_add_attribute (col, renderer, "text", COL_OUTPUT); /* set 'weight' property of the cell renderer to bold print (we want all last names in bold) */ g_object_set (renderer, "weight", PANGO_WEIGHT_BOLD, "weight-set", TRUE, NULL); model = ui_create_and_fill_model (); gtk_tree_view_set_model (GTK_TREE_VIEW(view), model); g_object_unref (model); /* destroy model automatically with view */ gtk_tree_selection_set_mode (gtk_tree_view_get_selection(GTK_TREE_VIEW(view)), GTK_SELECTION_NONE); return view; } /* To Create MenuBar */ GtkWidget* ui_create_menubar (GtkWidget *window) { GtkWidget *f_menu; GtkWidget *h_menu; GtkWidget *menu_bar; GtkWidget *root_menu; GtkWidget *help_menu; GtkWidget *runTest_menu_item; GtkWidget *about_menu_item; GtkWidget *save_as_menu_item; GtkWidget *exit_menu_item; f_menu = gtk_menu_new (); h_menu = gtk_menu_new (); /* Create the menu items 2 */ runTest_menu_item = gtk_menu_item_new_with_label ("Run"); exit_menu_item = gtk_menu_item_new_with_label ("Quit"); about_menu_item = gtk_menu_item_new_with_label ("About"); /* gtk_stock_add (GTK_STOCK_EXECUTE, 1); gtk_stock_add (const GtkStockItem *items, guint n_items) */ save_as_menu_item = gtk_menu_item_new_with_label ("Save As"); /* Add them to the menu */ gtk_menu_shell_append (GTK_MENU_SHELL (f_menu), runTest_menu_item); gtk_menu_shell_append (GTK_MENU_SHELL (f_menu), save_as_menu_item); gtk_menu_shell_append (GTK_MENU_SHELL (f_menu), exit_menu_item); gtk_menu_shell_append (GTK_MENU_SHELL (h_menu), about_menu_item); /* We do need to show menu items */ gtk_widget_show (runTest_menu_item); gtk_widget_show (about_menu_item); gtk_widget_show (save_as_menu_item); gtk_widget_show (exit_menu_item); /* The root and help menu and will displayed on the menu bar. */ root_menu = gtk_menu_item_new_with_label ("File"); help_menu = gtk_menu_item_new_with_label ("Help"); gtk_widget_show (root_menu); gtk_widget_show (help_menu); /* submenu */ gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), f_menu); gtk_menu_item_set_submenu (GTK_MENU_ITEM (help_menu), h_menu); /* Create a menu-bar to hold the menus and add it to our main window */ menu_bar = gtk_menu_bar_new (); /* And finally we append the menu-item to the menu-bar -- this is the */ gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), help_menu); /* Attach the callback functions to the activate signal */ g_signal_connect_swapped (G_OBJECT (runTest_menu_item), "activate", G_CALLBACK (menuitem_Run_response), (gpointer) "Run Test"); g_signal_connect_swapped (G_OBJECT (about_menu_item), "activate", G_CALLBACK (about_clicked), (gpointer) "About Test"); g_signal_connect_swapped (G_OBJECT (save_as_menu_item), "activate", G_CALLBACK (save_as_clicked), (gpointer) "Save As"); /* We can attach the Quit menu item to our exit function */ g_signal_connect_swapped (G_OBJECT (exit_menu_item), "activate", G_CALLBACK (destroy), (gpointer) "file.quit"); gtk_widget_show_all (menu_bar); return menu_bar; } /* Create Frame */ GtkWidget* ui_create_frame () { GtkWidget *frame; /* Create a Frame */ frame = gtk_frame_new (NULL); /* Set the frame's label */ gtk_frame_set_label (GTK_FRAME (frame), "Frame For AT Command"); /* Align the label at the right of the frame */ gtk_frame_set_label_align (GTK_FRAME (frame), 1.0, 0.0); /* Set the style of the frame */ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT); // gtk_widget_set_size_request (frame, 1000,500); gtk_widget_show (frame); return frame; } /* Standard window-creating stuff */ void ui_combine_widget (GtkWidget *window) { GtkWidget *vBox, *temp_vbox, *menuBar, *frame; menuBar = ui_create_menubar (window); frame = ui_create_frame (); vBox = gtk_vbox_new (FALSE,0); temp_vbox = gtk_vbox_new (FALSE,0); temp_vbox_Global = temp_vbox; gtk_box_pack_start (GTK_BOX(vBox), menuBar, FALSE, TRUE, 0); gtk_widget_show (menuBar); gtk_box_pack_start (GTK_BOX (vBox), temp_vbox_Global, FALSE, FALSE,0); gtk_widget_show (temp_vbox_Global); gtk_widget_show (vBox); gtk_container_add (GTK_CONTAINER(window), vBox); gtk_widget_show (window); } == callback.c == /* * callbacks.c * * Used to callbacks the functions used by support.c module. * * Copyright (C) 2007 Atul Raut * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include #include "callbacks.h" #include "interface.h" #include "support.h" #include "string.h" char *command [10][10]; char *output [10][100]; void run_test (void) { int i; for (i=0; i<10; i++) { strcpy (command [i], "AT"); strcpy (output [i], "OK"); } } /* called by delete_event to destroy the application window */ void destroy (GtkWidget *widget, gpointer data) { gtk_main_quit (); } /* Menu Item Runs shows runtime output */ void menuitem_Run_response (GtkWindow *window) { GtkWidget *view; GtkTreeModel *model; GtkWidget *scroll_window; /* Run test, insert test results */ run_test (); view = ui_create_view_and_model (); scroll_window = gtk_scrolled_window_new (NULL, NULL); // gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); // gtk_box_pack_start (GTK_BOX (temp_vbox_Global),view, FALSE, FALSE,0); gtk_box_pack_start (GTK_BOX (temp_vbox_Global), scroll_window, TRUE, TRUE, 0); gtk_widget_show (scroll_window); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll_window), view); gtk_widget_show (temp_vbox_Global); gtk_widget_show (view); } /* Show "About" information */ void about_clicked (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *dialog, *label; dialog = gtk_dialog_new (); label = gtk_label_new ("Project started by Qvantel India!"); /* Add the label, and show everything we've added to the dialog. */ gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); gtk_widget_show_all (dialog); } /* Save output of AT Commands */ void save_as_clicked (GtkMenuItem *menuitem, gpointer user_data) { }