[gnome-builder] project-file: add IdeProjectFile:is-directory



commit 67a88e65ae401809dbc228f97aa076ea1e2ba2ef
Author: Christian Hergert <christian hergert me>
Date:   Wed Apr 8 20:59:15 2015 -0700

    project-file: add IdeProjectFile:is-directory
    
    This gproperty will check the GFileInfo:file-type for
    G_FILE_TYPE_DIRECTORY.

 libide/ide-project-file.c |   30 ++++++++++++++++++++++++++++--
 libide/ide-project-file.h |    9 +++++----
 2 files changed, 33 insertions(+), 6 deletions(-)
---
diff --git a/libide/ide-project-file.c b/libide/ide-project-file.c
index 9caae8c..80b4f76 100644
--- a/libide/ide-project-file.c
+++ b/libide/ide-project-file.c
@@ -27,13 +27,13 @@ typedef struct
   gchar     *path;
 } IdeProjectFilePrivate;
 
-G_DEFINE_TYPE_WITH_PRIVATE (IdeProjectFile, ide_project_file,
-                            IDE_TYPE_PROJECT_ITEM)
+G_DEFINE_TYPE_WITH_PRIVATE (IdeProjectFile, ide_project_file, IDE_TYPE_PROJECT_ITEM)
 
 enum {
   PROP_0,
   PROP_FILE,
   PROP_FILE_INFO,
+  PROP_IS_DIRECTORY,
   PROP_NAME,
   PROP_PATH,
   LAST_PROP
@@ -41,6 +41,19 @@ enum {
 
 static GParamSpec *gParamSpecs [LAST_PROP];
 
+gboolean
+ide_project_file_get_is_directory (IdeProjectFile *self)
+{
+  IdeProjectFilePrivate *priv = ide_project_file_get_instance_private (self);
+
+  g_return_val_if_fail (IDE_IS_PROJECT_FILE (self), NULL);
+
+  if (priv->file_info)
+    return (g_file_info_get_file_type (priv->file_info) == G_FILE_TYPE_DIRECTORY);
+
+  return FALSE;
+}
+
 const gchar *
 ide_project_file_get_path (IdeProjectFile *self)
 {
@@ -165,6 +178,10 @@ ide_project_file_get_property (GObject    *object,
       g_value_set_object (value, ide_project_file_get_file_info (self));
       break;
 
+    case PROP_IS_DIRECTORY:
+      g_value_set_boolean (value, ide_project_file_get_is_directory (self));
+      break;
+
     case PROP_NAME:
       g_value_set_string (value, ide_project_file_get_name (self));
       break;
@@ -234,6 +251,15 @@ ide_project_file_class_init (IdeProjectFileClass *klass)
   g_object_class_install_property (object_class, PROP_FILE_INFO,
                                    gParamSpecs [PROP_FILE_INFO]);
 
+  gParamSpecs [PROP_IS_DIRECTORY] =
+    g_param_spec_boolean ("is-directory",
+                          _("Is Directory"),
+                          _("Is Directory"),
+                          FALSE,
+                          (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (object_class, PROP_IS_DIRECTORY,
+                                   gParamSpecs [PROP_IS_DIRECTORY]);
+
   gParamSpecs [PROP_NAME] =
     g_param_spec_string ("name",
                          _("Name"),
diff --git a/libide/ide-project-file.h b/libide/ide-project-file.h
index 92bf7d7..64623e0 100644
--- a/libide/ide-project-file.h
+++ b/libide/ide-project-file.h
@@ -35,10 +35,11 @@ struct _IdeProjectFileClass
   GObjectClass parent;
 };
 
-GFile       *ide_project_file_get_file      (IdeProjectFile *self);
-GFileInfo   *ide_project_file_get_file_info (IdeProjectFile *self);
-const gchar *ide_project_file_get_name      (IdeProjectFile *self);
-const gchar *ide_project_file_get_path      (IdeProjectFile *self);
+GFile       *ide_project_file_get_file         (IdeProjectFile *self);
+GFileInfo   *ide_project_file_get_file_info    (IdeProjectFile *self);
+const gchar *ide_project_file_get_name         (IdeProjectFile *self);
+const gchar *ide_project_file_get_path         (IdeProjectFile *self);
+gboolean     ide_project_file_get_is_directory (IdeProjectFile *self);
 
 G_END_DECLS
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]