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; }
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; } } }
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; }
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; }
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); }
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); }
/* 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; }