All pastes #733039 Raw Edit

mbuf

public text v1 · immutable
·published 2007-10-11 14:06 UTC
rendered paste body
/*
 * 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);
}