From ec02950635f9731c0ecd2fb29f847d8a74258bcb Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Fri, 10 Mar 2006 06:59:43 +0000
Subject: [PATCH] Properly fill the four combo boxes.

---
 src/sbbs3/gtkuseredit/events.c          |  3 +
 src/sbbs3/gtkuseredit/gtkuseredit.c     | 80 +++++++++++++++++++++----
 src/sbbs3/gtkuseredit/gtkuseredit.glade | 18 +++---
 3 files changed, 80 insertions(+), 21 deletions(-)

diff --git a/src/sbbs3/gtkuseredit/events.c b/src/sbbs3/gtkuseredit/events.c
index 8f254e1c57..65132ef16d 100644
--- a/src/sbbs3/gtkuseredit/events.c
+++ b/src/sbbs3/gtkuseredit/events.c
@@ -240,6 +240,9 @@ void load_user(GtkWidget *wiggy, gpointer data)
 			sprintf(str,"%u",user.min);
 			gtk_entry_set_text(GTK_ENTRY(w),str);
 		}
+
+	/* Statistics */
+	
 }
 
 int update_current_user(int new_user)
diff --git a/src/sbbs3/gtkuseredit/gtkuseredit.c b/src/sbbs3/gtkuseredit/gtkuseredit.c
index ece6bcf8b9..4c29ace328 100644
--- a/src/sbbs3/gtkuseredit/gtkuseredit.c
+++ b/src/sbbs3/gtkuseredit/gtkuseredit.c
@@ -16,17 +16,69 @@ int		current_user=0;
 /* Refreshes global variables... ie: Number of users */
 int refresh_globals(void)
 {
-	gchar		newlabel[14];
-	GtkWidget	*lTotalUsers;
+	char		str[1024];
+	GtkWidget	*cCommandShell;
+	GtkWidget	*cExternalEditor;
+	GtkWidget	*cDefaultDownloadProtocol;
+	GtkWidget	*cTempQWKFileType;
+	GtkWidget	*w;
+	int			i;
+
+	/* Clear out old combo boxes */
+	cCommandShell=glade_xml_get_widget(xml, "cCommandShell");
+	if(w==NULL) {
+		fprintf(stderr,"Cannot get the command shell widget\n");
+		return(-1);
+	}
+	for(i=0; i<cfg.total_shells; i++)
+		gtk_combo_box_remove_text(GTK_COMBO_BOX(cCommandShell), 0);
+	cExternalEditor=glade_xml_get_widget(xml, "cExternalEditor");
+	if(w==NULL) {
+		fprintf(stderr,"Cannot get the external editor widget\n");
+		return(-1);
+	}
+	for(i=0; i<cfg.total_xedits; i++)
+		gtk_combo_box_remove_text(GTK_COMBO_BOX(cExternalEditor), 0);
+	cDefaultDownloadProtocol=glade_xml_get_widget(xml, "cDefaultDownloadProtocol");
+	if(w==NULL) {
+		fprintf(stderr,"Cannot get the default download protocol widget\n");
+		return(-1);
+	}
+	for(i=0; i<cfg.total_prots; i++)
+		gtk_combo_box_remove_text(GTK_COMBO_BOX(cDefaultDownloadProtocol), 0);
+	cTempQWKFileType=glade_xml_get_widget(xml, "cTempQWKFileType");
+	if(w==NULL) {
+		fprintf(stderr,"Cannot get the temp/QWK file type widget\n");
+		return(-1);
+	}
+	for(i=0; i<cfg.total_fcomps; i++)
+		gtk_combo_box_remove_text(GTK_COMBO_BOX(cTempQWKFileType), 0);
+
+    /* Read .cfg files here */
+    if(!load_cfg(&cfg, NULL, TRUE, str)) {
+		fprintf(stderr,"Cannot load configuration data\n");
+        return(-1);
+	}
+
+	/* Re-add combobox values */
+	for(i=0; i<cfg.total_shells; i++)
+		gtk_combo_box_append_text(GTK_COMBO_BOX(cCommandShell), cfg.shell[i]->name);
+	for(i=0; i<cfg.total_xedits; i++)
+		gtk_combo_box_append_text(GTK_COMBO_BOX(cExternalEditor), cfg.xedit[i]->name);
+	for(i=0; i<cfg.total_prots; i++)
+		gtk_combo_box_append_text(GTK_COMBO_BOX(cDefaultDownloadProtocol), cfg.prot[i]->name);
+	for(i=0; i<cfg.total_fcomps; i++)
+		gtk_combo_box_append_text(GTK_COMBO_BOX(cTempQWKFileType), cfg.fcomp[i]->ext);
 
 	totalusers=lastuser(&cfg);
-	sprintf(newlabel,"of %d",totalusers);
-	lTotalUsers=glade_xml_get_widget(xml, "lTotalUsers");
-	if(lTotalUsers==NULL) {
+	sprintf(str,"of %d",totalusers);
+	w=glade_xml_get_widget(xml, "lTotalUsers");
+	if(w==NULL) {
 		fprintf(stderr,"Cannot get the total users widget\n");
 		return(-1);
 	}
-	gtk_label_set_text(GTK_LABEL(lTotalUsers), newlabel);
+	gtk_label_set_text(GTK_LABEL(w), str);
+
 	return(0);
 }
 
@@ -48,14 +100,20 @@ int read_config(void)
 		fprintf(stderr,"SBBSCTRL does not point to a directory\n");
 		return(-1);
 	}
