app4.4.c

来自「code about gtk++ for MID intel develop i」· C语言 代码 · 共 1,902 行 · 第 1/5 页

C
1,902
字号
         * Decription   : function process for event  icon device clicked in main_window.
         * Parameter  :  2
		 "button" (I) :  object send signal to function	
		 "data" (I) :   data recive after event has been send
         * Return       :  none
        ***************************************************************************/	
void button_clicked (GtkWidget* button, gint8 data)
{
	/* variables*/
	int key = data;
	int i;
	gchar* arr_string [5]= { "Open","Close","Alarm","Channel","Cancel"};
	gchar* arr_stock_icon [5]= {GTK_STOCK_OPEN, GTK_STOCK_CLOSE, GTK_STOCK_PREFERENCES, GTK_STOCK_MEDIA_PLAY, GTK_STOCK_CANCEL};
	GtkWidget *arr_button[5];
	GtkWidget *vbutton_box;
	
  /* Create a new form control device */
	dialog = gtk_dialog_new_with_buttons ("",GTK_WINDOW (window),  GTK_DIALOG_MODAL, NULL);
	gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
	/* set size of dialog*/
	gtk_widget_set_size_request (dialog,150,215);

 	/* init container vbutton_box contain 5 button */
	vbutton_box = gtk_vbutton_box_new ();
	gtk_vbutton_box_set_spacing_default (5);
	/*add container vbuton_box to dialog */
	gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbutton_box);
    /* init 5 button Open, Close, Alarm, Channel, Cancel */
	for(i=0; i < 5; i++)
	{
		arr_button[i]= create_button (arr_stock_icon[i], arr_string[i]);
	}
	/* add 3 button Open, Close, Alarm to container vbuton_box*/
	for(i=0; i < 3; i++)
	{
		gtk_box_pack_start_defaults (GTK_BOX (vbutton_box), arr_button[i]); 
	}
  
  /* if icons LCD clicked then insert button Channel to container (in dialog)  */
	if (data == 4 )
	{
		gtk_widget_set_size_request (dialog,150,260);
		gtk_box_pack_start_defaults (GTK_BOX (vbutton_box), arr_button[3]); 	
		if  (state_arr[data] ==0)
		/* if device is close then set sensitive to false*/
		{
			gtk_widget_set_sensitive ( arr_button[3], FALSE);
		}
	}  
	/* add button Cancel to container*/
	gtk_box_pack_start_defaults (GTK_BOX (vbutton_box), arr_button[4]); 
  /* set state for devices */
	if (state_arr[data] == 1)
	{
		/* set sensitive of Close to false*/
		gtk_widget_set_sensitive ( arr_button[0], FALSE);
	}
	else
	{
		/* set sensitive of button Open to false*/
		gtk_widget_set_sensitive ( arr_button[1], FALSE);
	}
   /*add functions callback to buttons and swap destroy dialog */
	g_signal_connect (G_OBJECT (arr_button[0]), "clicked", G_CALLBACK (function_open),  (gpointer) key);
	 g_signal_connect_swapped (G_OBJECT (arr_button[0]), "clicked",
                            G_CALLBACK (gtk_widget_destroy),
			    G_OBJECT (dialog));
				
	g_signal_connect (G_OBJECT (arr_button[1]), "clicked", G_CALLBACK (function_close),  (gpointer) key);
	 g_signal_connect_swapped (G_OBJECT (arr_button[1]), "clicked",
                            G_CALLBACK (gtk_widget_destroy),
			    G_OBJECT (dialog));
				
	g_signal_connect (G_OBJECT (arr_button[2]), "clicked", G_CALLBACK (function_alarm),  (gpointer) key);
	 g_signal_connect_swapped (G_OBJECT (arr_button[2]), "clicked",
                            G_CALLBACK (gtk_widget_destroy),
			    G_OBJECT (dialog));
				
	g_signal_connect (G_OBJECT (arr_button[3]), "clicked", G_CALLBACK (function_channel),  (gpointer) key);
	 g_signal_connect_swapped (G_OBJECT (arr_button[3]), "clicked",
                            G_CALLBACK (gtk_widget_destroy),
			    G_OBJECT (dialog));
	/*cancel button only assigned destroy dialog signal*/			
	 g_signal_connect_swapped (G_OBJECT (arr_button[4]), "clicked",
                            G_CALLBACK (gtk_widget_destroy),
			    G_OBJECT (dialog));
	
	/*show dialog */
	gtk_widget_show_all (dialog);  
}

/**************************************************************************
         * Create Date  : 02/11/2009
         * Creator Name : Tran Chi Nghia
         * Decription   : send signal "close all device to server".
         * Parameter  :  2
		 "button" (I) :  object send signal to function	
		 "data" (I) :   data recive after event has been send
         * Return       :  none
        ***************************************************************************/	
