diff --git a/gui/gui.cpp b/gui/gui.cpp index 2827935b..e9af6261 100644 --- a/gui/gui.cpp +++ b/gui/gui.cpp @@ -105,58 +105,6 @@ static void on_fav_toggled() -/* - * Keyboard shortcuts - */ -static bool on_window_key_pressed(GdkEventKey *event) -{ - Gtk::Notebook *notebook = lib :: get_widget("o_notebook"); - Gtk::Window *window = lib :: get_widget("o_window"); - std::string key = gdk_keyval_name(event->keyval); - - if (key.size() >= 3) { - if (key.substr(0, 3) == "KP_") - key = key.substr(3); - } - - if (key == "Escape") - window->set_focus(*window); - else if (key == "slash") - tab_focus_search(); - else if (key >= "0" && key <= "9") { - unsigned int n = atoi(key.c_str()); - if (n < deck::get_queues().size()) - notebook->set_current_page(n); - } else if (key == "c") - notebook->set_current_page(deck::get_queues().size()); - else if (key == "h") - notebook->set_current_page(deck::get_queues().size() + 1); - else if (key == "m") - notebook->set_current_page(deck::get_queues().size() + 3); - else if (key == "n") - o_next(); - else if (key == "N") - audio :: prev(); - else if (key == "p") - notebook->set_current_page(deck::get_queues().size() + 2); - else - return false; - return true; -} - -static bool on_window_key_released(GdkEventKey *event) -{ - std::string key = gdk_keyval_name(event->keyval); - - if (key == "space") - o_toggle(); - else - return false; - return true; -} - - - /* * Idle func */ @@ -213,8 +161,6 @@ Gtk::Window *setup_gui() /* Keyboard shortcuts */ Gtk::Window *window = window_init(); - window->signal_key_press_event().connect(sigc::ptr_fun(on_window_key_pressed)); - window->signal_key_release_event().connect(sigc::ptr_fun(on_window_key_released)); window->set_can_focus(); window->set_icon_from_file(lib :: share_file("ocarina.png")); diff --git a/gui/window.cpp b/gui/window.cpp index ae3b9954..27e7cb3b 100644 --- a/gui/window.cpp +++ b/gui/window.cpp @@ -1,16 +1,69 @@ /* * Copyright 2014 (c) Anna Schumaker. */ +#include +#include #include +#include #include +#include const std::string appname = "Ocarina "; +static bool on_window_key_pressed(GdkEventKey *event) +{ + Gtk::Notebook *notebook = lib :: get_widget("o_notebook"); + Gtk::Window *window = lib :: get_widget("o_window"); + std::string key = gdk_keyval_name(event->keyval); + + if (key.size() >= 3) { + if (key.substr(0, 3) == "KP_") + key = key.substr(3); + } + + if (key == "Escape") + window->set_focus(*window); + else if (key == "slash") + tab_focus_search(); + else if (key >= "0" && key <= "9") { + unsigned int n = atoi(key.c_str()); + if (n < deck::get_queues().size()) + notebook->set_current_page(n); + } else if (key == "c") + notebook->set_current_page(deck::get_queues().size()); + else if (key == "h") + notebook->set_current_page(deck::get_queues().size() + 1); + else if (key == "m") + notebook->set_current_page(deck::get_queues().size() + 3); + else if (key == "n") + o_next(); + else if (key == "N") + audio :: prev(); + else if (key == "p") + notebook->set_current_page(deck::get_queues().size() + 2); + else + return false; + return true; +} + +static bool on_window_key_released(GdkEventKey *event) +{ + std::string key = gdk_keyval_name(event->keyval); + + if (key == "space") + o_toggle(); + else + return false; + return true; +} + Gtk::Window *window_init() { Gtk::Window *window = lib :: get_widget("o_window"); window->set_title(appname + get_version()); + window->signal_key_press_event().connect(sigc::ptr_fun(on_window_key_pressed)); + window->signal_key_release_event().connect(sigc::ptr_fun(on_window_key_released)); return window; }