anjuta r4062 - in trunk: . plugins/build-basic-autotools plugins/message-view



Author: jhs
Date: Sun Jul  6 21:29:39 2008
New Revision: 4062
URL: http://svn.gnome.org/viewvc/anjuta?rev=4062&view=rev

Log:
2008-07-06  Johannes Schmid  <jhs idefix>

	* plugins/build-basic-autotools/build-basic-autotools.c
	(on_build_mesg_format):
	Do not set MESSAGE_INFO on change directory messages

Modified:
   trunk/ChangeLog
   trunk/plugins/build-basic-autotools/build-basic-autotools.c
   trunk/plugins/message-view/message-view.c

Modified: trunk/plugins/build-basic-autotools/build-basic-autotools.c
==============================================================================
--- trunk/plugins/build-basic-autotools/build-basic-autotools.c	(original)
+++ trunk/plugins/build-basic-autotools/build-basic-autotools.c	Sun Jul  6 21:29:39 2008
@@ -701,7 +701,7 @@
 								: dir;
 		build_context_push_dir (context, "default", dir);
 		summary = g_strdup_printf(_("Entering: %s"), dir);
-		ianjuta_message_view_append (view, IANJUTA_MESSAGE_VIEW_TYPE_INFO, 
+		ianjuta_message_view_append (view, IANJUTA_MESSAGE_VIEW_TYPE_NORMAL, 
 									 summary, one_line, NULL);
 		g_free (dir);
 		g_free(summary);
@@ -737,7 +737,7 @@
 								: dir;
 		build_context_pop_dir (context, "default", dir);
 		summary = g_strdup_printf(_("Leaving: %s"), dir);
-		ianjuta_message_view_append (view, IANJUTA_MESSAGE_VIEW_TYPE_INFO, 
+		ianjuta_message_view_append (view, IANJUTA_MESSAGE_VIEW_TYPE_NORMAL, 
 									 summary, one_line, NULL);
 		g_free (dir);
 		g_free(summary);

Modified: trunk/plugins/message-view/message-view.c
==============================================================================
--- trunk/plugins/message-view/message-view.c	(original)
+++ trunk/plugins/message-view/message-view.c	Sun Jul  6 21:29:39 2008
@@ -32,12 +32,18 @@
 	gchar *line_buffer;
 
 	GtkWidget *tree_view;
-
+	GtkTreeModel *model;
+	GtkTreeModel *filter;
+	
 	AnjutaPreferences* prefs;
 	GtkWidget *popup_menu;
 	
 	gint adj_chgd_hdlr;
 	
+	/* Messages filter buttons */
+	GtkWidget *info, *warn, *error;
+	guint info_count, warn_count, error_count;
+
 	/* Properties */
 	gchar *label;
 	gchar *pixmap;
@@ -84,6 +90,11 @@
 static void prefs_init (MessageView *mview);
 static void prefs_finalize (MessageView *mview);
 
+static gboolean
+message_view_tree_view_filter (GtkTreeModel *model,
+							   GtkTreeIter  *iter,
+							   gpointer      data);
+
 /* Ask the user for an uri name */
 static gchar *
 ask_user_for_save_uri (GtkWindow* parent)
@@ -231,7 +242,7 @@
 	GtkTreeModel *model;
 	MessageView* view = MESSAGE_VIEW(widget);
 	
-	model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->privat->tree_view));
+	model = view->privat->model;
 	
 	if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW(view->privat->tree_view),
 		x, y, &path, NULL, NULL, NULL))
@@ -273,7 +284,7 @@
 	GtkTreeIter iter;
 	GtkTreeModel *model;
 	
-	model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->privat->tree_view));
+	model = view->privat->model;
 	
 	if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW(view->privat->tree_view),
 		view->privat->tooltip_rect.x, view->privat->tooltip_rect.y,
@@ -543,6 +554,14 @@
 	return FALSE;
 }
 
