From d1f9127ba495befce6dc0bdc13b340d6fc157cc5 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Thu, 26 Apr 2018 15:16:53 +0300 Subject: [PATCH] Closes #2: Preferences->Plugin Settings (Button). --- src/PreferencesWindow.vala | 68 +++++++++++++++ ui/glade/laview-desktop.glade | 154 ++++++++++++++++++++++------------ 2 files changed, 167 insertions(+), 55 deletions(-) diff --git a/src/PreferencesWindow.vala b/src/PreferencesWindow.vala index d7f039a..654bfae 100644 --- a/src/PreferencesWindow.vala +++ b/src/PreferencesWindow.vala @@ -12,6 +12,8 @@ namespace LAview.Desktop { FileChooserButton filechooserbutton_lyx; FileChooserButton filechooserbutton_latexmk; FileChooserButton filechooserbutton_perl; + TreeView treeview_data; + TreeView treeview_protocol_objects; public PreferencesDialog (Gtk.Application application, Window parent) throws Error { var builder = new Builder (); @@ -28,6 +30,8 @@ namespace LAview.Desktop { filechooserbutton_lyx = builder.get_object ("filechooserbutton_lyx") as FileChooserButton; filechooserbutton_latexmk = builder.get_object ("filechooserbutton_latexmk") as FileChooserButton; filechooserbutton_perl = builder.get_object ("filechooserbutton_perl") as FileChooserButton; + treeview_data = builder.get_object ("treeview_data") as TreeView; + treeview_protocol_objects = builder.get_object ("treeview_protocol_objects") as TreeView; fill_liststore_data (); fill_liststore_objects (); @@ -79,6 +83,70 @@ namespace LAview.Desktop { AppCore.core.perl_path = chooser.get_filename (); } + int[] get_data_indices () { + var selection = treeview_data.get_selection (); + var selected_rows = selection.get_selected_rows (null); + int[] indices = {}; + foreach (var r in selected_rows) { + indices += r.get_indices()[0]; + } + return indices; + } + + int[] get_objects_indices () { + var selection = treeview_protocol_objects.get_selection (); + var selected_rows = selection.get_selected_rows (null); + int[] indices = {}; + foreach (var r in selected_rows) { + indices += r.get_indices()[0]; + } + return indices; + } + + void call_data_preferences () { + var indices = get_data_indices (); + for (int i = indices.length; i > 0;) + foreach (var p in AppCore.core.data_plugins.entries) + if (indices[--i] == 0) { + p.value.preferences(); + break; + } + } + + void call_object_preferences () { + var indices = get_objects_indices (); + for (int i = indices.length; i > 0;) + foreach (var p in AppCore.core.object_plugins.entries) + if (indices[--i] == 0) { + p.value.preferences(); + break; + } + } + + [CCode (instance_pos = -1)] + public void button_data_preferences_clicked (Button button) { + call_data_preferences(); + } + + [CCode (instance_pos = -1)] + public void button_object_preferences_clicked (Button button) { + call_object_preferences(); + } + + [CCode (instance_pos = -1)] + public void data_row_activated (Gtk.TreeView treeview, + Gtk.TreePath path, + Gtk.TreeViewColumn column) { + call_data_preferences(); + } + + [CCode (instance_pos = -1)] + public void objects_row_activated (Gtk.TreeView treeview, + Gtk.TreePath path, + Gtk.TreeViewColumn column) { + call_object_preferences(); + } + [CCode (instance_pos = -1)] public void button_search_clicked (Button button) { diff --git a/ui/glade/laview-desktop.glade b/ui/glade/laview-desktop.glade index e075d00..6cc50c5 100644 --- a/ui/glade/laview-desktop.glade +++ b/ui/glade/laview-desktop.glade @@ -1,5 +1,5 @@ - + @@ -37,6 +37,9 @@ + + + @@ -300,60 +303,6 @@ False - - - True - False - vertical - - - True - True - in - - - True - True - liststore_protocol_objects - - - - - - Object plugins - - - - 0 - - - - - - - - - True - True - 0 - - - - - 1 - - - - - True - False - Object plugins - - - 1 - False - - True @@ -369,6 +318,7 @@ True True liststore_data + @@ -392,6 +342,21 @@ 0 + + + gtk-preferences + True + True + True + True + + + + False + True + 1 + + 2 @@ -408,6 +373,76 @@ False + + + True + False + vertical + + + True + True + in + + + True + True + liststore_protocol_objects + + + + + + + Object plugins + + + + 0 + + + + + + + + + True + True + 0 + + + + + gtk-preferences + True + True + True + True + + + + False + True + 1 + + + + + 2 + + + + + True + False + Object plugins + + + 2 + False + + True @@ -417,6 +452,9 @@ + + + @@ -1146,6 +1184,9 @@ + + + 640 @@ -1207,5 +1248,8 @@ + + +