📄 smbconfig.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 + -