#ifndef SCREEM_SITE_MODEL_H #define SCREEM_SITE_MODEL_H #include #include #include #include #include #include "screem-site.h" #include "screem-file-browser.h" typedef enum { SCREEM_SITE_VIEW_FOLDER, SCREEM_SITE_VIEW_FILE } ScreemSiteViewNodeType; typedef struct { GtkTreeIter *images; GtkTreeIter *styles; GtkTreeIter *scripts; ScreemFileBrowser *browser; ScreemSite *site; GtkTreeModel *folders; GtkTreeModel *files; GtkTreePath *current; } ScreemSiteModel; typedef struct { gchar *fullname; ScreemSite *site; ScreemSiteViewNodeType type; gpointer monitor_handle; ScreemSiteModel *model; } ScreemSiteViewNodeInfo; struct ScreemSitePrivate{ GObject *application; ScreemSiteModel *model; gboolean loading; gchar *name; gchar *pathname; gchar *remote_url; UploadMethods remote_method; gchar *remote_path; gchar *remote_user; gchar *remote_pass; gboolean no_delete; /* sitecopy : delete remote files */ gboolean check_moved; /* sitecopy : check moved files */ gboolean no_overwrite; /* sitecopy : overwrite remote files */ ScreemSitePerms permissions; /* sitecopy : permissions handling */ ScreemSiteSymlinks symlinks; /* sitecopy : symlinks handling */ gchar *http_url; gchar *cvs_root; gchar *site_template_path; gchar *template_path; GHashTable *pages; GSList *untitled; /* the site todo object */ GObject *tasks; /* a hash table of open documents in this site, keyed * by the window they are in */ GHashTable *documents; gboolean is_import; /* flag to signify if we are importing a non screem site */ gboolean auto_update; /* auto update from CVS upon opening the site */ gboolean auto_update_ask; /* if we should preview from publish address for static and dynamic pages */ gboolean preview_static; gboolean preview_dynamic; GtkListStore *excludes; GtkListStore *ignores; /* if ctags should be used or not */ gboolean ctags; }; void screem_site_model_destroy( ScreemSite *site ); gint screem_site_model_compare_func( GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, ScreemSite *site ); ScreemSiteViewNodeInfo* screem_site_model_node_info_new( ScreemSiteViewNodeType type, ScreemSite *site, gpointer data, struct stat *s ); void screem_site_model_set_val_at( GtkTreeStore *store, GtkTreeIter *iter, ScreemSiteViewNodeInfo *info ); void screem_site_model_set_model( ScreemSite *site ); /* pass base as TRUE if the underlying model is wanted, rather than * the sorted / filtered model */ GtkTreeModel *screem_site_get_model( ScreemSite *site, gboolean base ); GtkTreeModel *screem_site_get_folders_model( ScreemSite *site ); GtkTreeModel *screem_site_get_files_model( ScreemSite *site ); gboolean screem_site_model_create_dir( ScreemSite *site, GtkWidget *widget, const gchar *dir ); GtkTreeModel *screem_site_get_statistics( ScreemSite *site ); void screem_site_model_update( ScreemSite *site ); void screem_site_model_removed( ScreemFileBrowser *browser, const gchar *uri, GtkTreeIter *it, gpointer data ); void screem_site_model_added( ScreemFileBrowser *browser, const gchar *uri, const gchar *mime_type, GtkTreeIter *it, gpointer data ); void screem_site_model_icon_change( ScreemFileBrowser *browser, const gchar *uri, const gchar *mime_type, GtkTreeIter *it, gpointer data ); void screem_site_model_file_op( GnomeVFSMonitorEventType type, const gchar *uri, gpointer data ); #endif