Enable some keyboard shortcuts for the inspector
This commit is contained in:
parent
ccde37c20d
commit
d87a2b02e0
3 changed files with 71 additions and 18 deletions
|
|
@ -355,6 +355,7 @@ public class GearyApplication : Gtk.Application {
|
|||
add_window_accelerators(ACTION_UNDO, { "<Ctrl>Z" });
|
||||
|
||||
ComposerWidget.add_window_accelerators(this);
|
||||
Components.Inspector.add_window_accelerators(this);
|
||||
|
||||
yield controller.open_async(null);
|
||||
|
||||
|
|
|
|||
|
|
@ -10,11 +10,31 @@
|
|||
* A window that displays debugging and development information.
|
||||
*/
|
||||
[GtkTemplate (ui = "/org/gnome/Geary/components-inspector.ui")]
|
||||
public class Components.Inspector : Gtk.Window {
|
||||
public class Components.Inspector : Gtk.ApplicationWindow {
|
||||
|
||||
|
||||
private const int COL_MESSAGE = 0;
|
||||
|
||||
private const string ACTION_CLOSE = "inspector-close";
|
||||
private const string ACTION_PLAY_TOGGLE = "toggle-play";
|
||||
private const string ACTION_SEARCH_TOGGLE = "toggle-search";
|
||||
private const string ACTION_SEARCH_ACTIVATE = "activate-search";
|
||||
|
||||
private const ActionEntry[] action_entries = {
|
||||
{GearyApplication.ACTION_CLOSE, on_close },
|
||||
{GearyApplication.ACTION_COPY, on_copy_clicked },
|
||||
{ACTION_CLOSE, on_close },
|
||||
{ACTION_PLAY_TOGGLE, on_logs_play_toggled, null, "true" },
|
||||
{ACTION_SEARCH_TOGGLE, on_logs_search_toggled, null, "false" },
|
||||
{ACTION_SEARCH_ACTIVATE, on_logs_search_activated },
|
||||
};
|
||||
|
||||
public static void add_window_accelerators(GearyApplication app) {
|
||||
app.add_window_accelerators(ACTION_CLOSE, { "Escape" } );
|
||||
app.add_window_accelerators(ACTION_PLAY_TOGGLE, { "space" } );
|
||||
app.add_window_accelerators(ACTION_SEARCH_ACTIVATE, { "<Ctrl>F" } );
|
||||
}
|
||||
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.HeaderBar header_bar;
|
||||
|
|
@ -72,8 +92,11 @@ public class Components.Inspector : Gtk.Window {
|
|||
|
||||
|
||||
public Inspector(GearyApplication app) {
|
||||
Object(application: app);
|
||||
this.title = this.header_bar.title = _("Inspector");
|
||||
|
||||
add_action_entries(Inspector.action_entries, this);
|
||||
|
||||
this.search_bar.connect_entry(this.search_entry);
|
||||
|
||||
GLib.Settings system = app.config.gnome_interface;
|
||||
|
|
@ -139,7 +162,26 @@ public class Components.Inspector : Gtk.Window {
|
|||
}
|
||||
|
||||
public override bool key_press_event(Gdk.EventKey event) {
|
||||
bool ret = this.search_bar.handle_event(event);
|
||||
bool ret = Gdk.EVENT_PROPAGATE;
|
||||
|
||||
if (this.search_bar.search_mode_enabled &&
|
||||
event.keyval == Gdk.Key.Escape) {
|
||||
// Manually deactivate search so the button stays in sync
|
||||
this.search_button.set_active(false);
|
||||
ret = Gdk.EVENT_STOP;
|
||||
}
|
||||
|
||||
if (ret == Gdk.EVENT_PROPAGATE) {
|
||||
ret = this.search_bar.handle_event(event);
|
||||
}
|
||||
|
||||
if (ret == Gdk.EVENT_PROPAGATE &&
|
||||
this.search_bar.search_mode_enabled) {
|
||||
// Ensure <Space> and others are passed to the search
|
||||
// entry before getting used as an accelerator.
|
||||
ret = this.search_entry.key_press_event(event);
|
||||
}
|
||||
|
||||
if (ret == Gdk.EVENT_PROPAGATE) {
|
||||
ret = base.key_press_event(event);
|
||||
}
|
||||
|
|
@ -234,7 +276,6 @@ public class Components.Inspector : Gtk.Window {
|
|||
update_ui();
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_copy_clicked() {
|
||||
string clipboard_value = "";
|
||||
if (this.stack.visible_child == this.logs_pane) {
|
||||
|
|
@ -292,11 +333,6 @@ public class Components.Inspector : Gtk.Window {
|
|||
}
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_search_clicked() {
|
||||
this.search_bar.set_search_mode(!this.search_bar.get_search_mode());
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_logs_size_allocate() {
|
||||
if (this.autoscroll) {
|
||||
|
|
@ -309,11 +345,23 @@ public class Components.Inspector : Gtk.Window {
|
|||
update_ui();
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_logs_play_toggled(Gtk.ToggleButton button) {
|
||||
if (this.update_logs != button.active) {
|
||||
enable_log_updates(button.active);
|
||||
}
|
||||
private void on_logs_search_toggled(GLib.SimpleAction action,
|
||||
GLib.Variant? param) {
|
||||
bool enabled = !((bool) action.state);
|
||||
this.search_bar.set_search_mode(enabled);
|
||||
action.set_state(enabled);
|
||||
}
|
||||
|
||||
private void on_logs_search_activated() {
|
||||
this.search_button.set_active(true);
|
||||
this.search_entry.grab_focus();
|
||||
}
|
||||
|
||||
private void on_logs_play_toggled(GLib.SimpleAction action,
|
||||
GLib.Variant? param) {
|
||||
bool enabled = !((bool) action.state);
|
||||
enable_log_updates(enabled);
|
||||
action.set_state(enabled);
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
|
|
@ -337,6 +385,10 @@ public class Components.Inspector : Gtk.Window {
|
|||
}
|
||||
}
|
||||
|
||||
private void on_close() {
|
||||
destroy();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<template class="ComponentsInspector" parent="GtkWindow">
|
||||
<template class="ComponentsInspector" parent="GtkApplicationWindow">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="default_width">750</property>
|
||||
<property name="default_height">500</property>
|
||||
|
|
@ -29,8 +29,8 @@
|
|||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Tooltip for inspector button">Togggle appending new log entries</property>
|
||||
<property name="action_name">win.toggle-play</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="toggled" handler="on_logs_play_toggled" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
|
|
@ -41,12 +41,12 @@
|
|||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="search_button">
|
||||
<object class="GtkToggleButton" id="search_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Tooltip for inspector button">Search fo matching log entries</property>
|
||||
<signal name="clicked" handler="on_search_clicked" swapped="no"/>
|
||||
<property name="action_name">win.toggle-search</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
|
|
@ -92,7 +92,7 @@
|
|||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Tooltip for inspector button">Copy selected log entries</property>
|
||||
<signal name="clicked" handler="on_copy_clicked" swapped="no"/>
|
||||
<property name="action_name">win.copy</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue