⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mm.c~

📁 LINUX 2.4下面使用GTK书写的一个系统控制面板
💻 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 + -