+static void
+on_filter_buttons_toggled (GtkToggleButton *toggle, gpointer user_data) 
+{
+	MessageView *msgview = MESSAGE_VIEW (user_data);
+	
+	gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (msgview->privat->filter));
+}
+
 static void 
 on_adjustment_changed (GtkAdjustment* adj, gpointer data)
 {
@@ -685,13 +704,15 @@
 static void
 message_view_instance_init (MessageView * self)
 {
+	GtkWidget *vbox;
+	GtkWidget *filter_buttons_box;
 	GtkWidget *scrolled_win;
 	GtkCellRenderer *renderer;
 	GtkCellRenderer *renderer_pixbuf;
 	GtkTreeViewColumn *column;
 	GtkTreeViewColumn *column_pixbuf;
 	GtkTreeSelection *select;
-	GtkListStore *model;
+	GtkListStore *model;	
 	GtkAdjustment* adj;
 
 	g_return_if_fail(self != NULL);
@@ -699,12 +720,71 @@
 
 	/* Init private data */
 	self->privat->line_buffer = g_strdup("");
-
+	self->privat->info_count = 0;
+	self->privat->warn_count = 0;
+	self->privat->error_count = 0;
+
+	/* Create filter buttons */
+	vbox = gtk_hbox_new (FALSE, 0);
+	filter_buttons_box = gtk_vbox_new (FALSE, 1);
+	
+	self->privat->info = gtk_toggle_button_new_with_label (_("0 Messages"));
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->privat->info), TRUE);
+	gtk_button_set_focus_on_click (GTK_BUTTON (self->privat->info), FALSE);
+	gtk_button_set_relief (GTK_BUTTON (self->privat->info), GTK_RELIEF_HALF);
+	gtk_button_set_image (GTK_BUTTON (self->privat->info), 
+						  gtk_image_new_from_stock (GTK_STOCK_INFO, 
+													GTK_ICON_SIZE_BUTTON));
+	gtk_widget_show (self->privat->info);
+	g_signal_connect (G_OBJECT (self->privat->info), "toggled",
+					  G_CALLBACK (on_filter_buttons_toggled), self);
+	
+	self->privat->warn = gtk_toggle_button_new_with_label (_("0 Warnings"));
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->privat->warn), TRUE);
+	gtk_button_set_focus_on_click (GTK_BUTTON (self->privat->warn), FALSE);
+	gtk_button_set_relief (GTK_BUTTON (self->privat->warn), GTK_RELIEF_HALF);
+	/* FIXME: There is not GTK_STOCK_DIALOG_WARNING. */
+	gtk_button_set_image (GTK_BUTTON (self->privat->warn), 
+						  gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, 
+													GTK_ICON_SIZE_BUTTON));
+	gtk_widget_show (self->privat->warn);
+	g_signal_connect (G_OBJECT (self->privat->warn), "toggled",
+					  G_CALLBACK (on_filter_buttons_toggled), self);
+	
+	self->privat->error = gtk_toggle_button_new_with_label (_("0 Errors"));
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->privat->error), TRUE);
+	gtk_button_set_focus_on_click (GTK_BUTTON (self->privat->error), FALSE);
+	gtk_button_set_relief (GTK_BUTTON (self->privat->error), GTK_RELIEF_HALF);
+	gtk_button_set_image (GTK_BUTTON (self->privat->error), 
+						  gtk_image_new_from_stock (GTK_STOCK_STOP, 
+													GTK_ICON_SIZE_BUTTON));
+	gtk_widget_show (self->privat->error);
+	g_signal_connect (G_OBJECT (self->privat->error), "toggled",
+					  G_CALLBACK (on_filter_buttons_toggled), self);
+	
+	gtk_box_pack_start (GTK_BOX (filter_buttons_box), GTK_WIDGET (self->privat->info),
+						FALSE, FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (filter_buttons_box), GTK_WIDGET (self->privat->warn),
+						FALSE, FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (filter_buttons_box), GTK_WIDGET (self->privat->error),
+						FALSE, FALSE, 0);
+	
+	gtk_widget_show (filter_buttons_box);
+	
+	
 	/* Create the tree widget */
 	model = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING,
 								G_TYPE_STRING, MESSAGE_TYPE,  G_TYPE_STRING);
-	self->privat->tree_view =
-		gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+	self->privat->model = GTK_TREE_MODEL (model);
+	
+	/* message filter */
+	self->privat->filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (model), NULL);
+	gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (self->privat->filter), 
+											message_view_tree_view_filter,
+											self, NULL);
+	
+	self->privat->tree_view = 
+		gtk_tree_view_new_with_model (GTK_TREE_MODEL (self->privat->filter));
 	gtk_widget_show (self->privat->tree_view);
 	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW
 									   (self->privat->tree_view), FALSE);
@@ -754,7 +834,20 @@
 					 G_CALLBACK(on_adjustment_value_changed), self);
 
 	/* Add it to the dockitem */
-	gtk_container_add (GTK_CONTAINER (self), scrolled_win);
+	if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_LTR) {
+		gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (scrolled_win),
+							TRUE, TRUE, 0);
+		gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (filter_buttons_box),
+							FALSE, FALSE, 0);
+	} else {
+		gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (filter_buttons_box),
+							FALSE, FALSE, 0);
+		gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (scrolled_win),
+							TRUE, TRUE, 0);
+	}
+	
+	gtk_widget_show (vbox);
+	gtk_container_add (GTK_CONTAINER (self), vbox);
 	
 	/* Connect signals */
 	g_signal_connect (G_OBJECT(self->privat->tree_view), "event", 
@@ -767,7 +860,6 @@
 #else
 	g_object_set (G_OBJECT(self), "has-tooltip", TRUE, NULL);
 #endif
-	g_object_unref (model);
 }
 
 static void
@@ -847,7 +939,7 @@
 		return FALSE;
 	
 	/* Serialize individual messages */
-	model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->privat->tree_view));
+	model = view->privat->model;
 	
 	if (!anjuta_serializer_write_int (serializer, "messages",
 									  gtk_tree_model_iter_n_children (model, NULL)))
@@ -887,7 +979,7 @@
 		return FALSE;
 	
 	/* Create individual messages */
-	model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->privat->tree_view));
+	model = view->privat->model;
 	gtk_list_store_clear (GTK_LIST_STORE (model));
 	
 	if (!anjuta_serializer_read_int (serializer, "messages", &messages))
@@ -916,8 +1008,7 @@
 	GtkTreeModel *model;
 	GtkTreeSelection *select;
 
-	model = gtk_tree_view_get_model (GTK_TREE_VIEW
-					 (view->privat->tree_view));
+	model = view->privat->model;
 	select = gtk_tree_view_get_selection (GTK_TREE_VIEW
 					      (view->privat->tree_view));
 
@@ -961,8 +1052,7 @@
 	GtkTreeSelection *select;
 	GtkTreePath *path;
 
-	model = gtk_tree_view_get_model (GTK_TREE_VIEW
-					 (view->privat->tree_view));
+	model = view->privat->model;
 	select = gtk_tree_view_get_selection (GTK_TREE_VIEW
 					      (view->privat->tree_view));
 	
@@ -1022,7 +1112,7 @@
 	}
 
 	/* Save all lines of message view */	
-	model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->privat->tree_view));
+	model = view->privat->model;
 
 	ok = TRUE;
 	gtk_tree_model_get_iter_first (model, &iter);
@@ -1088,8 +1178,7 @@
 	gboolean success;
 	
 	color = anjuta_preferences_get (mview->privat->prefs, color_pref_key);
