static void on_log_command_finished (AnjutaCommand *command, guint return_code, GitLogPane *self) { GtkTreeView *log_view; GQueue *queue; GtkTreeIter iter; GitRevision *revision; /* Show the actual log view */ git_log_pane_set_view_mode (self, LOG_VIEW_NORMAL); log_view = GTK_TREE_VIEW (gtk_builder_get_object (self->priv->builder, "log_view")); if (return_code != 0) { /* Don't report erros in the log view as this is usually no user requested * operation and thus error messages are confusing instead just show an * empty log. */ #if 0 git_pane_report_errors (command, return_code, ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self)))); #endif goto out; } queue = git_log_command_get_output_queue (GIT_LOG_COMMAND (command)); while (g_queue_peek_head (queue)) { revision = g_queue_pop_head (queue); gtk_list_store_append (self->priv->log_model, &iter); gtk_list_store_set (self->priv->log_model, &iter, LOG_COL_REVISION, revision, -1); g_object_unref (revision); } giggle_graph_renderer_validate_model (GIGGLE_GRAPH_RENDERER (self->priv->graph_renderer), GTK_TREE_MODEL (self->priv->log_model), 0); gtk_tree_view_set_model (GTK_TREE_VIEW (log_view), GTK_TREE_MODEL (self->priv->log_model)); out: g_clear_object (&self->priv->log_command); }
static void on_log_command_finished (AnjutaCommand *command, guint return_code, GitLogPane *self) { GtkTreeView *log_view; GQueue *queue; GtkTreeIter iter; GitRevision *revision; /* Show the actual log view */ git_log_pane_set_view_mode (self, LOG_VIEW_NORMAL); if (return_code != 0) { git_pane_report_errors (command, return_code, ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self)))); g_object_unref (command); return; } log_view = GTK_TREE_VIEW (gtk_builder_get_object (self->priv->builder, "log_view")); g_object_ref (self->priv->log_model); gtk_tree_view_set_model (GTK_TREE_VIEW (log_view), NULL); queue = git_log_command_get_output_queue (GIT_LOG_COMMAND (command)); while (g_queue_peek_head (queue)) { revision = g_queue_pop_head (queue); gtk_list_store_append (self->priv->log_model, &iter); gtk_list_store_set (self->priv->log_model, &iter, LOG_COL_REVISION, revision, -1); g_object_unref (revision); } giggle_graph_renderer_validate_model (GIGGLE_GRAPH_RENDERER (self->priv->graph_renderer), GTK_TREE_MODEL (self->priv->log_model), 0); gtk_tree_view_set_model (GTK_TREE_VIEW (log_view), GTK_TREE_MODEL (self->priv->log_model)); g_object_unref (self->priv->log_model); g_object_unref (command); }
static void refresh_log (GitLogPane *self) { Git *plugin; GtkTreeView *log_view; GtkTreeViewColumn *graph_column; plugin = ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self))); log_view = GTK_TREE_VIEW (gtk_builder_get_object (self->priv->builder, "log_view")); graph_column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (self->priv->builder, "graph_column")); /* Unref the previous command if it's still running. */ if (self->priv->log_command) g_object_unref (self->priv->log_command); gtk_tree_view_set_model (log_view, NULL); /* We don't support filters for now */ self->priv->log_command = git_log_command_new (plugin->project_root_directory, self->priv->selected_branch, self->priv->path, NULL, NULL, NULL, NULL, NULL, NULL); /* Hide the graph column if we're looking at the log of a path. The graph * won't be correct in this case. */ if (self->priv->path) gtk_tree_view_column_set_visible (graph_column, FALSE); else gtk_tree_view_column_set_visible (graph_column, TRUE); g_signal_connect_object (G_OBJECT (self->priv->log_command), "command-finished", G_CALLBACK (on_log_command_finished), self, 0); gtk_list_store_clear (self->priv->log_model); /* Show the loading spinner */ git_log_pane_set_view_mode (self, LOG_VIEW_LOADING); anjuta_command_start (ANJUTA_COMMAND (self->priv->log_command)); }