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

📄 smbconfig.h~

📁 LINUX 2.4下面使用GTK书写的一个系统控制面板
💻 H~
字号:
#ifndef SMBCONFIG_H
#define SMBCONFIG_H
#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>#include <time.h>#include "mmlib.h"
#define SMB_DEF_PAD		3
#define SMB_DEF_PAD_SMALL	5

//static inline char *_(char *c) {return(g_locale_to_utf8(c,-1,0,0,0));} static char smb_cfgfile_data[5][80];static struct texts{	GtkWidget *text_ipa;	GtkWidget *text_drt;	GtkWidget *text_ant;	GtkWidget *text_pwd;	GtkWidget *text_mnt;}smb_texts;static void smbconfig_button_set( GtkWidget *widget, gpointer callback_data);static gint text_change (const struct texts ts);static gint smbconfig_read_cfgfile (const char *file, char cfgdata[][80]);static gint smbconfig_write_cfgfile (const char *file);
void create_smb_config_window()
{  GtkWidget *window;
  GtkWidget *frame;
  GtkWidget *vbox, *vbox1;
  GtkWidget *hbox;
  GtkWidget *label;
  GtkWidget *radio;
  GtkWidget *button_cancel, *button_set;//  char smb_cfgfile_data[5][80];

  #define FLAG_NUM	10
  struct {    char *label;  } flags[] =    {      { _("网络存储管理")},
	  	
      { _("服务器")},
      { _("IP地址") },
      { _("  目录") },
      
      { _("本地") },
      { _("用户名") },
      { _("  密码") },
      { _("挂载点") },
      
      { _("设置") },
      { _("退出") },
      	{0}
    };  smbconfig_read_cfgfile("/.admin/neibor.conf", smb_cfgfile_data);	
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);  g_return_if_fail(GTK_IS_WINDOW(window));  isShow = TRUE;  gtk_window_set_title (GTK_WINDOW (window), flags[0].label);
  gtk_container_set_border_width (GTK_CONTAINER (window), 5);  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);    g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (mm_widget_destroy), window);
//  g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (mm_widget_destroy), window);
  gtk_window_set_resizable (GTK_WINDOW (window), FALSE);  vbox = gtk_vbox_new (FALSE, SMB_DEF_PAD);  gtk_container_add (GTK_CONTAINER (window), vbox);  /*   *  SMB server IP & Directory configure
   */
  frame = gtk_frame_new (flags[1].label);
  gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE,0);
  vbox1 = gtk_vbox_new (FALSE, SMB_DEF_PAD);
  gtk_container_add( GTK_CONTAINER (frame), vbox1);

/* IP address configure */
  hbox = gtk_hbox_new (FALSE, SMB_DEF_PAD);  gtk_box_pack_start (GTK_BOX (vbox1), hbox, TRUE, TRUE, SMB_DEF_PAD);

  label = gtk_label_new (flags[2].label);
  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);

  smb_texts.text_ipa = gtk_entry_new();  gtk_entry_set_text(GTK_ENTRY (smb_texts.text_ipa), strpbrk(smb_cfgfile_data[0], "=")+1);
  gtk_entry_set_max_length (GTK_ENTRY (smb_texts.text_ipa),  16);
  /*********options*********/
  gtk_box_pack_start (GTK_BOX (hbox), smb_texts.text_ipa, FALSE, TRUE, 0);

/* directory configure */
  hbox = gtk_hbox_new (FALSE, SMB_DEF_PAD);  gtk_box_pack_start (GTK_BOX (vbox1), hbox, TRUE, TRUE, SMB_DEF_PAD);

  label = gtk_label_new (flags[3].label);
  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);

  smb_texts.text_drt = gtk_entry_new();  gtk_entry_set_text(GTK_ENTRY (smb_texts.text_drt), strpbrk(smb_cfgfile_data[1], "=")+1);
  gtk_entry_set_max_length (GTK_ENTRY (smb_texts.text_drt),  50);
  /*********options*********/
  gtk_box_pack_start (GTK_BOX (hbox), smb_texts.text_drt, FALSE, TRUE, 0);


  /*   *  Local account configure
   */
  frame = gtk_frame_new (flags[4].label);
  gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE,0);
  vbox1 = gtk_vbox_new (FALSE, SMB_DEF_PAD);
  gtk_container_add( GTK_CONTAINER (frame), vbox1);

/* account configure */
  hbox = gtk_hbox_new (FALSE, SMB_DEF_PAD);  gtk_box_pack_start (GTK_BOX (vbox1), hbox, TRUE, TRUE, SMB_DEF_PAD);

  label = gtk_label_new (flags[5].label);
  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);

  smb_texts.text_ant = gtk_entry_new();  gtk_entry_set_text(GTK_ENTRY (smb_texts.text_ant), strpbrk(smb_cfgfile_data[2], "=")+1);
  gtk_entry_set_max_length (GTK_ENTRY (smb_texts.text_ant),  50);
  /*********options*********/
  gtk_box_pack_start (GTK_BOX (hbox), smb_texts.text_ant, FALSE, TRUE, 0);

