📄 mm.c~
字号:
#include <stdlib.h>#include <gtk/gtk.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include "smbconfig.h"#include "calendar.h"#include "setpasswd.h"#include "remoteserv.h"#include "netconfig.h"/* Create a new vbox with an image and a label packed into it * and return the box. */ typedef struct{ GtkWidget *entry; GtkWidget *window_main; GtkWidget *window_invalid; GtkWidget *window_self; } params;GtkWidget *xpm_label_box( gchar *xpm_filename, gchar *label_text ){ GtkWidget *box; GtkWidget *label; GtkWidget *image; /* Create box for image and label */ box = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (box), 2); /* Now on to the image stuff */ image = gtk_image_new_from_file (xpm_filename); /* Create a label for the button */ label = gtk_label_new (label_text); /* Pack the image and label into the box */ gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 3); gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 3); gtk_widget_show (image); gtk_widget_show (label); return box;}void on_button_clicked( GtkWidget *widget, gpointer data ){ GtkWidget *window; if(isShow == FALSE) { if (data == "netconfig") { create_netcfg_window(); } if (data == "remoteserv") { window = new_window_remoteserv(); gtk_widget_show(window); } if (data == "setpasswd") { window = new_window_setpasswd(); gtk_widget_show(window); } if (data == "settime") { create_calendar (); } if (data == "netstorage") { create_smb_config_window(); } isShow = TRUE; }}int check_valid(GtkWidget *widget,params *arguments){ const char *getText; getText = gtk_entry_get_text(GTK_ENTRY(arguments->entry)); //char *passwd; int counter; int fd; if ((fd=open("/.admin/passwd",O_RDONLY))<0) { msg_dialog(GTK_MESSAGE_ERROR,_("配置文件打开失败!")); } int n = 0; char buf[32]; int len = 0; //buf[31] = '\0'; //n=read(fd,buf,32); while((n = read(fd,buf,32))>0) { len = n; } buf[len] = '\0'; //g_print("%d\n",len); //g_print("%s\n",buf); g_print("%s\n",getText); //g_print("%d\n",len); if (strcmp(getText,buf) == 0 ) { gtk_widget_show(arguments->window_main); gtk_widget_hide(arguments->window_self); } else { msg_dialog(GTK_MESSAGE_ERROR, _("密码错误,请重新输入或退出")); } close(fd);}int main(int argc,char *argv[])
{
//initial parameters isShow = FALSE;// gtk_set_locale();
gtk_init(&argc,&argv);
//initial a window that has the following parameters
//A window
GtkWidget *window,*window_passwd; //A BUTTON GtkWidget *button,*button1; //A BOX GtkWidget *box,*box1; //GtkWidget *frame;
//ASSERT WINDOW window_passwd = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_resizable (GTK_WINDOW (window_passwd), FALSE);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //REGISTER WINDOWS DESTROY EVENT HANDLER
g_signal_connect (G_OBJECT (window), "destroy",G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (G_OBJECT (window), "delete_event",G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (G_OBJECT (window_passwd), "destroy",G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (G_OBJECT (window_passwd), "delete_event",G_CALLBACK (gtk_main_quit), NULL);
//SET THE SIZE OF WINDOW gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
gtk_window_set_default_size(GTK_WINDOW(window),500,200); gtk_window_set_default_size(GTK_WINDOW(window_passwd),200,100);
//SET THE POSITION OF THE WINDOW
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); gtk_window_set_position(GTK_WINDOW(window_passwd),GTK_WIN_POS_CENTER);
//SET THE TITLE OF THE WINDOW
gtk_window_set_title(GTK_WINDOW(window),_("控制面板")); gtk_window_set_title(GTK_WINDOW(window_passwd),_("请输入密码")); //SET BORDER WIDTH gtk_container_set_border_width (GTK_CONTAINER (window), 10); gtk_container_set_border_width (GTK_CONTAINER (window_passwd), 10);//******************************CONTROL PANEL WINDOW INITIAL************************************// box1 = gtk_hbox_new(FALSE, 0); gtk_widget_show(box1); gtk_container_add (GTK_CONTAINER (window), box1); //SET OUTER BOX'S SPACING gtk_box_set_spacing(GTK_BOX(box1),5); //-----ASSRT A NEW BUTTON THAT CONTAINS THE NEW BOX,WHICH HAS PICTER IN IT---------// box = xpm_label_box ("netconfig.xpm", _("网络设置")); button = gtk_button_new (); g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (on_button_clicked), (gpointer) "netconfig"); /* Pack and show all our widgets */ gtk_widget_show (box); gtk_container_add (GTK_CONTAINER (button), box); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (box1),button,TRUE, TRUE, 0); //----------------------------------------------------------------------------------------------------// //-----ASSRT A NEW BUTTON THAT CONTAINS THE NEW BOX,WHICH HAS PICTER IN IT---------// box = xpm_label_box ("remoteserv.xpm", _("远程服务")); button = gtk_button_new (); g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (on_button_clicked), (gpointer) "remoteserv"); /* Pack and show all our widgets */ gtk_widget_show (box); gtk_container_add (GTK_CONTAINER (button), box); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (box1),button,TRUE, TRUE, 0); //----------------------------------------------------------------------------------------------------// //-----ASSRT A NEW BUTTON THAT CONTAINS THE NEW BOX,WHICH HAS PICTER IN IT---------// box = xpm_label_box ("netstorage.xpm", _("网络存储")); button = gtk_button_new (); g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (on_button_clicked), (gpointer) "netstorage"); /* Pack and show all our widgets */ gtk_widget_show (box); gtk_container_add (GTK_CONTAINER (button), box); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (box1),button,TRUE, TRUE, 0); //----------------------------------------------------------------------------------------------------// //-----ASSRT A NEW BUTTON THAT CONTAINS THE NEW BOX,WHICH HAS PICTER IN IT---------// box = xpm_label_box ("setpasswd.xpm", _("修改密码")); button = gtk_button_new (); g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (on_button_clicked), (gpointer) "setpasswd"); /* Pack and show all our widgets */ gtk_widget_show (box); gtk_container_add (GTK_CONTAINER (button), box); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (box1),button,TRUE, TRUE, 0); //----------------------------------------------------------------------------------------------------// //-----ASSRT A NEW BUTTON THAT CONTAINS THE NEW BOX,WHICH HAS PICTER IN IT---------// box = xpm_label_box ("settime.xpm", _("时间设置")); button = gtk_button_new (); g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (on_button_clicked), (gpointer) "settime"); /* Pack and show all our widgets */ gtk_widget_show (box); gtk_container_add (GTK_CONTAINER (button), box); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (box1),button,TRUE, TRUE, 0); //----------------------------------------------------------------------------------------------------// //************************************************************************************************////**********************************PASSWORD WINDOW INITIAL*************************************// //GtkWidget *box; /*GtkWidget *button_ok,*button_cancel; GtkWidget *frame; GtkWidget *entry; button_ok = gtk_button_new_from_stock(GTK_STOCK_OK); button_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); frame = gtk_frame_new("Please type in password"); entry = gtk_entry_new (); gtk_widget_show(entry); gtk_container_add (GTK_CONTAINER (frame), entry); gtk_widget_show(frame); gtk_container_add(GTK_CONTAINER(window_passwd),frame); //g_signal_connect (entry, "activate", G_CALLBACK (cb_activate), NULL); gtk_container_add (GTK_CONTAINER (window_passwd), entry); gtk_widget_show(button_ok); gtk_container_add (GTK_CONTAINER (window_passwd), button_ok); gtk_widget_show(button_cancel); gtk_container_add (GTK_CONTAINER (window_passwd), button_cancel); gtk_widget_show(window_passwd);*/ GtkWidget *button_ok,*button_cancel;
GtkWidget *frame;
GtkWidget *entry;
GtkWidget *vbox_outer,*hbox_upper,*hbox_lowwer;
button_ok = gtk_button_new_from_stock(GTK_STOCK_OK);
button_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
frame = gtk_frame_new(_("请输入密码"));
//gtk_container_set_border_width(GTK_FRAME(frame),10);
entry = gtk_entry_new();
vbox_outer = gtk_vbox_new(FALSE,0);
//gtk_container_set_border_width(GTK_BOX(vbox_outer),10); gtk_box_set_spacing(GTK_BOX(vbox_outer),10);
gtk_container_add(GTK_CONTAINER(window_passwd),vbox_outer);
//UPPER PART
hbox_upper= gtk_hbox_new(FALSE,0);
//gtk_container_add(GTK_CONTAINER(window_passwd), hbox_upper);
gtk_widget_show(entry);
gtk_container_add(GTK_CONTAINER(frame),entry);
gtk_widget_show(frame);
gtk_container_add (GTK_CONTAINER (hbox_upper),frame);
//g_signal_connect (entry, "activate", G_CALLBACK (cb_activate), NULL);
//LOWWER PART //Params to be send to a method params arguments; arguments.entry = entry; arguments.window_main = window; arguments.window_invalid = window; arguments.window_self = window_passwd; //
hbox_lowwer = gtk_hbox_new(FALSE,0); //gtk_widget_grab_default(button_ok); gtk_box_set_spacing(GTK_BOX(hbox_lowwer),10);
gtk_widget_show(button_ok);
gtk_container_add (GTK_CONTAINER (hbox_lowwer), button_ok); g_signal_connect (G_OBJECT (button_ok), "clicked",G_CALLBACK (check_valid),(gpointer)&arguments);
gtk_widget_show(button_cancel);
gtk_container_add (GTK_CONTAINER (hbox_lowwer), button_cancel); g_signal_connect (G_OBJECT (button_cancel), "clicked",G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add(GTK_CONTAINER(vbox_outer),hbox_upper);
gtk_container_add(GTK_CONTAINER(vbox_outer),hbox_lowwer);
gtk_widget_show(hbox_upper); gtk_widget_show(hbox_lowwer); gtk_widget_show(vbox_outer);
gtk_widget_show(window_passwd);//************************************************************************************************//
//SHOW MAIN WINDOW
//gtk_widget_show(window); //LOOP
gtk_main();
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -