gnome-utils r8303 - trunk/logview



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

Log:
Implement removal of logs from the stored list.

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

Modified: trunk/logview/logview-log.c
==============================================================================
--- trunk/logview/logview-log.c	(original)
+++ trunk/logview/logview-log.c	Tue Dec 23 13:27:52 2008
@@ -525,4 +525,12 @@
   g_assert (LOGVIEW_IS_LOG (log));
 
   return g_file_get_uri (log->priv->file);
+}
+
+GFile *
+logview_log_get_gfile (LogviewLog *log)
+{
+  g_assert (LOGVIEW_IS_LOG (log));
+
+  return g_object_ref (log->priv->file);
 }
\ No newline at end of file

Modified: trunk/logview/logview-log.h
==============================================================================
--- trunk/logview/logview-log.h	(original)
+++ trunk/logview/logview-log.h	Tue Dec 23 13:27:52 2008
@@ -98,6 +98,7 @@
 GSList *      logview_log_get_days_for_cached_lines (LogviewLog *log);
 gboolean      logview_log_has_new_lines             (LogviewLog *log);
 char *        logview_log_get_uri                   (LogviewLog *log);
+GFile *       logview_log_get_gfile                 (LogviewLog *log);
 
 
 G_END_DECLS

Modified: trunk/logview/logview-manager.c
==============================================================================
--- trunk/logview/logview-manager.c	(original)
+++ trunk/logview/logview-manager.c	Tue Dec 23 13:27:52 2008
@@ -22,6 +22,7 @@
 
 #include "logview-manager.h"
 
