static void
git_repository_selector_finalize (GObject *object)
{
	GitRepositorySelector *self;

	self = GIT_REPOSITORY_SELECTOR (object);

	g_free (self->priv->remote);
	g_free (self->priv);

	G_OBJECT_CLASS (git_repository_selector_parent_class)->finalize (object);
}
static void
git_repository_selector_grab_focus (GtkWidget *widget)
{
	GitRepositorySelector *self;

	self = GIT_REPOSITORY_SELECTOR (widget);

	GTK_WIDGET_CLASS (git_repository_selector_parent_class)->grab_focus (widget);

	/* Only the URL entry can grab focus */
	gtk_notebook_set_current_page (GTK_NOTEBOOK (self->priv->notebook), 
	                               GIT_REPOSITORY_SELECTOR_URL);
	gtk_widget_grab_focus (self->priv->url_entry);
}
Exemple #3
0
AnjutaDockPane *
git_push_pane_new (Git *plugin)
{
    GitPushPane *self;
    GtkListStore *push_branch_model;
    GtkListStore *push_tag_model;
    GitBranchListCommand *branch_list_command;
    GitTagListCommand *tag_list_command;

    self = g_object_new (GIT_TYPE_PUSH_PANE, "plugin", plugin, NULL);
    push_branch_model = GTK_LIST_STORE (gtk_builder_get_object (self->priv->builder,
                                        "push_branch_model"));
    push_tag_model = GTK_LIST_STORE (gtk_builder_get_object (self->priv->builder,
                                     "push_tag_model"));
    branch_list_command = git_branch_list_command_new (plugin->project_root_directory,
                          GIT_BRANCH_TYPE_LOCAL);
    tag_list_command = git_tag_list_command_new (plugin->project_root_directory);

    g_signal_connect (G_OBJECT (plugin->remotes_pane), "single-selection-changed",
                      G_CALLBACK (on_remote_selected),
                      self->priv->repository_selector);

    g_signal_connect (G_OBJECT (branch_list_command), "data-arrived",
                      G_CALLBACK (on_branch_list_command_data_arrived),
                      push_branch_model);

    g_signal_connect (G_OBJECT (tag_list_command), "data-arrived",
                      G_CALLBACK (on_tag_list_command_data_arrived),
                      push_tag_model);

    g_signal_connect (G_OBJECT (branch_list_command), "command-finished",
                      G_CALLBACK (g_object_unref),
                      NULL);

    g_signal_connect (G_OBJECT (tag_list_command), "command-finished",
                      G_CALLBACK (g_object_unref),
                      NULL);

    /* Set the contents of the selected remote label */
    on_remote_selected (plugin->remotes_pane,
                        GIT_REPOSITORY_SELECTOR (self->priv->repository_selector));

    anjuta_command_start (ANJUTA_COMMAND (branch_list_command));
    anjuta_command_start (ANJUTA_COMMAND (tag_list_command));

    return ANJUTA_DOCK_PANE (self);
}
Exemple #4
0
static void
on_ok_action_activated (GtkAction *action, GitPushPane *self)
{
    Git *plugin;
    GtkTreeModel *push_branch_model;
    GtkTreeModel *push_tag_model;
    GtkToggleButton *push_all_tags_check;
    GtkToggleButton *push_all_check;
    GtkToggleAction *force_action;
    GList *selected_items;
    gboolean push_all_tags;
    gboolean push_all;
    gchar *repository;
    GitPushCommand *push_command;

    plugin = ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self)));
    push_branch_model = GTK_TREE_MODEL (gtk_builder_get_object (self->priv->builder,
                                        "push_branch_model"));
    push_tag_model = GTK_TREE_MODEL (gtk_builder_get_object (self->priv->builder,
                                     "push_tag_model"));
    push_all_tags_check = GTK_TOGGLE_BUTTON (gtk_builder_get_object (self->priv->builder,
                          "push_all_tags_check"));
    push_all_check = GTK_TOGGLE_BUTTON (gtk_builder_get_object (self->priv->builder,
                                        "push_all_check"));
    force_action = GTK_TOGGLE_ACTION (gtk_builder_get_object (self->priv->builder,
                                      "force_action"));
    selected_items = NULL;
    push_all_tags = gtk_toggle_button_get_active (push_all_tags_check);
    push_all = gtk_toggle_button_get_active (push_all_check);

    /* Check that the user has given a valid repository. In this case we only
     * care about checking if the selector widget is in URL mode, because even
     * if a remote isn't selected, it will default to origin, so we should
     * always get something when the selector is in Remote mode. */
    repository = git_repository_selector_get_repository (GIT_REPOSITORY_SELECTOR (self->priv->repository_selector));

    if (!git_pane_check_input (GTK_WIDGET (ANJUTA_PLUGIN (plugin)->shell),
                               self->priv->repository_selector, repository,
                               _("Please enter a URL.")))
    {
        g_free (repository);
        return;
    }

    if (!push_all)
    {
        /* Get selected branches */
        gtk_tree_model_foreach (push_branch_model,
                                (GtkTreeModelForeachFunc) get_selected_items,
                                &selected_items);
    }

    /* Don't bother getting selected tags if Push all tags is checked or if
     * Push all branches and tags is checked */
    if (!push_all && !push_all_tags)
    {
        /* Get selected tags */
        gtk_tree_model_foreach (push_tag_model,
                                (GtkTreeModelForeachFunc) get_selected_items,
                                &selected_items);
    }

    push_command = git_push_command_new (plugin->project_root_directory,
                                         repository, selected_items,
                                         push_all, push_all_tags,
                                         gtk_toggle_action_get_active (force_action));

    g_free (repository);
    anjuta_util_glist_strings_free (selected_items);

    git_pane_create_message_view (plugin);

    g_signal_connect (G_OBJECT (push_command), "data-arrived",
                      G_CALLBACK (git_pane_on_command_info_arrived),
                      plugin);

    g_signal_connect (G_OBJECT (push_command), "command-finished",
                      G_CALLBACK (git_pane_report_errors),
                      plugin);

    g_signal_connect (G_OBJECT (push_command), "command-finished",
                      G_CALLBACK (git_plugin_status_changed_emit),
                      plugin);

    g_signal_connect (G_OBJECT (push_command), "command-finished",
                      G_CALLBACK (g_object_unref),
                      NULL);

    anjuta_command_start (ANJUTA_COMMAND (push_command));

    git_pane_remove_from_dock (GIT_PANE (self));
}