Changeset 3c40239e8c602c1870208940eaee9b6828b9032c

Show
Ignore:
Timestamp:
11/10/09 00:21:49 (4 years ago)
Author:
Armin Burgmeier <armin@…>
Parents:
2a1e37c2ebaa4d166360a8bed2b730ac8cdc8203
Children:
5cdca2452ef978895eef8f5175a821b555063098
git-committer:
Armin Burgmeier <armin@arbur.net> / 2009-11-10T00:21:49Z+0100
Message:

Make GtkSourceView? style scheme configurable

2009-11-09 Gabríel A. Pétursson <gabrielp@…>, Armin Burgmeier <armin@…>

  • code/core/preferences.hpp:
  • code/core/preferences.cpp: Added scheme_id preference option to appearance.
  • code/core/textsessionview.hpp:
  • code/core/textsessionview.cpp: Set GtkSourceView? style scheme according to selected scheme ID.
  • code/dialogs/preferences-dialog.hpp:
  • code/dialogs/preferences-dialog.cpp: Add a list to choose one's favoured style scheme to the appearance tab.
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r2a1e37c r3c40239  
     12009-11-09  Gabríel A. Pétursson  <gabrielp@simnet.is>, Armin Burgmeier <armin@arbur.net> 
     2 
     3        * code/core/preferences.hpp: 
     4        * code/core/preferences.cpp: Added scheme_id preference option to 
     5        appearance. 
     6 
     7        * code/core/textsessionview.hpp: 
     8        * code/core/textsessionview.cpp: Set GtkSourceView style scheme 
     9        according to selected scheme ID. 
     10 
     11        * code/dialogs/preferences-dialog.hpp: 
     12        * code/dialogs/preferences-dialog.cpp: Add a list to choose one's 
     13        favoured style scheme to the appearance tab. 
     14 
    1152009-11-09  Benjamin Herr  <ben@0x539.de> 
    216 
  • code/core/preferences.cpp

    r89522f2 r3c40239  
    9494        show_statusbar(entry.get_value<bool>("show-statusbar", true)), 
    9595        show_browser(entry.get_value<bool>("show-browser", true)), 
    96         show_userlist(entry.get_value<bool>("show-userlist", true)) 
     96        show_userlist(entry.get_value<bool>("show-userlist", true)), 
     97        scheme_id(entry.get_value<Glib::ustring>("scheme-id", "classic")) 
    9798{ 
    9899} 
     
    113114        entry.set_value("show-browser", show_browser); 
    114115        entry.set_value("show-userlist", show_userlist); 
     116        entry.set_value("scheme-id", scheme_id); 
    115117} 
    116118 
  • code/core/preferences.hpp

    r89522f2 r3c40239  
    2525 
    2626#include <gtksourceview/gtksourceview.h> 
     27#include <gtksourceview/gtksourcestyleschememanager.h> 
    2728 
    2829#include <gtkmm/toolbar.h> 
     
    153154                Option<bool> show_browser; 
    154155                Option<bool> show_userlist; 
     156                 
     157                Option<Glib::ustring> scheme_id; 
    155158        }; 
    156159 
  • code/core/textsessionview.cpp

    r646a4f3 r3c40239  
    190190        m_preferences.appearance.font.signal_changed().connect( 
    191191                sigc::mem_fun(*this, &TextSessionView::on_font_changed)); 
    192  
     192        m_preferences.appearance.scheme_id.signal_changed().connect( 
     193                sigc::mem_fun(*this, &TextSessionView::on_scheme_changed)); 
    193194        gtk_source_view_set_tab_width(m_view, m_preferences.editor.tab_width); 
    194195        gtk_source_view_set_insert_spaces_instead_of_tabs( 
     
    228229 
    229230        pack_start(*scroll, Gtk::PACK_EXPAND_WIDGET); 
     231         
     232        gtk_source_buffer_set_style_scheme(m_buffer, gtk_source_style_scheme_manager_get_scheme(gtk_source_style_scheme_manager_get_default(), static_cast<Glib::ustring>(preferences.appearance.scheme_id).c_str())); 
    230233} 
    231234 
     
    423426} 
    424427 
     428void Gobby::TextSessionView::on_scheme_changed() 
     429{ 
     430        gtk_source_buffer_set_style_scheme(m_buffer, gtk_source_style_scheme_manager_get_scheme(gtk_source_style_scheme_manager_get_default(), static_cast<Glib::ustring>(m_preferences.appearance.scheme_id).c_str())); 
     431} 
     432 
    425433bool Gobby::TextSessionView:: 
    426434        on_query_tooltip(int x, int y, bool keyboard_mode, 
  • code/core/textsessionview.hpp

    r646a4f3 r3c40239  
    103103 
    104104        void on_font_changed(); 
     105        void on_scheme_changed(); 
    105106 
    106107        bool on_query_tooltip(int x, int y, bool keyboard_mode, 
  • code/dialogs/preferences-dialog.cpp

    r89522f2 r3c40239  
    2222 
    2323#include <gtkmm/messagedialog.h> 
     24#include <gtkmm/scrolledwindow.h> 
    2425#include <gtkmm/stock.h> 
    2526#include <stdexcept> 
     27 
     28#include <gtksourceview/gtksourcestyleschememanager.h> 
    2629 
    2730namespace 
     
    206209void Gobby::PreferencesDialog::Group::add(Gtk::Widget& widget) 
    207210{ 
    208         m_box.pack_start(widget, Gtk::PACK_SHRINK); 
     211        m_box.pack_start(widget, Gtk::PACK_EXPAND_WIDGET); 
    209212} 
    210213 
     
    220223} 
    221224 
    222 void Gobby::PreferencesDialog::Page::add(Gtk::Widget& widget) 
    223 { 
    224         m_box.pack_start(widget, Gtk::PACK_SHRINK); 
     225void Gobby::PreferencesDialog::Page::add(Gtk::Widget& widget, bool expand) 
     226{ 
     227        m_box.pack_start(widget, expand ? Gtk::PACK_EXPAND_WIDGET : Gtk::PACK_SHRINK); 
    225228} 
    226229 
     
    290293        // m_group_paths.show(); 
    291294 
    292         add(m_group_settings); 
    293         add(m_group_paths); 
     295        add(m_group_settings, false); 
     296        add(m_group_paths, false); 
    294297} 
    295298 
     
    384387        m_group_saving.show(); 
    385388 
    386         add(m_group_tab); 
    387         add(m_group_indentation); 
    388         add(m_group_homeend); 
    389         add(m_group_saving); 
     389        add(m_group_tab, false); 
     390        add(m_group_indentation, false); 
     391        add(m_group_homeend, false); 
     392        add(m_group_saving, false); 
    390393} 
    391394 
     
    501504        m_group_spaces.show(); 
    502505 
    503         add(m_group_wrap); 
    504         add(m_group_linenum); 
    505         add(m_group_curline); 
    506         add(m_group_margin); 
    507         add(m_group_bracket); 
    508         add(m_group_spaces); 
     506        add(m_group_wrap, false); 
     507        add(m_group_linenum, false); 
     508        add(m_group_curline, false); 
     509        add(m_group_margin, false); 
     510        add(m_group_bracket, false); 
     511        add(m_group_spaces, false); 
    509512} 
    510513 
     
    522525        m_group_toolbar(_("Toolbar") ), 
    523526        m_group_font(_("Font") ), 
    524         m_cmb_toolbar_style(preferences.appearance.toolbar_style) 
     527        m_group_scheme(_("Color Scheme")), 
     528        m_cmb_toolbar_style(preferences.appearance.toolbar_style), 
     529        m_list(Gtk::ListStore::create(m_columns)), 
     530        m_tree(m_list) 
    525531{ 
    526532        const Pango::FontDescription& font = preferences.appearance.font; 
     
    546552        m_group_font.show(); 
    547553 
    548         add(m_group_toolbar); 
    549         add(m_group_font); 
     554        Gtk::TreeViewColumn column_name; 
     555        Gtk::CellRendererText renderer_name; 
     556        column_name.pack_start(renderer_name, false); 
     557        column_name.add_attribute(renderer_name.property_text(), m_columns.name); 
     558 
     559        m_tree.append_column(column_name);//"Scheme Name", m_columns.name); 
     560        m_tree.append_column("Scheme description", m_columns.description); 
     561 
     562        Pango::AttrList list; 
     563        Pango::Attribute attr(Pango::Attribute::create_attr_weight(Pango::WEIGHT_BOLD)); 
     564        list.insert(attr); 
     565        renderer_name.property_attributes() = list; 
     566 
     567        m_tree.set_headers_visible(false); 
     568        m_tree.show(); 
     569 
     570        Gtk::ScrolledWindow* scroll = Gtk::manage(new Gtk::ScrolledWindow); 
     571        scroll->set_shadow_type(Gtk::SHADOW_IN); 
     572        scroll->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); 
     573        scroll->add(m_tree); 
     574        scroll->show(); 
     575 
     576        m_group_scheme.add(*scroll); 
     577        m_group_scheme.show(); 
     578 
     579        GtkSourceStyleSchemeManager* manager = gtk_source_style_scheme_manager_get_default(); 
     580        const gchar* const* ids = gtk_source_style_scheme_manager_get_scheme_ids(manager); 
     581 
     582        Glib::ustring current_scheme = preferences.appearance.scheme_id; 
     583 
     584        for (const gchar* const* id = ids; *id != NULL; ++id) 
     585        { 
     586                GtkSourceStyleScheme* scheme = gtk_source_style_scheme_manager_get_scheme(manager, *id); 
     587                const gchar* name = gtk_source_style_scheme_get_name(scheme); 
     588                const gchar* desc = gtk_source_style_scheme_get_description(scheme); 
     589 
     590                Gtk::TreeIter iter = m_list->append(); 
     591                (*iter)[m_columns.name] = name; 
     592                (*iter)[m_columns.description] = desc; 
     593                (*iter)[m_columns.scheme] = scheme; 
     594 
     595                if (current_scheme == gtk_source_style_scheme_get_id(scheme)) 
     596                        m_tree.get_selection()->select(iter); 
     597        } 
     598 
     599        m_tree.get_selection()->signal_changed().connect( 
     600                sigc::bind( 
     601                        sigc::mem_fun(*this, &Appearance::on_scheme_changed), 
     602                        sigc::ref(preferences))); 
     603 
     604        m_list->set_sort_column_id(m_columns.name, Gtk::SORT_ASCENDING); // This should do it 
     605 
     606        add(m_group_toolbar, false); 
     607        add(m_group_font, false); 
     608        add(m_group_scheme, true); 
     609} 
     610 
     611void Gobby::PreferencesDialog::Appearance::on_scheme_changed(Preferences& preferences) 
     612{ 
     613        Gtk::TreeIter iter = m_tree.get_selection()->get_selected(); 
     614        GtkSourceStyleScheme* scheme = (*iter)[m_columns.scheme]; 
     615        preferences.appearance.scheme_id = gtk_source_style_scheme_get_id(scheme); 
    550616} 
    551617 
     
    579645        m_group_connection_policy.show(); 
    580646 
    581         add(m_group_trust_file); 
    582         add(m_group_connection_policy); 
     647        add(m_group_trust_file, false); 
     648        add(m_group_connection_policy, false); 
    583649} 
    584650 
  • code/dialogs/preferences-dialog.hpp

    r89522f2 r3c40239  
    113113        public: 
    114114                Page(); 
    115                 void add(Gtk::Widget& widget); 
     115                void add(Gtk::Widget& widget, bool expand); 
    116116 
    117117        protected: 
     
    212212 
    213213        protected: 
     214                class Columns: public Gtk::TreeModelColumnRecord 
     215                { 
     216                public: 
     217                        Gtk::TreeModelColumn<GtkSourceStyleScheme*> scheme; 
     218                        Gtk::TreeModelColumn<Glib::ustring> name; 
     219                        Gtk::TreeModelColumn<Glib::ustring> description; 
     220                        Columns() 
     221                        { 
     222                                add(scheme); 
     223                                add(name); 
     224                                add(description); 
     225                        } 
     226                }; 
     227 
     228                void on_scheme_changed(Preferences& preferences); 
     229 
    214230                Group m_group_toolbar; 
    215231                Group m_group_font; 
     232                Group m_group_scheme; 
    216233 
    217234                PreferencesComboBox<Gtk::ToolbarStyle> m_cmb_toolbar_style; 
    218235                Gtk::FontButton m_btn_font; 
     236 
     237                Columns m_columns; 
     238                Glib::RefPtr<Gtk::ListStore> m_list; 
     239                Gtk::TreeView m_tree; 
    219240        }; 
    220241