gnome-utils r8256 - trunk/logview



Author: cosimoc
Date: Tue Dec 23 13:26:19 2008
New Revision: 8256
URL: http://svn.gnome.org/viewvc/gnome-utils?rev=8256&view=rev

Log:
Add new API that loads LogviewLogs objects directly from a GFile.

Modified:
   trunk/logview/logview-log.c
   trunk/logview/logview-log.h
   trunk/logview/logview-manager.c

Modified: trunk/logview/logview-log.c
==============================================================================
--- trunk/logview/logview-log.c	(original)
+++ trunk/logview/logview-log.c	Tue Dec 23 13:26:19 2008
@@ -430,6 +430,17 @@
   log_setup_load (log, callback, user_data);
 }
 
+void
+logview_log_create_from_gfile (GFile *file, LogviewCreateCallback callback,
+                               gpointer user_data)
+{
+  LogviewLog *log = g_object_new (LOGVIEW_TYPE_LOG, NULL);
+
+  log->priv->file = g_object_ref (file);
+
+  log_setup_load (log, callback, user_data);
+}
+
 const char *
 logview_log_get_display_name (LogviewLog *log)
 {

Modified: trunk/logview/logview-log.h
==============================================================================
--- trunk/logview/logview-log.h	(original)
+++ trunk/logview/logview-log.h	Tue Dec 23 13:26:19 2008
@@ -25,6 +25,7 @@
 #define __LOGVIEW_LOG_H__
 
 #include <glib-object.h>
+#include <gio/gio.h>
 
 G_BEGIN_DECLS
 
@@ -81,6 +82,9 @@
 void          logview_log_create                   (const char *filename,
                                                     LogviewCreateCallback callback,
                                                     gpointer user_data);
+void          logview_log_create_from_gfile        (GFile *file,
+                                                    LogviewCreateCallback callback,
+                                                    gpointer user_data);
 void          logview_log_read_new_lines           (LogviewLog *log,
                                                     LogviewNewLinesCallback callback,
                                                     gpointer user_data);

Modified: trunk/logview/logview-manager.c
==============================================================================
--- trunk/logview/logview-manager.c	(original)
+++ trunk/logview/logview-manager.c	Tue Dec 23 13:26:19 2008
@@ -198,6 +198,40 @@
 }
 
 void
+logview_manager_add_log_from_gfile (LogviewManager *manager,
+                                    GFile *file,
+                                    gboolean set_active)
+{
+  char *file_uri;
+  LogviewLog *log;
+  CreateCBData *data;
+
+  g_assert (LOGVIEW_IS_MANAGER (manager));
+
+  file_uri = g_file_get_uri (file);
+
+  if (set_active == FALSE) {
+    /* if it's the first log being added, set it as active anyway */
+    set_active = (manager->priv->logs == NULL);
+  }
+
+  if ((log = g_hash_table_lookup (manager->priv->logs, file_uri)) != NULL) {
+    /* log already exists, don't load it */
+    if (set_active) {
+      logview_manager_set_active_log (manager, log);
+    }
+  } else {
+    data = g_slice_new0 (CreateCBData);
+    data->manager = manager;
+    data->set_active = set_active;
+
+    logview_log_create_from_gfile (file, create_log_cb, data);
+  }
+
+  g_free (file_uri);
+}
+
+void
 logview_manager_add_logs_from_names (LogviewManager *manager,
                                      GSList *names,
                                      const char *active)
@@ -208,7 +242,7 @@
 
   for (l = names; l; l = l->next) {
     logview_manager_add_log_from_name (manager, l->data,
-                                       (g_ascii_strcasecmp (active, l->data) == 0));
+                                        (g_ascii_strcasecmp (active, l->data) == 0));
   }
 }
 
@@ -216,27 +250,15 @@
 logview_manager_add_log_from_name (LogviewManager *manager,
                                    const char *filename, gboolean set_active)
 {
-  CreateCBData *data = g_slice_new0 (CreateCBData);
-  LogviewLog *log;
+  GFile *file;
 
   g_assert (LOGVIEW_IS_MANAGER (manager));
 
-  if (set_active == FALSE) {
-    /* if it's the first log being added, set it as active anyway */
-    set_active = (manager->priv->logs == NULL);
-  }
+  file = g_file_new_for_path (filename);
 
-  if ((log = g_hash_table_lookup (manager->priv->logs, filename)) != NULL) {
-    /* log already exists, don't load it */
-    if (set_active) {
-      logview_manager_set_active_log (manager, log);
-    }
-  } else {
-    data->manager = manager;
-    data->set_active = set_active;
+  logview_manager_add_log_from_gfile (manager, file, set_active);
 
-    logview_log_create (filename, create_log_cb, data);
-  }
+  g_object_unref (file);
 }
 
 int



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