Added tags to branches list

This commit is contained in:
Jesse van den Kieboom 2008-06-30 16:01:16 +02:00
parent f85815c435
commit 8effb237bc
2 changed files with 73 additions and 4 deletions

View file

@ -123,7 +123,7 @@ draw_paths(GitgCellRendererPath *self, cairo_t *cr, GdkRectangle *area)
{
cairo_set_line_width(cr, 1.5);
cairo_set_source_rgb(cr, 0.45, 0.6, 0.74);
cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND);
draw_top_paths(self, cr, area);
draw_bottom_paths(self, cr, area);
}

View file

@ -345,8 +345,6 @@ gitg_window_init(GitgWindow *self)
{
self->priv = GITG_WINDOW_GET_PRIVATE(self);
self->priv->branches_runner = gitg_runner_new(100);
g_signal_connect(self->priv->branches_runner, "update", G_CALLBACK(on_branches_update), self);
}
static void
@ -431,6 +429,74 @@ on_branches_update(GitgRunner *runner, gchar **buffer, GitgWindow *self)
}
}
static void
check_separator(GitgWindow *window)
{
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(window->priv->branches_store);
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 2))
{
do
{
gchar *name;
gtk_tree_model_get(model, &iter, 0, &name, -1);
if (!name)
return;
g_free(name);
} while (gtk_tree_model_iter_next(model, &iter));
}
gtk_list_store_append(window->priv->branches_store, &iter);
gtk_list_store_set(window->priv->branches_store, &iter, 0, NULL, -1);
}
static void
on_tags_update(GitgRunner *runner, gchar **buffer, GitgWindow *self)
{
check_separator(self);
gchar *ptr;
while ((ptr = *buffer++))
{
GtkTreeIter iter;
gtk_list_store_append(self->priv->branches_store, &iter);
gtk_list_store_set(self->priv->branches_store, &iter, 0, ptr, -1);
}
}
static void
on_tags_end_loading(GitgRunner *runner, GitgWindow *window)
{
g_signal_handlers_disconnect_by_func(runner, on_tags_end_loading, window);
g_signal_handlers_disconnect_by_func(runner, on_tags_update, window);
}
static void
on_branches_end_loading(GitgRunner *runner, GitgWindow *window)
{
g_signal_handlers_disconnect_by_func(runner, on_branches_end_loading, window);
g_signal_handlers_disconnect_by_func(runner, on_branches_update, window);
g_signal_connect(runner, "update", G_CALLBACK(on_tags_update), window);
g_signal_connect(runner, "end-loading", G_CALLBACK(on_tags_end_loading), window);
gchar *dotgit = gitg_utils_dot_git_path(gitg_repository_get_path(window->priv->repository));
gchar const *argv[] = {
"git",
"--git-dir",
dotgit,
"tag",
"-l",
NULL
};
gitg_runner_run(window->priv->branches_runner, argv, NULL);
}
static void
fill_branches_combo(GitgWindow *window)
{
@ -454,6 +520,9 @@ fill_branches_combo(GitgWindow *window)
gtk_combo_box_set_active(window->priv->combo_branches, 0);
g_signal_connect(window->priv->branches_runner, "update", G_CALLBACK(on_branches_update), window);
g_signal_connect(window->priv->branches_runner, "end-loading", G_CALLBACK(on_branches_end_loading), window);
gitg_runner_run(window->priv->branches_runner, argv, NULL);
g_free(dotgit);
}
@ -494,7 +563,7 @@ gitg_window_load_repository(GitgWindow *window, gchar const *path, gint argc, gc
if (!haspath && argc)
g_free(ar);
fill_branches_combo(window);
}
else