示例#1
0
static gboolean
file_filter_to_win32 (GtkFileFilter *filter,
                      COMDLG_FILTERSPEC *spec)
{
  const char *name;
  char **patterns;
  char *pattern_list;

  patterns = _gtk_file_filter_get_as_patterns (filter);
  if (patterns == NULL)
    return FALSE;

  pattern_list = g_strjoinv (";", patterns);
  g_strfreev (patterns);

  name = gtk_file_filter_get_name (filter);
  if (name == NULL)
    name = pattern_list;
  spec->pszName = g_utf8_to_utf16 (name, -1, NULL, NULL, NULL);
  spec->pszSpec = g_utf8_to_utf16 (pattern_list, -1, NULL, NULL, NULL);

  g_free (pattern_list);

  return TRUE;
}
static void
rejilla_mime_filter_destroy_item_cb (RejillaMimeFilter *filter,
                                     GtkFileFilter *item,
                                     gboolean is_last_ref)
{
	GtkTreeModel *model;
	GtkFileFilter *item2;
	GtkTreeIter row;

	g_hash_table_remove (filter->priv->table,
			     gtk_file_filter_get_name (item));

	/* Now we must remove the item from the combo as well */
	model = gtk_combo_box_get_model (GTK_COMBO_BOX (filter->combo));
	if (!gtk_tree_model_get_iter_first (model, &row))
		return;

	do {
		gtk_tree_model_get (model, &row,
				    REJILLA_MIME_FILTER_FILTER_COL, &item2,
				    -1);

		if (item == item2) {
			gtk_list_store_remove (GTK_LIST_STORE (model), &row);
			break;
		}
	} while (gtk_tree_model_iter_next (model, &row));

	/* we check that the first entry at least is visible */
	if (gtk_combo_box_get_active (GTK_COMBO_BOX (filter->combo)) == -1
	&&  gtk_tree_model_get_iter_first (model, &row) == TRUE)
		gtk_combo_box_set_active_iter (GTK_COMBO_BOX (filter->combo),
					       &row);
}
void
rejilla_mime_filter_add_filter (RejillaMimeFilter *filter,
				GtkFileFilter *item)
{
	GtkTreeModel *model;
	GtkTreeIter row;
	const char *name;

	name = gtk_file_filter_get_name (item);
	model = gtk_combo_box_get_model (GTK_COMBO_BOX (filter->combo));

	gtk_list_store_append (GTK_LIST_STORE (model), &row);

	g_object_ref (item);
	gtk_list_store_set (GTK_LIST_STORE (model), &row,
			    REJILLA_MIME_FILTER_DISPLAY_COL, name,
			    REJILLA_MIME_FILTER_FILTER_COL, item,
			    -1);
	g_object_ref_sink (GTK_OBJECT (item));

	g_hash_table_insert (filter->priv->table,
			     g_strdup (name),
			     item);

	filter->priv->custom_filters = g_slist_prepend (filter->priv->custom_filters, item);

	/* we check that the first entry at least is visible */
	if (gtk_combo_box_get_active (GTK_COMBO_BOX (filter->combo)) == -1
	&&  gtk_tree_model_get_iter_first (model, &row) == TRUE)
		gtk_combo_box_set_active_iter (GTK_COMBO_BOX (filter->combo), &row);
}
示例#4
0
static void RememberCurrentFilter(GtkFileFilter *filter) {
    int i, k;
    const char *name;

    if ( filter==NULL )
return;
    name = gtk_file_filter_get_name(filter);
    if ( name==NULL )
return;

    for ( i=0; def_font_filters[i].name!=NULL; ++i ) {
	if ( strcmp(name,_(def_font_filters[i].name))== 0 ) {
	    if ( *def_font_filters[i].wild!='\0' )
		default_font_filter_index = i;
return;
	}
    }
    if ( user_font_filters!=NULL ) {
	for ( k=0; user_font_filters[k].name!=NULL; ++i, ++k ) {
	    if ( strcmp(name,_(user_font_filters[k].name))== 0 ) {
		default_font_filter_index = k;
return;
	    }
	}
    }
}
示例#5
0
const char * get_current_filter_name ( GtkWidget * dialog ) 
{
	GtkFileFilter *filter ;
	filter = gtk_file_chooser_get_filter (GTK_FILE_CHOOSER ( dialog ) );
	if ( filter != NULL )
		return ( gtk_file_filter_get_name ( filter ) );
	else
		return "\0" ;
}
示例#6
0
文件: gnac-ui.c 项目: GNOME/gnac
static void
gnac_ui_file_chooser_cell_data_func(GtkCellLayout   *layout,
                                    GtkCellRenderer *cell,
                                    GtkTreeModel    *model,
                                    GtkTreeIter     *iter,
                                    gpointer         data)
{
  GtkFileFilter *filter;
  gtk_tree_model_get(model, iter, 0, &filter, -1);
  g_object_set(cell, "text", gtk_file_filter_get_name(filter), NULL);
}
示例#7
0
文件: util.c 项目: cql1983/hardinfo
gchar *file_chooser_get_extension(GtkWidget * chooser, FileTypes * filters)
{
    GtkFileFilter *filter;
    const gchar *filter_name;
    gint i;

    filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(chooser));
    filter_name = gtk_file_filter_get_name(filter);
    for (i = 0; filters[i].name; i++) {
	if (g_str_equal(filter_name, filters[i].name)) {
	    return filters[i].extension;
	}
    }

    return NULL;
}
示例#8
0
int
clip_GTK_FILEFILTERGETNAME(ClipMachine * cm)
{
        C_object  *cfilter = _fetch_co_arg(cm);
        gchar        *name ;

	CHECKCOBJ(cfilter, GTK_IS_FILE_FILTER(cfilter->object));

	name = (gchar *)gtk_file_filter_get_name(GTK_FILE_FILTER(cfilter->object));
	LOCALE_FROM_UTF(name);
        _clip_retc(cm, name);
        FREE_TEXT(name);

	return 0;
err:
	return 1;
}
示例#9
0
文件: filedlg.c 项目: AmiGanguli/dia
static void
import_adapt_extension_callback(GtkWidget *widget)
{
  int index = gtk_combo_box_get_active (GTK_COMBO_BOX(widget)); 
  GtkFileFilter *former = NULL;
  GSList *list, *elem;

  list = gtk_file_chooser_list_filters (GTK_FILE_CHOOSER (opendlg));
  for (elem = list; elem != NULL; elem = g_slist_next (elem))
    if (strcmp (_("Supported Formats"), gtk_file_filter_get_name (GTK_FILE_FILTER(elem->data))) == 0)
      former = GTK_FILE_FILTER(elem->data);
  g_slist_free (list);

  if (former) {
    /* replace the previous filter */
    GtkFileFilter *filter = build_gtk_file_filter_from_index (index);
    gtk_file_chooser_remove_filter (GTK_FILE_CHOOSER (opendlg), former);
    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (opendlg), filter);
    gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (opendlg), filter);
  }
}
示例#10
0
文件: x11gui.c 项目: htrb/ngraph-gtk
static void
fsok(GtkWidget *dlg)
{
  struct nGetOpenFileData *data;
  char *file, *file2, **farray;
  const char *filter_name;
  int i, k, len, n;
  GStatBuf buf;
  GSList *top, *list;
  GtkFileFilter *filter;

  data = &FileSelection;

  top = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dlg));
  filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(dlg));

  if (filter) {
    filter_name = gtk_file_filter_get_name(filter);
  } else {
    filter_name = NULL;
  }

  if (filter_name == NULL || strcmp(filter_name, _("All")) == 0) {
    data->ext = NULL;
  }

  n = g_slist_length(top);
  farray = g_malloc(sizeof(*farray) * (n + 1));
  if (farray == NULL) {
    free_str_list(top);
    return;
  }
  data->file = farray;

  k = 0;
  for (list = top; list; list = list->next) {
    char *tmp;

    tmp = (char *) list->data;
    if (tmp == NULL || strlen(tmp) < 1) {
      gdk_beep();
      continue;
    }

    file = get_utf8_filename(tmp);

    for (i = strlen(file) - 1; (i > 0) && (file[i] != '/') && (file[i] != '.'); i--);
    if ((file[i] != '.') && data->ext) {
      len = strlen(data->ext) + 1;
    } else {
      len = 0;
    }

    if (len) {
      file2 = g_strdup_printf("%s.%s", file, data->ext);
      g_free(file);
    } else {
      file2 = file;
    }
    if (file2) {
      if (data->mustexist) {
	if ((nstat(file2, &buf) != 0) || ((buf.st_mode & S_IFMT) != S_IFREG)
	    || (naccess(file2, R_OK) != 0)) {
	  gdk_beep();
	  error22(NULL, 0, "I/O error", file2);
	  g_free(file2);
	  continue;
	}
      } else {
	if ((nstat(file2, &buf) == 0) && ((buf.st_mode & S_IFMT) != S_IFREG)) {
	  gdk_beep();
	  error22(NULL, 0, "I/O error", file2);
	  g_free(file2);
	  continue;
	}
      }
      farray[k] = file2;
      k++;
    }
  }

  if (k == 0)
    return;

  if (data->changedir && k > 0) {
    data->chdir = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->chdir_cb));
    if (data->chdir && data->init_dir) {
      char *dir;

      g_free(*(data->init_dir));
      dir = g_path_get_dirname(farray[0]);
      *(data->init_dir) = dir;
    }
  }
  farray[k] = NULL;
  free_str_list(top);
  data->ret = IDOK;
}
示例#11
0
const char* file_dialog_show(GtkWidget* parent, bool open, const char* title, const char* path, const char* pattern)
{
  filetype_t type;

  if(pattern == 0)
  {
    pattern = "*";
  }

  FileTypeList typelist;
  GlobalFiletypes().getTypeList(pattern, &typelist);

  GTKMasks masks(typelist);

  if (title == 0)
    title = open ? "Open File" : "Save File";
    
  GtkWidget* dialog;
  if (open)
  {
    dialog = gtk_file_chooser_dialog_new(title,
                                        GTK_WINDOW(parent),
                                        GTK_FILE_CHOOSER_ACTION_OPEN,
                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                        GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
                                        NULL);
  }
  else
  {
    dialog = gtk_file_chooser_dialog_new(title,
                                        GTK_WINDOW(parent),
                                        GTK_FILE_CHOOSER_ACTION_SAVE,
                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                        GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
                                        NULL);
    gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "unnamed");
  }

  gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
  gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT);

  // we expect an actual path below, if the path is 0 we might crash
  if (path != 0 && !string_empty(path))
  {
    ASSERT_MESSAGE(path_is_absolute(path), "file_dialog_show: path not absolute: " << makeQuoted(path));

    Array<char> new_path(strlen(path)+1);

    // copy path, replacing dir separators as appropriate
    Array<char>::iterator w = new_path.begin();
    for(const char* r = path; *r != '\0'; ++r)
    {
      *w++ = (*r == '/') ? G_DIR_SEPARATOR : *r;
    }
    // remove separator from end of path if required
    if(*(w-1) == G_DIR_SEPARATOR)
    {
      --w;
    }
    // terminate string
    *w = '\0';

    gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), new_path.data());
  }

  // we should add all important paths as shortcut folder...
  // gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(dialog), "/tmp/", NULL);

  
  for(std::size_t i = 0; i < masks.m_filters.size(); ++i)
  {
    GtkFileFilter* filter = gtk_file_filter_new();
    gtk_file_filter_add_pattern(filter, masks.m_filters[i].c_str());
    gtk_file_filter_set_name(filter, masks.m_masks[i].c_str());
    gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
  }

  if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
  {
    strcpy(g_file_dialog_file, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)));

    if(!string_equal(pattern, "*"))
    {
      GtkFileFilter* filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(dialog));
      if(filter != 0) // no filter set? some file-chooser implementations may allow the user to set no filter, which we treat as 'all files'
      {
        type = masks.GetTypeForGTKMask(gtk_file_filter_get_name(filter)).m_type;
        // last ext separator
        const char* extension = path_get_extension(g_file_dialog_file);
        // no extension
        if(string_empty(extension))
        {
          strcat(g_file_dialog_file, type.pattern+1);
        }
        else
        {
          strcpy(g_file_dialog_file + (extension - g_file_dialog_file), type.pattern+2);
        }
      }
    }

    // convert back to unix format
    for(char* w = g_file_dialog_file; *w!='\0'; w++)
    {
      if(*w=='\\') 
      {
        *w = '/';
      }
    }
  }
  else
  {
    g_file_dialog_file[0] = '\0';
  }

  gtk_widget_destroy(dialog);

  // don't return an empty filename
  if(g_file_dialog_file[0] == '\0') return NULL;

  return g_file_dialog_file;
}
示例#12
0
static VALUE
ffil_get_name(VALUE self)
{
  return CSTR2RVAL(gtk_file_filter_get_name(_SELF(self)));
}
示例#13
0
static void cb_load(raw_box* rb)
{
    GtkWidget *msg;
    GtkFileFilter* filter;
    int err;
    char *name = (char *)
            gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(rb->dialog));
    global_settings* settings = settings_get();
    const char* filtername;

    mixer_flush_preview();

    if (!name)
        goto fail;

    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rb->check)))
    {
        int samplerate = gtk_spin_button_get_value_as_int(
                                    GTK_SPIN_BUTTON(rb->samplerate));

        if (patch_sample_load(patch, name,    samplerate,
                                                rb->channels,
                                                get_format(rb)) < 0)
        {
            err = pf_error_get();
            goto fail;
        }
    }
    else
    {   /* don't repeat load sample */
        const Sample* s = patch_sample_data(patch);

        if (s->filename && strcmp(name, s->filename) == 0)
            return;

        if (patch_sample_load(patch, name, 0, 0, 0))
        {
            err = pf_error_get();
            goto fail;
        }
    }

    msg_log(MSG_MESSAGE, "loaded sample '%s' for patch %d '%s'\n",
                                name, patch, patch_get_name(patch));

    if (name)
    {
        char* dirname = g_path_get_dirname(name);

        if (dirname)
        {
            if (settings->last_sample_dir)
                free(settings->last_sample_dir);

            settings->last_sample_dir = strdup(dirname);
            free(dirname);
        }
    }

    /*  propagate certain user-set characteristics of the chooser
     *  into the global settings
     */

    filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(rb->dialog));
    filtername = gtk_file_filter_get_name(filter);

    if (filtername != 0)
    {
        if (settings->sample_file_filter)
            free(settings->sample_file_filter);

        settings->sample_file_filter = strdup(filtername);
    }

    /* the main menu not the chooser sets the global auto-preview on/off
    settings->sample_auto_preview =
        gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rb->auto_preview));
    */
    return;

