#include <gtkmm/accelkey.h>
#include "pbd/stateful.h"
+#include "pbd/signals.h"
#include "gtkmm2ext/visibility.h"
namespace Gtkmm2ext {
+class Bindings;
+
class LIBGTKMM2EXT_API Keyboard : public sigc::trackable, PBD::Stateful
{
public:
static const char* secondary_modifier_name ();
static const char* tertiary_modifier_name ();
static const char* level4_modifier_name ();
- static const char* rangeselect_modifier_name ();
static void set_primary_modifier (uint32_t newval) {
set_modifier (newval, PrimaryModifier);
static void keybindings_changed ();
static void save_keybindings ();
- static bool load_keybindings (std::string path);
static void set_can_save_keybindings (bool yn);
static std::string current_binding_name () { return _current_binding_name; }
static std::map<std::string,std::string> binding_files;
- int reset_bindings ();
+ static bool catch_user_event_for_pre_dialog_focus (GdkEvent* ev, Gtk::Window* w);
- struct AccelKeyLess {
- bool operator() (const Gtk::AccelKey a, const Gtk::AccelKey b) const {
- if (a.get_key() != b.get_key()) {
- return a.get_key() < b.get_key();
- } else {
- return a.get_mod() < b.get_mod();
- }
- }
- };
+ static bool load_keybindings (std::string const& path);
+ static void save_keybindings (std::string const& path);
+
+ int reset_bindings ();
sigc::signal0<void> ZoomVerticalModifierReleased;
+ static std::vector<Bindings*> bindings;
+ static Bindings* get_bindings (std::string const& name);
+ static PBD::Signal0<void> BindingsChanged;
+
protected:
static Keyboard* _the_keyboard;
typedef std::pair<std::string,std::string> two_strings;
- static std::map<Gtk::AccelKey,two_strings,AccelKeyLess> release_keys;
-
static gint _snooper (GtkWidget*, GdkEventKey*, gpointer);
gint snooper (GtkWidget*, GdkEventKey*);
static void set_modifier (uint32_t newval, uint32_t& variable);
static bool _some_magic_widget_has_focus;
+
+ static Gtk::Window* pre_dialog_active_window;
+
+ static int read_keybindings (std::string const& path);
+ static int store_keybindings (std::string const& path);
};
} /* namespace */