#include <gtk/gtk.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sys/wait.h>
#define SERVPORT 3333
#define BACKLOG 10
#define MAXDATASIZE 100
#define DEF_PAD 10
#define DEF_PAD_SMALL 5
#define TM_YEAR_BASE 1900
GtkWidget *text_view1,*text_view2;
gchar *text;
//创建两个文本框1,2
GtkTextBuffer *buffer1,*buffer2;
//为文本框设置缓冲区1,2
GtkWidget *label0;
//创建改变字体的对话框
typedef struct _CalendarData {
GtkWidget *flag_checkboxes[5];
gboolean settings[5];
GtkWidget *font_dialog;
GtkWidget *window;
GtkWidget *prev2_sig;
GtkWidget *prev_sig;
GtkWidget *last_sig;
GtkWidget *month;
} CalendarData;
enum {
calendar_show_header,
calendar_show_days,
calendar_month_change,
calendar_show_week,
calendar_monday_first
};
/*
* GtkCalendar
*/
static void calendar_date_to_string( CalendarData *data,
char *buffer,
gint buff_len )
{
GDate date;
guint year, month, day;
gtk_calendar_get_date (GTK_CALENDAR (data->window),
&year, &month, &day);
g_date_set_dmy (&date, day, month + 1, year);
g_date_strftime (buffer, buff_len - 1, "%x", &date);
}
static void calendar_set_signal_strings( char *sig_str,
CalendarData *data )
{
const gchar *prev_sig;
prev_sig = gtk_label_get_text (GTK_LABEL (data->prev_sig));
gtk_label_set_text (GTK_LABEL (data->prev2_sig), prev_sig);
prev_sig = gtk_label_get_text (GTK_LABEL (data->last_sig));
gtk_label_set_text (GTK_LABEL (data->prev_sig), prev_sig);
gtk_label_set_text (GTK_LABEL (data->last_sig), sig_str);
}
static void calendar_month_changed( GtkWidget *widget,
CalendarData *data )
{
char buffer[256] = "month_changed: ";
calendar_date_to_string (data, buffer + 15, 256 - 15);
calendar_set_signal_strings (buffer, data);
}
static void calendar_day_selected( GtkWidget *widget,
CalendarData *data )
{
char buffer[256] = "day_selected: ";
calendar_date_to_string (data, buffer + 14, 256 - 14);
calendar_set_signal_strings (buffer, data);
}
static void calendar_day_selected_double_click ( GtkWidget *widget,
CalendarData *data )
{
char buffer[256] = "day_selected_double_click: ";
guint day;
calendar_date_to_string (data, buffer + 27, 256 - 27);
calendar_set_signal_strings (buffer, data);
gtk_calendar_get_date (GTK_CALENDAR (data->window),
NULL, NULL, &day);
if (GTK_CALENDAR (data->window)->marked_date[day-1] == 0) {
gtk_calendar_mark_day (GTK_CALENDAR (data->window), day);
} else {
gtk_calendar_unmark_day (GTK_CALENDAR (data->window), day);
}
}
static void calendar_prev_month( GtkWidget *widget,
CalendarData *data )
{
char buffer[256] = "prev_month: ";
calendar_date_to_string (data, buffer + 12, 256 - 12);
calendar_set_signal_strings (buffer, data);
}
static void calendar_next_month( GtkWidget *widget,
CalendarData *data )
{
char buffer[256] = "next_month: ";
calendar_date_to_string (data, buffer + 12, 256 - 12);
calendar_set_signal_strings (buffer, data);
}
static void calendar_prev_year( GtkWidget *widget,
CalendarData *data )
{
char buffer[256] = "prev_year: ";
calendar_date_to_string (data, buffer + 11, 256 - 11);
calendar_set_signal_strings (buffer, data);
}
static void calendar_next_year( GtkWidget *widget,
CalendarData *data )
{
char buffer[256] = "next_year: ";
calendar_date_to_string (data, buffer + 11, 256 - 11);
calendar_set_signal_strings (buffer, data);
}
static void calendar_set_flags( CalendarData *calendar )
{
gint i;
gint options = 0;
for (i = 0;i < 5; i++)
if (calendar->settings[i])
{
options = options + (1 << i);
}
if (calendar->window)
gtk_calendar_display_options (GTK_CALENDAR (calendar->window), options);
}
static void calendar_toggle_flag( GtkWidget *toggle,
CalendarData *calendar)
{
gint i;
gint j;
j = 0;
for (i = 0; i < 5; i++)
if (calendar->flag_checkboxes[i] == toggle)
j = i;
calendar->settings[j] = !calendar->settings[j];
calendar_set_flags (calendar);
}
static void calendar_font_selection_ok( GtkWidget *button,
CalendarData *calendar )
{
GtkRcStyle *style;
char *font_name;
if (calendar->window)
{
font_name = gtk_font_selection_dialog_get_font_name (GTK_FONT_SELECTION_DIALOG
(calendar->font_dialog));
if (font_name)
{
style = gtk_rc_style_new ();
pango_font_description_free (style->font_desc);
style->font_desc = pango_font_description_from_string (font_name);
gtk_widget_modify_style (calendar->window, style);
g_free (font_name);
}
}
gtk_widget_destroy (calendar->font_dialog);
}
static void calendar_select_font( GtkWidget *button,
CalendarData *calendar )
{
GtkWidget *window;
if (!calendar->font_dialog) {
window = gtk_font_selection_dialog_new ("Font Selection Dialog");
g_return_if_fail (GTK_IS_FONT_SELECTION_DIALOG (window));
calendar->font_dialog = window;
gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&calendar->font_dialog);
g_signal_connect (GTK_FONT_SELECTION_DIALOG (window)->ok_button,
"clicked", G_CALLBACK (calendar_font_selection_ok),
calendar);
g_signal_connect_swapped (GTK_FONT_SELECTION_DIALOG (window)->cancel_button,
"clicked", G_CALLBACK (gtk_widget_destroy),
calendar->font_dialog);
}
window = calendar->font_dialog;
if (!GTK_WIDGET_VISIBLE (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
}
static void create_calendar( void )
{
GtkWidget *window;
GtkWidget *vbox, *vbox2, *vbox3;
GtkWidget *hbox;
GtkWidget *hbbox;
GtkWidget *calendar;
GtkWidget *toggle;
GtkWidget *button;
GtkWidget *frame;
GtkWidget *separator;
GtkWidget *label;
GtkWidget *bbox;
static CalendarData calendar_data;
gint i;
struct {
char *label;
} flags[] =
{
{ "Show Heading" },
{ "Show Day Names" },
{ "No Month Change" },
{ "Show Week Numbers" },
{ "Week Start Monday" }
};
calendar_data.window = NULL;
calendar_data.font_dialog = NULL;
for (i = 0; i < 5; i++) {
calendar_data.settings[i] = 0;
}
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "GtkCalendar Example");
gtk_container_set_border_width (GTK_CONTAINER (window), 5);
g_signal_connect (window, "delete-event",
G_CALLBACK (gtk_false),
NULL);
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
vbox = gtk_vbox_new (FALSE, DEF_PAD);
gtk_container_add (GTK_CONTAINER (window), vbox);
/*
* The top part of the window, Calendar, flags and fontsel.
*/
hbox = gtk_hbox_new (FALSE, DEF_PAD);
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, DEF_PAD);
hbbox = gtk_hbutton_box_new ();
gtk_box_pack_start (GTK_BOX (hbox), hbbox, FALSE, FALSE, DEF_PAD);
gtk_button_box_set_layout (GTK_BUTTON_BOX (hbbox), GTK_BUTTONBOX_SPREAD);
gtk_box_set_spacing (GTK_BOX (hbbox), 5);
/* Calendar widget */
frame = gtk_frame_new ("Calendar");
gtk_box_pack_start(GTK_BOX (hbbox), frame, FALSE, TRUE, DEF_PAD);
calendar=gtk_calendar_new ();
calendar_data.window = calendar;
calendar_set_flags (&calendar_data);
gtk_calendar_mark_day (GTK_CALENDAR (calendar), 19);
gtk_container_add (GTK_CONTAINER (frame), calendar);
g_signal_connect (calendar, "month_changed",
G_CALLBACK (calendar_month_changed),
&calendar_data);
g_signal_connect (calendar, "day_selected",
G_CALLBACK (calendar_day_selected),
&calendar_data);
g_signal_connect (calendar, "day_selected_double_click",
G_CALLBACK (calendar_day_selected_double_click),
&calendar_data);
g_signal_connect (calendar, "prev_month",
G_CALLBACK (calendar_prev_month),
&calendar_data);
g_signal_connect (calendar, "next_month",
G_CALLBACK (calendar_next_month),
&calendar_data);
g_signal_connect (calendar, "prev_year",
G_CALLBACK (calendar_prev_year),
&calendar_data);
g_signal_connect (calendar, "next_year",
G_CALLBACK (calendar_next_year),
&calendar_data);
separator = gtk_vseparator_new ();
gtk_box_pack_start (GTK_BOX (hbox), separator, FALSE, TRUE, 0);
vbox2 = gtk_vbox_new (FALSE, DEF_PAD);
gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, DEF_PAD);
/* Build the Right frame with the flags in */
frame = gtk_frame_new ("Flags");
gtk_box_pack_start (GTK_BOX (vbox2), frame, TRUE, TRUE, DEF_PAD);
vbox3 = gtk_vbox_new (TRUE, DEF_PAD_SMALL);
gtk_container_add (GTK_CONTAINER (frame), vbox3);
for (i = 0; i < 5; i++)
{
toggle = gtk_check_button_new_with_label (flags[i].label);
g_signal_connect (toggle,
"toggled",
G_CALLBACK (calendar_toggle_flag),
&calendar_data);
gtk_box_pack_start (GTK_BOX (vbox3), toggle, TRUE, TRUE, 0);
calendar_data.flag_checkboxes[i] = toggle;
}
/* Build the right font-button */
button = gtk_button_new_with_label ("Font...");
g_signal_connect (button,
"clicked",
G_CALLBACK (calendar_select_font),
&calendar_data);
gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE, 0);
/*
* Build the Signal-event part.
*/
frame = gtk_frame_new ("Signal events");
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, DEF_PAD);
vbox2 = gtk_vbox_new (TRUE, DEF_PAD_SMALL);
gtk_container_add (GTK_CONTAINER (frame), vbox2);
hbox = gtk_hbox_new (FALSE, 3);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, TRUE, 0);
label = gtk_label_new ("Signal:");
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
calendar_data.last_sig = gtk_label_new ("");
gtk_box_pack_start (GTK_BOX (hbox), calendar_data.last_sig, FALSE, TRUE, 0);
hbox = gtk_hbox_new (FALSE, 3);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, TRUE, 0);
label = gtk_label_new ("Previous signal:");
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
calendar_data.prev_sig = gtk_label_new ("");
gtk_box_pack_start (GTK_BOX (hbox), calendar_data.prev_sig, FALSE, TRUE, 0);
hbox = gtk_hbox_new (FALSE, 3);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, TRUE, 0);
label = gtk_label_new ("Second previous signal:");
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
calendar_data.prev2_sig = gtk_label_new ("");
gtk_box_pack_start (GTK_BOX (hbox), calendar_data.prev2_sig, FALSE, TRUE, 0);
bbox = gtk_hbutton_box_new ();
gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0);
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
button = gtk_button_new_with_label ("Close");
g_signal_connect (button, "clicked",
G_CALLBACK (gtk_main_quit),
NULL);
gtk_container_add (GTK_CONTAINER (bbox), button);
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_widget_grab_default (button);
gtk_widget_show_all (window);
}
void close_dialog_handler(GtkWidget *widget,gpointer data)
{
gtk_widget_destroy(GTK_WIDGET(data));
}
//字体选择对话框的”确定”和”应用”按钮的clicked的处理函数
//函数设置了对话框中标签构件的字体
void cd_set_font(GtkWidget *widget,gpointer data)
{
GdkColor color;
//获得选择的字体信息
gchar *font_name=gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(data));
//设置字体
PangoFontDescription *font_desc=pango_font_description_from_string(font_name);
gtk_widget_modify_font(label0,font_desc);
pango_font_description_free(font_desc);
//关闭字体选择对话框
gtk_widget_destroy(GTK_WIDGET(data));
}
//显示字体选择对话框,并设置按钮单击的回调函数
void cb_show_font_dialog(GtkWidget *widget,gpointer data)
{
GtkWidget *font;
font=gtk_font_selection_dialog_new("chooseyour prefer font type...");
gtk_widget_show(GTK_FONT_SELECTION_DIALOG(font)->apply_button);
g_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font)->ok_button),
"clicked",GTK_SIGNAL_FUNC(cd_set_font),(gpointer)font);
g_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font)->apply_button),
"clicked",G_CALLBACK(cd_set_font),(gpointer)font);
g_signal_connect_swapped(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font)->cancel_button),"clicked",G_CALLBACK(gtk_widget_destroy),(gpointer)font);
g_signal_connect(GTK_OBJECT(font),"destroy",
G_CALLBACK(close_dialog_handler),(gpointer)font);
gtk_widget_show(font);
}
static gboolean release_resource(GtkWidget *widget,GdkEvent *event,gpointer data)
{
gtk_main_quit();
return FALSE;
}
void cb_active_open(GtkWidget *widget,gpointer data)
{
g_print("choose open/n");
}
void cb_active_save(GtkWidget *widget,gpointer data)
{
g_print("choose save/n");
}
void cb_active_close(GtkWidget *widget,gpointer data)
{
g_print("choose close/n");
}
void cb_active_jianqie(GtkWidget *widget,gpointer data)
{
g_print("choose jianqie/n");
}
void cb_active_fuzhi(GtkWidget *widget,gpointer data)
{
g_print("choose fuzhi/n");
}
void cb_active_zhantie(GtkWidget *widget,gpointer data)
{
g_print("choose zhantie/n");
}
void cb_active_pifu(GtkWidget *widget,gpointer data)
{
g_print("choose pifu/n");
}
void cb_active_zidingyi(GtkWidget *widget,gpointer data)
{
g_print("choose zidingyi/n");
}
void cb_active_former(GtkWidget *widget,gpointer data)
{
g_print("choose check/n");
}
void cb_active_clear(GtkWidget *widget,gpointer data)
{
g_print("choose clear/n");
}
void cb_active_copyright(GtkWidget *widget,gpointer data)
{
g_print("choose copyrigth/n");
}
void cb_active_fuction(GtkWidget *widget,gpointer data)
{
g_print("choose fuction/n");
}
//菜单里作者的函数
void cb_active_author(int argc,char *argv[ ])
{
GtkWidget *label;
GtkWidget *dialog;
gtk_init(&argc,&argv);
dialog=gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(dialog),"制作组");
gtk_widget_set_size_request(dialog,500,100);
label=gtk_label_new("开发成员:高智城 黄泓 余鑫淼 胡金梦 韩聪 王天纯 陶颉 党迎光");
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),label,FALSE,FALSE,0);
gtk_widget_show_all(dialog);
}
//文本的函数
void button_event(GtkWidget *widget,gpointer *data)
{
gchar record[1000];
gchar *name,*next,*p;
//声明文本存储的地址
GtkTextIter start,end;
//设置文本框1缓冲区开始与终止的iter
GtkTextIter begin,terminate;
//设置文本框2缓冲区开始与终止的iter
FILE *fp;
//创建保存聊天记录的文件地址
fp=fopen("record.txt","w+");
//打开聊天记录文件准备写入
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(buffer1),&start,&end);/*获得文本框1缓冲区开始和结束位置的Iter*/
const GtkTextIter s=start,e=end;
text=gtk_text_buffer_get_text(GTK_TEXT_BUFFER(buffer1),&s,&e,FALSE);/*获得文本框1缓冲区文本*/
gtk_text_buffer_delete(GTK_TEXT_BUFFER(buffer1),&start,&end);//删除文本框1的文本
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(buffer2),&begin,&terminate);/*获得缓冲区2开始和结束位置的Iter*/
gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer2),&begin,text,strlen(text));/*插入文本text到缓冲区2*/
name="host:/n";
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(buffer2),&begin,&terminate);/*获得缓冲区2开始和结束位置的Iter*/
gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer2),&begin,name,strlen(name));/*插入文本"host:"到缓冲区2*/
next="/n";
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(buffer2),&begin,&terminate);/*获得缓冲区2开始和结束位置的Iter*/
gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer2),&begin,next,strlen(next));//插入换行符到缓冲区2*gtk_widget_set_request(text_view,200,120);
/*int i=0;
p=text;
while(*p!=NULL)
{ record[i]=*p;
i++; } */
fwrite(text,1000,1,fp);
fclose(fp);
g_print("%s/n",text);//终端显示输入的文本。
}
//服务器端
void senddata()
{
int client_fd;
int sockfd,sin_size;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr));
listen(sockfd,BACKLOG);
sin_size=sizeof(struct sockaddr_in);
client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size);
send(client_fd,"lksahdflhaskl", 26, 0); //""之间是发送字符 请更改函数类型 得到参数并发送 或者可在该函数内添加输入函数
}
void callback( GtkWidget *widget,
gpointer data )
{
g_print ("Hello again %s was pressed/n", (char *) data);
}
gint delete_event( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
gtk_main_quit ();
return FALSE;
}
void ziti(widget *text_view2) {
GtkWidget *dialog;
GtkWidget *btn;
GtkWidget *label0;
//创建改变字体的对话框
dialog=gtk_dialog_new();
//设置对话框标题
gtk_window_set_title(GTK_WINDOW(dialog),"修改字体");
//设置对话框尺寸
gtk_widget_set_size_request(dialog,200,50);
label0=text_view2;//*所修改的内容
//设置新的按钮
btn=gtk_button_new_with_label("Font...");
//将按钮装入对话框中
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),btn,FALSE,FALSE,0);
//连接回调函数
g_signal_connect(G_OBJECT(btn),"clicked",GTK_SIGNAL_FUNC(cb_show_font_dialog),NULL);
gtk_widget_show_all(dialog);
}
static void file_ok_sel( GtkWidget *w,
GtkFileSelection *fs )
{
g_print ("%s/n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
}
void file_select()
{
GtkWidget *filew;
filew = gtk_file_selection_new ("File selection");
/* Connect the ok_button to file_ok_sel function */
g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
"clicked", G_CALLBACK (file_ok_sel), (gpointer) filew);
/* Connect the cancel_button to destroy the widget */
/* Lets set the filename, as if this were a save dialog, and we are giving
a default filename */
gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew),
"penguin.png");
gtk_widget_show (filew);
}
int main( int argc,
char *argv[] )
{
GtkWidget *window;
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
GtkWidget *button5;
GtkWidget *button6;
GtkWidget *label1,*label2,*label3,*label4;
GtkWidget *menu;
GtkWidget *menu_bar;
GtkWidget *menu_item;
GtkWidget *top_item;
GtkWidget *vbox;
GtkWidget *image1,*image2;
GtkWidget *table;
//
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "聊天软件LINPOP-III");
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (delete_event), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 20);
table = gtk_table_new (20, 30, TRUE);
gtk_container_add (GTK_CONTAINER (window), table);
label1 = gtk_label_new("RECEIVE MESSAGE:");
label2 = gtk_label_new("PLEASE ENTER: ");
label3 = gtk_label_new("她的形象 ");
label4 = gtk_label_new("我的形象 ");
gtk_table_attach_defaults (GTK_TABLE (table), label1, 4, 16, 1, 2);
gtk_table_attach_defaults (GTK_TABLE (table), label2, 4, 16, 10, 11);
gtk_table_attach_defaults (GTK_TABLE (table), label3, 20, 24, 1, 2);
gtk_table_attach_defaults (GTK_TABLE (table), label4, 20, 24, 10, 11);
image1=gtk_image_new_from_file("bbb.gif");
image2=gtk_image_new_from_file("aaa.gif");
gtk_table_attach_defaults (GTK_TABLE (table), image1, 20, 30, 2, 10);
gtk_table_attach_defaults (GTK_TABLE (table), image2, 20, 30, 11, 19);
text_view1=gtk_text_view_new();/*创建文本框构件1*/
text_view2=gtk_text_view_new();
//创建文本框2
gtk_widget_set_size_request(text_view1,200,120);
//设置文本框1的大小
gtk_widget_set_size_request(text_view2,200,120);
//设置文本框2的大小
buffer1=gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view1));/*获得文本框缓冲区1*/
buffer2=gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view2));//获得文本框缓冲区2
gtk_table_attach_defaults (GTK_TABLE (table), text_view1, 0, 20, 11, 19);
gtk_table_attach_defaults (GTK_TABLE (table), text_view2, 0, 20, 2, 10);
button1 = gtk_button_new_with_label ("Link:");
button2 = gtk_button_new_with_label ("退出");
button3 = gtk_button_new_with_label ("发送");
button4 = gtk_button_new_with_label ("服务器");
button5 = gtk_button_new_with_label ("字体");
button6 = gtk_button_new_with_label ("日历");
g_signal_connect (G_OBJECT (button1), "clicked",
G_CALLBACK (callback), (gpointer) "Link:");
g_signal_connect (G_OBJECT (button2), "clicked",
GTK_SIGNAL_FUNC(release_resource) ,NULL);
gtk_signal_connect(GTK_OBJECT(button3),"clicked",GTK_SIGNAL_FUNC(button_event),NULL);
//为按钮3连接回调函数
g_signal_connect (G_OBJECT (button4), "clicked",
GTK_SIGNAL_FUNC(senddata),NULL);
g_signal_connect (GTK_OBJECT(button5),"clicked",GTK_SIGNAL_FUNC(ziti(text_view2)),NULL);
g_signal_connect (G_OBJECT (button6), "clicked",GTK_SIGNAL_FUNC(create_calendar), NULL);
gtk_table_attach_defaults (GTK_TABLE (table), button1, 0, 2, 19, 20);
gtk_table_attach_defaults (GTK_TABLE (table), button2, 28, 30, 19, 20);
gtk_table_attach_defaults (GTK_TABLE (table), button3, 23, 25, 19, 20);
gtk_table_attach_defaults (GTK_TABLE (table), button4, 18, 20, 19, 20);
gtk_table_attach_defaults (GTK_TABLE (table), button5, 0, 2, 10, 11);
gtk_table_attach_defaults (GTK_TABLE (table), button6, 18, 20, 10, 11);
menu_bar=gtk_menu_bar_new();
gtk_table_attach_defaults (GTK_TABLE (table), menu_bar, 0, 4, 0, 1);
gtk_widget_show(menu_bar);
menu=gtk_menu_new();
menu_item=gtk_menu_item_new_with_label("打开");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(file_select),NULL);
gtk_widget_show(menu_item);
top_item=gtk_menu_item_new_with_label("传输文件");
gtk_widget_show(top_item);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(top_item),menu);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar),top_item);
menu_bar=gtk_menu_bar_new();
gtk_table_attach_defaults (GTK_TABLE (table), menu_bar, 4, 8, 0, 1);
gtk_widget_show(menu_bar);
menu=gtk_menu_new();
menu_item=gtk_menu_item_new_with_label("剪切");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_jianqie),NULL);
gtk_widget_show(menu_item);
menu_item=gtk_menu_item_new_with_label("复制");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_fuzhi),NULL);
gtk_widget_show(menu_item);
menu_item=gtk_menu_item_new_with_label("粘贴");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_zhantie),NULL);
gtk_widget_show(menu_item);
top_item=gtk_menu_item_new_with_label("编辑");
gtk_widget_show(top_item);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(top_item),menu);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar),top_item);
menu_bar=gtk_menu_bar_new();
gtk_table_attach_defaults (GTK_TABLE (table), menu_bar, 8, 12, 0, 1);
gtk_widget_show(menu_bar);
menu=gtk_menu_new();
menu_item=gtk_menu_item_new_with_label("皮肤");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_pifu),NULL);
gtk_widget_show(menu_item);
menu_item=gtk_menu_item_new_with_label("自定义");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_zidingyi),NULL);
gtk_widget_show(menu_item);
top_item=gtk_menu_item_new_with_label("设置");
gtk_widget_show(top_item);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(top_item),menu);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar),top_item);
menu_bar=gtk_menu_bar_new();
gtk_table_attach_defaults (GTK_TABLE (table), menu_bar, 12, 16, 0, 1);
gtk_widget_show(menu_bar);
menu=gtk_menu_new();
menu_item=gtk_menu_item_new_with_label("查看前期记录");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_former),NULL);
gtk_widget_show(menu_item);
menu_item=gtk_menu_item_new_with_label("清除今日记录");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_clear),NULL);
gtk_widget_show(menu_item);
top_item=gtk_menu_item_new_with_label("聊天记录");
gtk_widget_show(top_item);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(top_item),menu);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar),top_item);
menu_bar=gtk_menu_bar_new();
gtk_table_attach_defaults (GTK_TABLE (table), menu_bar, 16, 20, 0, 1);
gtk_widget_show(menu_bar);
menu=gtk_menu_new();
menu_item=gtk_menu_item_new_with_label("版本");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_copyright),NULL);
gtk_widget_show(menu_item);
menu_item=gtk_menu_item_new_with_label("功能");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_fuction),NULL);
gtk_widget_show(menu_item);
menu_item=gtk_menu_item_new_with_label("作者");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
g_signal_connect(G_OBJECT(menu_item),"activate",GTK_SIGNAL_FUNC(cb_active_author),NULL);
gtk_widget_show(menu_item);
top_item=gtk_menu_item_new_with_label("帮助");
gtk_widget_show(top_item);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(top_item),menu);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar),top_item);
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(release_resource),NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
我和几个同学编的聊天工具界面(linux下用GTK编的,有几个bug,不能通信)
最新推荐文章于 2024-09-11 07:02:41 发布