fail:
    if (!name)
    {   /* I don't really think this is possible, but hey. */
        msg_log(MSG_ERROR, "no file selected\n");
        msg = gtk_message_dialog_new(GTK_WINDOW(rb->dialog),
                                     GTK_DIALOG_DESTROY_WITH_PARENT,
                                     GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
                                     "No file selected");
    }
    else
    {
        msg_log(MSG_ERROR,
                "Failed to load sample %s for patch %d (%s)\n",
                name, patch, pf_error_str(err));

        /* do our own notification here: */
        msg = gtk_message_dialog_new(GTK_WINDOW(rb->dialog),
                                     GTK_DIALOG_DESTROY_WITH_PARENT,
                                     GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
                                     "Failed to load sample %s", name);
    }

    gtk_dialog_run (GTK_DIALOG(msg));
    gtk_widget_destroy(msg);
}
示例#14
0
void create_filters(GtkWidget* chooser)
{
    typedef struct snd_fmt_names
    {
        int sf_fmt;
        char* ext;
        char* name;
    } snd_fmt;

    snd_fmt alt_exts[] = {
    /*  libsndfile only provides a single 'most common' extension for
     *  each format it is capable of reading. Here are some additional
     *  extensions for selected formats:
     *  (followed by sndfile provided extension in comments)
     */ 
        { SF_FORMAT_AIFF,   "aif",    0}, /* aiff */
        { SF_FORMAT_CAF,    "caff",   0}, /* caf */
        { SF_FORMAT_OGG,    "ogg",    0}, /* oga */
        { SF_FORMAT_SD2,    "sd2f",   0}, /* sd2 */
        { SF_FORMAT_NIST,   "sph",    0}, /* wav */
        { 0, 0, 0 }};

    /* stuff for accessing soundfile format information */
    snd_fmt sound_formats[99];
    SF_FORMAT_INFO  sf_fmt;
    int             sf_fmt_count;
    int             n;

    /* stuff for improving format information */
    snd_fmt* fmt;
    snd_fmt* n_fmt;
    snd_fmt* alt;
    char pat[10];

    GtkFileFilter* filter = 0;

    GSList* f_list;
    GSList* f_item;
    global_settings* settings = settings_get();

    /* generate format information */
    sf_command(0, SFC_GET_FORMAT_MAJOR_COUNT, &sf_fmt_count, sizeof(int));

    for (fmt = sound_formats, n = 0; n < sf_fmt_count; ++n, ++fmt)
    {
        sf_fmt.format = n;
        sf_command(0, SFC_GET_FORMAT_MAJOR, &sf_fmt, sizeof(sf_fmt));
        snprintf(pat, 10, "*.%s", sf_fmt.extension);
        pat[9] = '\0';
        fmt->sf_fmt = sf_fmt.format;
        fmt->name = strdup(sf_fmt.name);
        fmt->ext = strdup(pat);

        for (n_fmt = fmt, alt = alt_exts; alt->sf_fmt != 0; ++alt)
        {
            if (alt->sf_fmt == n_fmt->sf_fmt)
            {
                snprintf(pat, 10, "*.%s", alt->ext);
                pat[9] = '\0';
                ++fmt;
                fmt->sf_fmt = sf_fmt.format;
                fmt->name = strdup(n_fmt->name);
                fmt->ext = strdup(pat);
            }
        }
    }

    fmt->name = 0;
    fmt->ext = 0;

    /* Audio files filter (specifically: files loadable by sndfile) */
    filter = gtk_file_filter_new();
    gtk_file_filter_set_name(filter, "All Audio files");
    for (fmt = sound_formats; fmt->name != 0 && fmt->ext != 0; ++fmt)
    {
        #if DEBUG
        printf("format ext:%s \tname:%s\n", fmt->ext, fmt->name);
        #endif
        gtk_file_filter_add_pattern(filter, fmt->ext);
    }
    gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter);

    /* Individual filters for formats loadable by sndfile
     * NOTE: most formats have one file extension, but some have to be
     * arkward and have alternative extensions...
     */

    for (fmt = sound_formats; fmt->name != 0 && fmt->ext != 0; fmt = n_fmt)
    {
        n_fmt = fmt;
        filter = gtk_file_filter_new();
        gtk_file_filter_set_name(filter, fmt->name);

        while (strcmp(fmt->name, n_fmt->name) == 0)
        {
            gtk_file_filter_add_pattern(filter, n_fmt->ext);
            ++n_fmt;
            if (n_fmt->name == 0)
                break;
        }

        gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter);
    }

    /* All files filter */
    filter = gtk_file_filter_new();
    gtk_file_filter_set_name(filter, "All files");
    gtk_file_filter_add_pattern(filter, "*");
    gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter);

    for (fmt = sound_formats; fmt->name != 0 && fmt->ext != 0; ++fmt)
    {
        free(fmt->name);
        free(fmt->ext);
    }

    f_list = gtk_file_chooser_list_filters(GTK_FILE_CHOOSER(chooser));

    f_item = f_list;

    while(f_item)
    {
        filter = GTK_FILE_FILTER(f_item->data);

        if (strcmp(gtk_file_filter_get_name(filter),
                    settings->sample_file_filter) == 0)
        {
            gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(chooser), filter);
            break;
        }

        f_item = f_item->next;
    }

    g_slist_free(f_list);
}
示例#15
0
void gtk_codegraph_save(GtkCodeGraph *box){
    g_return_if_fail (GTK_IS_CODEGRAPH (box));
//Создается диалог выбора места сохранения тренда
    GtkWidget *_dialog = gtk_file_chooser_dialog_new("Сохранить",  NULL, GTK_FILE_CHOOSER_ACTION_SAVE, 
							GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 
                                    			GTK_STOCK_OK, GTK_RESPONSE_NONE, NULL);							

	GtkWidget *widget = GTK_WIDGET(box);
	gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (_dialog), "Untitled");
