gnome-utils r8303 - trunk/logview
- From: cosimoc svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-utils r8303 - trunk/logview
- Date: Tue, 23 Dec 2008 13:27:52 +0000 (UTC)
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]