-	store = GTK_LIST_STORE (gtk_tree_view_get_model
-				(GTK_TREE_VIEW (mview->privat->tree_view)));
+	store = GTK_LIST_STORE (mview->privat->model);
 	success = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter);
 	while (success)
 	{
@@ -1211,6 +1300,7 @@
 	gchar *utf8_msg;
 	gchar *escaped_str;
 	gchar* stock_id = NULL;
+	gchar *temp;
 	
 	MessageView *view;
 	Message *message;
@@ -1229,17 +1319,29 @@
 		{
 			case IANJUTA_MESSAGE_VIEW_TYPE_INFO:
 				stock_id = GTK_STOCK_INFO;
+				view->privat->info_count++;
+				temp = g_strdup_printf(_("%d Messages"), view->privat->info_count);
+				gtk_button_set_label (GTK_BUTTON (view->privat->info), temp);
+				g_free (temp);
 				break;
 			case IANJUTA_MESSAGE_VIEW_TYPE_WARNING:
 				color = anjuta_preferences_get (view->privat->prefs,
 									  "messages.color.warning");
 				/* FIXME: There is no GTK_STOCK_WARNING which would fit better here */
+				view->privat->warn_count++;
+				temp = g_strdup_printf(_("%d Warnings"), view->privat->warn_count);
+				gtk_button_set_label (GTK_BUTTON (view->privat->warn), temp);
 				stock_id = GTK_STOCK_DIALOG_WARNING;
+				g_free (temp);
 				break;
 			case IANJUTA_MESSAGE_VIEW_TYPE_ERROR:
 				color = anjuta_preferences_get (view->privat->prefs,
 									  "messages.color.error");
+				view->privat->error_count++;
+				temp = g_strdup_printf(_("%d Errors"), view->privat->error_count);
+				gtk_button_set_label (GTK_BUTTON (view->privat->error), temp);
 				stock_id = GTK_STOCK_STOP;
+				g_free (temp);
 				break;
 			default:
 				color = NULL;
@@ -1247,8 +1349,7 @@
 	}
 
 	/* Add the message to the tree */
-	store = GTK_LIST_STORE (gtk_tree_view_get_model
-				(GTK_TREE_VIEW (view->privat->tree_view)));
+	store = GTK_LIST_STORE (view->privat->model);
 	gtk_list_store_append (store, &iter);
 
 	/*
@@ -1296,8 +1397,15 @@
 	g_return_if_fail (MESSAGE_IS_VIEW (message_view));
 	view = MESSAGE_VIEW (message_view);
 
-	store = GTK_LIST_STORE (gtk_tree_view_get_model
-				(GTK_TREE_VIEW (view->privat->tree_view)));
+	/* filter settings restart */
+	view->privat->info_count = 0;
+	view->privat->warn_count = 0;
+	view->privat->error_count = 0;
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->privat->info), TRUE);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->privat->warn), TRUE);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->privat->error), TRUE);
+	
+	store = GTK_LIST_STORE (view->privat->model);
 	gtk_list_store_clear (store);
 }
 
@@ -1386,8 +1494,7 @@
 	g_return_val_if_fail (MESSAGE_IS_VIEW (message_view), NULL);
 	
 	view = MESSAGE_VIEW (message_view);
-	store = GTK_LIST_STORE (gtk_tree_view_get_model
-				(GTK_TREE_VIEW (view->privat->tree_view)));
+	store = GTK_LIST_STORE (view->privat->model);
 	
 	if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter))
 	{
@@ -1414,6 +1521,27 @@
 	iface->get_all_messages = imessage_view_get_all_messages;
 }
 
+static gboolean
+message_view_tree_view_filter (GtkTreeModel *model, GtkTreeIter  *iter,
+							   gpointer      data)
+{
+	Message *msg;
+	MessageView *msgview;
+	
+	msgview = MESSAGE_VIEW (data);
+	gtk_tree_model_get (msgview->privat->model, iter, COLUMN_MESSAGE, &msg, -1);
+
+	if (msg != NULL) {
+		if (msg->type == IANJUTA_MESSAGE_VIEW_TYPE_INFO) {
+			return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (msgview->privat->info));
+		} else if (msg->type == IANJUTA_MESSAGE_VIEW_TYPE_WARNING) {
+			return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (msgview->privat->warn));
+		} else if (msg->type == IANJUTA_MESSAGE_VIEW_TYPE_ERROR) {
+			return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (msgview->privat->error));
+		} else return TRUE;
+	} else return FALSE;
+}
+
 ANJUTA_TYPE_BEGIN(MessageView, message_view, GTK_TYPE_HBOX);
 ANJUTA_TYPE_ADD_INTERFACE(imessage_view, IANJUTA_TYPE_MESSAGE_VIEW);
 ANJUTA_TYPE_END;



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