void function_open_all (GtkWidget* button, gint8 data)
{
	//test
	int i;
	for (i=0; i<NUMBER_DEVICE; i++)
	{
		gtk_widget_reparent (arr_active_unactive[i], arr_hbutton_box[1] );
	}
	//end test
	// gui ma mo toan bo thiet bi
	//send_buffer [1] = data;
	//send_buffer [0] = 1;
	if ( write(sockfd,send_buffer,2) < 0 )
		 perror("ERROR writing to socket"); 
}

/**************************************************************************
         * Create Date  : 02/11/2009
         * Creator Name : Tran Chi Nghia
         * Decription   : send signal "close all device" to server
         * Parameter  :  2
		 "button" (I) :  object send signal to function	
		 "data" (I) :   data recive after event has been send
         * Return       :  none
        ***************************************************************************/	
void function_close_all (GtkWidget* button, gint8 data)
{
	
	//test
	int i;
	for (i=0; i<NUMBER_DEVICE; i++)
	{
		gtk_widget_reparent (arr_active_unactive[i], arr_hbutton_box[2] );
	}
	//end test
	// gui ma dong toan bo thiet bi
	 //send_buffer [1] = 4; // ma dong tat ca cac thiet bi
	//send_buffer [0] = 1;
	if ( write(sockfd,send_buffer,2) < 0 )
		 perror("ERROR writing to socket"); 
}

/**************************************************************************
         * Create Date  : 02/11/2009
         * Creator Name : Tran Chi Nghia
         * Decription   : process event Open button was clicked, send signal open device to server. 
         * Parameter  :  2
		 "button" (I) :  object send signal to function	
		 "data" (I) :   data recive after event has been send
         * Return       :  none
        ***************************************************************************/	
void function_open (GtkWidget* button, gint8 data)
{
	//test
	state_arr [data] = 1;
	gtk_widget_reparent (arr_active_unactive[data], arr_hbutton_box[1] );
	//end test
   /* send signal to server*/
	send_buffer [0] = 0;
	send_buffer [1] = data;	
	if ( write(sockfd,send_buffer,2) < 0 )
		perror("ERROR writing to socket");

}

/**************************************************************************
         * Create Date  : 02/11/2009
         * Creator Name : Tran Chi Nghia
         * Decription   :  process event Close button was clicked, send signal close device to server.
         * Parameter  :  2
		 "button" (I) :  object send signal to function	
		 "data" (I) :   data recive after event has been send
         * Return       :  none
        ***************************************************************************/	
void function_close (GtkWidget* button, gint8 data)
{	
	//test
	state_arr [data] = 0;
	gtk_widget_reparent (arr_active_unactive[data], arr_hbutton_box[2] );
	//end test
   /* send signal to server*/
   send_buffer [0] = 1;
	send_buffer [1] = data;
	if ( write(sockfd,send_buffer,2) < 0 )
		 perror("ERROR writing to socket");
}

/**************************************************************************
         * Create Date  : 02/11/2009
         * Creator Name : Tran Chi Nghia
         * Decription   :  process for event  button Alarm was clicked in form control device.
         * Parameter  :  2
		 "button" (I) :  object send signal to function	
		 "data" (I) :   data recive after event has been send
         * Return       :  none
        ***************************************************************************/	
