static void on_log_view_drag_data_get (GtkWidget *log_view, GdkDragContext *drag_context, GtkSelectionData *data, guint info, guint time, GitLogPane *self) { GtkTreeSelection *selection; GtkTreeIter iter; GitRevision *revision; gchar *sha; selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (log_view)); if (gtk_tree_selection_count_selected_rows (selection) > 0) { gtk_tree_selection_get_selected (selection, NULL, &iter); gtk_tree_model_get (GTK_TREE_MODEL (self->priv->log_model), &iter, 0, &revision, -1); sha = git_revision_get_sha (revision); gtk_selection_data_set_text (data, sha, -1); g_object_unref (revision); g_free (sha); } }
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")); }
void on_log_menu_git_create_branch (GtkAction *action, Git *plugin) { GitRevision *revision; gchar *sha; revision = git_log_get_selected_revision (plugin); if (revision) { sha = git_revision_get_sha (revision); create_branch_dialog (plugin, sha); g_free (sha); } }
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 ref_icon_cell_function (GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, GitLogPane *self) { GitRevision *revision; gchar *sha; gtk_tree_model_get (model, iter, LOG_COL_REVISION, &revision, -1); sha = git_revision_get_sha (revision); g_object_unref (revision); if (g_hash_table_lookup_extended (self->priv->refs, sha, NULL, NULL)) g_object_set (renderer, "stock-id", GTK_STOCK_INFO, NULL); else g_object_set (renderer, "stock-id", NULL, NULL); g_free (sha); }
static gboolean on_log_view_row_selected (GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, GitLogPane *self) { Git *plugin; GtkTreeIter iter; GitRevision *revision; gchar *sha; if (!path_currently_selected) { plugin = ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self))); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, LOG_COL_REVISION, &revision, -1); sha = git_revision_get_sha (revision); /* Unref the previous command if it's still running. */ if (self->priv->log_message_command) g_object_unref (self->priv->log_message_command); self->priv->log_message_command = git_log_message_command_new (plugin->project_root_directory, sha); g_free (sha); g_object_unref (revision); g_signal_connect_object (G_OBJECT (self->priv->log_message_command), "command-finished", G_CALLBACK (on_log_message_command_finished), self, 0); anjuta_command_start (ANJUTA_COMMAND (self->priv->log_message_command)); } return TRUE; }
static gboolean on_log_view_query_tooltip (GtkWidget *log_view, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip, GitLogPane *self) { gboolean ret; GtkTreeViewColumn *ref_icon_column; gint bin_x; gint bin_y; GtkTreeViewColumn *current_column; GtkTreePath *path; GtkTreeModel *model; GtkTreeIter iter; GitRevision *revision; gchar *sha; GList *ref_list; GList *current_ref; GString *tooltip_string; gchar *ref_name; GitRefType ref_type; ret = FALSE; ref_icon_column = gtk_tree_view_get_column (GTK_TREE_VIEW (log_view), 0); gtk_tree_view_convert_widget_to_bin_window_coords (GTK_TREE_VIEW (log_view), x, y, &bin_x, &bin_y); if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (log_view), bin_x, bin_y, &path, ¤t_column, NULL, NULL)) { /* We need to be in the ref icon column */ if (current_column == ref_icon_column) { model = gtk_tree_view_get_model (GTK_TREE_VIEW (log_view)); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, LOG_COL_REVISION, &revision, -1); sha = git_revision_get_sha (revision); g_object_unref (revision); ref_list = g_hash_table_lookup (self->priv->refs, sha); g_free (sha); if (ref_list) { current_ref = ref_list; tooltip_string = g_string_new (""); while (current_ref) { ref_name = git_ref_get_name (GIT_REF (current_ref->data)); ref_type = git_ref_get_ref_type (GIT_REF (current_ref->data)); if (tooltip_string->len > 0) g_string_append (tooltip_string, "\n"); switch (ref_type) { case GIT_REF_TYPE_BRANCH: g_string_append_printf (tooltip_string, _("<b>Branch:</b> %s"), ref_name ); break; case GIT_REF_TYPE_TAG: g_string_append_printf (tooltip_string, _("<b>Tag:</b> %s"), ref_name); break; case GIT_REF_TYPE_REMOTE: g_string_append_printf (tooltip_string, _("<b>Remote:</b> %s"), ref_name); break; default: break; } g_free (ref_name); current_ref = g_list_next (current_ref); } gtk_tooltip_set_markup (tooltip, tooltip_string->str); g_string_free (tooltip_string, TRUE); ret = TRUE; } } gtk_tree_path_free (path); } return ret; }