-    /* Read .cfg files here */
     memset(&cfg,0,sizeof(cfg));
     cfg.size=sizeof(cfg);
     SAFECOPY(cfg.ctrl_dir,ctrl_dir);
-    if(!load_cfg(&cfg, NULL, TRUE, str)) {
-		fprintf(stderr,"Cannot load configuration data\n");
-        return(-1);
-	}
+
+	/*
+	 * The following are to make up for Glade hacks... we want a text list
+	 * in the combo boxes... Galde does this *if* there's predefined text.
+	 * So, we need to remove it during the refresh.
+	 */
+	cfg.total_shells=1;
+	cfg.total_xedits=1;
+	cfg.total_prots=1;
+	cfg.total_fcomps=1;
+
 	if(refresh_globals())
 		return(-1);
 	if(totalusers > 0)
diff --git a/src/sbbs3/gtkuseredit/gtkuseredit.glade b/src/sbbs3/gtkuseredit/gtkuseredit.glade
index e5dddfeae7..48458af335 100644
--- a/src/sbbs3/gtkuseredit/gtkuseredit.glade
+++ b/src/sbbs3/gtkuseredit/gtkuseredit.glade
@@ -3867,12 +3867,10 @@
 			      <property name="spacing">0</property>
 
 			      <child>
-				<widget class="GtkComboBoxEntry" id="comboboxentry1">
+				<widget class="GtkComboBox" id="cCommandShell">
 				  <property name="visible">True</property>
-				  <property name="items" translatable="yes">Item1
-Item2</property>
+				  <property name="items" translatable="yes">Temp</property>
 				  <property name="add_tearoffs">False</property>
-				  <property name="has_frame">True</property>
 				  <property name="focus_on_click">True</property>
 				</widget>
 				<packing>
@@ -4470,10 +4468,10 @@ Item2</property>
 				  </child>
 
 				  <child>
-				    <widget class="GtkComboBoxEntry" id="comboboxentry2">
+				    <widget class="GtkComboBox" id="cExternalEditor">
 				      <property name="visible">True</property>
+				      <property name="items" translatable="yes">Temp</property>
 				      <property name="add_tearoffs">False</property>
-				      <property name="has_frame">True</property>
 				      <property name="focus_on_click">True</property>
 				    </widget>
 				    <packing>
@@ -5004,10 +5002,10 @@ Item2</property>
 			      </child>
 
 			      <child>
-				<widget class="GtkComboBoxEntry" id="comboboxentry3">
+				<widget class="GtkComboBox" id="cDefaultDownloadProtocol">
 				  <property name="visible">True</property>
+				  <property name="items" translatable="yes">Temp</property>
 				  <property name="add_tearoffs">False</property>
-				  <property name="has_frame">True</property>
 				  <property name="focus_on_click">True</property>
 				</widget>
 				<packing>
@@ -5060,10 +5058,10 @@ Item2</property>
 			      </child>
 
 			      <child>
-				<widget class="GtkComboBoxEntry" id="comboboxentry4">
+				<widget class="GtkComboBox" id="cTempQWKFileType">
 				  <property name="visible">True</property>
+				  <property name="items" translatable="yes">Temp</property>
 				  <property name="add_tearoffs">False</property>
-				  <property name="has_frame">True</property>
 				  <property name="focus_on_click">True</property>
 				</widget>
 				<packing>
-- 
GitLab