/* password configure */
  hbox = gtk_hbox_new (FALSE, SMB_DEF_PAD);  gtk_box_pack_start (GTK_BOX (vbox1), hbox, TRUE, TRUE, SMB_DEF_PAD);

  label = gtk_label_new (flags[6].label);
  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);

  smb_texts.text_pwd = gtk_entry_new();  gtk_entry_set_text(GTK_ENTRY (smb_texts.text_pwd), strpbrk(smb_cfgfile_data[3], "=")+1);
  gtk_entry_set_max_length (GTK_ENTRY (smb_texts.text_pwd),  20);
  /*********options*********/  gtk_entry_set_visibility (GTK_ENTRY (smb_texts.text_pwd), FALSE);
  gtk_box_pack_start (GTK_BOX (hbox), smb_texts.text_pwd, FALSE, TRUE, 0);

/* mount point configure */
  hbox = gtk_hbox_new (FALSE, SMB_DEF_PAD);  gtk_box_pack_start (GTK_BOX (vbox1), hbox, TRUE, TRUE, SMB_DEF_PAD);

  label = gtk_label_new (flags[7].label);
  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);

  smb_texts.text_mnt = gtk_entry_new();  gtk_entry_set_text(GTK_ENTRY(smb_texts.text_mnt), strpbrk(smb_cfgfile_data[4], "=")+1);
  gtk_entry_set_max_length (GTK_ENTRY (smb_texts.text_mnt),  50);
  /*********options*********/
  gtk_box_pack_start (GTK_BOX (hbox), smb_texts.text_mnt, FALSE, TRUE, 0);


 /*
  * 
  */

  hbox = gtk_hbutton_box_new ();
  gtk_box_set_spacing(GTK_BOX(hbox),5);  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END);  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);    button_set = gtk_button_new_from_stock(GTK_STOCK_OK);
  g_signal_connect (G_OBJECT (button_set), "clicked", G_CALLBACK (smbconfig_button_set), NULL);  gtk_container_add (GTK_CONTAINER (hbox), button_set);  
  button_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
  g_signal_connect (G_OBJECT (button_cancel), "clicked", G_CALLBACK (mm_widget_destroy), window);  gtk_container_add (GTK_CONTAINER (hbox), button_cancel);
  GTK_WIDGET_SET_FLAGS (button_cancel, GTK_CAN_DEFAULT);  gtk_widget_grab_default (button_cancel);  gtk_widget_show_all (window);}
static void smbconfig_button_set( GtkWidget *widget, gpointer callback_data){	if(smbconfig_write_cfgfile("/.admin/neibor.conf") == -1)	{		/*error dialog window*/		msg_dialog(GTK_MESSAGE_ERROR, _("IP address error !"));	}else{		msg_dialog(GTK_MESSAGE_INFO, _("Modify successed !"));	}
}static gint smbconfig_read_cfgfile (const char *file, char cfgdata[][80]){	int fd;	int offset = 0;	char *p = NULL;	char *q = NULL;	int len, ret = 0;	ssize_t n;	gchar buffer[400];		if((fd = open (file, O_RDONLY)) == -1){		msg_dialog(GTK_MESSAGE_ERROR, "Error when to OPEN \"neiber.conf\" file");		ret = -1;	}else{			while ((n = read(fd, buffer + offset, 400)) > 0){			offset += n;		}		close(fd);			if (n == -1){			msg_dialog(GTK_MESSAGE_ERROR, "Error when to READ \"neiber.conf\" file");			ret = -1;		}else{			n = 0;				p = q = buffer;			offset = 0;			while ((p = strpbrk(p, "=")) && n < 5){				p = strpbrk(p, " \n");				len = p - q;				p = strpbrk(p, "\n");				p++;				memcpy (cfgdata[n], q, len);				cfgdata[n++][len] = '\0';				q = p;			}		}	}	return ret;} static gint smbconfig_write_cfgfile (const char *file){		int fd;	int i, ret = 0;	if(text_change (smb_texts))		return -1;			if((fd = open (file, O_WRONLY|O_TRUNC)) == -1){		ret = -1;		msg_dialog(GTK_MESSAGE_ERROR, "Error when to OPEN \"neiber.conf\" file");	}else{		for (i = 0; i < 5; i++){			write(fd, smb_cfgfile_data[i], strlen(smb_cfgfile_data[i]));			write(fd, "\n", 1);		}		close(fd);		}																return ret;} static gint text_change (const struct texts ts){	int ret;	const char *ip = gtk_entry_get_text(GTK_ENTRY(ts.text_ipa));	if((ret = ipadr_check(ip))==0){		strcpy(strpbrk(smb_cfgfile_data[0], "=")+1 , 				gtk_entry_get_text(GTK_ENTRY(ts.text_ipa)));		strcpy(strpbrk(smb_cfgfile_data[1], "=")+1 , 				gtk_entry_get_text(GTK_ENTRY(ts.text_drt)));		strcpy(strpbrk(smb_cfgfile_data[2], "=")+1 , 				gtk_entry_get_text(GTK_ENTRY(ts.text_ant)));		strcpy(strpbrk(smb_cfgfile_data[3], "=")+1 , 				gtk_entry_get_text(GTK_ENTRY(ts.text_pwd)));		strcpy(strpbrk(smb_cfgfile_data[4], "=")+1 , 				gtk_entry_get_text(GTK_ENTRY(ts.text_mnt)));	}	return ret;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -