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 + -
显示快捷键?