Beispiel #1
0
static void
on_branch_list_command_data_arrived (AnjutaCommand *command,
                                     GtkListStore *push_branch_model)
{
    GList *current_branch;
    GitBranch *branch;
    gchar *name;
    GtkTreeIter iter;

    current_branch = git_branch_list_command_get_output (GIT_BRANCH_LIST_COMMAND (command));

    while (current_branch)
    {
        branch = current_branch->data;
        name = git_branch_get_name (branch);

        gtk_list_store_append (push_branch_model, &iter);
        gtk_list_store_set (push_branch_model, &iter,
                            COL_SELECTED, FALSE,
                            COL_NAME, name,
                            -1);

        g_free (name);

        current_branch = g_list_next (current_branch);
    }
}
Beispiel #2
0
static void
on_branch_list_command_data_arrived (AnjutaCommand *command,
                                     GitLogPane *self)
{
	GtkListStore *log_branch_combo_model;
	GList *current_branch;
	GitBranch *branch;
	gchar *name;
	GtkTreeIter iter;

	log_branch_combo_model = GTK_LIST_STORE (gtk_builder_get_object (self->priv->builder,
	                                                                 "log_branch_combo_model"));
	current_branch = git_branch_list_command_get_output (GIT_BRANCH_LIST_COMMAND (command));

	while (current_branch)
	{
		branch = current_branch->data;
		name = git_branch_get_name (branch);

		gtk_list_store_append (log_branch_combo_model, &iter);

		if (git_branch_is_active (branch))
		{
			gtk_list_store_set (log_branch_combo_model, &iter,
			                    BRANCH_COL_ACTIVE, TRUE,
			                    BRANCH_COL_ACTIVE_ICON, GTK_STOCK_APPLY,
			                    -1);

			if (self->priv->active_branch_path != NULL)
				gtk_tree_path_free (self->priv->active_branch_path);

			self->priv->active_branch_path = gtk_tree_model_get_path (GTK_TREE_MODEL (log_branch_combo_model), 
			                                                          &iter);
		}
		else
		{
			gtk_list_store_set (log_branch_combo_model, &iter,
			                    BRANCH_COL_ACTIVE, FALSE,
			                    BRANCH_COL_ACTIVE_ICON, NULL,
			                    -1);
		}

		gtk_list_store_set (log_branch_combo_model, &iter, 
		                    BRANCH_COL_NAME, name, 
		                    -1);
		g_hash_table_insert (self->priv->branches_table, g_strdup (name), 
		                     gtk_tree_model_get_path (GTK_TREE_MODEL (log_branch_combo_model), 
		                                              &iter));

		g_free (name);
		
		current_branch = g_list_next (current_branch);
	}
	
}
Beispiel #3
0
static void
on_branch_list_command_data_arrived (AnjutaCommand *command,
                                     GitLogPane *self)
{
	GtkListStore *log_branch_combo_model;
	AnjutaPlugin *plugin;
	GList *current_branch;
	GitBranch *branch;
	gchar *name;
	GtkTreeIter iter;

	log_branch_combo_model = GTK_LIST_STORE (gtk_builder_get_object (self->priv->builder,
	                                                                 "log_branch_combo_model"));
	plugin = anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self));
	current_branch = git_branch_list_command_get_output (GIT_BRANCH_LIST_COMMAND (command));

	while (current_branch)
	{
		branch = current_branch->data;
		name = git_branch_get_name (branch);

		gtk_list_store_append (log_branch_combo_model, &iter);

		if (git_branch_is_active (branch))
		{
			gtk_list_store_set (log_branch_combo_model, &iter,
			                    BRANCH_COL_ACTIVE, TRUE,
			                    BRANCH_COL_ACTIVE_ICON, GTK_STOCK_APPLY,
			                    -1);

			self->priv->active_branch_iter = iter;
		}
		else
		{
			gtk_list_store_set (log_branch_combo_model, &iter,
			                    BRANCH_COL_ACTIVE, FALSE,
			                    BRANCH_COL_ACTIVE_ICON, NULL,
			                    -1);
		}

		gtk_list_store_set (log_branch_combo_model, &iter, 
		                    BRANCH_COL_NAME, name, 
		                    -1);
		g_hash_table_insert (self->priv->branches_table, g_strdup (name), 
		                     g_memdup (&iter, sizeof (GtkTreeIter)));

		g_free (name);
		
		current_branch = g_list_next (current_branch);
	}
	
}
static void
git_branch_list_command_handle_output (GitCommand *git_command, 
									   const gchar *output)
{
	GitBranchListCommand *self;
	GMatchInfo *active_match_info;
	GMatchInfo *regular_match_info;
	gchar *branch_name;
	GitBranch *branch;
	gboolean active;

	self = GIT_BRANCH_LIST_COMMAND (git_command);
	
	active_match_info = NULL;
	regular_match_info = NULL;
	branch_name = NULL;
	branch = NULL;
	active = FALSE;
	
	if (g_regex_match (self->priv->active_branch_regex, output, 0, 
					   &active_match_info))
	{
		branch_name = g_match_info_fetch (active_match_info, 1);
		active = TRUE;
	}
	else if (g_regex_match (self->priv->regular_branch_regex, output, 0,
							&regular_match_info))
	{
		branch_name = g_match_info_fetch (regular_match_info, 1);
	}
	
	if (branch_name)
		branch = git_branch_new (branch_name, active);
	
	g_free (branch_name);


	if (active_match_info)
		g_match_info_free (active_match_info);

	if (regular_match_info)
		g_match_info_free (regular_match_info);
	
	g_queue_push_head (self->priv->output, branch);
	anjuta_command_notify_data_arrived (ANJUTA_COMMAND (git_command));
	
}
static guint
git_branch_list_command_run (AnjutaCommand *command)
{
	GitBranchListCommand *self;
	
	self = GIT_BRANCH_LIST_COMMAND (command);
	
	git_command_add_arg (GIT_COMMAND (command), "branch");
						 
	switch (self->priv->type)
	{
		case GIT_BRANCH_TYPE_REMOTE:
			git_command_add_arg (GIT_COMMAND (command), "-r");
			break;
		case GIT_BRANCH_TYPE_ALL:
			git_command_add_arg (GIT_COMMAND (command), "-a");
			break;
		default:
			break;
	}
	
	return 0;
}
static void
git_branch_list_command_finalize (GObject *object)
{
	GitBranchListCommand *self;
	GList *current_branch;
	
	self = GIT_BRANCH_LIST_COMMAND (object);
	current_branch = self->priv->output->head;
	
	g_regex_unref (self->priv->active_branch_regex);
	g_regex_unref (self->priv->regular_branch_regex);
	
	while (current_branch)
	{
		g_object_unref (current_branch->data);
		current_branch = g_list_next (current_branch);
	}
	
	g_queue_free (self->priv->output);
	g_free (self->priv);

	G_OBJECT_CLASS (git_branch_list_command_parent_class)->finalize (object);
}