/*
* support.c
*
* GPL code
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <gtk/gtk.h>
#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 <gtk/gtk.h>
#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)
{
}