Imlpemented folder cache in MooFileSystem; made it forget old folders
parent
c9b191978f
commit
5ca4354891
|
@ -27,6 +27,9 @@ moofileview_sources = \
|
|||
moofileview-tools.c \
|
||||
moofileview-tools.h \
|
||||
moofileview-ui.h \
|
||||
moofolder-private.h \
|
||||
moofolder.c \
|
||||
moofolder.h \
|
||||
moofoldermodel.c \
|
||||
moofoldermodel.h \
|
||||
moofoldermodel-private.h\
|
||||
|
|
|
@ -28,12 +28,6 @@ G_BEGIN_DECLS
|
|||
#define MOO_TYPE_FILE (_moo_file_get_type ())
|
||||
#define MOO_TYPE_FILE_INFO (_moo_file_info_get_type ())
|
||||
#define MOO_TYPE_FILE_FLAGS (_moo_file_flags_get_type ())
|
||||
#define MOO_TYPE_FOLDER (_moo_folder_get_type ())
|
||||
#define MOO_FOLDER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), MOO_TYPE_FOLDER, MooFolder))
|
||||
#define MOO_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOO_TYPE_FOLDER, MooFolderClass))
|
||||
#define MOO_IS_FOLDER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), MOO_TYPE_FOLDER))
|
||||
#define MOO_IS_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOO_TYPE_FOLDER))
|
||||
#define MOO_FOLDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOO_TYPE_FOLDER, MooFolderClass))
|
||||
|
||||
#ifdef __WIN32__
|
||||
/* FILETIME */
|
||||
|
@ -46,37 +40,6 @@ typedef GTime MooFileTime;
|
|||
|
||||
typedef gint64 MooFileSize;
|
||||
|
||||
typedef struct _MooFolderPrivate MooFolderPrivate;
|
||||
typedef struct _MooFolderClass MooFolderClass;
|
||||
typedef struct _MooFileSystem MooFileSystem;
|
||||
|
||||
/* should be ordered TODO why? */
|
||||
typedef enum {
|
||||
MOO_FILE_HAS_STAT = 1 << 1,
|
||||
MOO_FILE_HAS_MIME_TYPE = 1 << 2,
|
||||
MOO_FILE_HAS_ICON = 1 << 3,
|
||||
MOO_FILE_ALL_FLAGS = (1 << 4) - 1
|
||||
} MooFileFlags;
|
||||
|
||||
struct _MooFolder
|
||||
{
|
||||
GObject parent;
|
||||
MooFolderPrivate *priv;
|
||||
};
|
||||
|
||||
struct _MooFolderClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
void (*deleted) (MooFolder *folder);
|
||||
void (*files_added) (MooFolder *folder,
|
||||
GSList *files);
|
||||
void (*files_changed) (MooFolder *folder,
|
||||
GSList *files);
|
||||
void (*files_removed) (MooFolder *folder,
|
||||
GSList *files);
|
||||
};
|
||||
|
||||
struct _MooFile
|
||||
{
|
||||
char *name;
|
||||
|
@ -97,7 +60,9 @@ struct _MooFile
|
|||
GType _moo_file_get_type (void) G_GNUC_CONST;
|
||||
GType _moo_file_flags_get_type (void) G_GNUC_CONST;
|
||||
GType _moo_file_info_get_type (void) G_GNUC_CONST;
|
||||
GType _moo_folder_get_type (void) G_GNUC_CONST;
|
||||
|
||||
MooFile *_moo_file_new (const char *dirname,
|
||||
const char *basename);
|
||||
|
||||
MooFile *_moo_file_ref (MooFile *file);
|
||||
void _moo_file_unref (MooFile *file);
|
||||
|
@ -118,36 +83,19 @@ const char *_moo_file_collation_key (const MooFile *file);
|
|||
const char *_moo_file_case_display_name(const MooFile *file);
|
||||
|
||||
#ifndef __WIN32__
|
||||
gconstpointer _moo_file_get_stat (const MooFile *file);
|
||||
const struct stat *_moo_file_get_stat (const MooFile *file);
|
||||
const char *_moo_file_link_get_target (const MooFile *file);
|
||||
#endif
|
||||
|
||||
const char *_moo_folder_get_path (MooFolder *folder);
|
||||
/* list should be freed and elements unref'ed */
|
||||
GSList *_moo_folder_list_files (MooFolder *folder);
|
||||
MooFile *_moo_folder_get_file (MooFolder *folder,
|
||||
const char *basename);
|
||||
char *_moo_folder_get_file_path (MooFolder *folder,
|
||||
MooFile *file);
|
||||
char *_moo_folder_get_file_uri (MooFolder *folder,
|
||||
MooFile *file);
|
||||
/* result should be unref'ed */
|
||||
MooFolder *_moo_folder_get_parent (MooFolder *folder,
|
||||
MooFileFlags wanted);
|
||||
char *_moo_folder_get_parent_path(MooFolder *folder);
|
||||
|
||||
char **_moo_folder_get_file_info (MooFolder *folder,
|
||||
MooFile *file);
|
||||
void _moo_folder_reload (MooFolder *folder);
|
||||
|
||||
|
||||
MooFolder *_moo_folder_new (MooFileSystem *fs,
|
||||
const char *path,
|
||||
MooFileFlags wanted,
|
||||
GError **error);
|
||||
void _moo_folder_set_wanted (MooFolder *folder,
|
||||
MooFileFlags wanted,
|
||||
gboolean bit_now);
|
||||
guint8 _moo_file_icon_blank (void);
|
||||
guint8 _moo_file_get_icon_type (MooFile *file,
|
||||
const char *dirname);
|
||||
void _moo_file_stat (MooFile *file,
|
||||
const char *dirname);
|
||||
#ifndef __WIN32__
|
||||
void _moo_file_find_mime_type (MooFile *file,
|
||||
const char *path);
|
||||
#endif
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -19,8 +19,16 @@
|
|||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
typedef struct _MooFile MooFile;
|
||||
typedef struct _MooFolder MooFolder;
|
||||
typedef struct _MooFile MooFile;
|
||||
typedef struct _MooFolder MooFolder;
|
||||
|
||||
/* should be ordered TODO why? */
|
||||
typedef enum {
|
||||
MOO_FILE_HAS_STAT = 1 << 1,
|
||||
MOO_FILE_HAS_MIME_TYPE = 1 << 2,
|
||||
MOO_FILE_HAS_ICON = 1 << 3,
|
||||
MOO_FILE_ALL_FLAGS = (1 << 4) - 1
|
||||
} MooFileFlags;
|
||||
|
||||
typedef enum {
|
||||
MOO_FILE_INFO_EXISTS = 1 << 0,
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
#define MOO_FILE_VIEW_COMPILATION
|
||||
#include "moofilesystem.h"
|
||||
#include "moofolder-private.h"
|
||||
#include "mooutils/mooutils-fs.h"
|
||||
#include "mooutils/moomarshals.h"
|
||||
#include <string.h>
|
||||
|
@ -25,16 +26,23 @@
|
|||
#endif
|
||||
|
||||
#define BROKEN_NAME "<" "????" ">"
|
||||
#define FOLDERS_CACHE_SIZE 10
|
||||
|
||||
typedef struct {
|
||||
GQueue *queue;
|
||||
GHashTable *paths;
|
||||
} FoldersCache;
|
||||
|
||||
struct _MooFileSystemPrivate {
|
||||
GHashTable *folders;
|
||||
MooFileWatch *fam;
|
||||
FoldersCache cache;
|
||||
};
|
||||
|
||||
static MooFileSystem *fs_instance = NULL;
|
||||
|
||||
|
||||
static void moo_file_system_finalize (GObject *object);
|
||||
static void moo_file_system_dispose (GObject *object);
|
||||
|
||||
static MooFolder *get_folder (MooFileSystem *fs,
|
||||
const char *path,
|
||||
|
@ -113,7 +121,7 @@ _moo_file_system_class_init (MooFileSystemClass *klass)
|
|||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
gobject_class->finalize = moo_file_system_finalize;
|
||||
gobject_class->dispose = moo_file_system_dispose;
|
||||
|
||||
klass->get_folder = get_folder;
|
||||
klass->create_folder = create_folder;
|
||||
|
@ -139,30 +147,76 @@ _moo_file_system_class_init (MooFileSystemClass *klass)
|
|||
|
||||
|
||||
static void
|
||||
_moo_file_system_init (MooFileSystem *fs)
|
||||
add_folder_cache (MooFileSystem *fs,
|
||||
MooFolderImpl *impl)
|
||||
{
|
||||
fs->priv = g_new0 (MooFileSystemPrivate, 1);
|
||||
FoldersCache *cache = &fs->priv->cache;
|
||||
|
||||
fs->priv->folders = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, g_object_unref);
|
||||
g_queue_push_head (cache->queue, impl);
|
||||
g_hash_table_insert (cache->paths, impl->path, impl);
|
||||
|
||||
if (cache->queue->length > FOLDERS_CACHE_SIZE)
|
||||
{
|
||||
MooFolderImpl *old = g_queue_pop_tail (cache->queue);
|
||||
g_hash_table_remove (cache->paths, old->path);
|
||||
_moo_folder_impl_free (old);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_moo_file_system_folder_finalized (MooFileSystem *fs,
|
||||
MooFolder *folder)
|
||||
{
|
||||
MooFolderImpl *impl;
|
||||
|
||||
g_return_if_fail (MOO_IS_FILE_SYSTEM (fs));
|
||||
g_return_if_fail (MOO_IS_FOLDER (folder));
|
||||
|
||||
impl = folder->impl;
|
||||
folder->impl = NULL;
|
||||
impl->proxy = NULL;
|
||||
|
||||
g_hash_table_remove (fs->priv->folders, impl->path);
|
||||
|
||||
if (!impl->deleted)
|
||||
add_folder_cache (fs, impl);
|
||||
else
|
||||
_moo_folder_impl_free (impl);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
moo_file_system_finalize (GObject *object)
|
||||
_moo_file_system_init (MooFileSystem *fs)
|
||||
{
|
||||
fs->priv = g_new0 (MooFileSystemPrivate, 1);
|
||||
fs->priv->folders = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
fs->priv->cache.queue = g_queue_new ();
|
||||
fs->priv->cache.paths = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
moo_file_system_dispose (GObject *object)
|
||||
{
|
||||
MooFileSystem *fs = MOO_FILE_SYSTEM (object);
|
||||
|
||||
g_hash_table_destroy (fs->priv->folders);
|
||||
|
||||
if (fs->priv->fam)
|
||||
if (fs->priv)
|
||||
{
|
||||
moo_file_watch_close (fs->priv->fam, NULL);
|
||||
moo_file_watch_unref (fs->priv->fam);
|
||||
}
|
||||
g_hash_table_destroy (fs->priv->folders);
|
||||
g_hash_table_destroy (fs->priv->cache.paths);
|
||||
g_queue_foreach (fs->priv->cache.queue, (GFunc) _moo_folder_impl_free, NULL);
|
||||
g_queue_free (fs->priv->cache.queue);
|
||||
|
||||
g_free (fs->priv);
|
||||
fs->priv = NULL;
|
||||
if (fs->priv->fam)
|
||||
{
|
||||
moo_file_watch_close (fs->priv->fam, NULL);
|
||||
moo_file_watch_unref (fs->priv->fam);
|
||||
}
|
||||
|
||||
g_free (fs->priv);
|
||||
fs->priv = NULL;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (_moo_file_system_parent_class)->finalize (object);
|
||||
}
|
||||
|
@ -324,23 +378,31 @@ _moo_file_system_get_file_watch (MooFileSystem *fs)
|
|||
|
||||
|
||||
/* TODO what's this? */
|
||||
static void
|
||||
folder_deleted (MooFolder *folder,
|
||||
MooFileSystem *fs)
|
||||
void
|
||||
_moo_file_system_folder_deleted (MooFileSystem *fs,
|
||||
MooFolderImpl *impl)
|
||||
{
|
||||
g_signal_handlers_disconnect_by_func (folder,
|
||||
(gpointer) folder_deleted, fs);
|
||||
g_hash_table_remove (fs->priv->folders, _moo_folder_get_path (folder));
|
||||
if (impl->proxy)
|
||||
{
|
||||
g_hash_table_remove (fs->priv->folders, impl->path);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_hash_table_remove (fs->priv->cache.paths, impl->path);
|
||||
g_queue_remove (fs->priv->cache.queue, impl);
|
||||
_moo_folder_impl_free (impl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MooFolder *
|
||||
static MooFolder *
|
||||
get_folder (MooFileSystem *fs,
|
||||
const char *path,
|
||||
MooFileFlags wanted,
|
||||
GError **error)
|
||||
{
|
||||
MooFolder *folder;
|
||||
MooFolderImpl *impl;
|
||||
char *norm_path = NULL;
|
||||
|
||||
g_return_val_if_fail (path != NULL, NULL);
|
||||
|
@ -374,6 +436,19 @@ get_folder (MooFileSystem *fs,
|
|||
goto out;
|
||||
}
|
||||
|
||||
impl = g_hash_table_lookup (fs->priv->cache.paths, norm_path);
|
||||
|
||||
if (impl)
|
||||
{
|
||||
g_hash_table_remove (fs->priv->cache.paths, impl->path);
|
||||
g_queue_remove (fs->priv->cache.queue, impl);
|
||||
folder = _moo_folder_new_with_impl (impl);
|
||||
g_hash_table_insert (fs->priv->folders, norm_path, folder);
|
||||
norm_path = NULL;
|
||||
_moo_folder_set_wanted (folder, wanted, TRUE);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!g_file_test (norm_path, G_FILE_TEST_EXISTS))
|
||||
{
|
||||
g_set_error (error, MOO_FILE_ERROR,
|
||||
|
@ -396,11 +471,7 @@ get_folder (MooFileSystem *fs,
|
|||
|
||||
if (folder)
|
||||
{
|
||||
g_hash_table_insert (fs->priv->folders,
|
||||
norm_path,
|
||||
g_object_ref (folder));
|
||||
g_signal_connect (folder, "deleted",
|
||||
G_CALLBACK (folder_deleted), fs);
|
||||
g_hash_table_insert (fs->priv->folders, norm_path, folder);
|
||||
norm_path = NULL;
|
||||
}
|
||||
|
||||
|
@ -411,7 +482,7 @@ out:
|
|||
|
||||
|
||||
/* TODO */
|
||||
gboolean
|
||||
static gboolean
|
||||
create_folder (G_GNUC_UNUSED MooFileSystem *fs,
|
||||
const char *path,
|
||||
GError **error)
|
||||
|
@ -559,7 +630,7 @@ normalize_path (const char *path)
|
|||
}
|
||||
|
||||
|
||||
gboolean
|
||||
static gboolean
|
||||
delete_file (G_GNUC_UNUSED MooFileSystem *fs,
|
||||
const char *path,
|
||||
gboolean recursive,
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#ifndef __MOO_FILE_SYSTEM_H__
|
||||
#define __MOO_FILE_SYSTEM_H__
|
||||
|
||||
#include "moofileview/moofile-private.h"
|
||||
#include "moofileview/moofolder.h"
|
||||
#include <mooutils/moofilewatch.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
|
||||
|
@ -39,6 +39,7 @@ G_BEGIN_DECLS
|
|||
#define MOO_IS_FILE_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOO_TYPE_FILE_SYSTEM))
|
||||
#define MOO_FILE_SYSTEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOO_TYPE_FILE_SYSTEM, MooFileSystemClass))
|
||||
|
||||
typedef struct _MooFileSystem MooFileSystem;
|
||||
typedef struct _MooFileSystemPrivate MooFileSystemPrivate;
|
||||
typedef struct _MooFileSystemClass MooFileSystemClass;
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#error "This file may not be included"
|
||||
#endif
|
||||
|
||||
#include "moofileview/moofile-private.h"
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#define MOO_FILE_VIEW_COMPILATION
|
||||
#include "moofileview/moofileview-dialogs.h"
|
||||
#include "moofileview/moofilesystem.h"
|
||||
#include "moofileview/moofile-private.h"
|
||||
#include "moofileview/moofileprops-glade.h"
|
||||
#include "moofileview/moocreatefolder-glade.h"
|
||||
#include "moofileview/moofileviewdrop-glade.h"
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "moofileview/moofileview-dialogs.h"
|
||||
#include "moofileview/moobookmarkmgr.h"
|
||||
#include "moofileview/moofilesystem.h"
|
||||
#include "moofileview/moofile-private.h"
|
||||
#include "moofileview/moofoldermodel.h"
|
||||
#include "moofileview/moofileentry.h"
|
||||
#include "moofileview/mooiconview.h"
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* moofolder-private.h
|
||||
*
|
||||
* Copyright (C) 2004-2006 by Yevgen Muntyan <muntyan@math.tamu.edu>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING file that comes with this distribution.
|
||||
*/
|
||||
|
||||
#ifndef MOO_FILE_VIEW_COMPILATION
|
||||
#error "This file may not be included"
|
||||
#endif
|
||||
|
||||
#ifndef __MOO_FOLDER_PRIVATE_H__
|
||||
#define __MOO_FOLDER_PRIVATE_H__
|
||||
|
||||
#include "moofileview/moofolder.h"
|
||||
#include "moofileview/moofile-private.h"
|
||||
#include "moofileview/moofilesystem.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
#define MOO_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOO_TYPE_FOLDER, MooFolderClass))
|
||||
#define MOO_IS_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOO_TYPE_FOLDER))
|
||||
#define MOO_FOLDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOO_TYPE_FOLDER, MooFolderClass))
|
||||
|
||||
typedef struct _MooFolderImpl MooFolderImpl;
|
||||
typedef struct _MooFolderClass MooFolderClass;
|
||||
|
||||
struct _MooFolder
|
||||
{
|
||||
GObject parent;
|
||||
MooFolderImpl *impl;
|
||||
};
|
||||
|
||||
struct _MooFolderClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
void (*deleted) (MooFolder *folder);
|
||||
void (*files_added) (MooFolder *folder,
|
||||
GSList *files);
|
||||
void (*files_changed) (MooFolder *folder,
|
||||
GSList *files);
|
||||
void (*files_removed) (MooFolder *folder,
|
||||
GSList *files);
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
double names_timer;
|
||||
double stat_timer;
|
||||
guint stat_counter;
|
||||
double icons_timer;
|
||||
guint icons_counter;
|
||||
} Debug;
|
||||
|
||||
typedef enum {
|
||||
STAGE_NAMES = 1,
|
||||
STAGE_STAT = 2,
|
||||
STAGE_MIME_TYPE = 3
|
||||
} Stage;
|
||||
|
||||
struct _MooFolderImpl {
|
||||
MooFolder *proxy;
|
||||
Stage done;
|
||||
Stage wanted;
|
||||
Stage wanted_bg;
|
||||
MooFileSystem *fs;
|
||||
GDir *dir;
|
||||
GHashTable *files; /* basename -> MooFile* */
|
||||
GSList *files_copy;
|
||||
char *path;
|
||||
GSourceFunc populate_func;
|
||||
int populate_priority;
|
||||
guint populate_idle_id;
|
||||
double populate_timeout;
|
||||
Debug debug;
|
||||
GTimer *timer;
|
||||
MooFileWatch *fam;
|
||||
guint fam_request;
|
||||
guint reload_idle;
|
||||
|
||||
guint deleted : 1;
|
||||
};
|
||||
|
||||
|
||||
MooFolder *_moo_folder_new (MooFileSystem *fs,
|
||||
const char *path,
|
||||
MooFileFlags wanted,
|
||||
GError **error);
|
||||
MooFolder *_moo_folder_new_with_impl (MooFolderImpl *impl);
|
||||
void _moo_folder_set_wanted (MooFolder *folder,
|
||||
MooFileFlags wanted,
|
||||
gboolean bit_now);
|
||||
void _moo_folder_impl_free (MooFolderImpl *impl);
|
||||
|
||||
void _moo_file_system_folder_finalized (MooFileSystem *fs,
|
||||
MooFolder *folder);
|
||||
void _moo_file_system_folder_deleted (MooFileSystem *fs,
|
||||
MooFolderImpl *folder);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __MOO_FOLDER_PRIVATE_H__ */
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* moofolder.h
|
||||
*
|
||||
* Copyright (C) 2004-2006 by Yevgen Muntyan <muntyan@math.tamu.edu>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING file that comes with this distribution.
|
||||
*/
|
||||
|
||||
#ifndef MOO_FILE_VIEW_COMPILATION
|
||||
#error "This file may not be included"
|
||||
#endif
|
||||
|
||||
#ifndef __MOO_FOLDER_H__
|
||||
#define __MOO_FOLDER_H__
|
||||
|
||||
#include "moofileview/moofile.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
#define MOO_TYPE_FOLDER (_moo_folder_get_type ())
|
||||
#define MOO_FOLDER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), MOO_TYPE_FOLDER, MooFolder))
|
||||
#define MOO_IS_FOLDER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), MOO_TYPE_FOLDER))
|
||||
|
||||
|
||||
GType _moo_folder_get_type (void) G_GNUC_CONST;
|
||||
|
||||
const char *_moo_folder_get_path (MooFolder *folder);
|
||||
/* list should be freed and elements unref'ed */
|
||||
GSList *_moo_folder_list_files (MooFolder *folder);
|
||||
MooFile *_moo_folder_get_file (MooFolder *folder,
|
||||
const char *basename);
|
||||
char *_moo_folder_get_file_path (MooFolder *folder,
|
||||
MooFile *file);
|
||||
char *_moo_folder_get_file_uri (MooFolder *folder,
|
||||
MooFile *file);
|
||||
/* result should be unref'ed */
|
||||
MooFolder *_moo_folder_get_parent (MooFolder *folder,
|
||||
MooFileFlags wanted);
|
||||
char *_moo_folder_get_parent_path(MooFolder *folder);
|
||||
|
||||
char **_moo_folder_get_file_info (MooFolder *folder,
|
||||
MooFile *file);
|
||||
void _moo_folder_reload (MooFolder *folder);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __MOO_FOLDER_H__ */
|
|
@ -14,6 +14,7 @@
|
|||
#define MOO_FILE_VIEW_COMPILATION
|
||||
#include "moofoldermodel.h"
|
||||
#include "moofile-private.h"
|
||||
#include "moofolder-private.h"
|
||||
#include "moofoldermodel-private.h"
|
||||
#include <gtk/gtktreednd.h>
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#include "mooutils/moocompat.h"
|
||||
|
||||
|
||||
#if 1 || defined(__WIN32__) && 0
|
||||
#if 0 || defined(__WIN32__) && 0
|
||||
#define DEBUG_PRINT g_message
|
||||
#else
|
||||
static void DEBUG_PRINT (G_GNUC_UNUSED const char *format, ...)
|
||||
|
@ -1037,6 +1037,7 @@ typedef struct {
|
|||
HANDLE events[MAXIMUM_WAIT_OBJECTS];
|
||||
FAMThreadWatch watches[MAXIMUM_WAIT_OBJECTS];
|
||||
guint n_events;
|
||||
gboolean running;
|
||||
} FAMThread;
|
||||
|
||||
typedef enum {
|
||||
|
|
Loading…
Reference in New Issue