From b6b7e63e65f76a4e4dcd3275757afbde2030803c Mon Sep 17 00:00:00 2001 From: alsoijw Date: Mon, 13 Jul 2015 18:07:11 +0300 Subject: [PATCH 1/3] add color scheme setting --- cmake/project.cmake | 1 + data/org.valama.gschema.xml | 7 ++++++ src/dialogs/settings.vala | 47 +++++++++++++++++++++++++++++++++++++ src/main.vala | 1 + src/ui_main.vala | 8 +++++++ 5 files changed, 64 insertions(+) create mode 100644 src/dialogs/settings.vala diff --git a/cmake/project.cmake b/cmake/project.cmake index 7ca1600..4bdadff 100644 --- a/cmake/project.cmake +++ b/cmake/project.cmake @@ -49,6 +49,7 @@ set(srcfiles "src/dialogs/create_file.vala" "src/dialogs/missing_packages.vala" "src/dialogs/project_settings.vala" + "src/dialogs/settings.vala" "src/main.vala" "src/project/build_project.vala" "src/project/package_management.vala" diff --git a/data/org.valama.gschema.xml b/data/org.valama.gschema.xml index fe40a7f..8a82139 100644 --- a/data/org.valama.gschema.xml +++ b/data/org.valama.gschema.xml @@ -15,5 +15,12 @@ + + "classic" + Current color scheme + + + + diff --git a/src/dialogs/settings.vala b/src/dialogs/settings.vala new file mode 100644 index 0000000..94ed471 --- /dev/null +++ b/src/dialogs/settings.vala @@ -0,0 +1,47 @@ +using Gtk; + +public SourceStyleScheme source_style; + +void load_source_style() { + var settings = new GLib.Settings ("org.valama"); + var s = new SourceStyleSchemeManager (); + source_style = s.get_scheme (settings.get_string ("current-color-scheme")); + if(source_style == null) { + stderr.printf(" \x1b[31mCouldn't load source style\n\x1b[0m"); + } +} + +void select_item(ListBoxRow? row) { + var item = (Label)row.get_child (); + var settings = new GLib.Settings ("org.valama"); + settings.set_string ("current-color-scheme", item.label); + load_source_style (); +} + +public class IDESettingsWindow : Window { + string[] color_scheme_list; + string current_color_scheme; + + public IDESettingsWindow () { + this.title = "IDE Settings"; + this.window_position = WindowPosition.CENTER; + this.set_default_size (400, 400); + var settings = new GLib.Settings ("org.valama"); + current_color_scheme = settings.get_string ("current-color-scheme"); + var notebook = new Notebook (); + this.add (notebook); + var manager = new SourceStyleSchemeManager (); + color_scheme_list = manager.get_scheme_ids (); + var items = new ListBox (); + for(var i = 0; i < color_scheme_list.length; i++) { + items.insert(new Label(color_scheme_list[i]), i); + if(color_scheme_list[i] == current_color_scheme) { + items.select_row (items.get_row_at_index (i)); + } + } + items.row_selected.connect(select_item); + var scrolled = new ScrolledWindow (null, null); + scrolled.add (items); + notebook.append_page (scrolled, new Label ("Color scheme")); + } +} diff --git a/src/main.vala b/src/main.vala index 8e68a64..bae7098 100644 --- a/src/main.vala +++ b/src/main.vala @@ -86,6 +86,7 @@ public static int main (string[] args) { } load_icons(); + load_source_style(); gtk_app = new Valama (); return gtk_app.run(); diff --git a/src/ui_main.vala b/src/ui_main.vala index 5f40a64..45df7f5 100644 --- a/src/ui_main.vala +++ b/src/ui_main.vala @@ -522,6 +522,14 @@ public class MainWidget : Box { this.menu.append (item_help_about); item_help_about.activate.connect (ui_about_dialog); + /* IDE Setting */ + var item_setting = new ImageMenuItem.with_mnemonic (_("_IDE Setting")); + this.menu.append (item_setting); + item_setting.activate.connect ( () => { + var settings_window = new IDESettingsWindow (); + settings_window.show_all (); + } ); + /* Quit */ var item_file_quit = new ImageMenuItem.with_mnemonic (_("_Quit")); var image_file_quit = new Image(); From 919e28c60bb8335436636ba5811297a70999d08f Mon Sep 17 00:00:00 2001 From: alsoijw Date: Tue, 14 Jul 2015 11:26:10 +0300 Subject: [PATCH 2/3] Fixed a problem loading scheme --- src/ui/super_source_view.vala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/super_source_view.vala b/src/ui/super_source_view.vala index a26591d..b182e0f 100644 --- a/src/ui/super_source_view.vala +++ b/src/ui/super_source_view.vala @@ -26,6 +26,7 @@ using Vala; public class SuperSourceView : Gtk.SourceView { public SuperSourceView(SourceBuffer bfr) { this.buffer = bfr; + bfr.style_scheme = source_style; int old_line = -1; this.motion_notify_event.connect ((event)=>{ From 453b57188eb45b57a5d18b99102dc1cc4386c012 Mon Sep 17 00:00:00 2001 From: alsoijw Date: Wed, 7 Oct 2015 21:39:32 +0300 Subject: [PATCH 3/3] Automatically update all source files when the theme is changed --- src/dialogs/settings.vala | 20 +++++++++++--------- src/ui/super_source_view.vala | 5 ++++- src/ui_main.vala | 3 ++- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/dialogs/settings.vala b/src/dialogs/settings.vala index 94ed471..c772fbd 100644 --- a/src/dialogs/settings.vala +++ b/src/dialogs/settings.vala @@ -11,16 +11,10 @@ void load_source_style() { } } -void select_item(ListBoxRow? row) { - var item = (Label)row.get_child (); - var settings = new GLib.Settings ("org.valama"); - settings.set_string ("current-color-scheme", item.label); - load_source_style (); -} - public class IDESettingsWindow : Window { - string[] color_scheme_list; - string current_color_scheme; + private string[] color_scheme_list; + private string current_color_scheme; + public signal void color_scheme_changed(); public IDESettingsWindow () { this.title = "IDE Settings"; @@ -44,4 +38,12 @@ public class IDESettingsWindow : Window { scrolled.add (items); notebook.append_page (scrolled, new Label ("Color scheme")); } + + private void select_item(ListBoxRow? row) { + var item = (Label)row.get_child (); + var settings = new GLib.Settings ("org.valama"); + settings.set_string ("current-color-scheme", item.label); + load_source_style (); + color_scheme_changed(); + } } diff --git a/src/ui/super_source_view.vala b/src/ui/super_source_view.vala index b182e0f..298881d 100644 --- a/src/ui/super_source_view.vala +++ b/src/ui/super_source_view.vala @@ -26,7 +26,10 @@ using Vala; public class SuperSourceView : Gtk.SourceView { public SuperSourceView(SourceBuffer bfr) { this.buffer = bfr; - bfr.style_scheme = source_style; + settings_window.color_scheme_changed.connect( () => { + bfr.style_scheme = source_style; + this.queue_draw () ; + }); int old_line = -1; this.motion_notify_event.connect ((event)=>{ diff --git a/src/ui_main.vala b/src/ui_main.vala index 45df7f5..97c5a02 100644 --- a/src/ui_main.vala +++ b/src/ui_main.vala @@ -46,6 +46,7 @@ static UiValadocBrowser wdg_valadoc_browser; static Gee.HashMap map_icons; +static IDESettingsWindow settings_window; /** * Main window class. Setup {@link Gdl.Dock} and {@link Gdl.DockBar} stuff. @@ -186,6 +187,7 @@ public class MainWidget : Box { * Initialize ui_elements, menu and toolbars. */ public void init() { + settings_window = new IDESettingsWindow (); source_viewer = new UiSourceViewer(); source_viewer.add_srcitem (project.open_new_buffer ("", "", true)); @@ -526,7 +528,6 @@ public class MainWidget : Box { var item_setting = new ImageMenuItem.with_mnemonic (_("_IDE Setting")); this.menu.append (item_setting); item_setting.activate.connect ( () => { - var settings_window = new IDESettingsWindow (); settings_window.show_all (); } );