X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fkeyboard.h;h=c6a05abe2a4ca5f5895d78e0781e1355ac9f0ad9;hb=3c1bc99df936a2ea1ea11ef6c884b9eecaef5c09;hp=6a689567e54e67b4b6d8468052f682b91fce00ba;hpb=b5148d93d5a9e6949f82f8685cab50cb772f2b9d;p=ardour.git diff --git a/gtk2_ardour/keyboard.h b/gtk2_ardour/keyboard.h index 6a689567e5..c6a05abe2a 100644 --- a/gtk2_ardour/keyboard.h +++ b/gtk2_ardour/keyboard.h @@ -20,6 +20,9 @@ #ifndef __ardour_keyboard_h__ #define __ardour_keyboard_h__ +#include +#include + #include "ardour/types.h" #include "gtkmm2ext/keyboard.h" @@ -32,11 +35,69 @@ class ArdourKeyboard : public Gtkmm2ext::Keyboard public: ArdourKeyboard(ARDOUR_UI& ardour_ui) : ui(ardour_ui) {} + XMLNode& get_state (void); + int set_state (const XMLNode&, int version); + void setup_keybindings (); static Selection::Operation selection_type (guint state); ARDOUR_UI& ui; + + /** @param state The button state from a GdkEvent. + * @return true if the modifier state indicates snap modifier + */ + static bool indicates_snap (guint state); + + /** @param state The button state from a GdkEvent. + * @return true if the modifier state indicates snap delta + */ + static bool indicates_snap_delta (guint state); + + static void set_constraint_modifier (guint); + /** @return Modifier mask to constrain drags in a particular direction; + */ + static ModifierMask constraint_modifier () { return ModifierMask (constraint_mod); } + + static void set_trim_contents_modifier (guint); + /** @return Modifier mask to move contents rather than region bounds during trim; + */ + static ModifierMask trim_contents_modifier () { return ModifierMask (trim_contents_mod); } + + static void set_trim_overlap_modifier (guint); + /** @return Modifier mask to remove region overlaps during trim; + */ + static ModifierMask trim_overlap_modifier () { return ModifierMask (trim_overlap_mod); } + + static void set_trim_anchored_modifier (guint); + /** @return Modifier mask to use anchored trim; + */ + static ModifierMask trim_anchored_modifier () { return ModifierMask (trim_anchored_mod); } + + static void set_fine_adjust_modifier (guint); + /** @return Modifier mask to fine adjust (control points only atm); + */ + static ModifierMask fine_adjust_modifier () { return ModifierMask (fine_adjust_mod); } + + static void set_push_points_modifier (guint); + /** @return Modifier mask to push proceeding points; + */ + static ModifierMask push_points_modifier () { return ModifierMask (push_points_mod); } + + static void set_note_size_relative_modifier (guint); + /** @return Modifier mask to resize notes relatively; + */ + static ModifierMask note_size_relative_modifier () { return ModifierMask (note_size_relative_mod); } +private: + static guint constraint_mod; + static guint trim_contents_mod; + static guint trim_overlap_mod; + static guint trim_anchored_mod; + static guint fine_adjust_mod; + static guint push_points_mod; + static guint note_size_relative_mod; + + void find_bindings_files (std::map& files); }; #endif /* __ardour_keyboard_h__ */