static void gb_view_source_notify_cursor (GbViewSource *source, GParamSpec *pspec, GtkTextBuffer *buffer) { GbViewSourcePrivate *priv; GtkTextIter iter; guint col; guint line; guint position; gchar *s; g_return_if_fail(GB_IS_VIEW_SOURCE(source)); g_return_if_fail(pspec != NULL); g_return_if_fail(GTK_SOURCE_IS_BUFFER(buffer)); priv = source->priv; g_object_get(buffer, "cursor-position", &position, NULL); gtk_text_buffer_get_iter_at_offset(buffer, &iter, position); line = gtk_text_iter_get_line(&iter); col = gtk_source_view_get_visual_column(GTK_SOURCE_VIEW(priv->source1), &iter); s = g_strdup_printf(_("Line %d, Column %d"), line + 1, col + 1); g_object_set(priv->pos_label, "label", s, NULL); g_free(s); }
static void ide_editor_view__buffer_cursor_moved (IdeEditorView *self, const GtkTextIter *iter, GtkTextBuffer *buffer) { GtkTextIter bounds; GtkTextMark *mark; gchar *str; guint line; gint column; gint column2; g_assert (IDE_IS_EDITOR_VIEW (self)); g_assert (iter != NULL); g_assert (IDE_IS_BUFFER (buffer)); ide_source_view_get_visual_position (self->frame1->source_view, &line, (guint *)&column); mark = gtk_text_buffer_get_selection_bound (buffer); gtk_text_buffer_get_iter_at_mark (buffer, &bounds, mark); if (!gtk_widget_has_focus (GTK_WIDGET (self->frame1->source_view)) || gtk_text_iter_equal (&bounds, iter) || (gtk_text_iter_get_line (iter) != gtk_text_iter_get_line (&bounds))) { str = g_strdup_printf ("%d:%d", line + 1, column + 1); gtk_label_set_text (self->cursor_label, str); g_free (str); return; } /* We have a selection that is on the same line. * Lets give some detail as to how long the selection is. */ column2 = gtk_source_view_get_visual_column (GTK_SOURCE_VIEW (self->frame1->source_view), &bounds); str = g_strdup_printf ("%d:%d (%d)", line + 1, column + 1, ABS (column2 - column)); gtk_label_set_text (self->cursor_label, str); g_free (str); }
static void gb_editor_tab_update_location (GbEditorTab *tab) { GbEditorTabPrivate *priv; GtkTextBuffer *buffer; GtkTextMark *mark; GtkTextIter iter; gboolean overwrite; gchar *text; guint line; guint column; g_return_if_fail(GB_IS_EDITOR_TAB(tab)); priv = tab->priv; buffer = GTK_TEXT_BUFFER(priv->document); overwrite = gtk_text_view_get_overwrite(GTK_TEXT_VIEW(priv->text_view)); mark = gtk_text_buffer_get_insert(buffer); gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark); line = gtk_text_iter_get_line(&iter) + 1; column = gtk_source_view_get_visual_column(GTK_SOURCE_VIEW(priv->text_view), &iter) + 1; if (!overwrite) { text = g_strdup_printf(_("Ln %u, Col %u INS"), line, column); } else { text = g_strdup_printf(_("Ln %u, Col %u REP"), line, column); } g_object_set(priv->floating_bar, "label", text, NULL); g_free(text); if (!gtk_widget_get_visible(priv->floating_bar)) { gtk_widget_show(priv->floating_bar); } }