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); }
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(); }