/* * greeting.c * * apt-get install libgtk2.0-dev gcc * gcc greeting.c -o greeting `pkg-config --cflags --libs gtk+-2.0` * * >v< hiro1357 / @eserver_dip_jp * */ #define DEBUG #include #include #include #include #include static void cb_button1_clicked (GtkWidget *button, gpointer user_data); GtkWidget *window; GtkWidget *fixed; GtkWidget *button1; GtkWidget *textbox1; GtkWidget *label1; int main (int argc , char** argv) { /* Initialize GTK+ */ gtk_init (&argc , &argv); /* Create widgets */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window) , "greeting"); fixed = gtk_fixed_new (); button1 = gtk_button_new_with_label ("greeting"); textbox1 = gtk_entry_new (); label1 = gtk_label_new ("input your name"); //gtk_entry_set_editable (GTK_TEXT(text1), TRUE); /* Widget sizes */ gtk_widget_set_size_request (window , 300 , 220); gtk_window_set_resizable (GTK_WINDOW (window), FALSE); gtk_widget_set_size_request (textbox1 ,180 ,20); /* add widgets to container */ gtk_container_add (GTK_CONTAINER (window), fixed); //gtk_container_add (GTK_CONTAINER (window), button); gtk_fixed_put (GTK_FIXED (fixed), label1, 20, 30); gtk_fixed_put (GTK_FIXED (fixed), textbox1, 20, 50); gtk_fixed_put (GTK_FIXED (fixed), button1, 220, 50); /* add callback functions */ //exit this program when window closed g_signal_connect (window,"destroy",gtk_main_quit,NULL); g_signal_connect (G_OBJECT (button1), "clicked",G_CALLBACK (cb_button1_clicked), NULL); /* Show widgets */ gtk_widget_show_all (window); //gtk_widget_show (window); /* main loop */ gtk_main (); return 0; } GtkResponseType msgbox (GtkMessageType mt,GtkButtonsType bt, char *message) { /* typedef enum { GTK_MESSAGE_INFO, GTK_MESSAGE_WARNING, GTK_MESSAGE_QUESTION, GTK_MESSAGE_ERROR, GTK_MESSAGE_OTHER } GtkMessageType; typedef enum { GTK_BUTTONS_NONE, GTK_BUTTONS_OK, GTK_BUTTONS_CLOSE, GTK_BUTTONS_CANCEL, GTK_BUTTONS_YES_NO, GTK_BUTTONS_OK_CANCEL } GtkButtonsType; typedef enum { GTK_RESPONSE_NONE = -1, GTK_RESPONSE_REJECT = -2, GTK_RESPONSE_ACCEPT = -3, GTK_RESPONSE_DELETE_EVENT = -4, GTK_RESPONSE_OK = -5, GTK_RESPONSE_CANCEL = -6, GTK_RESPONSE_CLOSE = -7, GTK_RESPONSE_YES = -8, GTK_RESPONSE_NO = -9,message GTK_RESPONSE_APPLY = -10, GTK_RESPONSE_HELP = -11 } GtkResponseType; */ GtkResponseType result; GtkWidget *dialog; dialog = gtk_message_dialog_new ((GtkWindow *)window, GTK_DIALOG_DESTROY_WITH_PARENT, mt, bt, "%s", message); result = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); return result; } static void cb_button1_clicked (GtkWidget *button, gpointer user_data) { char *message; const char *input_name; time_t now_time; struct tm *st_now_time; int hour; time(&now_time); st_now_time = localtime(&now_time); hour = st_now_time->tm_hour; input_name = gtk_entry_get_text (GTK_ENTRY (textbox1)); if(strlen(input_name) == 0){ msgbox(GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "input your name, please."); return; } message = calloc(strlen(input_name)+20, sizeof(char)); if (hour < 12) { strcat(message, "Good Morning, "); } else if (hour < 18) { strcat(message, "Good Afternoon, "); } else { strcat(message, "Good Evening, "); } strcat(message, input_name); msgbox(GTK_MESSAGE_INFO, GTK_BUTTONS_OK, message); free(message); return; }