[gnome-documents] toolbar: add a Search button
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-documents] toolbar: add a Search button
- Date: Thu, 19 Jul 2012 18:49:58 +0000 (UTC)
commit e18ec7830a21ce7c001b10094fa8db138b7484d0
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Thu Jul 19 13:20:50 2012 -0400
toolbar: add a Search button
In both overview and preview modes.
https://bugzilla.gnome.org/show_bug.cgi?id=668727
src/application.js | 11 +++++++++++
src/mainToolbar.js | 14 ++++++++------
src/mainWindow.js | 5 -----
src/preview.js | 3 +++
src/searchbar.js | 26 +++++++++++++++++---------
src/utils.js | 13 -------------
6 files changed, 39 insertions(+), 33 deletions(-)
---
diff --git a/src/application.js b/src/application.js
index 0c204ff..ac5b441 100644
--- a/src/application.js
+++ b/src/application.js
@@ -137,6 +137,17 @@ const Application = new Lang.Class({
doc.print(this._mainWindow.window);
}));
this.add_action(printAction);
+
+ // search toolbar button
+ let searchAction = Gio.SimpleAction.new_stateful('search',
+ null, GLib.Variant.new('b', false));
+ searchAction.connect('activate', Lang.bind(this,
+ function() {
+ let state = searchAction.get_state();
+ searchAction.change_state(GLib.Variant.new('b', !state.get_boolean()));
+ }));
+ this.add_action(searchAction);
+ this.add_accelerator('<Primary>f', 'app.search', null);
},
_initAppMenu: function() {
diff --git a/src/mainToolbar.js b/src/mainToolbar.js
index 6ce23f8..2f9a304 100644
--- a/src/mainToolbar.js
+++ b/src/mainToolbar.js
@@ -36,10 +36,6 @@ const Mainloop = imports.mainloop;
const Global = imports.global;
const Searchbar = imports.searchbar;
const Tweener = imports.util.tweener;
-const WindowMode = imports.windowMode;
-
-const EvView = imports.gi.EvinceView;//for printing
-const Notifications = imports.notifications;//for printing
const MainToolbar = new Lang.Class({
Name: 'MainToolbar',
@@ -72,8 +68,10 @@ const MainToolbar = new Lang.Class({
return res;
},
- toggleSearch: function() {
- this._searchbar.toggle();
+ addSearchButton: function() {
+ let searchButton =
+ this.widget.add_toggle('edit-find-symbolic', _("Search"), false);
+ searchButton.action_name = 'app.search';
}
});
@@ -199,6 +197,8 @@ const OverviewToolbar = new Lang.Class({
this.widget.get_style_context().add_class('documents-selection-mode');
this.widget.reset_style();
+ this.addSearchButton();
+
let selectionButton =
this.widget.add_button(null, _("Done"), false);
selectionButton.connect('clicked', Lang.bind(this,
@@ -232,6 +232,8 @@ const OverviewToolbar = new Lang.Class({
},
_populateForOverview: function() {
+ this.addSearchButton();
+
let selectionButton =
this.widget.add_button('emblem-default-symbolic', _("Select Items"), false);
selectionButton.connect('clicked', Lang.bind(this,
diff --git a/src/mainWindow.js b/src/mainWindow.js
index 1c8a7b6..cc0b702 100644
--- a/src/mainWindow.js
+++ b/src/mainWindow.js
@@ -142,11 +142,6 @@ const MainWindow = new Lang.Class({
_onKeyPressEvent: function(widget, event) {
let toolbar = this._embed.getMainToolbar();
- if (Utils.isSearchEvent(event)) {
- toolbar.toggleSearch();
- return true;
- }
-
if (toolbar.handleEvent(event))
return true;
diff --git a/src/preview.js b/src/preview.js
index 41149cb..1bdb9b8 100644
--- a/src/preview.js
+++ b/src/preview.js
@@ -311,6 +311,9 @@ const PreviewToolbar = new Lang.Class({
Global.documentManager.setActiveItem(null);
}));
+ // search button, on the right of the toolbar
+ this.addSearchButton();
+
// menu button, on the right of the toolbar
let menuModel = new Gio.Menu();
menuModel.append_item(Gio.MenuItem.new(_("Open"), 'app.open-current'));
diff --git a/src/searchbar.js b/src/searchbar.js
index 979246c..1654c26 100644
--- a/src/searchbar.js
+++ b/src/searchbar.js
@@ -21,6 +21,7 @@
const Gd = imports.gi.Gd;
const Gdk = imports.gi.Gdk;
+const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const GtkClutter = imports.gi.GtkClutter;
const Tracker = imports.gi.Tracker;
@@ -299,7 +300,7 @@ const Searchbar = new Lang.Class({
let keyval = event.get_keyval()[1];
if (keyval == Gdk.KEY_Escape) {
- this.hide();
+ Global.application.change_action_state('search', GLib.Variant.new('b', false));
return true;
}
@@ -320,6 +321,20 @@ const Searchbar = new Lang.Class({
}));
}));
+ // connect to the search action state for visibility
+ let searchStateId = Global.application.connect('action-state-changed::search', Lang.bind(this,
+ function(source, actionName, state) {
+ if (state.get_boolean())
+ this.show();
+ else
+ this.hide();
+ }));
+ this.widget.connect('destroy', Lang.bind(this,
+ function() {
+ Global.application.disconnect(searchStateId);
+ Global.application.change_action_state('search', GLib.Variant.new('b', false));
+ }));
+
this.widget.show_all();
},
@@ -361,19 +376,12 @@ const Searchbar = new Lang.Class({
handled = true;
if (!this._in)
- this.show();
+ Global.application.change_action_state('search', GLib.Variant.new('b', true));
}
return handled;
},
- toggle: function() {
- if (this._visible)
- this.hide();
- else
- this.show();
- },
-
show: function() {
let eventDevice = Gtk.get_current_event_device();
diff --git a/src/utils.js b/src/utils.js
index d3f060c..9dd6b22 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -97,19 +97,6 @@ function getURNFromPath(path, model) {
return id;
}
-function isSearchEvent(event) {
- let keyval = event.get_keyval()[1];
- let state = event.get_state()[1];
-
- let retval =
- (((keyval == Gdk.KEY_f) &&
- ((state & Gdk.ModifierType.CONTROL_MASK) != 0)) ||
- ((keyval == Gdk.KEY_s) &&
- ((state & Gdk.ModifierType.CONTROL_MASK) != 0)));
-
- return retval;
-}
-
function alphaGtkWidget(widget) {
widget.override_background_color(0, new Gdk.RGBA({ red: 0,
green: 0,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]