mirror of https://github.com/GNOME/gimp.git
applied patch from Shlomi Fish that fixes confusion of filenames and
2004-07-06 Sven Neumann <sven@gimp.org> * plug-ins/gimpressionist: applied patch from Shlomi Fish that fixes confusion of filenames and user-visible object names (bug #132621). Also removed function remove_trailing_whitespace() that used to duplicate functionality from GLib and updated preset_create_filename().
This commit is contained in:
parent
3b7fc27b5e
commit
cc09735a20
|
@ -1,3 +1,11 @@
|
|||
2004-07-06 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* plug-ins/gimpressionist: applied patch from Shlomi Fish that
|
||||
fixes confusion of filenames and user-visible object names (bug
|
||||
#132621). Also removed function remove_trailing_whitespace() that
|
||||
used to duplicate functionality from GLib and updated
|
||||
preset_create_filename().
|
||||
|
||||
2004-07-06 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/widgets/gimppreviewrenderer.c
|
||||
|
|
|
@ -46,8 +46,9 @@ gimpressionist_sources = \
|
|||
ppmtool.c \
|
||||
ppmtool.h \
|
||||
presets.c \
|
||||
preview.h \
|
||||
presets.h \
|
||||
preview.c \
|
||||
preview.h \
|
||||
repaint.c \
|
||||
size.c \
|
||||
sizemap.c \
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "gimpressionist.h"
|
||||
#include "ppmtool.h"
|
||||
#include "brush.h"
|
||||
#include "presets.h"
|
||||
|
||||
#include <libgimp/stdplugins-intl.h>
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "gimpressionist.h"
|
||||
#include "preview.h"
|
||||
#include "brush.h"
|
||||
#include "presets.h"
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
|
@ -177,6 +178,7 @@ run (const gchar *name,
|
|||
reloadbrush(NULL, NULL);
|
||||
preview_free_resources();
|
||||
brush_free();
|
||||
preset_free();
|
||||
|
||||
values[0].data.d_status = status;
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "placement.h"
|
||||
#include "preview.h"
|
||||
#include "size.h"
|
||||
#include "presets.h"
|
||||
|
||||
#include "ppmtool.h"
|
||||
|
||||
|
|
|
@ -109,6 +109,12 @@ enum ORIENTATION_ENUM
|
|||
ORIENTATION_MANUAL = 7,
|
||||
};
|
||||
|
||||
enum PRESETS_LIST_COLUMN_ENUM
|
||||
{
|
||||
PRESETS_LIST_COLUMN_FILENAME = 0,
|
||||
PRESETS_LIST_COLUMN_OBJECT_NAME = 1,
|
||||
};
|
||||
|
||||
/* Globals */
|
||||
|
||||
extern char *standalone;
|
||||
|
@ -129,15 +135,12 @@ extern GtkObject *colornoiseadjust;
|
|||
|
||||
extern GtkWidget *previewbutton;
|
||||
|
||||
extern GtkWidget *presetsavebutton;
|
||||
|
||||
extern gboolean img_has_alpha;
|
||||
|
||||
extern GRand *gr;
|
||||
|
||||
/* Prototypes */
|
||||
|
||||
void remove_trailing_whitespace(char *buffer);
|
||||
GList *parsepath(void);
|
||||
void free_parsepath_cache(void);
|
||||
|
||||
|
@ -145,7 +148,6 @@ void create_paperpage(GtkNotebook *);
|
|||
void create_brushpage(GtkNotebook *);
|
||||
void create_orientationpage(GtkNotebook *);
|
||||
void create_generalpage(GtkNotebook *);
|
||||
void create_presetpage(GtkNotebook *);
|
||||
void create_placementpage(GtkNotebook *);
|
||||
void create_colorpage(GtkNotebook *);
|
||||
|
||||
|
@ -157,6 +159,11 @@ gchar *findfile(const gchar *);
|
|||
void unselectall(GtkWidget *list);
|
||||
void reselect(GtkWidget *list, char *fname);
|
||||
void readdirintolist(char *subdir, GtkWidget *view, char *selected);
|
||||
void readdirintolist_extended(char *subdir, GtkWidget *view, char *selected,
|
||||
gboolean with_filename_column,
|
||||
gchar *(*get_object_name_cb)
|
||||
(gchar *dir, gchar *filename, void *context),
|
||||
void * context);
|
||||
void orientation_restore(void);
|
||||
void paper_store(void);
|
||||
void paper_restore(void);
|
||||
|
@ -175,14 +182,7 @@ void create_sizemap_dialog(void);
|
|||
double getsiz_proto (double x, double y, int n, smvector_t *vec,
|
||||
double smstrexp, int voronoi);
|
||||
|
||||
enum SELECT_PRESET_RETURN_VALUES
|
||||
{
|
||||
SELECT_PRESET_OK = 0,
|
||||
SELECT_PRESET_FILE_NOT_FOUND = -1,
|
||||
SELECT_PRESET_LOAD_FAILED = -2,
|
||||
};
|
||||
|
||||
int select_preset(const gchar *preset);
|
||||
void set_colorbrushes (const gchar *fn);
|
||||
int create_gimpressionist (void);
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ int readline(FILE *f, char *buffer, int len)
|
|||
}
|
||||
while (buffer[0] == '#');
|
||||
|
||||
remove_trailing_whitespace(buffer);
|
||||
g_strchomp (buffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <libgimp/gimpui.h>
|
||||
|
||||
#include "gimpressionist.h"
|
||||
#include "presets.h"
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
|
@ -22,10 +23,20 @@
|
|||
#include "libgimpbase/gimpwin32-io.h"
|
||||
#endif
|
||||
|
||||
#define PRESETMAGIC "Preset"
|
||||
|
||||
static GtkWidget *presetnameentry = NULL;
|
||||
static GtkWidget *presetlist = NULL;
|
||||
static GtkWidget *presetdesclabel = NULL;
|
||||
static GtkListStore *store;
|
||||
static gchar *selected_preset_orig_name = NULL;
|
||||
static gchar *selected_preset_filename = NULL;
|
||||
|
||||
void preset_free(void)
|
||||
{
|
||||
g_free (selected_preset_orig_name);
|
||||
g_free (selected_preset_filename);
|
||||
}
|
||||
|
||||
static void set_preset_description_text (const gchar *text)
|
||||
{
|
||||
|
@ -36,23 +47,128 @@ static char presetdesc[4096] = "";
|
|||
|
||||
static char *factory_defaults = "<Factory defaults>";
|
||||
|
||||
static gchar *
|
||||
get_object_name(gchar *dir, gchar *filename, void *context)
|
||||
{
|
||||
gchar *ret = NULL;
|
||||
gchar *full_path = NULL;
|
||||
FILE *f;
|
||||
char line[1024] = "";
|
||||
int line_idx;
|
||||
|
||||
/* First try to extract the object's name (= user-friendly description)
|
||||
* from the preset file
|
||||
* */
|
||||
|
||||
full_path = g_build_filename (dir, filename, NULL);
|
||||
f = fopen (full_path, "rt");
|
||||
if (f)
|
||||
{
|
||||
/* Skip the preset magic. */
|
||||
fgets (line, 10, f);
|
||||
if (!strncmp(line, PRESETMAGIC, 4))
|
||||
{
|
||||
for (line_idx = 0; line_idx<5; line_idx++)
|
||||
{
|
||||
if (!fgets(line, sizeof(line), f))
|
||||
break;
|
||||
g_strchomp (line);
|
||||
if (!strncmp (line, "name=", 5))
|
||||
{
|
||||
ret = g_strcompress (line+5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose (f);
|
||||
}
|
||||
|
||||
/* The object name defaults to a filename-derived description */
|
||||
if (! ret)
|
||||
{
|
||||
ret = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
g_free (full_path);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
preset_read_dir_into_list (void)
|
||||
{
|
||||
readdirintolist_extended ("Presets", presetlist, NULL, TRUE,
|
||||
get_object_name, NULL);
|
||||
}
|
||||
|
||||
static gchar *
|
||||
preset_create_filename (const gchar *basename,
|
||||
const gchar *dest_dir)
|
||||
{
|
||||
gchar *filename;
|
||||
gchar *fullpath;
|
||||
gchar *safe_name;
|
||||
gint i;
|
||||
gint unum = 1;
|
||||
|
||||
g_return_val_if_fail (basename != NULL, NULL);
|
||||
g_return_val_if_fail (dest_dir != NULL, NULL);
|
||||
g_return_val_if_fail (g_path_is_absolute (dest_dir), NULL);
|
||||
|
||||
safe_name = g_filename_from_utf8 (basename, -1, NULL, NULL, NULL);
|
||||
|
||||
if (safe_name[0] == '.')
|
||||
safe_name[0] = '-';
|
||||
for (i = 0; safe_name[i]; i++)
|
||||
if (safe_name[i] == G_DIR_SEPARATOR || g_ascii_isspace (safe_name[i]))
|
||||
safe_name[i] = '-';
|
||||
|
||||
filename = g_strdup (safe_name);
|
||||
|
||||
fullpath = g_build_filename (dest_dir, filename, NULL);
|
||||
|
||||
g_free (filename);
|
||||
|
||||
while (g_file_test (fullpath, G_FILE_TEST_EXISTS))
|
||||
{
|
||||
g_free (fullpath);
|
||||
|
||||
filename = g_strdup_printf ("%s-%d",
|
||||
safe_name,
|
||||
unum++);
|
||||
|
||||
fullpath = g_build_filename (dest_dir, filename, NULL);
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
g_free (safe_name);
|
||||
|
||||
return fullpath;
|
||||
}
|
||||
|
||||
|
||||
static void addfactorydefaults (void)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, factory_defaults, -1);
|
||||
/* Set the filename. */
|
||||
gtk_list_store_set (store, &iter, PRESETS_LIST_COLUMN_FILENAME,
|
||||
factory_defaults, -1);
|
||||
/* Set the object name. */
|
||||
gtk_list_store_set (store, &iter, PRESETS_LIST_COLUMN_OBJECT_NAME,
|
||||
factory_defaults, -1);
|
||||
|
||||
}
|
||||
|
||||
static void presetsrefresh(void)
|
||||
{
|
||||
gtk_list_store_clear (store);
|
||||
addfactorydefaults ();
|
||||
readdirintolist ("Presets", presetlist, NULL);
|
||||
preset_read_dir_into_list ();
|
||||
}
|
||||
|
||||
#define PRESETMAGIC "Preset"
|
||||
|
||||
static int loadoldpreset (const gchar *fname)
|
||||
{
|
||||
FILE *f;
|
||||
|
@ -271,8 +387,8 @@ static int loadpreset(const gchar *fn)
|
|||
char *tmps;
|
||||
if(!fgets(line,1024,f))
|
||||
break;
|
||||
remove_trailing_whitespace(line);
|
||||
tmps = strchr(line, '=');
|
||||
g_strchomp (line);
|
||||
tmps = strchr (line, '=');
|
||||
if(!tmps)
|
||||
continue;
|
||||
*tmps = '\0';
|
||||
|
@ -331,13 +447,16 @@ static void applypreset(GtkWidget *w, GtkTreeSelection *selection)
|
|||
{
|
||||
gchar *preset;
|
||||
|
||||
gtk_tree_model_get (model, &iter, 0, &preset, -1);
|
||||
gtk_tree_model_get (model, &iter, PRESETS_LIST_COLUMN_FILENAME,
|
||||
&preset, -1);
|
||||
|
||||
select_preset(preset);
|
||||
|
||||
restorevals ();
|
||||
|
||||
g_free (preset);
|
||||
/* g_free (preset); */
|
||||
g_free (selected_preset_filename);
|
||||
selected_preset_filename = preset;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -350,7 +469,8 @@ static void deletepreset(GtkWidget *w, GtkTreeSelection *selection)
|
|||
{
|
||||
gchar *preset;
|
||||
|
||||
gtk_tree_model_get (model, &iter, 0, &preset, -1);
|
||||
gtk_tree_model_get (model, &iter, PRESETS_LIST_COLUMN_FILENAME,
|
||||
&preset, -1);
|
||||
|
||||
if (preset)
|
||||
{
|
||||
|
@ -460,7 +580,7 @@ create_savepreset (void)
|
|||
|
||||
static void savepreset(void)
|
||||
{
|
||||
const gchar *l;
|
||||
const gchar *preset_name;
|
||||
gchar *fname, *presets_dir_path;
|
||||
FILE *f;
|
||||
GList *thispath;
|
||||
|
@ -468,9 +588,9 @@ static void savepreset(void)
|
|||
gchar vbuf[6][G_ASCII_DTOSTR_BUF_SIZE];
|
||||
guchar color[3];
|
||||
gint i;
|
||||
gchar *desc_escaped;
|
||||
gchar *desc_escaped, *preset_name_escaped;
|
||||
|
||||
l = gtk_entry_get_text (GTK_ENTRY (presetnameentry));
|
||||
preset_name = gtk_entry_get_text (GTK_ENTRY (presetnameentry));
|
||||
thispath = parsepath ();
|
||||
storevals ();
|
||||
|
||||
|
@ -498,9 +618,28 @@ static void savepreset(void)
|
|||
}
|
||||
}
|
||||
|
||||
fname = g_build_filename (presets_dir_path, l, NULL);
|
||||
/* Check if the user-friendly name has changed. If so, then save it under
|
||||
* a new file. If not - use the same file name.
|
||||
* */
|
||||
if (!strcmp (preset_name, selected_preset_orig_name))
|
||||
{
|
||||
fname = g_build_filename (presets_dir_path,
|
||||
selected_preset_filename,
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
fname = preset_create_filename(preset_name, presets_dir_path);
|
||||
}
|
||||
g_free (presets_dir_path);
|
||||
|
||||
if (!fname)
|
||||
{
|
||||
g_printerr ("Error building a filename for preset \"%s\"!\n",
|
||||
preset_name);
|
||||
return;
|
||||
}
|
||||
|
||||
f = fopen (fname, "wt");
|
||||
if (!f)
|
||||
{
|
||||
|
@ -513,6 +652,9 @@ static void savepreset(void)
|
|||
desc_escaped = g_strescape (presetdesc, NULL);
|
||||
fprintf(f, "desc=%s\n", desc_escaped);
|
||||
g_free (desc_escaped);
|
||||
preset_name_escaped = g_strescape (preset_name, NULL);
|
||||
fprintf(f, "name=%s\n", preset_name_escaped);
|
||||
g_free (preset_name_escaped);
|
||||
fprintf(f, "orientnum=%d\n", pcvals.orientnum);
|
||||
fprintf(f, "orientfirst=%s\n",
|
||||
g_ascii_formatd (buf, G_ASCII_DTOSTR_BUF_SIZE, "%f", pcvals.orientfirst));
|
||||
|
@ -657,16 +799,78 @@ static void selectpreset(GtkTreeSelection *selection, gpointer data)
|
|||
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
{
|
||||
gchar *preset;
|
||||
gchar *preset_name;
|
||||
gchar *preset_filename;
|
||||
|
||||
gtk_tree_model_get (model, &iter, 0, &preset, -1);
|
||||
if(strcmp(preset, factory_defaults))
|
||||
gtk_entry_set_text (GTK_ENTRY(presetnameentry), preset);
|
||||
readdesc (preset);
|
||||
g_free (preset);
|
||||
gtk_tree_model_get (model, &iter, PRESETS_LIST_COLUMN_OBJECT_NAME,
|
||||
&preset_name, -1);
|
||||
gtk_tree_model_get (model, &iter, PRESETS_LIST_COLUMN_FILENAME,
|
||||
&preset_filename, -1);
|
||||
/* TODO : Maybe make the factory defaults behavior in regards
|
||||
* to the preset's object name and filename more robust?
|
||||
* */
|
||||
if(strcmp(preset_filename, factory_defaults))
|
||||
{
|
||||
gtk_entry_set_text (GTK_ENTRY(presetnameentry), preset_name);
|
||||
g_free (selected_preset_orig_name);
|
||||
g_free (selected_preset_filename);
|
||||
selected_preset_orig_name = g_strdup (preset_name);
|
||||
selected_preset_filename = g_strdup(selected_preset_filename);
|
||||
}
|
||||
readdesc (preset_filename);
|
||||
g_free (preset_name);
|
||||
g_free (preset_filename);
|
||||
}
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
create_presets_list(GtkWidget *parent,
|
||||
void (*changed_cb)
|
||||
(GtkTreeSelection *selection, gpointer data))
|
||||
{
|
||||
GtkListStore *store;
|
||||
GtkTreeSelection *selection;
|
||||
GtkCellRenderer *renderer;
|
||||
GtkTreeViewColumn *column;
|
||||
GtkWidget *swin, *view;
|
||||
|
||||
swin = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(swin),
|
||||
GTK_SHADOW_IN);
|
||||
gtk_box_pack_start (GTK_BOX (parent), swin, FALSE, FALSE, 0);
|
||||
gtk_widget_show (swin);
|
||||
gtk_widget_set_size_request(swin, 150,-1);
|
||||
|
||||
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
|
||||
view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
|
||||
|
||||
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE);
|
||||
g_object_unref (store);
|
||||
gtk_widget_show (view);
|
||||
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
|
||||
column =
|
||||
gtk_tree_view_column_new_with_attributes ("Preset", renderer,
|
||||
"text",
|
||||
PRESETS_LIST_COLUMN_OBJECT_NAME,
|
||||
NULL);
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
|
||||
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (swin), view);
|
||||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
|
||||
g_signal_connect (selection, "changed", G_CALLBACK (changed_cb),
|
||||
NULL);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
void create_presetpage(GtkNotebook *notebook)
|
||||
{
|
||||
GtkWidget *vbox, *hbox, *box1, *box2, *thispage;
|
||||
|
@ -701,7 +905,7 @@ void create_presetpage(GtkNotebook *notebook)
|
|||
gtk_box_pack_start(GTK_BOX (thispage), box1, TRUE, TRUE, 0);
|
||||
gtk_widget_show (box1);
|
||||
|
||||
presetlist = view = createonecolumnlist (box1, selectpreset);
|
||||
presetlist = view = create_presets_list (box1, selectpreset);
|
||||
store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view)));
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
addfactorydefaults ();
|
||||
|
@ -749,7 +953,7 @@ void create_presetpage(GtkNotebook *notebook)
|
|||
gtk_box_pack_start(GTK_BOX (vbox), tmpw, TRUE, TRUE, 0);
|
||||
gtk_widget_show(tmpw);
|
||||
|
||||
readdirintolist("Presets", view, NULL);
|
||||
preset_read_dir_into_list ();
|
||||
|
||||
gtk_notebook_append_page_menu (notebook, thispage, label, NULL);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef __PRESETS_H
|
||||
#define __PRESETS_H
|
||||
|
||||
enum SELECT_PRESET_RETURN_VALUES
|
||||
{
|
||||
SELECT_PRESET_OK = 0,
|
||||
SELECT_PRESET_FILE_NOT_FOUND = -1,
|
||||
SELECT_PRESET_LOAD_FAILED = -2,
|
||||
};
|
||||
|
||||
void create_presetpage (GtkNotebook *);
|
||||
extern GtkWidget *presetsavebutton;
|
||||
int select_preset (const gchar *preset);
|
||||
void preset_free (void);
|
||||
|
||||
#endif
|
||||
|
|
@ -91,18 +91,6 @@ double getsiz_proto (double x, double y, int n, smvector_t *vec,
|
|||
|
||||
/* String and Path Manipulation Routines */
|
||||
|
||||
void remove_trailing_whitespace(char *buffer)
|
||||
{
|
||||
char * ptr;
|
||||
/*
|
||||
* Note: there is some reliance on the ASCII character code
|
||||
* characteristics here.
|
||||
* */
|
||||
ptr = buffer + strlen(buffer)-1;
|
||||
while ((ptr > buffer) && ((*ptr) <= ' '))
|
||||
*(ptr--) = '\0';
|
||||
}
|
||||
|
||||
|
||||
static GList *parsepath_cached_path = NULL;
|
||||
|
||||
|
@ -230,7 +218,10 @@ reselect (GtkWidget *view,
|
|||
}
|
||||
|
||||
static void readdirintolist_real(char *subdir, GtkWidget *view,
|
||||
char *selected)
|
||||
char *selected, gboolean with_filename_column,
|
||||
gchar *(*get_object_name_cb)
|
||||
(gchar *dir, gchar * filename, void * context),
|
||||
void * context)
|
||||
{
|
||||
gchar *fpath;
|
||||
const gchar *de;
|
||||
|
@ -282,7 +273,27 @@ static void readdirintolist_real(char *subdir, GtkWidget *view,
|
|||
while (flist)
|
||||
{
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, flist->data, -1);
|
||||
/* Set the filename */
|
||||
gtk_list_store_set (store, &iter, PRESETS_LIST_COLUMN_FILENAME,
|
||||
flist->data, -1);
|
||||
/* Set the object name */
|
||||
if (with_filename_column)
|
||||
{
|
||||
gchar * object_name;
|
||||
object_name = get_object_name_cb (subdir, flist->data, context);
|
||||
if (object_name)
|
||||
{
|
||||
gtk_list_store_set (store, &iter,
|
||||
PRESETS_LIST_COLUMN_OBJECT_NAME,
|
||||
object_name, -1);
|
||||
g_free (object_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Default to the filename */
|
||||
gtk_list_store_set (store, &iter, 1, flist->data, -1);
|
||||
}
|
||||
}
|
||||
|
||||
if (selected)
|
||||
{
|
||||
|
@ -302,7 +313,11 @@ static void readdirintolist_real(char *subdir, GtkWidget *view,
|
|||
}
|
||||
}
|
||||
|
||||
void readdirintolist(char *subdir, GtkWidget *view, char *selected)
|
||||
void readdirintolist_extended(char *subdir, GtkWidget *view, char *selected,
|
||||
gboolean with_filename_column,
|
||||
gchar *(*get_object_name_cb)
|
||||
(gchar *dir, gchar *filename, void *context),
|
||||
void * context)
|
||||
{
|
||||
char *tmpdir;
|
||||
GList *thispath = parsepath();
|
||||
|
@ -310,12 +325,18 @@ void readdirintolist(char *subdir, GtkWidget *view, char *selected)
|
|||
while (thispath)
|
||||
{
|
||||
tmpdir = g_build_filename ((gchar *) thispath->data, subdir, NULL);
|
||||
readdirintolist_real (tmpdir, view, selected);
|
||||
readdirintolist_real (tmpdir, view, selected, with_filename_column,
|
||||
get_object_name_cb, context);
|
||||
g_free (tmpdir);
|
||||
thispath = thispath->next;
|
||||
}
|
||||
}
|
||||
|
||||
void readdirintolist (char *subdir, GtkWidget *view, char *selected)
|
||||
{
|
||||
readdirintolist_extended (subdir, view, selected, FALSE, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates a radio button.
|
||||
* box - the containing box.
|
||||
|
|
Loading…
Reference in New Issue