gnome-utils r8298 - trunk/logview
- From: cosimoc svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-utils r8298 - trunk/logview
- Date: Tue, 23 Dec 2008 13:27:43 +0000 (UTC)
Author: cosimoc
Date: Tue Dec 23 13:27:43 2008
New Revision: 8298
URL: http://svn.gnome.org/viewvc/gnome-utils?rev=8298&view=rev
Log:
First implementation of day highlighting.
Modified:
trunk/logview/logview-window.c
Modified: trunk/logview/logview-window.c
==============================================================================
--- trunk/logview/logview-window.c (original)
+++ trunk/logview/logview-window.c Tue Dec 23 13:27:43 2008
@@ -109,10 +109,11 @@
/* private helpers */
static void
-populate_tag_table (LogviewWindow *logview, GtkTextTagTable *tag_table)
+populate_tag_table (GtkStyle *style,
+ GtkTextTagTable *tag_table)
{
GtkTextTag *tag;
- GtkStyle *style;
+ GdkColor color;
tag = gtk_text_tag_new ("bold");
g_object_set (tag, "weight", PANGO_WEIGHT_BOLD,
@@ -126,13 +127,38 @@
gtk_text_tag_table_add (tag_table, tag);
tag = gtk_text_tag_new ("gray");
- style = gtk_widget_get_style (GTK_WIDGET (logview));
- g_object_set (tag, "foreground-gdk", style->text_aa, "foreground-set", TRUE, NULL);
+ color = style->text[GTK_STATE_INSENSITIVE];
+ g_object_set (tag, "foreground-gdk", &color, "foreground-set", TRUE, NULL);
gtk_text_tag_table_add (tag_table, tag);
}
static void
+_gtk_text_buffer_apply_tag_to_rectangle (GtkTextBuffer *buffer, int line_start, int line_end,
+ int offset_start, int offset_end, char *tag_name)
+{
+ GtkTextIter start, end;
+ int line_cur;
+
+ gtk_text_buffer_get_iter_at_line (buffer, &start, line_start);
+ gtk_text_buffer_get_iter_at_line (buffer, &end, line_start);
+
+ for (line_cur = line_start; line_cur < line_end + 1; line_cur++) {
+
+ if (offset_start > 0) {
+ gtk_text_iter_forward_chars (&start, offset_start);
+ }
+
+ gtk_text_iter_forward_chars (&end, offset_end);
+
+ gtk_text_buffer_apply_tag_by_name (buffer, tag_name, &start, &end);
+
+ gtk_text_iter_forward_line (&start);
+ gtk_text_iter_forward_line (&end);
+ }
+}
+
+static void
logview_update_statusbar (LogviewWindow *logview, LogviewLog *active)
{
char *statusbar_text;
@@ -737,9 +763,10 @@
LogviewWindow *window = user_data;
GtkTextBuffer *buffer;
gboolean boldify = FALSE;
- int i;
+ int i, old_line_count;
GtkTextIter iter, start;
GtkTextMark *mark;
+ GSList *l;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (window->priv->text_view));
@@ -747,6 +774,7 @@
boldify = TRUE;
}
+ old_line_count = gtk_text_buffer_get_line_count (buffer);
gtk_text_buffer_get_end_iter (buffer, &iter);
if (boldify) {
@@ -760,6 +788,15 @@
gtk_text_iter_forward_char (&iter);
}
+ for (l = new_days; l; l = l->next) {
+ Day *day = l->data;
+
+ _gtk_text_buffer_apply_tag_to_rectangle (buffer,
+ old_line_count + day->first_line - 1,
+ old_line_count + day->last_line,
+ 0, day->timestamp_len, "gray");
+ }
+
if (boldify) {
gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
gtk_text_buffer_apply_tag_by_name (buffer, "bold", &start, &iter);
@@ -850,6 +887,17 @@
}
static void
+style_set_cb (GtkWidget *widget,
+ GtkStyle *prev,
+ gpointer user_data)
+{
+ LogviewWindow *logview = user_data;
+ GtkStyle *style = gtk_widget_get_style (widget);
+
+ populate_tag_table (style, logview->priv->tag_table);
+}
+
+static void
logview_window_finalize (GObject *object)
{
LogviewWindow *logview = LOGVIEW_WINDOW (object);
@@ -953,7 +1001,6 @@
gtk_widget_show (w);
priv->tag_table = gtk_text_tag_table_new ();
- populate_tag_table (logview, priv->tag_table);
priv->text_view = gtk_text_view_new ();
g_object_set (priv->text_view, "editable", FALSE, NULL);
@@ -1007,6 +1054,8 @@
G_CALLBACK (tearoff_changed_cb), logview);
g_signal_connect (priv->manager, "active-changed",
G_CALLBACK (active_log_changed_cb), logview);
+ g_signal_connect (logview, "style-set",
+ G_CALLBACK (style_set_cb), logview);
/* status area at bottom */
priv->statusbar = gtk_statusbar_new ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]