static void wikipad_document_notify_overwrite (GtkTextView *textview, GParamSpec *pspec, WikipadDocument *document) { gboolean overwrite; g_return_if_fail (WIKIPAD_IS_DOCUMENT (document)); g_return_if_fail (GTK_IS_TEXT_VIEW (textview)); /* whether overwrite is enabled */ overwrite = gtk_text_view_get_overwrite (textview); /* emit the signal */ g_signal_emit (G_OBJECT (document), document_signals[OVERWRITE_CHANGED], 0, overwrite); }
void Gobby::StatusBar::update_pos_display() { if(m_current_view != NULL) { GtkTextBuffer* buffer = GTK_TEXT_BUFFER( m_current_view->get_text_buffer()); GtkTextIter iter; // TODO: Use TextSessionView::get_cursor_position()? gtk_text_buffer_get_iter_at_mark( buffer, &iter, gtk_text_buffer_get_insert(buffer)); gint offset = gtk_text_iter_get_line_offset(&iter); unsigned int column = 0; const unsigned int tab_width = m_preferences.editor.tab_width; for(gtk_text_iter_set_line_offset(&iter, 0); gtk_text_iter_get_line_offset(&iter) < offset; gtk_text_iter_forward_char(&iter)) { if(gtk_text_iter_get_char(&iter) == '\t') column += (tab_width - column % tab_width); else ++ column; } // TODO: We might want to have a separate widget for the // OVR/INS display. m_lbl_position.set_text( Glib::ustring::compose( _("Ln %1, Col %2\t%3"), gtk_text_iter_get_line(&iter) + 1, column + 1, gtk_text_view_get_overwrite(GTK_TEXT_VIEW(m_current_view->get_text_view())) ? _("OVR") : _("INS") ) ); } else { m_lbl_position.set_text(""); } }
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); } }