|
Packit Service |
f2b131 |
/*
|
|
Packit Service |
f2b131 |
This file is part of Dconf Editor
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
Dconf Editor is free software: you can redistribute it and/or modify
|
|
Packit Service |
f2b131 |
it under the terms of the GNU General Public License as published by
|
|
Packit Service |
f2b131 |
the Free Software Foundation, either version 3 of the License, or
|
|
Packit Service |
f2b131 |
(at your option) any later version.
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
Dconf Editor is distributed in the hope that it will be useful,
|
|
Packit Service |
f2b131 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
f2b131 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit Service |
f2b131 |
GNU General Public License for more details.
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
You should have received a copy of the GNU General Public License
|
|
Packit Service |
f2b131 |
along with Dconf Editor. If not, see <https://www.gnu.org/licenses/>.
|
|
Packit Service |
f2b131 |
*/
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
using Gtk;
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
[GtkTemplate (ui = "/ca/desrt/dconf-editor/ui/browser-stack.ui")]
|
|
Packit Service |
f2b131 |
class BrowserStack : Grid
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
[GtkChild] private Stack stack;
|
|
Packit Service |
f2b131 |
[GtkChild] private RegistryView folder_view;
|
|
Packit Service |
f2b131 |
[GtkChild] private RegistryInfo object_view;
|
|
Packit Service |
f2b131 |
[GtkChild] private RegistrySearch search_view;
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public ViewType current_view { get; private set; default = ViewType.FOLDER; }
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public bool small_keys_list_rows
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
set
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
folder_view.small_keys_list_rows = value;
|
|
Packit Service |
f2b131 |
search_view.small_keys_list_rows = value;
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public ModificationsHandler modifications_handler
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
set {
|
|
Packit Service |
f2b131 |
folder_view.modifications_handler = value;
|
|
Packit Service |
f2b131 |
object_view.modifications_handler = value;
|
|
Packit Service |
f2b131 |
search_view.modifications_handler = value;
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
/*\
|
|
Packit Service |
f2b131 |
* * Views
|
|
Packit Service |
f2b131 |
\*/
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public string get_selected_row_name ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
return ((RegistryList) stack.get_visible_child ()).get_selected_row_name ();
|
|
Packit Service |
f2b131 |
return object_view.full_name;
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void prepare_folder_view (GLib.ListStore key_model, bool is_ancestor)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
folder_view.set_key_model (key_model);
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
stack.set_transition_type (is_ancestor && current_view != ViewType.SEARCH ? StackTransitionType.CROSSFADE : StackTransitionType.NONE);
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void select_row (string selected, string last_context)
|
|
Packit Service |
f2b131 |
requires (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (selected == "")
|
|
Packit Service |
f2b131 |
((RegistryList) stack.get_visible_child ()).select_first_row ();
|
|
Packit Service |
f2b131 |
else
|
|
Packit Service |
f2b131 |
((RegistryList) stack.get_visible_child ()).select_row_named (selected, last_context, current_view == ViewType.FOLDER);
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void prepare_object_view (Key key, bool is_parent)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
object_view.populate_properties_list_box (key);
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
stack.set_transition_type (is_parent && current_view != ViewType.SEARCH ? StackTransitionType.CROSSFADE : StackTransitionType.NONE);
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void set_path (ViewType type, string path)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
// might become “bool clear = type != current_view”, one day…
|
|
Packit Service |
f2b131 |
bool clean_object_view = type == ViewType.FOLDER; // note: not on search
|
|
Packit Service |
f2b131 |
bool clean_search_view = current_view == ViewType.SEARCH && type != ViewType.SEARCH;
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
current_view = type;
|
|
Packit Service |
f2b131 |
if (type == ViewType.FOLDER)
|
|
Packit Service |
f2b131 |
stack.set_visible_child (folder_view);
|
|
Packit Service |
f2b131 |
else if (type == ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
stack.set_visible_child (object_view);
|
|
Packit Service |
f2b131 |
else // (type == ViewType.SEARCH)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
search_view.start_search (path);
|
|
Packit Service |
f2b131 |
stack.set_transition_type (StackTransitionType.NONE);
|
|
Packit Service |
f2b131 |
stack.set_visible_child (search_view);
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
if (clean_object_view)
|
|
Packit Service |
f2b131 |
object_view.clean ();
|
|
Packit Service |
f2b131 |
if (clean_search_view)
|
|
Packit Service |
f2b131 |
search_view.clean ();
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public string? get_copy_text ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
return ((BrowsableView) stack.get_visible_child ()).get_copy_text ();
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public string? get_copy_path_text ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view == ViewType.SEARCH)
|
|
Packit Service |
f2b131 |
return search_view.get_copy_path_text ();
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
warning ("BrowserView get_copy_path_text() called but current view is not search results view.");
|
|
Packit Service |
f2b131 |
return null;
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public bool show_row_popover ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
return ((RegistryList) stack.get_visible_child ()).show_row_popover ();
|
|
Packit Service |
f2b131 |
return false;
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void toggle_boolean_key ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
((RegistryList) stack.get_visible_child ()).toggle_boolean_key ();
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void set_selected_to_default ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
((RegistryList) stack.get_visible_child ()).set_selected_to_default ();
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void discard_row_popover ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
((RegistryList) stack.get_visible_child ()).discard_row_popover ();
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void invalidate_popovers ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
folder_view.invalidate_popovers ();
|
|
Packit Service |
f2b131 |
search_view.invalidate_popovers ();
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
/*\
|
|
Packit Service |
f2b131 |
* * Reload
|
|
Packit Service |
f2b131 |
\*/
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public void set_search_parameters (string current_path, string [] bookmarks, SortingOptions sorting_options)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
search_view.set_search_parameters (current_path, bookmarks, sorting_options);
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public bool check_reload_folder (GLib.ListStore fresh_key_model)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
return folder_view.check_reload (fresh_key_model);
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public bool check_reload_object (Variant properties)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
return object_view.check_reload (properties);
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
/*\
|
|
Packit Service |
f2b131 |
* * Keyboard calls
|
|
Packit Service |
f2b131 |
\*/
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public bool return_pressed ()
|
|
Packit Service |
f2b131 |
requires (current_view == ViewType.SEARCH)
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
return search_view.return_pressed ();
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public bool up_pressed ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
return ((RegistryList) stack.get_visible_child ()).up_or_down_pressed (false);
|
|
Packit Service |
f2b131 |
return false;
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public bool down_pressed ()
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
if (current_view != ViewType.OBJECT)
|
|
Packit Service |
f2b131 |
return ((RegistryList) stack.get_visible_child ()).up_or_down_pressed (true);
|
|
Packit Service |
f2b131 |
return false;
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
}
|
|
Packit Service |
f2b131 |
|
|
Packit Service |
f2b131 |
public interface BrowsableView
|
|
Packit Service |
f2b131 |
{
|
|
Packit Service |
f2b131 |
public abstract string? get_copy_text ();
|
|
Packit Service |
f2b131 |
}
|