//Добавляем фильты по типу файлов
	GtkFileFilter *ffilter = gtk_file_filter_new();
	ffilter = gtk_file_filter_new();
	gtk_file_filter_set_name( ffilter, "Рисунок PNG");
	gtk_file_filter_add_pattern( ffilter, "*.png");
	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (_dialog), ffilter);

	ffilter = gtk_file_filter_new();
	gtk_file_filter_set_name( ffilter, "Файл данных MathLab");
	gtk_file_filter_add_pattern( ffilter, "*.dat");
	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (_dialog), ffilter);
//Отлавливаем конец выбора и работаем
	gint result = gtk_dialog_run (GTK_DIALOG (_dialog) );
	gchar buff[100];
	gchar *fil = NULL; 
	gchar *dir = NULL;
	gchar *filename = NULL;
	if (result == GTK_RESPONSE_NONE){
	    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (_dialog));
	    fil =(char*) gtk_file_filter_get_name( gtk_file_chooser_get_filter(GTK_FILE_CHOOSER (_dialog)) );
	    dir = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (_dialog)); 
	    if (!strcmp(fil, "Рисунок PNG" ) ) 
	        snprintf(buff,sizeof(buff), "%s.png", filename );
	    else if (!strcmp(fil, "Файл данных MathLab" ) ) 
	        snprintf(buff,sizeof(buff), "%s.dat", filename );
	    else	
		snprintf(buff,sizeof(buff), "%s.png", filename );
	}
