Ejemplo n.º 1
0
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"));
}
Ejemplo n.º 2
0
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"));
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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);
	}
}
Ejemplo n.º 5
0
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);
}