changeset 592:7ae251af5f83

Some macro magic for simplifying the repetitive code.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 22 Mar 2007 17:26:04 +0000
parents acda6c2f10c8
children 91ca76e6c23f
files src/xs_config.c
diffstat 1 files changed, 40 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/src/xs_config.c	Thu Mar 22 17:11:01 2007 +0000
+++ b/src/xs_config.c	Thu Mar 22 17:26:04 2007 +0000
@@ -72,13 +72,19 @@
 
 #define LUW(x)	lookup_widget(xs_configwin, x)
 
-#define XS_DEF_WINDOW_DELETE(ME, MV)	\
+#define XS_DEF_WINDOW_DELETE(ME, MV)						\
 gboolean xs_ ## ME ## _delete(GtkWidget * w, GdkEvent * e, gpointer d) {	\
 	(void) w; (void) e; (void) d;						\
 	if (xs_ ## MV ) { gtk_widget_destroy(xs_ ## MV ); xs_ ## MV = NULL; }	\
 	return FALSE;								\
 }
 
+#define XS_DEF_WINDOW_CANCEL(ME, MV)			\
+void xs_ ## ME ## _cancel(GtkButton *b, gpointer d) {	\
+	(void) b; (void) d;				\
+	gtk_widget_destroy(xs_ ## MV );			\
+	xs_ ## MV = NULL;				\
+}
 
 
 /*
@@ -320,9 +326,10 @@
 		return FALSE;
 	
 	for (i = 0, j = 0; i < pResult->npoints; i++, j += XS_FITEM) {
-		sscanf(&tmpStr[j], "%4x%4x",
+		if (sscanf(&tmpStr[j], "%4x%4x",
 			&(pResult->points[i].x),
-			&(pResult->points[i].y));
+			&(pResult->points[i].y)) != 2)
+			return FALSE;
 	}
 	
 	return TRUE;
@@ -386,9 +393,10 @@
 	gchar inLine[XS_BUF_SIZE];
 	size_t lineNum;
 	t_xs_sid2_filter *f;
-	
+fprintf(stderr, "xs_filters_import(%s)\n", pcFilename);
 	if ((inFile = fopen(pcFilename, "ra")) == NULL)
 		return FALSE;
+fprintf(stderr, "importing...\n");
 	
 	lineNum = 0;
 	while (fgets(inLine, XS_BUF_SIZE, inFile) != NULL) {
@@ -571,11 +579,7 @@
 
 /* Configuration panel was canceled
  */
-void xs_cfg_cancel(void)
-{
-	gtk_widget_destroy(xs_configwin);
-	xs_configwin = NULL;
-}
+XS_DEF_WINDOW_CANCEL(cfg, configwin)
 
 
 /* Configuration was accepted, save the settings
@@ -703,18 +707,7 @@
 	xs_sldb_fileselector = NULL;
 }
 
-
-void xs_sldb_fs_cancel(GtkButton *button, gpointer user_data)
-{
-	(void) button;
-	(void) user_data;
-	
-	/* Close file selector window */
-	gtk_widget_destroy(xs_sldb_fileselector);
-	xs_sldb_fileselector = NULL;
-}
-
-
+XS_DEF_WINDOW_CANCEL(sldb_fs, sldb_fileselector)
 XS_DEF_WINDOW_DELETE(sldb_fs, sldb_fileselector)
 
 
@@ -753,17 +746,7 @@
 }
 
 
-void xs_stil_fs_cancel(GtkButton *button, gpointer user_data)
-{
-	(void) button;
-	(void) user_data;
-
-	/* Close file selector window */
-	gtk_widget_destroy(xs_stil_fileselector);
-	xs_stil_fileselector = NULL;
-}
-
-
+XS_DEF_WINDOW_CANCEL(stil_fs, stil_fileselector)
 XS_DEF_WINDOW_DELETE(stil_fs, stil_fileselector)
 
 
@@ -802,17 +785,7 @@
 }
 
 
-void xs_hvsc_fs_cancel(GtkButton *button, gpointer user_data)
-{
-	(void) button;
-	(void) user_data;
-
-	/* Close file selector window */
-	gtk_widget_destroy(xs_hvsc_selector);
-	xs_hvsc_selector = NULL;
-}
-
-
+XS_DEF_WINDOW_CANCEL(hvsc_fs, hvsc_selector)
 XS_DEF_WINDOW_DELETE(hvsc_fs, hvsc_selector)
 
 
@@ -840,8 +813,11 @@
 }
 
 
-void xs_cfg_sp2_presets_update()
+void xs_cfg_sp2_presets_update(void)
 {
+	/*
+	update the drowdown list of preset names from current filter presets list
+	*/
 }
 
 
@@ -942,28 +918,27 @@
 
 void xs_filter_import_fs_ok(GtkButton *button, gpointer user_data)
 {
+	gchar *tmpStr;
 	(void) button;
 	(void) user_data;
+	
+	XS_MUTEX_LOCK(xs_cfg);
+
+	/* Selection was accepted! */
+	tmpStr = gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_filt_importselector));
+fprintf(stderr, "paf: %s\n", tmpStr);
+	xs_filters_import(tmpStr, xs_cfg.sid2FilterPresets, &xs_cfg.sid2NFilterPresets);
 
 	xs_cfg_sp2_presets_update();
 
 	/* Close file selector window */
 	gtk_widget_destroy(xs_filt_importselector);
 	xs_filt_importselector = NULL;
+	XS_MUTEX_UNLOCK(xs_cfg);
 }
 
 
-void xs_filter_import_fs_cancel(GtkButton *button, gpointer user_data)
-{
-	(void) button;
-	(void) user_data;
-
-	/* Close file selector window */
-	gtk_widget_destroy(xs_filt_importselector);
-	xs_filt_importselector = NULL;
-}
-
-
+XS_DEF_WINDOW_CANCEL(filter_import_fs, filt_importselector)
 XS_DEF_WINDOW_DELETE(filter_import_fs, filt_importselector)
 
 
@@ -984,26 +959,25 @@
 
 void xs_filter_export_fs_ok(GtkButton *button, gpointer user_data)
 {
+	gchar *tmpStr;
 	(void) button;
 	(void) user_data;
 
+	XS_MUTEX_LOCK(xs_cfg);
+
+	/* Selection was accepted! */
+	tmpStr = gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_filt_exportselector));
+fprintf(stderr, "paf: %s\n", tmpStr);
+//	xs_filters_export(tmpStr, xs_cfg.sid2FilterPresets, &xs_cfg.sid2NFilterPresets);
+
 	/* Close file selector window */
 	gtk_widget_destroy(xs_filt_exportselector);
 	xs_filt_exportselector = NULL;
+	XS_MUTEX_UNLOCK(xs_cfg);
 }
 
 
-void xs_filter_export_fs_cancel(GtkButton *button, gpointer user_data)
-{
-	(void) button;
-	(void) user_data;
-
-	/* Close file selector window */
-	gtk_widget_destroy(xs_filt_exportselector);
-	xs_filt_exportselector = NULL;
-}
-
-
+XS_DEF_WINDOW_CANCEL(filter_export_fs, filt_exportselector)
 XS_DEF_WINDOW_DELETE(filter_export_fs, filt_exportselector)