summaryrefslogtreecommitdiff
path: root/src/gui/triggerSelectWindow.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/triggerSelectWindow.vala')
-rw-r--r--src/gui/triggerSelectWindow.vala248
1 files changed, 0 insertions, 248 deletions
diff --git a/src/gui/triggerSelectWindow.vala b/src/gui/triggerSelectWindow.vala
deleted file mode 100644
index 56781b4..0000000
--- a/src/gui/triggerSelectWindow.vala
+++ /dev/null
@@ -1,248 +0,0 @@
-/////////////////////////////////////////////////////////////////////////
-// Copyright (c) 2011-2015 by Simon Schneegans
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or (at
-// your option) any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-/////////////////////////////////////////////////////////////////////////
-
-namespace GnomePie {
-
-/////////////////////////////////////////////////////////////////////////
-/// This window allows the selection of a hotkey. It is returned in form
-/// of a Trigger. Therefore it can be either a keyboard driven hotkey or
-/// a mouse based hotkey.
-/////////////////////////////////////////////////////////////////////////
-
-public class TriggerSelectWindow : GLib.Object {
-
- /////////////////////////////////////////////////////////////////////
- /// This signal is emitted when the user selects a new hot key.
- /////////////////////////////////////////////////////////////////////
-
- public signal void on_ok(Trigger trigger);
-
- /////////////////////////////////////////////////////////////////////
- /// Some private members which are needed by other methods.
- /////////////////////////////////////////////////////////////////////
-
- private Gtk.Dialog window;
- private Gtk.CheckButton turbo;
- private Gtk.CheckButton delayed;
- private Gtk.CheckButton centered;
- private Gtk.CheckButton warp;
- private Gtk.RadioButton rshape[10];
- private TriggerSelectButton button;
-
- /////////////////////////////////////////////////////////////////////
- /// The currently configured trigger.
- /////////////////////////////////////////////////////////////////////
-
- private Trigger trigger = null;
-
- /////////////////////////////////////////////////////////////////////
- /// The trigger which was active when this window was opened. It is
- /// stored in order to check whether anything has changed when the
- /// user clicks on OK.
- /////////////////////////////////////////////////////////////////////
-
- private Trigger original_trigger = null;
-
- /////////////////////////////////////////////////////////////////////
- /// Radioboxes call toggled() twice per selection change.
- /// This flag is used to discard one of the two notifications.
- /////////////////////////////////////////////////////////////////////
-
- private static int notify_toggle= 0;
-
- /////////////////////////////////////////////////////////////////////
- /// C'tor, constructs a new TriggerSelectWindow.
- /////////////////////////////////////////////////////////////////////
-
- public TriggerSelectWindow() {
- try {
-
- Gtk.Builder builder = new Gtk.Builder();
-
- builder.add_from_file (Paths.ui_files + "/trigger_select.ui");
-
- this.window = builder.get_object("window") as Gtk.Dialog;
- this.button = new TriggerSelectButton(true);
- this.button.show();
-
- this.button.on_select.connect((trigger) => {
- this.trigger = new Trigger.from_values(trigger.key_sym,
- trigger.modifiers,
- trigger.with_mouse,
- this.turbo.active,
- this.delayed.active,
- this.centered.active,
- this.warp.active,
- this.get_radio_shape());
- });
-
- (builder.get_object("trigger-box") as Gtk.Box).pack_start(this.button, true, true);
-
- (builder.get_object("ok-button") as Gtk.Button).clicked.connect(this.on_ok_button_clicked);
- (builder.get_object("cancel-button") as Gtk.Button).clicked.connect(this.on_cancel_button_clicked);
-
- this.turbo = builder.get_object("turbo-check") as Gtk.CheckButton;
- this.turbo.toggled.connect(this.on_check_toggled);
-
- this.delayed = builder.get_object("delay-check") as Gtk.CheckButton;
- this.delayed.toggled.connect(this.on_check_toggled);
-
- this.centered = builder.get_object("center-check") as Gtk.CheckButton;
- this.centered.toggled.connect(this.on_check_toggled);
-
- this.warp = builder.get_object("warp-check") as Gtk.CheckButton;
- this.warp.toggled.connect(this.on_check_toggled);
-
- for (int i= 0; i < 10; i++) {
- this.rshape[i] = builder.get_object("rshape%d".printf(i)) as Gtk.RadioButton;
- this.rshape[i].toggled.connect(this.on_radio_toggled);
- }
-
- this.window.delete_event.connect(this.window.hide_on_delete);
-
- } catch (GLib.Error e) {
- error("Could not load UI: %s\n", e.message);
- }
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Sets the parent window, in order to make this window stay in
- /// front.
- /////////////////////////////////////////////////////////////////////
-
- public void set_parent(Gtk.Window parent) {
- this.window.set_transient_for(parent);
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Displays the window on the screen.
- /////////////////////////////////////////////////////////////////////
-
- public void show() {
- this.window.show_all();
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Initilizes all members to match the Trigger of the Pie with the
- /// given ID.
- /////////////////////////////////////////////////////////////////////
-
- public void set_pie(string id) {
- var trigger = new Trigger.from_string(PieManager.get_accelerator_of(id));
-
- this.turbo.active = trigger.turbo;
- this.delayed.active = trigger.delayed;
- this.centered.active = trigger.centered;
- this.warp.active = trigger.warp;
- this.set_radio_shape( trigger.shape );
- this.original_trigger = trigger;
- this.trigger = trigger;
-
- this.button.set_trigger(trigger);
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Called when one of the checkboxes is toggled.
- /////////////////////////////////////////////////////////////////////
-
- private void on_check_toggled() {
- if (this.trigger != null)
- this.trigger = new Trigger.from_values(this.trigger.key_sym, this.trigger.modifiers,
- this.trigger.with_mouse, this.turbo.active,
- this.delayed.active, this.centered.active,
- this.warp.active,
- this.get_radio_shape());
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Returns the current selected radio-button shape: 0= automatic
- /// 5= full pie; 1,3,7,8= quarters; 2,4,6,8=halves
- /// 1 | 4 | 7
- /// 2 | 5 | 8
- /// 3 | 6 | 9
- /////////////////////////////////////////////////////////////////////
-
- private int get_radio_shape() {
- int rs;
- for (rs= 0; rs < 10; rs++)
- if (this.rshape[rs].active)
- break;
- return rs;
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Sets the current selected radio-button shape: 0= automatic
- /// 5= full pie; 1,3,7,8= quarters; 2,4,6,8=halves
- /////////////////////////////////////////////////////////////////////
-
- private void set_radio_shape(int rs) {
- if (rs < 0 || rs > 9)
- rs= 5; //replace invalid value with default= full pie
- this.rshape[rs].active= true;
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Called twice when one of the radioboxes is toggled.
- /////////////////////////////////////////////////////////////////////
-
- private void on_radio_toggled() {
- notify_toggle= 1 - notify_toggle;
- if (notify_toggle == 1)
- on_check_toggled(); //just call once
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Called when the OK-button is pressed.
- /////////////////////////////////////////////////////////////////////
-
- private void on_ok_button_clicked() {
- var assigned_id = PieManager.get_assigned_id(this.trigger);
-
- if (this.trigger == this.original_trigger) {
- // nothing did change
- this.window.hide();
- } else if (this.trigger.key_code == this.original_trigger.key_code
- && this.trigger.modifiers == this.original_trigger.modifiers
- && this.trigger.with_mouse == this.original_trigger.with_mouse) {
- // only turbo and/or delayed mode changed, no need to check for double assignment
- this.on_ok(this.trigger);
- this.window.hide();
- } else if (assigned_id != "") {
- // it's already assigned
- var error = _("This hotkey is already assigned to the pie \"%s\"! \n\nPlease select " +
- "another one or cancel your selection.").printf(PieManager.get_name_of(assigned_id));
- var dialog = new Gtk.MessageDialog((Gtk.Window)this.window.get_toplevel(), Gtk.DialogFlags.MODAL,
- Gtk.MessageType.ERROR, Gtk.ButtonsType.CANCEL, error);
- dialog.run();
- dialog.destroy();
- } else {
- // a unused hot key has been chosen, great!
- this.on_ok(this.trigger);
- this.window.hide();
- }
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Called when the cancel button is pressed.
- /////////////////////////////////////////////////////////////////////
-
- private void on_cancel_button_clicked() {
- this.window.hide();
- }
-}
-
-}