/*Если юзер передумал сохраняться*/
	else{
	    gtk_widget_destroy (_dialog);
	    return;
	}
/*Ошибка при открытии файла	*/
	FILE *fp;
	if ((fp=fopen(buff, "w")) == NULL ){
	    gchar buff[300];
	    gchar *homedir = (gchar*)getenv("HOME");
	    snprintf(buff, sizeof(buff), "Отказано в доступе.\nСохранить файл в %s  не удалось. \nВыберите, другой каталог, \nнапример: %s",filename, homedir );
	    GtkWidget* dialog = gtk_message_dialog_new (GTK_WINDOW (NULL),
				      (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
				        buff );
	    gtk_dialog_run (GTK_DIALOG (dialog));
	    gtk_widget_destroy (dialog);
	}
	else{
/*Сохраняем картинку*/
	    cairo_surface_t *surface;
	    if (!strcmp(fil, "Рисунок PNG" ) ){
		fclose(fp);
		cairo_surface_t * surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, widget->allocation.width , widget->allocation.height );
		cairo_t *cr_save = cairo_create (surface);
		gdk_cairo_set_source_pixmap(cr_save, box->priv->backing_pixmap, 0.0, 0.0);
		cairo_paint(cr_save);
		cairo_destroy (cr_save);
		cairo_surface_write_to_png (surface, buff);
		cairo_surface_destroy (surface);
	    }
/*Сохраняем данные*/	    
	    if ( !strcmp(fil, "Файл данных MathLab" )  ){
		int i; int im=0;
		gchar buff[40];
		for (i=0; i<box->priv->numPointsText; i+=2 ){
		    ++im;
		    g_snprintf(buff, sizeof(buff), "%d импульс: %1.3f сек;\n",im ,box->priv->dta[i]  );
		    fwrite(buff, strlen(buff), 1, fp);
		    g_snprintf(buff, sizeof(buff), "%d интервал: %1.3f сек;\n",im ,box->priv->dta[i+1]  );
		    fwrite(buff, strlen(buff), 1, fp);
		}
		fclose(fp);
	    }
	}
	gtk_widget_destroy (_dialog);

}
示例#16
0
/*#
    @method get_name GtkFileFilter
    @brief Gets the human-readable name for the filter.
    @return The human-readable name of the filter, or NULL.
 */
FALCON_FUNC FileFilter::get_name( VMARG )
{
    NO_ARGS
    vm->retval( UTF8String( gtk_file_filter_get_name( GET_FILEFILTER( vm->self() ) ) ) );
}