Exemplo n.º 1
0
Gobby::PreferencesDialog::View::View(Preferences& preferences):
	m_group_wrap(_("Text Wrapping") ),
	m_group_linenum(_("Line Numbers") ),
	m_group_curline(_("Current Line") ),
	m_group_margin(_("Right Margin") ),
	m_group_bracket(_("Bracket Matching") ),
	m_group_spaces(_("Whitespace Display") ),
	m_btn_wrap_text(_("Enable text wrapping") ),
	m_btn_wrap_words(_("Do not split words over two lines") ),
	m_btn_linenum_display(_("Display line numbers") ),
	m_btn_curline_highlight(_("Highlight current line") ),
	m_btn_margin_display(_("Display right margin") ),
	m_lbl_margin_pos(_("Right margin at column:") ),
	m_btn_bracket_highlight(_("Highlight matching bracket") ),
	m_cmb_spaces_display(preferences.view.whitespace_display)
{
	Gtk::WrapMode mode = preferences.view.wrap_mode;
	bool linenum_display = preferences.view.linenum_display;
	bool curline_highlight = preferences.view.curline_highlight;
	bool margin_display = preferences.view.margin_display;
	unsigned int margin_pos = preferences.view.margin_pos;
	bool bracket_highlight = preferences.view.bracket_highlight;

	m_btn_margin_display.signal_toggled().connect(
		sigc::mem_fun(*this, &View::on_margin_display_toggled));
	m_btn_wrap_text.signal_toggled().connect(
		sigc::mem_fun(*this, &View::on_wrap_text_toggled));

	m_lbl_margin_pos.show();
	m_ent_margin_pos.set_range(1, 1024);
	m_ent_margin_pos.set_value(margin_pos);
	m_ent_margin_pos.set_increments(1, 16);
	m_ent_margin_pos.show();
	connect_option(m_ent_margin_pos, preferences.view.margin_pos);

	m_btn_wrap_text.set_active(mode != Gtk::WRAP_NONE);
	m_btn_wrap_text.show();
	m_btn_wrap_words.set_active(mode == Gtk::WRAP_WORD_CHAR);
	m_btn_wrap_words.set_sensitive(mode != Gtk::WRAP_NONE);
	m_btn_wrap_words.show();
	connect_wrap_option(m_btn_wrap_text,
	                    m_btn_wrap_words,
                            preferences.view.wrap_mode);
	m_btn_linenum_display.set_active(linenum_display);
	m_btn_linenum_display.show();
	connect_option(m_btn_linenum_display,
	               preferences.view.linenum_display);
	m_btn_curline_highlight.set_active(curline_highlight);
	m_btn_curline_highlight.show();
	connect_option(m_btn_curline_highlight,
	               preferences.view.curline_highlight);
	m_btn_margin_display.set_active(margin_display);
	m_btn_margin_display.show();
	connect_option(m_btn_margin_display,
	               preferences.view.margin_display);
	m_btn_bracket_highlight.set_active(bracket_highlight);
	m_btn_bracket_highlight.show();
	connect_option(m_btn_bracket_highlight,
	               preferences.view.bracket_highlight);

	// TODO: When we require a higher version of GtkSourceView, then
	// we should add GTK_SOURCE_DRAW_SPACES_NBSP here.
	const int SOURCE_DRAW_SPACES = GTK_SOURCE_DRAW_SPACES_SPACE;

	m_cmb_spaces_display.add(
		_("Display no whitespace"),
		static_cast<GtkSourceDrawSpacesFlags>(0));
	m_cmb_spaces_display.add(
		_("Display spaces"),
		static_cast<GtkSourceDrawSpacesFlags>(
			SOURCE_DRAW_SPACES));
	m_cmb_spaces_display.add(
		_("Display tabs"),
		static_cast<GtkSourceDrawSpacesFlags>(
			GTK_SOURCE_DRAW_SPACES_TAB));
	m_cmb_spaces_display.add(
		_("Display tabs and spaces"),
		static_cast<GtkSourceDrawSpacesFlags>(
			SOURCE_DRAW_SPACES | GTK_SOURCE_DRAW_SPACES_TAB));
	m_cmb_spaces_display.show();

	m_box_margin_pos.set_spacing(6);
	m_box_margin_pos.set_sensitive(margin_display);
	m_box_margin_pos.pack_start(m_lbl_margin_pos, Gtk::PACK_SHRINK);
	m_box_margin_pos.pack_start(*indent(m_ent_margin_pos),
	                            Gtk::PACK_SHRINK);
	m_box_margin_pos.show();

	m_group_wrap.add(m_btn_wrap_text);
	m_group_wrap.add(*indent(m_btn_wrap_words));
	m_group_wrap.show();

	m_group_linenum.add(m_btn_linenum_display);
	m_group_linenum.show();

	m_group_curline.add(m_btn_curline_highlight);
	m_group_curline.show();

	m_group_margin.add(m_btn_margin_display);
	m_group_margin.add(m_box_margin_pos);
	m_group_margin.show();

	m_group_bracket.add(m_btn_bracket_highlight);
	m_group_bracket.show();

	m_group_spaces.add(m_cmb_spaces_display);
	m_group_spaces.show();

	add(m_group_wrap, false);
	add(m_group_linenum, false);
	add(m_group_curline, false);
	add(m_group_margin, false);
	add(m_group_bracket, false);
	add(m_group_spaces, false);
}
Exemplo n.º 2
0
Gobby::PreferencesDialog::View::View(
	const Glib::RefPtr<Gtk::Builder>& builder,Preferences& preferences)
{
	builder->get_widget("enable-wrapping", m_btn_wrap_text);
	builder->get_widget("do-not-split-words", m_btn_wrap_words);
	builder->get_widget("display-line-numbers", m_btn_linenum_display);
	builder->get_widget("highlight-current-line",
	                    m_btn_curline_highlight);
	builder->get_widget("display-right-margin", m_btn_margin_display);
	builder->get_widget("grid-margin-position", m_grid_margin_pos);
	builder->get_widget("right-margin-column", m_ent_margin_pos);
	builder->get_widget("highlight-matching-brackets",
	                    m_btn_bracket_highlight);
	builder->get_widget_derived("display-whitespace",
	                            m_cmb_spaces_display);

	const Gtk::WrapMode mode = preferences.view.wrap_mode;
	const bool linenum_display = preferences.view.linenum_display;
	const bool curline_highlight = preferences.view.curline_highlight;
	const bool margin_display = preferences.view.margin_display;
	const unsigned int margin_pos = preferences.view.margin_pos;
	const bool bracket_highlight = preferences.view.bracket_highlight;

	m_btn_margin_display->signal_toggled().connect(
		sigc::mem_fun(*this, &View::on_margin_display_toggled));
	m_btn_wrap_text->signal_toggled().connect(
		sigc::mem_fun(*this, &View::on_wrap_text_toggled));

	m_ent_margin_pos->set_range(1, 1024);
	m_ent_margin_pos->set_value(margin_pos);
	m_ent_margin_pos->set_increments(1, 16);
	connect_option(*m_ent_margin_pos, preferences.view.margin_pos);

	m_btn_wrap_text->set_active(mode != Gtk::WRAP_NONE);
	m_btn_wrap_words->set_active(mode == Gtk::WRAP_WORD_CHAR);
	connect_wrap_option(*m_btn_wrap_text, *m_btn_wrap_words,
                            preferences.view.wrap_mode);

	m_btn_linenum_display->set_active(linenum_display);
	connect_option(*m_btn_linenum_display,
	               preferences.view.linenum_display);

	m_btn_curline_highlight->set_active(curline_highlight);
	connect_option(*m_btn_curline_highlight,
	               preferences.view.curline_highlight);

	m_btn_margin_display->set_active(margin_display);
	connect_option(*m_btn_margin_display,
	               preferences.view.margin_display);

	m_btn_bracket_highlight->set_active(bracket_highlight);
	connect_option(*m_btn_bracket_highlight,
	               preferences.view.bracket_highlight);

	// TODO: When we require a higher version of GtkSourceView, then
	// we should add GTK_SOURCE_DRAW_SPACES_NBSP here.
	const int SOURCE_DRAW_SPACES = GTK_SOURCE_DRAW_SPACES_SPACE;

	m_cmb_spaces_display->set_option(preferences.view.whitespace_display);
	m_cmb_spaces_display->add(
		_("Display no whitespace"),
		static_cast<GtkSourceDrawSpacesFlags>(0));
	m_cmb_spaces_display->add(
		_("Display spaces"),
		static_cast<GtkSourceDrawSpacesFlags>(
			SOURCE_DRAW_SPACES));
	m_cmb_spaces_display->add(
		_("Display tabs"),
		static_cast<GtkSourceDrawSpacesFlags>(
			GTK_SOURCE_DRAW_SPACES_TAB));
	m_cmb_spaces_display->add(
		_("Display tabs and spaces"),
		static_cast<GtkSourceDrawSpacesFlags>(
			SOURCE_DRAW_SPACES | GTK_SOURCE_DRAW_SPACES_TAB));

	// Initial sensitivity
	on_wrap_text_toggled();
	on_margin_display_toggled();
}