static GtkWidget * git_log_pane_get_widget (AnjutaDockPane *pane) { GitLogPane *self; self = GIT_LOG_PANE (pane); return GTK_WIDGET (gtk_builder_get_object (self->priv->builder, "log_pane")); }
void on_commit_diff_button_clicked (GtkAction *action, Git *plugin) { GitRevision *revision; gchar *sha; gchar *short_sha; gchar *editor_name; IAnjutaDocumentManager *document_manager; IAnjutaEditor *editor; GitDiffTreeCommand *diff_command; revision = git_log_pane_get_selected_revision (GIT_LOG_PANE (plugin->log_pane)); if (revision) { sha = git_revision_get_sha (revision); short_sha = git_revision_get_short_sha (revision); /* Translators: file name for an existing commits diff, %s is an SHASUM of a commit */ editor_name = g_strdup_printf (_("Commit %s.diff"), short_sha); document_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (plugin)->shell, IAnjutaDocumentManager, NULL); editor = ianjuta_document_manager_add_buffer (document_manager, editor_name, "", NULL); diff_command = git_diff_tree_command_new (plugin->project_root_directory, sha); g_signal_connect (G_OBJECT (diff_command), "data-arrived", G_CALLBACK (git_pane_send_raw_output_to_editor), editor); g_signal_connect (G_OBJECT (diff_command), "command-finished", G_CALLBACK (git_pane_report_errors), plugin); g_signal_connect (G_OBJECT (diff_command), "command-finished", G_CALLBACK (g_object_unref), NULL); anjuta_command_start (ANJUTA_COMMAND (diff_command)); g_object_unref (revision); g_free (sha); g_free (short_sha); g_free (editor_name); } else anjuta_util_dialog_error (NULL, _("No revision selected")); }
static void git_log_pane_finalize (GObject *object) { GitLogPane *self; self = GIT_LOG_PANE (object); g_object_unref (self->priv->builder); g_free (self->priv->path); g_hash_table_destroy (self->priv->branches_table); g_hash_table_unref (self->priv->refs); g_free (self->priv->selected_branch); g_free (self->priv); G_OBJECT_CLASS (git_log_pane_parent_class)->finalize (object); }
void on_git_log_reset_activated (GtkAction *action, Git *plugin) { GitRevision *revision; gchar *sha; AnjutaDockPane *pane; revision = git_log_pane_get_selected_revision (GIT_LOG_PANE (plugin->log_pane)); if (revision) { sha = git_revision_get_sha (revision); pane = git_reset_pane_new_with_sha (plugin, sha); add_pane (pane, plugin); g_free (sha); g_object_unref (revision); } }
static void git_log_pane_finalize (GObject *object) { GitLogPane *self; Git *plugin; self = GIT_LOG_PANE (object); /* Disconnect signal handler from ref_command. */ plugin = ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self))); g_signal_handlers_disconnect_by_func (G_OBJECT (plugin->ref_command), on_ref_command_finished, self); g_clear_object (&self->priv->branch_list_command); g_clear_object (&self->priv->log_message_command); g_clear_object (&self->priv->log_command); /* Remove spin timer source. */ if (self->priv->spin_timer_id > 0) g_source_remove (self->priv->spin_timer_id); g_object_unref (self->priv->builder); g_object_unref (self->priv->log_model); g_free (self->priv->path); g_hash_table_destroy (self->priv->branches_table); if (self->priv->refs) g_hash_table_unref (self->priv->refs); g_free (self->priv->selected_branch); if (self->priv->active_branch_path != NULL) gtk_tree_path_free (self->priv->active_branch_path); g_free (self->priv); G_OBJECT_CLASS (git_log_pane_parent_class)->finalize (object); }