+#include "logview-prefs.h"
 #include "logview-marshal.h"
 
 enum {
@@ -132,6 +133,8 @@
 
   if (log) {
     char *log_uri;
+    LogviewPrefs *prefs;
+    GFile *file;
 
     log_uri = logview_log_get_uri (log);
 
@@ -139,6 +142,12 @@
     g_hash_table_insert (data->manager->priv->logs,
                          log_uri, log);
 
+    prefs = logview_prefs_get ();
+    file = logview_log_get_gfile (log);
+    logview_prefs_store_log (prefs, file);
+
+    g_object_unref (file);
+
     g_signal_emit (data->manager, signals[LOG_ADDED], 0, log, NULL);
 
     if (data->set_active) {
@@ -288,15 +297,19 @@
 {
   LogviewLog *active_log;
   char *log_uri;
+  GFile *file;
   gboolean res;
 
   g_assert (LOGVIEW_IS_MANAGER (manager));
 
   active_log = manager->priv->active_log;
   log_uri = logview_log_get_uri (active_log);
+  file = logview_log_get_gfile (active_log);
 
   g_signal_emit (manager, signals[LOG_CLOSED], 0, active_log, NULL);
 
+  logview_prefs_remove_stored_log (logview_prefs_get (), file);
+
   /* we own two refs to the active log; one is inside the hash table */
   g_object_unref (active_log);
   res = g_hash_table_remove (manager->priv->logs, log_uri);

Modified: trunk/logview/logview-prefs.c
==============================================================================
--- trunk/logview/logview-prefs.c	(original)
+++ trunk/logview/logview-prefs.c	Tue Dec 23 13:27:52 2008
@@ -405,18 +405,32 @@
 }
 
 void
-logview_prefs_store_log (LogviewPrefs *prefs, const char *filename)
+logview_prefs_store_log (LogviewPrefs *prefs, GFile *file)
 {
-  GSList *stored_logs;
+  GSList *stored_logs, *l;
+  GFile *stored;
+  gboolean found = FALSE;
 
   g_assert (LOGVIEW_IS_PREFS (prefs));
-  g_assert (filename != NULL && filename[0] != '\0');
+  g_assert (G_IS_FILE (file));
 
   stored_logs = logview_prefs_get_stored_logfiles (prefs);
 
-  if (g_slist_find_custom (stored_logs, filename, (GCompareFunc) g_ascii_strcasecmp) == NULL)
-  {
-    stored_logs = g_slist_prepend (stored_logs, g_strdup (filename));
+  for (l = stored_logs; l; l = l->next) {
+    stored = g_file_parse_name (l->data);
+    if (g_file_equal (file, stored)) {
+      found = TRUE;
+    }
+
+    g_object_unref (stored);
+
+    if (found) {
+      break;
+    }
+  }
+
+  if (!found) {
+    stored_logs = g_slist_prepend (stored_logs, g_file_get_parse_name (file));
     gconf_client_set_list (prefs->priv->client,
                            GCONF_LOGFILES,
                            GCONF_VALUE_STRING,
@@ -430,6 +444,49 @@
 }
 
 void
+logview_prefs_remove_stored_log (LogviewPrefs *prefs, GFile *target)
+{
+  GSList *stored_logs, *l, *removed = NULL;
+  GFile *stored;
+
+  g_assert (LOGVIEW_IS_PREFS (prefs));
+  g_assert (G_IS_FILE (target));
+
+  stored_logs = logview_prefs_get_stored_logfiles (prefs);
+
+  for (l = stored_logs; l; l = l->next) {
+    stored = g_file_parse_name (l->data);
+    if (g_file_equal (stored, target)) {
+      removed = l;
+      stored_logs = g_slist_remove_link (stored_logs, l);
+    }
+
+    g_object_unref (stored);
+
+    if (removed) {
+      break;
+    }
+  }
+
+  if (removed) {
+    gconf_client_set_list (prefs->priv->client,
+                           GCONF_LOGFILES,
+                           GCONF_VALUE_STRING,
+                           stored_logs,
+                           NULL);
+  }
+
+  /* the string list is copied */
+  g_slist_foreach (stored_logs, (GFunc) g_free, NULL);
+  g_slist_free (stored_logs);
+
+  if (removed) {
+    g_free (removed->data);
+    g_slist_free (removed);
+  }
+}
+
+void
 logview_prefs_store_fontsize (LogviewPrefs *prefs, int fontsize)
 {
   g_assert (LOGVIEW_IS_PREFS (prefs));

Modified: trunk/logview/logview-prefs.h
==============================================================================
--- trunk/logview/logview-prefs.h	(original)
+++ trunk/logview/logview-prefs.h	Tue Dec 23 13:27:52 2008
@@ -63,7 +63,9 @@
 char *         logview_prefs_get_monospace_font_name (LogviewPrefs *prefs);
 gboolean       logview_prefs_get_have_tearoff        (LogviewPrefs *prefs);
 void           logview_prefs_store_log               (LogviewPrefs *prefs,
-                                                      const char *filename);
+                                                      GFile *file);
+void           logview_prefs_remove_stored_log       (LogviewPrefs *prefs,
+                                                      GFile *target);
 GSList *       logview_prefs_get_stored_logfiles     (LogviewPrefs *prefs);
 void           logview_prefs_store_fontsize          (LogviewPrefs *prefs,
                                                       int fontsize);

Modified: trunk/logview/logview-window.c
==============================================================================
--- trunk/logview/logview-window.c	(original)
+++ trunk/logview/logview-window.c	Tue Dec 23 13:27:52 2008
@@ -35,8 +35,6 @@
 #define APP_NAME _("System Log Viewer")
 #define SEARCH_START_MARK "lw-search-start-mark"
 #define SEARCH_END_MARK "lw-search-end-mark"
-#define VISIBLE_AREA_START_MARK "lw-visible-start"
-#define VISIBLE_AREA_END_MARK "lw-visible-end"
 
 struct _LogviewWindowPrivate {
   GtkWidget *statusbar;
@@ -470,9 +468,9 @@
 wrap:
 
   if (forward) {
-    res = gtk_text_iter_forward_search (&search, text, 0, &start_m, &end_m, NULL);
+    res = gtk_text_iter_forward_search (&search, text, GTK_TEXT_SEARCH_VISIBLE_ONLY, &start_m, &end_m, NULL);
   } else {
-    res = gtk_text_iter_backward_search (&search, text, 0, &start_m, &end_m, NULL);
+    res = gtk_text_iter_backward_search (&search, text, GTK_TEXT_SEARCH_VISIBLE_ONLY, &start_m, &end_m, NULL);
   }
 
   if (res) {



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