/*
* 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <gtk/gtk.h>
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;
}
Comments