void function_alarm (GtkWidget* button1, gint8 data)
{
	/* width, heigh, screen of MID*/
	int width, height;
	GdkScreen *screen;
	/* variables */
	gchar* stock_item[3] = {GTK_STOCK_APPLY,GTK_STOCK_CANCEL,GTK_STOCK_CLOSE};	
	GtkWidget *dialog_alarm, *frame, *button_close, *label_button, *image_button, *hbox_button;
	GtkWidget *hbox, *main_vbox,  *vbox, *vbox2,*spinner, *button,*label_frame, *label;
	GtkAdjustment *adj;
	
	int key = data;
	/*date and time*/
	int hr,min,day,month,year;
	time_t now;
	/* get information of time now*/
	gchar *str_time = g_new(gchar, 25);
	gchar *str_date = g_new(gchar, 25);
	 struct tm *nowbase;   
	 time (&now);
	 nowbase = localtime(&now);

	if (nowbase)
	{
		hr = nowbase->tm_hour;
		min = nowbase->tm_min ;
		day = nowbase->tm_mday;
		month = nowbase->tm_mon +1; 
		year = nowbase->tm_year+1900;
	}


	/* get information about screen of MID */
	screen = gdk_display_get_screen (display, 0);
	width = gdk_screen_get_width (screen);
	height = gdk_screen_get_height (screen);

	/* Create a new dialog form  */
	dialog_alarm = gtk_dialog_new_with_buttons ( "Alarm", NULL, GTK_DIALOG_MODAL,  NULL);
	gtk_dialog_set_has_separator (GTK_DIALOG (dialog_alarm), FALSE);
	gtk_widget_set_size_request (dialog_alarm, 330, 340);
	
	/* init container contain all objects for alarm and add container to dialog form*/
	main_vbox = gtk_vbox_new (FALSE, 5);
	gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 10);
	gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog_alarm)->vbox), main_vbox);

	/*init frame and insert to mainbox container */
	label =gtk_label_new ("Setup Time Alarm");
	gtk_widget_modify_font (label, init_font);
	frame = gtk_frame_new ("");
	gtk_frame_set_label_widget (GTK_FRAME(frame),label);
	gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 0);

	/*insert vbox container to frame*/
	vbox = gtk_vbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
	gtk_container_add (GTK_CONTAINER (frame), vbox);

	/* Day, month, year  */
	
	/* hbox contain date setting */
	hbox = gtk_hbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
	/* init list box for day */
	vbox2 = gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);
	
	label = gtk_label_new ("Day:");
	gtk_widget_modify_font (label, init_font);
	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
	gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0);
	/* init content list box */
	adj = (GtkAdjustment *) gtk_adjustment_new (day, 1.0, 31.0, 1.0,
						  5.0, 0.0);
	spinner_day = gtk_spin_button_new (adj, 0, 0);
	gtk_widget_modify_font (spinner_day, init_font);
	gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner_day), TRUE);
	gtk_box_pack_start (GTK_BOX (vbox2), spinner_day, FALSE, TRUE, 0);
	
	//month
	vbox2 = gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);

	label = gtk_label_new ("Month:");
	gtk_widget_modify_font (label,  init_font);
	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
	gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0);
	/* init content of month */
	adj = (GtkAdjustment *) gtk_adjustment_new (month , 1.0, 12.0, 1.0,
						  5.0, 0.0);
	spinner_month = gtk_spin_button_new (adj, 0, 0);
	gtk_widget_modify_font (spinner_month, init_font);
	gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner_month), TRUE);
	gtk_box_pack_start (GTK_BOX (vbox2), spinner_month, FALSE, TRUE, 0);

	//year
	vbox2 = gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);

	label = gtk_label_new ("Year:");
	gtk_widget_modify_font (label, init_font);
	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
	gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0);
	/* init content of year*/
	adj = (GtkAdjustment *) gtk_adjustment_new (year, 2007.0, 2100.0,
						  1.0, 100.0, 0.0);
	spinner_year = gtk_spin_button_new (adj, 0, 0);
	gtk_widget_modify_font (spinner_year, init_font);
	gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner_year), FALSE);
	gtk_box_pack_start (GTK_BOX (vbox2), spinner_year, FALSE, TRUE, 0);

	/* Time */
	/* hbox contain time setting */
	hbox = gtk_hbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 5);
	vbox2 = gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);
	/* hour */
	label = gtk_label_new ("Hours:");
	gtk_widget_modify_font (label, init_font);
	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
	gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0);
	/* init content of hours */
	adj = (GtkAdjustment *) gtk_adjustment_new (hr, 0, 23,
						  1, 23, 0);
	spinner_hour = gtk_spin_button_new (adj, 0, 0);
	gtk_widget_modify_font (spinner_hour, init_font);
	gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner_hour), TRUE);

	gtk_box_pack_start (GTK_BOX (vbox2), spinner_hour, FALSE, TRUE, 0);
	
	vbox2 = gtk_vbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);
	// minute
	label = gtk_label_new ("Minutes:");
	gtk_widget_modify_font (label, init_font);
	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
	gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0);
	/* init content of minute */
	adj = (GtkAdjustment *) gtk_adjustment_new (min, 0, 59, 1, 59, 0);
	spinner_minute = gtk_spin_button_new (adj, 0, 0);
	gtk_widget_modify_font (spinner_minute, init_font);
	gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner_minute), TRUE);
	
	gtk_box_pack_start (GTK_BOX (vbox2), spinner_minute, FALSE, TRUE, 0);

	/* init frame control */
	label =gtk_label_new ("Select Tasks:");
	gtk_widget_modify_font (label, init_font);
	frame = gtk_frame_new ("");
	gtk_frame_set_label_widget (GTK_FRAME(frame),label); 
	gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 0);

	// insert frame to vbox container 
	vbox = gtk_vbox_new (FALSE, 0);
	gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
	gtk_container_add (GTK_CONTAINER (frame), vbox);

	//add combo box
	hbox = gtk_hbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 5);

	// init combo box 
	GList *glist = NULL;
	glist = g_list_append (glist, "Active Device");
	glist = g_list_append (glist, "Unactive Device");

	combo = gtk_combo_new(  );

	gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (combo)->entry), "");
	gtk_combo_set_popdown_strings (GTK_COMBO (combo), glist);
	gtk_combo_set_use_arrows( GTK_COMBO (combo), TRUE );
	gtk_combo_set_case_sensitive( GTK_COMBO (combo) , FALSE );

	gtk_widget_modify_font (GTK_COMBO (combo)->entry, init_font);

	gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 5);

	// add button 
	hbox = gtk_hbox_new (FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 5);
	//apply button 
	button_apply = create_button (stock_item[0],"Apply");
	g_signal_connect (G_OBJECT (button_apply), "clicked", G_CALLBACK (apply_click), (gpointer) key);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?