示例#1
0
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);
}
示例#2
0
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("");
	}
}
示例#3
0
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);
   }
}