[gnome-builder] libide: extend get_file helper to IdeProject



commit 7eab32014fd80ee558752fbe3c9d165260087957
Author: Christian Hergert <christian hergert me>
Date:   Wed Feb 11 19:33:39 2015 -0800

    libide: extend get_file helper to IdeProject

 libide/ide-project.c |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/libide/ide-project.c b/libide/ide-project.c
index 15acc8c..e607f5e 100644
--- a/libide/ide-project.c
+++ b/libide/ide-project.c
@@ -19,6 +19,7 @@
 #include <glib/gi18n.h>
 
 #include "ide-project.h"
+#include "ide-project-files.h"
 #include "ide-project-item.h"
 
 typedef struct
@@ -103,7 +104,36 @@ IdeFile *
 ide_project_get_file_for_path (IdeProject  *self,
                                const gchar *path)
 {
-  g_warning ("todo: get file for path");
+  IdeProjectItem *root;
+  GSequenceIter *iter;
+  GSequence *children;
+
+  g_return_val_if_fail (IDE_IS_PROJECT (self), NULL);
+  g_return_val_if_fail (path, NULL);
+
+  root = ide_project_get_root (self);
+  if (!root)
+    return NULL;
+
+  children = ide_project_item_get_children (root);
+  if (!children)
+    return NULL;
+
+  for (iter = g_sequence_get_begin_iter (children);
+       !g_sequence_iter_is_end (iter);
+       iter = g_sequence_iter_next (iter))
+    {
+      IdeProjectItem *item = g_sequence_get (iter);
+
+      if (IDE_IS_PROJECT_FILES (item))
+        {
+          IdeProjectFiles *files;
+
+          files = IDE_PROJECT_FILES (item);
+          return ide_project_files_get_file_for_path (files, path);
+        }
+    }
+
   return NULL;
 }
 


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