/* GnoSamba 0.3.3
* copyright 1998-9 Perry Piplani
* redistributable under the terms of the GPL:
* http://www.gnu.org/copyleft/gpl.html
*/
#include "params.h"
#include "gtksamba.h"
#include <unistd.h>
#define DEF_SMB_CONF "/usr/local/etc/smb.conf"
#define DEF_RESTART "/usr/local/etc/rc.d/samba.sh stop && /usr/local/etc/rc.d/samba.sh start"
static GtkWidget *pbox=NULL;
static GtkWidget *conf_entry=NULL;
static GtkWidget *restart_entry=NULL;
void check_prefs(){
gchar *path, *value;
path=(char *)g_malloc((strlen(PACKAGE)+24)*sizeof(char));
sprintf(path,"/%s/smblocal/conf",PACKAGE);
value=gnome_config_get_string(path);
if(value)
g_free(value);
else
gnome_config_set_string(path,DEF_SMB_CONF);
value=gnome_config_get_string(path);
if(!value)
g_print("config bug found\n");
else
g_free(value);
sprintf(path,"/%s/smblocal/restart",PACKAGE);
value=gnome_config_get_string(path);
if(value)
g_free(value);
else {
printf("setting defaut restart\n");
gnome_config_set_string(path,DEF_RESTART);
}
g_free(path);
return;
}
char *get_config_val(char *sect, char *name){
char *path, *value;
path=(char *)g_malloc((strlen(sect)+strlen(name)+strlen(PACKAGE)+4)
* sizeof(char));
sprintf(path,"/%s/%s/%s",PACKAGE,sect,name);
value=gnome_config_get_string(path);
if(!value){
/* lame bug work around */
if(!strcmp(name,"conf"))
value=g_strdup(DEF_SMB_CONF);
if(!strcmp(name,"restart"))
value=g_strdup(DEF_RESTART);
}
g_free(path);
return value;
}
void c_apply_prefs(GtkWidget *widget, gint page, gpointer data){
char *path, *value;
GtkWidget *entry;
path=(char *)g_malloc((strlen(PACKAGE)+24)*sizeof(char));
value=gnome_file_entry_get_full_path(GNOME_FILE_ENTRY(conf_entry),
FALSE);
sprintf(path,"/%s/smblocal/conf",PACKAGE);
gnome_config_set_string(path,value);
entry=gnome_entry_gtk_entry(GNOME_ENTRY(restart_entry));
value=gtk_entry_get_text(GTK_ENTRY(entry));
sprintf(path,"/%s/smblocal/restart",PACKAGE);
gnome_config_set_string(path,value);
g_free(path);
return;
}
void c_make_pref_box(GtkWidget *widget, gpointer data){
GtkWidget *entry;
GtkWidget *label;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *hbox;
char *value;
pbox=gnome_property_box_new();
gtk_signal_connect(GTK_OBJECT(pbox),"apply",
GTK_SIGNAL_FUNC(c_apply_prefs),
NULL);
vbox = gtk_vbox_new(TRUE,0);
gtk_widget_show (vbox);
frame = gtk_frame_new ("Samba Configuration File");
gtk_container_border_width (GTK_CONTAINER (frame), 10);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
hbox = gtk_hbox_new(FALSE,0);
gtk_container_border_width (GTK_CONTAINER (hbox), 10);
gtk_container_add (GTK_CONTAINER (frame), hbox);
gtk_widget_show (hbox);
conf_entry = gnome_file_entry_new("local_conf","Samba Configuration File");
value=get_config_val("smblocal","conf");
entry=gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(conf_entry));
gtk_entry_set_text (GTK_ENTRY (entry),value);
g_free(value);
gtk_signal_connect_object(GTK_OBJECT(entry),
"changed",
GTK_SIGNAL_FUNC(gnome_property_box_changed),
GTK_OBJECT(pbox));
gtk_box_pack_start (GTK_BOX (hbox),conf_entry ,
TRUE, TRUE, 10);
gtk_widget_show (conf_entry);
frame = gtk_frame_new ("Samba Restart Command");
gtk_container_border_width (GTK_CONTAINER (frame), 10);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
hbox = gtk_hbox_new(FALSE,0);
gtk_container_border_width (GTK_CONTAINER (hbox), 10);
gtk_container_add (GTK_CONTAINER (frame), hbox);
gtk_widget_show (hbox);
restart_entry = gnome_entry_new("local_restart");
value=get_config_val("smblocal","restart");
entry=gnome_entry_gtk_entry(GNOME_ENTRY(restart_entry));
gtk_entry_set_text (GTK_ENTRY (entry),value);
g_free(value);
gtk_signal_connect_object(GTK_OBJECT(entry),"changed",
GTK_SIGNAL_FUNC(gnome_property_box_changed),
GTK_OBJECT(pbox));
gtk_box_pack_start (GTK_BOX (hbox), restart_entry ,
TRUE, TRUE, 10);
gtk_widget_show (restart_entry);
label = gtk_label_new ("Local System");
gtk_widget_show (label);
gnome_property_box_append_page(GNOME_PROPERTY_BOX(pbox),vbox,label);
frame = gtk_frame_new ("Remote Systems");
gtk_container_border_width (GTK_CONTAINER (frame), 10);
gtk_widget_show (frame);
label = gtk_label_new ("This Feature Coming Soon");
gtk_container_add (GTK_CONTAINER (frame), label);
gtk_widget_show (label);
label = gtk_label_new ("Remote Systems");
gtk_widget_show (label);
gnome_property_box_append_page(GNOME_PROPERTY_BOX(pbox), frame, label);
gtk_widget_show(pbox);
return;
}
syntax highlighted by Code2HTML, v. 0.9.1