Example #1
0
static buffer_t *buffers_readfname(const char *filename)
{
	buffer_t *b = NULL;

	if(filename){
		FILE *f;

		f = fopen(filename, "r");

		if(f){
			b = buffers_readfile(f, filename, 0);
			fclose(f);
		}else{
			if(errno == ENOENT)
				goto newfile;
			gui_status(GUI_ERR, "open \"%s\": %s", filename, strerror(errno));
		}

	}else{
newfile:
		if(filename)
			gui_status(GUI_NONE, "%s: new file", filename);
		else
			gui_status(GUI_NONE, "(new file)");
	}

	if(!b)
		b = buffer_new_empty();
	if(filename)
		buffer_setfilename(b, filename);

	return b;
}
Example #2
0
static buffer_t *buffers_readfile(FILE *f, const char *filename, int noro)
{
	buffer_t *b;
	int nread;

	nread = buffer_read(&b, f);

	if(nread == -1){
		gui_status(GUI_ERR, "read \"%s\": %s",
				filename,
				errno ? strerror(errno) : "unknown error - binary file?");

	}else{
		if(!noro)
			buffer_readonly(b) = access(filename, W_OK);

		if(nread == 0)
			gui_status(GUI_NONE, "%s: empty file%s", filename, buffer_readonly(b) ? " [read only]" : "");
		else
			gui_status(GUI_NONE, "%s%s: %dC, %dL%s%s",
					filename,
					buffer_readonly(b) ? " [read only]" : "",
					buffer_nchars(b),
					buffer_nlines(b),
					buffer_eol(b)  ? "" : " [noeol]",
					buffer_crlf(b) ? " [crlf]" : ""
					);
	}

	return b;
}
int gui_open_parameter_file ()
{
	GtkWidget *dialog;
	gchar *glade_pixmap_file = g_build_filename (PHOEBE_GLADE_PIXMAP_DIR, "ico.png", NULL);
	int status = -1;
	char *filename;

	dialog = gtk_file_chooser_dialog_new (
		"Open PHOEBE parameter file",
		GTK_WINDOW (gui_widget_lookup ("phoebe_window")->gtk),
		GTK_FILE_CHOOSER_ACTION_OPEN,
		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
		GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
		NULL);

	if (PHOEBE_DIRFLAG)
		gtk_file_chooser_set_current_folder ((GtkFileChooser*) dialog, PHOEBE_DIRNAME);
	else {
		gchar *dir;
		phoebe_config_entry_get ("PHOEBE_DATA_DIR", &dir);
		gtk_file_chooser_set_current_folder ((GtkFileChooser*) dialog, dir);
	}

	gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 450);
    gtk_window_set_icon (GTK_WINDOW (dialog), gdk_pixbuf_new_from_file (glade_pixmap_file, NULL));

	if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
		filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
		status = phoebe_open_parameter_file (filename);

		PHOEBE_FILEFLAG = TRUE;
		PHOEBE_FILENAME = strdup (filename);

		PHOEBE_DIRFLAG = TRUE;
		PHOEBE_DIRNAME = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));

		if (status == SUCCESS) {
			gui_update_angle_values ();
			gui_status("%s successfully opened.", filename);
		}
        else
			gui_status("Opening %s failed with status %d.", filename, status);

        g_free (filename);
	}
	else
		gui_status ("Open PHOEBE parameter file canceled.");

	gtk_widget_destroy (dialog);

	return status;
}
int gui_save_parameter_file()
{
	GtkWidget *dialog;
	gchar *glade_pixmap_file = g_build_filename (PHOEBE_GLADE_PIXMAP_DIR, "ico.png", NULL);
	int status = 0;

	dialog = gtk_file_chooser_dialog_new ("Save PHOEBE parameter file",
										  GTK_WINDOW(gui_widget_lookup("phoebe_window")->gtk),
										  GTK_FILE_CHOOSER_ACTION_SAVE,
										  GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
										  GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
										  NULL);

	gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 450);

	if(PHOEBE_DIRFLAG)
		gtk_file_chooser_set_current_folder((GtkFileChooser*)dialog, PHOEBE_DIRNAME);
	else{
		gchar *dir;
		phoebe_config_entry_get("PHOEBE_DATA_DIR", &dir);
		gtk_file_chooser_set_current_folder((GtkFileChooser*)dialog, dir);
	}

	/* gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); */
    gtk_window_set_icon (GTK_WINDOW(dialog), gdk_pixbuf_new_from_file(glade_pixmap_file, NULL));

	gchar *filename = gui_get_filename_with_overwrite_confirmation (dialog, "Save PHOEBE parameter file");
	if (filename) {
		gui_export_angles_to_radians ();
		status = phoebe_save_parameter_file (filename);

		PHOEBE_FILEFLAG = TRUE;
		PHOEBE_FILENAME = strdup(filename);

		PHOEBE_DIRFLAG = TRUE;
		PHOEBE_DIRNAME = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));

		if (status == SUCCESS)
			gui_status("%s successfully saved.", filename);
        else
			gui_status("Saving %s failed with status %d.", filename, status);

        g_free (filename);
	}

	gtk_widget_destroy (dialog);

	return status;
}
gchar *gui_get_filename_with_overwrite_confirmation(GtkWidget *dialog, char *gui_confirmation_title)
{
	/* Returns a valid filename or NULL if the user canceled
	   Replaces functionality of gtk_file_chooser_set_do_overwrite_confirmation
	   avaliable in Gtk 2.8 (PHOEBE only requires 2.6)
	*/
	gchar *filename;

	while (TRUE) {
		if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT){
			filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
			if (!phoebe_filename_exists(filename))
				/* file does not exist */
				return filename;
			if(gui_warning(gui_confirmation_title, "This file already exists. Do you want to replace it?")){
				/* file may be overwritten */
				return filename;
			}
			/* user doesn't want to overwrite, display the dialog again */
			g_free (filename);
		}
		else{
		    gui_status("%s cancelled.", gui_confirmation_title);
		    return NULL;
		}
	}
}
Example #6
0
File: poi-test.C Project: wixor/ewo
int main(int argc, char *argv[])
{
    spawn_worker_threads(2);
    gui_init(&argc, &argv);
    progress = gui_progress;

    Image im = Image::read(argv[1]);

    gui_status("looking for pois");
    
    std::vector<float> scales;
    scales.push_back(1);
    scales.push_back(3);
    scales.push_back(8);

    Array2D<float> eval = evaluateImage(im, scales, 16);
    POIvec all = extractPOIs(eval, 30);
    POIvec pois = filterPOIs(all, 60) ;

    ImageDisplaySlot evalds("evaluation", rgba(1,0,0,1));
    evalds.ci = gui_upload(visualizeEvaluation(eval));
    evalds.activate();

    ImageDisplaySlot imds("image & pois", rgba(.1,1,.1,.5));
    imds.ci = gui_upload(im);
    imds.ps = std::vector<Point>(pois.begin(), pois.end());
    imds.bind();

    gui_status("building proximity info");
    ProximityMap pm;
    pm.resize(im.getWidth(), im.getHeight(), 1, 8);
    pm.build(pois);


    ImageDisplaySlot proxds("proximity", rgba(1,1,1,1));
    proxds.ci = gui_upload(pm.visualize());
    proxds.ps = imds.ps;
    proxds.dotsize = 3;
    proxds.bind();

    info("done");
    
    pause();


    return 0;
}
Example #7
0
int go_file()
{
	char *fname = gui_current_fname();

	if(fname){
		buffers_load(fname);
		free(fname);
		return 0;
	}else{
		gui_status(GUI_ERR, "no file selected");
		return 1;
	}
}
GtkWidget *gui_detach_box_from_parent (GtkWidget *box, GtkWidget *parent, gboolean *flag, gchar *window_title, gint x, gint y)
{
	/*
	 * This function detaches the box from its parent. If the flag=FALSE, than
	 * it creates a new window and packs the box inside the window, otherwise
	 * it packs the box in its original place inside the main window.
	 */

	GtkWidget *window;
	gchar *glade_pixmap_file = g_build_filename (PHOEBE_GLADE_PIXMAP_DIR, "ico.png", NULL);

	if(*flag){
		window = gtk_widget_get_parent (box);

		gtk_widget_reparent(box, parent);
		gtk_widget_destroy(window);

        gui_status("%s reatached.", window_title);
	}
	else{
		window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
		g_object_set_data (G_OBJECT (window), "data_box", 		(gpointer) box);
		g_object_set_data (G_OBJECT (window), "data_parent", 	(gpointer) parent);
		g_object_set_data (G_OBJECT (window), "data_flag",		(gpointer) flag);

		gtk_window_set_icon (GTK_WINDOW(window), gdk_pixbuf_new_from_file(glade_pixmap_file, NULL));
		gtk_window_set_title (GTK_WINDOW (window), window_title);
		gtk_widget_reparent(box, window);
		gtk_widget_set_size_request (window, x, y);
		gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
		g_signal_connect (GTK_WIDGET(window), "delete-event", G_CALLBACK (tmp_circumvent_delete_event), NULL);
		gtk_widget_show_all (window);

		gui_status("%s detached.", window_title);
	}
	*flag = !(*flag);
	return window;
}
Example #9
0
void map()
{
	struct list *l;
	int found = 0;
	int c = gui_getch(GETCH_COOKED);

	for(l = maps; l && l->data; l = l->next){
		struct map *m = l->data;

		if(m->c == c){
			gui_queue(m->cmd);
			found = 1;
			/* keep looking for more */
		}
	}

	if(!found && c != CTRL_AND('['))
		gui_status(GUI_ERR, "map %c not defined", c);
}
Example #10
0
void showgirl(unsigned int page)
{
	char *word = gui_current_word();
	char *buf;
	int len;

	if(!word){
		gui_status(GUI_ERR, "invalid word");
		return;
	}

	buf = umalloc(len = strlen(word) + 16);

	if(page)
		snprintf(buf, len, "man %d %s", page, word);
	else
		snprintf(buf, len, "man %s", word);

	shellout(buf, NULL);
	free(buf);
	free(word);
}
Example #11
0
/* shows the status of the players */
TEG_STATUS clitok_status( char *str)
{
	CPLAYER j,*j_tmp;
	PARSER p;
	DELIM igualador={ ':', ':', ':' };
	DELIM separador={ '/', '/', '/' };

	int i;

	player_flush();

	if( strlen(str)==0 )
		goto ok;

	p.igualador = &igualador;
	p.separador = &separador;
	p.data = str;


	do {
		if( (i=parser_call( &p )) ) {
			if( aux_status( &j, p.token ) != TEG_STATUS_SUCCESS )
				goto error;

			if( player_whois( j.numjug, &j_tmp ) == TEG_STATUS_SUCCESS )
				player_update( &j );
			else
				player_ins( &j );
		}
	} while( i && p.hay_otro);
ok:
	gui_status();
	return TEG_STATUS_SUCCESS;
error:
	textmsg(M_ERR,"Error in clitok_status()");
	return TEG_STATUS_PARSEERROR;
}
int gui_show_configuration_dialog ()
{
	int status = 0;
	
	gchar     *glade_xml_file					   = g_build_filename     	(PHOEBE_GLADE_XML_DIR, "phoebe_settings.glade", NULL);
	gchar     *glade_pixmap_file				   = g_build_filename     	(PHOEBE_GLADE_PIXMAP_DIR, "ico.png", NULL);
	
	GladeXML  *phoebe_settings_xml				   = glade_xml_new			(glade_xml_file, NULL, NULL);
	
	GtkWidget *phoebe_settings_dialog			   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_dialog");
	GtkWidget *basedir_filechooserbutton		   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_configuration_basedir_filechooserbutton");
	GtkWidget *defaultsdir_filechooserbutton	   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_configuration_defaultsdir_filechooserbutton");
	GtkWidget *workingdir_filechooserbutton		   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_configuration_workingdir_filechooserbutton");
	GtkWidget *datadir_filechooserbutton		   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_configuration_datadir_filechooserbutton");
	GtkWidget *ptfdir_filechooserbutton			   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_configuration_ptfdir_filechooserbutton");

	GtkWidget *ld_none                             = glade_xml_get_widget  (phoebe_settings_xml, "phoebe_settings_ld_none");
	GtkWidget *ld_internal                         = glade_xml_get_widget  (phoebe_settings_xml, "phoebe_settings_ld_internal_tables");
	GtkWidget *ld_internal_dir		               = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_ld_internal_dir");
	GtkWidget *ld_vanhamme						   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_ld_vanhamme_tables");
	GtkWidget *ld_vanhamme_dir					   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_ld_vanhamme_dir");
	
	GtkWidget *kurucz_checkbutton				   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_kurucz_checkbutton");
	GtkWidget *kurucz_filechooserbutton			   = glade_xml_get_widget	(phoebe_settings_xml, "phoebe_settings_kurucz_filechooserbutton");
	
	GtkWidget *confirm_on_overwrite_checkbutton    = glade_xml_get_widget (phoebe_settings_xml, "phoebe_settings_confirmation_save_checkbutton");
	GtkWidget *beep_after_plot_and_fit_checkbutton = glade_xml_get_widget (phoebe_settings_xml, "phoebe_settings_beep_after_plot_and_fit_checkbutton");
	GtkWidget *units_widget                        = glade_xml_get_widget (phoebe_settings_xml, "phoebe_settings_angle_units");
    GtkWidget *load_atm_to_memory_checkbutton      = glade_xml_get_widget(phoebe_settings_xml, "phoebe_settings_load_atm_to_memory_checkbutton");
    GtkWidget *dump_to_lcout_checkbutton           = glade_xml_get_widget(phoebe_settings_xml, "phoebe_settings_dump_to_lcout_checkbutton");
    
	gchar     *dir;
	gboolean   toggle;
	gint 	   result;
	
	/* Connect all signals defined in the Glade file: */
	glade_xml_signal_autoconnect (phoebe_settings_xml);
	g_object_unref (phoebe_settings_xml);
	
	phoebe_config_entry_get ("PHOEBE_BASE_DIR", &dir);
	gtk_file_chooser_set_filename ((GtkFileChooser *) basedir_filechooserbutton, dir);
	phoebe_config_entry_get ("PHOEBE_DEFAULTS_DIR", &dir);
	gtk_file_chooser_set_filename ((GtkFileChooser *) defaultsdir_filechooserbutton, dir);
	phoebe_config_entry_get ("PHOEBE_TEMP_DIR", &dir);
	gtk_file_chooser_set_filename ((GtkFileChooser *) workingdir_filechooserbutton, dir);
	phoebe_config_entry_get ("PHOEBE_DATA_DIR", &dir);
	gtk_file_chooser_set_filename ((GtkFileChooser *) datadir_filechooserbutton, dir);
	phoebe_config_entry_get ("PHOEBE_PTF_DIR", &dir);
	gtk_file_chooser_set_filename ((GtkFileChooser *) ptfdir_filechooserbutton, dir);
	
	g_signal_connect (G_OBJECT (confirm_on_overwrite_checkbutton),    "toggled", G_CALLBACK (on_phoebe_settings_confirmation_save_checkbutton_toggled), NULL);
	g_signal_connect (G_OBJECT (beep_after_plot_and_fit_checkbutton), "toggled", G_CALLBACK (on_phoebe_beep_after_plot_and_fit_checkbutton_toggled),    NULL);
	
	gtk_window_set_icon  (GTK_WINDOW (phoebe_settings_dialog), gdk_pixbuf_new_from_file (glade_pixmap_file, NULL));
	gtk_window_set_title (GTK_WINDOW (phoebe_settings_dialog), "PHOEBE -- Settings");
	
	phoebe_config_entry_get ("PHOEBE_LD_SWITCH", &toggle);
	
	if (!toggle)
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ld_none), TRUE);
	else {
		phoebe_config_entry_get ("PHOEBE_LD_INTERN", &toggle);
		if (toggle)
			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ld_internal), TRUE);
		else
			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ld_vanhamme), TRUE);
	}
	
	phoebe_config_entry_get ("PHOEBE_LD_DIR", &dir);
	gtk_file_chooser_set_filename ((GtkFileChooser *) ld_internal_dir, dir);
	
	phoebe_config_entry_get ("PHOEBE_LD_VH_DIR", &dir);
	gtk_file_chooser_set_filename ((GtkFileChooser *) ld_vanhamme_dir, dir);
	
	phoebe_config_entry_get ("PHOEBE_KURUCZ_SWITCH", &toggle);
	if (toggle) {
		phoebe_config_entry_get ("PHOEBE_KURUCZ_DIR", &dir);
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(kurucz_checkbutton), TRUE);
		gtk_file_chooser_set_filename((GtkFileChooser*)kurucz_filechooserbutton, dir);
	}
	
	phoebe_config_entry_get ("GUI_CONFIRM_ON_OVERWRITE", &toggle);
	if (toggle)
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (confirm_on_overwrite_checkbutton), 1);
	else
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (confirm_on_overwrite_checkbutton), 0);
	
	phoebe_config_entry_get ("GUI_BEEP_AFTER_PLOT_AND_FIT", &toggle);
	if (toggle)
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (beep_after_plot_and_fit_checkbutton), 1);
	else
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (beep_after_plot_and_fit_checkbutton), 0);

	phoebe_config_entry_get ("LOAD_ATM_TO_MEMORY", &toggle);
	if (toggle)
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (load_atm_to_memory_checkbutton), 1);
	else
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (load_atm_to_memory_checkbutton), 0);

	phoebe_config_entry_get ("DUMP_LCOUT_FILES", &toggle);
	if (toggle)
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dump_to_lcout_checkbutton), 1);
	else
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dump_to_lcout_checkbutton), 0);
	
	/* ANGLE UNITS: */
	{
		char *units;
		phoebe_config_entry_get ("GUI_ANGLE_UNITS", &units);
		if (strcmp(units, "Radians") == 0)
			gtk_combo_box_set_active (GTK_COMBO_BOX(units_widget), 0);
		else
			gtk_combo_box_set_active (GTK_COMBO_BOX(units_widget), 1);
	}

	/* Now that everything is set according to the config, add a signal to
	 * change angle units:
	 */
	g_signal_connect (units_widget, "changed", G_CALLBACK(on_angle_units_changed), NULL);

	result = gtk_dialog_run (GTK_DIALOG (phoebe_settings_dialog));
	
	switch (result) {
		case GTK_RESPONSE_OK:  /* =  OK button  */
		case GTK_RESPONSE_YES: /* = Save button */
			phoebe_config_entry_set ("PHOEBE_BASE_DIR", 	gtk_file_chooser_get_filename ((GtkFileChooser *) basedir_filechooserbutton));
			phoebe_config_entry_set ("PHOEBE_DEFAULTS_DIR", gtk_file_chooser_get_filename ((GtkFileChooser *) defaultsdir_filechooserbutton));
			phoebe_config_entry_set ("PHOEBE_TEMP_DIR", 	gtk_file_chooser_get_filename ((GtkFileChooser *) workingdir_filechooserbutton));
			phoebe_config_entry_set ("PHOEBE_DATA_DIR", 	gtk_file_chooser_get_filename ((GtkFileChooser *) datadir_filechooserbutton));

			dir = gtk_file_chooser_get_filename ((GtkFileChooser *) ptfdir_filechooserbutton);
			phoebe_config_entry_set ("PHOEBE_PTF_DIR", dir);
			free(PHOEBE_passbands);
			PHOEBE_passbands = NULL;
			PHOEBE_passbands_no = 0;
			phoebe_read_in_passbands (dir);
			g_free (dir);
						
			phoebe_config_entry_set ("PHOEBE_LD_DIR",    gtk_file_chooser_get_filename ((GtkFileChooser*) ld_internal_dir));
			phoebe_config_entry_set ("PHOEBE_LD_VH_DIR", gtk_file_chooser_get_filename ((GtkFileChooser*) ld_vanhamme_dir));
			
			if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ld_none))) {
				phoebe_config_entry_set ("PHOEBE_LD_SWITCH", FALSE);
			}
			else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ld_internal))) {
				char *pathname;
				phoebe_config_entry_set ("PHOEBE_LD_SWITCH", TRUE);
				phoebe_config_entry_set ("PHOEBE_LD_INTERN", TRUE);
				phoebe_config_entry_get ("PHOEBE_LD_DIR", &pathname); 
				phoebe_ld_attach_all (pathname);
			}
			else {
				phoebe_config_entry_set ("PHOEBE_LD_SWITCH", TRUE);
				phoebe_config_entry_set ("PHOEBE_LD_INTERN", FALSE);
			}
			
			phoebe_load_ld_tables();

			if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (kurucz_checkbutton))) {
				phoebe_config_entry_set ("PHOEBE_KURUCZ_SWITCH", TRUE);
				phoebe_config_entry_set ("PHOEBE_KURUCZ_DIR",    gtk_file_chooser_get_filename ((GtkFileChooser *) kurucz_filechooserbutton));
			}
			else
				phoebe_config_entry_set ("PHOEBE_KURUCZ_SWITCH", FALSE);

			if (gtk_combo_box_get_active (GTK_COMBO_BOX (units_widget)) == 1)
				phoebe_config_entry_set ("GUI_ANGLE_UNITS", "Degrees");
			else
				phoebe_config_entry_set ("GUI_ANGLE_UNITS", "Radians");

			if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (load_atm_to_memory_checkbutton))) {
                char *atmcofplanck, *atmcof;
				phoebe_config_entry_set ("LOAD_ATM_TO_MEMORY", TRUE);

                status = intern_get_atmcof_filenames(&atmcofplanck, &atmcof);
                if (status != SUCCESS)
                    return status;

                status = phoebe_load_atm_tables(atmcofplanck, atmcof);
                free(atmcofplanck); free(atmcof);
            }
			else {
				phoebe_config_entry_set ("LOAD_ATM_TO_MEMORY", FALSE);
                phoebe_load_atm_tables(NULL, NULL);
            }

			if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dump_to_lcout_checkbutton)))
				phoebe_config_entry_set ("DUMP_LCOUT_FILES", TRUE);
            else
				phoebe_config_entry_set ("DUMP_LCOUT_FILES", FALSE);

			if (result == GTK_RESPONSE_YES) {
				if (!PHOEBE_HOME_DIR || !phoebe_filename_is_directory (PHOEBE_HOME_DIR)) {
					char homedir[255], confdir[255];

					sprintf (homedir, "%s/.phoebe-%s", USER_HOME_DIR, PACKAGE_VERSION);
					sprintf (confdir, "%s/phoebe.config", homedir);

					PHOEBE_HOME_DIR = strdup (homedir);
					PHOEBE_CONFIG   = strdup (confdir);

#ifdef __MINGW32__
					mkdir (PHOEBE_HOME_DIR);
#else
					mkdir (PHOEBE_HOME_DIR, 0755);
#endif
				}

				phoebe_config_save (PHOEBE_CONFIG);

				if (status == SUCCESS)
					gui_status ("Configuration successfully saved.");
                		else
					gui_status ("Configuration failed: %s", phoebe_gui_error (status));
			}
        break;
		case GTK_RESPONSE_CANCEL:
            gui_status ("Configuration aborted.");
		break;
	}
	
	gtk_widget_destroy (phoebe_settings_dialog);
	
	return status;
}