|
|

楼主 |
发表于 2006-2-24 16:29:12
|
显示全部楼层
#include <gtk/gtk.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <locale.h>
#include <libintl.h>
#include <string.h>
extern void r_win_do(GtkWidget* widget,gpointer data );
extern void buttok_do(GtkWidget* widget,gpointer data );
extern void buttcencel_do(GtkWidget* widget,gpointer data );
extern void buttbrowse_do(GtkWidget* widget,gpointer data );
extern void gtkentry_do(GtkWidget* widget,gpointer data);
extern gint buttok_do2(GtkWidget* widget,GdkEvent *event,gpointer callback_data);
extern GtkWidget* errwin(void);
GtkWidget *entry1;
GtkWidget* create_win(){
GtkWidget *window1;
GtkWidget *vbox1;
GtkWidget *label2;
GtkWidget *hbox3;
GtkWidget *fixed5;
GtkWidget *label3;
GtkWidget *fixed3;
GtkWidget *hbox2;
GtkWidget *fixed2;
GtkWidget *fixed1;
GtkWidget *hbuttonbox2;
GtkWidget *button7;
GtkWidget *button8;
GtkWidget *fixed4;
//窗口创建程序
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window1),GTK_WIN_POS_CENTER);
gtk_object_set_data (GTK_OBJECT (window1), "window1", window1);
gtk_window_set_title (GTK_WINDOW (window1), ("window1"));
gtk_window_set_default_size(GTK_WINDOW(window1),400,200);
vbox1 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox1);
gtk_object_set_data_full (GTK_OBJECT (window1), "vbox1", vbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (window1), vbox1);
label2 = gtk_label_new (("在此输入命令"));
gtk_widget_ref (label2);
gtk_object_set_data_full (GTK_OBJECT (window1), "label2", label2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label2);
gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 0);
hbox3 = gtk_hbox_new (FALSE, 0);
gtk_widget_ref (hbox3);
gtk_object_set_data_full (GTK_OBJECT (window1), "hbox3", hbox3,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hbox3);
gtk_box_pack_start (GTK_BOX (vbox1), hbox3, TRUE, TRUE, 0);
fixed5 = gtk_fixed_new ();
gtk_widget_ref (fixed5);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed5", fixed5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed5);
gtk_box_pack_start (GTK_BOX (hbox3), fixed5, TRUE, TRUE, 0);
label3 = gtk_label_new (("命令:"));
gtk_widget_ref (label3);
gtk_object_set_data_full (GTK_OBJECT (window1), "label3", label3,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label3);
gtk_box_pack_start (GTK_BOX (hbox3), label3, FALSE, FALSE, 0);
entry1 = gtk_entry_new ();
gtk_widget_ref (entry1);
gtk_object_set_data_full (GTK_OBJECT (window1), "entry1", entry1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_signal_connect(GTK_OBJECT(entry1),"activate",GTK_SIGNAL_FUNC(buttok_do),NULL);
//gtk_entry_set_position(GTK_OBJECT(entry1),1);
gtk_widget_set_events(entry1,GDK_KEY_PRESS_MASK);
gtk_widget_show (entry1);
gtk_box_pack_start (GTK_BOX (hbox3), entry1, TRUE, TRUE, 0);
gtk_widget_set_events (entry1,GDK_ENTER_NOTIFY);
fixed3 = gtk_fixed_new ();
gtk_widget_ref (fixed3);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed3", fixed3,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed3);
gtk_box_pack_start (GTK_BOX (hbox3), fixed3, TRUE, TRUE, 0);
hbox2 = gtk_hbox_new (FALSE, 0);
gtk_widget_ref (hbox2);
gtk_object_set_data_full (GTK_OBJECT (window1), "hbox2", hbox2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hbox2);
gtk_box_pack_start (GTK_BOX (vbox1), hbox2, TRUE, TRUE, 0);
fixed2 = gtk_fixed_new ();
gtk_widget_ref (fixed2);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed2", fixed2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed2);
gtk_box_pack_start (GTK_BOX (hbox2), fixed2, FALSE, FALSE, 0);
fixed1 = gtk_fixed_new ();
gtk_widget_ref (fixed1);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed1", fixed1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed1);
gtk_box_pack_start (GTK_BOX (hbox2), fixed1, TRUE, TRUE, 0);
hbuttonbox2 = gtk_hbutton_box_new ();
gtk_widget_ref (hbuttonbox2);
gtk_object_set_data_full (GTK_OBJECT (window1), "hbuttonbox2", hbuttonbox2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hbuttonbox2);
gtk_box_pack_start (GTK_BOX (hbox2), hbuttonbox2, TRUE, TRUE, 0);
//button
button7 = gtk_button_new_with_label (("确定"));
gtk_widget_ref (button7);
gtk_object_set_data_full (GTK_OBJECT (window1), "button7", button7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_signal_connect(GTK_OBJECT(button7),"clicked",GTK_SIGNAL_FUNC(buttok_do),NULL);
gtk_widget_show (button7);
gtk_container_add (GTK_CONTAINER (hbuttonbox2), button7);
GTK_WIDGET_SET_FLAGS (button7, GTK_CAN_DEFAULT);
//button
button8 = gtk_button_new_with_label (("取消"));
gtk_widget_ref (button8);
gtk_object_set_data_full (GTK_OBJECT (window1), "button8", button8,
(GtkDestroyNotify) gtk_widget_unref);
gtk_signal_connect(GTK_OBJECT(button7),"clicked",GTK_SIGNAL_FUNC(buttcencel_do),NULL);
gtk_widget_show (button8);
gtk_container_add (GTK_CONTAINER (hbuttonbox2), button8);
GTK_WIDGET_SET_FLAGS (button8, GTK_CAN_DEFAULT);
fixed4 = gtk_fixed_new ();
gtk_widget_ref (fixed4);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed4", fixed4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed4);
gtk_box_pack_start (GTK_BOX (hbox2), fixed4, TRUE, TRUE, 0);
return window1;
}
int main(int argc,char*argv[]){
GtkWidget *window;
// setlocale(LC_ALL,"");
gtk_set_locale();
gtk_init(&argc,&argv);
window = create_win();
gtk_widget_show (window);
gtk_main();
return 0;
}
void r_win_do(GtkWidget* widget,gpointer data){
//gtk_main_quit();
}
void buttok_do(GtkWidget* widget,gpointer data){
int k;
char *dd=gtk_entry_get_text(GTK_ENTRY(entry1));
char *ff="./gk.sh";
//char *des=malloc(sizeof(*dd)+ sizeof(" ") + sizeof(*ff) + 5 );
char *des=malloc(1000);
des = strcpy(des,ff);
des = strcat(des," ");
des = strcat(des,dd);
//printf("%c",dd);
k=system(des);
free(des);
if(k==0){
errwin();
}
else
{
execlp("sh","sh","-c",gtk_entry_get_text(GTK_ENTRY(entry1)),(char*)0);
gtk_main_quit();
}
}
void buttbrowse_do(GtkWidget* widget,gpointer data){
}
void gtkentry_do(GtkWidget* widget,gpointer data){
system(gtk_entry_get_text(GTK_ENTRY(widget)));
//gtk_main_quit();
}
gint buttok_do2(GtkWidget* widget,GdkEvent *event,gpointer callback_data){
system(gtk_entry_get_text(GTK_ENTRY(widget)));
//gtk_main_quit();
}
GtkWidget* errwin(void){
GtkWidget *window1;
GtkWidget *vbox1;
GtkWidget *table1;
GtkWidget *fixed1;
GtkWidget *fixed2;
GtkWidget *fixed3;
GtkWidget *fixed4;
GtkWidget *label1;
GtkWidget *fixed5;
GtkWidget *button1;
GtkWidget *fixed6;
GtkWidget *fixed7;
GtkWidget *fixed8;
GtkWidget *fixed9;
GtkWidget *fixed10;
gtk_set_locale();
window1 = gtk_window_new (GTK_WINDOW_DIALOG);
gtk_window_set_position(GTK_WINDOW(window1),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window1),300,150);
gtk_object_set_data (GTK_OBJECT (window1), "window1", window1);
gtk_window_set_title (GTK_WINDOW (window1), ("window1"));
vbox1 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox1);
gtk_object_set_data_full (GTK_OBJECT (window1), "vbox1", vbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (window1), vbox1);
table1 = gtk_table_new (4, 3, FALSE);
gtk_widget_ref (table1);
gtk_object_set_data_full (GTK_OBJECT (window1), "table1", table1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table1);
gtk_box_pack_start (GTK_BOX (vbox1), table1, TRUE, TRUE, 0);
fixed1 = gtk_fixed_new ();
gtk_widget_ref (fixed1);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed1", fixed1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed1);
gtk_table_attach (GTK_TABLE (table1), fixed1, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
fixed2 = gtk_fixed_new ();
gtk_widget_ref (fixed2);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed2", fixed2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed2);
gtk_table_attach (GTK_TABLE (table1), fixed2, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
fixed3 = gtk_fixed_new ();
gtk_widget_ref (fixed3);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed3", fixed3,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed3);
gtk_table_attach (GTK_TABLE (table1), fixed3, 2, 3, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
fixed4 = gtk_fixed_new ();
gtk_widget_ref (fixed4);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed4", fixed4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed4);
gtk_table_attach (GTK_TABLE (table1), fixed4, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
label1 = gtk_label_new (("输入的命令错误"));
gtk_widget_ref (label1);
gtk_object_set_data_full (GTK_OBJECT (window1), "label1", label1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label1);
gtk_table_attach (GTK_TABLE (table1), label1, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5);
fixed5 = gtk_fixed_new ();
gtk_widget_ref (fixed5);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed5", fixed5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed5);
gtk_table_attach (GTK_TABLE (table1), fixed5, 2, 3, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
//button1 = gtk_button_new_with_label (("??"));
//gtk_widget_ref (button1);
//gtk_object_set_data_full (GTK_OBJECT (window1), "button1", button1,
// (GtkDestroyNotify) gtk_widget_unref);
//gtk_widget_show (button1);
//gtk_table_attach (GTK_TABLE (table1), button1, 1, 2, 2, 3,
// (GtkAttachOptions) (GTK_FILL),
// (GtkAttachOptions) (0), 0, 0);
fixed6 = gtk_fixed_new ();
gtk_widget_ref (fixed6);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed6", fixed6,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed6);
gtk_table_attach (GTK_TABLE (table1), fixed6, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
fixed7 = gtk_fixed_new ();
gtk_widget_ref (fixed7);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed7", fixed7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed7);
gtk_table_attach (GTK_TABLE (table1), fixed7, 0, 1, 3, 4,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
fixed8 = gtk_fixed_new ();
gtk_widget_ref (fixed8);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed8", fixed8,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed8);
gtk_table_attach (GTK_TABLE (table1), fixed8, 1, 2, 3, 4,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
fixed9 = gtk_fixed_new ();
gtk_widget_ref (fixed9);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed9", fixed9,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed9);
gtk_table_attach (GTK_TABLE (table1), fixed9, 2, 3, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
fixed10 = gtk_fixed_new ();
gtk_widget_ref (fixed10);
gtk_object_set_data_full (GTK_OBJECT (window1), "fixed10", fixed10,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (fixed10);
gtk_table_attach (GTK_TABLE (table1), fixed10, 2, 3, 3, 4,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_widget_show(window1);
return window1;
}
void buttcencel_do(GtkWidget* widget,gpointer data){
//gtk_main_quit(); 加入 这个地方当单击ok的时候程序也退出就是这样
} |
|