diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-12-29 16:27:43 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-12-29 16:27:43 +0000 |
commit | 4624153d265c9187c06cacdfa5a3757373ed8c95 (patch) | |
tree | 001ec8cc88a3b3cc5eb3c265a1c15caf552785e2 /libs/gtkmm2ext/keyboard.cc | |
parent | a06c33b6d91ea9ef8f3970a6027ffdf6f267d0b3 (diff) |
add static methods to Keyboard for keyboard modifier names
git-svn-id: svn://localhost/ardour2/branches/3.0@8364 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/gtkmm2ext/keyboard.cc')
-rw-r--r-- | libs/gtkmm2ext/keyboard.cc | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/libs/gtkmm2ext/keyboard.cc b/libs/gtkmm2ext/keyboard.cc index e09d35e0ea..5e4a5f8b62 100644 --- a/libs/gtkmm2ext/keyboard.cc +++ b/libs/gtkmm2ext/keyboard.cc @@ -52,9 +52,12 @@ guint Keyboard::edit_but = 3; guint Keyboard::edit_mod = GDK_CONTROL_MASK; guint Keyboard::delete_but = 3; guint Keyboard::delete_mod = GDK_SHIFT_MASK; +guint Keyboard::insert_note_but = 3; +guint Keyboard::insert_note_mod = GDK_CONTROL_MASK; guint Keyboard::snap_mod = GDK_MOD3_MASK; #ifdef GTKOSX + guint Keyboard::PrimaryModifier = GDK_META_MASK; // Command guint Keyboard::SecondaryModifier = GDK_MOD1_MASK; // Alt/Option guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift @@ -62,7 +65,16 @@ guint Keyboard::Level4Modifier = GDK_CONTROL_MASK; // Control guint Keyboard::CopyModifier = GDK_MOD1_MASK; // Alt/Option guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK; guint Keyboard::button2_modifiers = Keyboard::SecondaryModifier|Keyboard::Level4Modifier; + +const char* Keyboard::primary_modifier_name() { return _("Command"); } +const char* Keyboard::secondary_modifier_name() { return _("Option"); } +const char* Keyboard::tertiary_modifier_name() { return _("Shift"); } +const char* Keyboard::level4_modifier_name() { return _("Control"); } +const char* Keyboard::copy_modifier_name() { return _("Mod1"; ); } +const char* Keyboard::rangeselect_modifier_name() { return _("Shift"); } + #else + guint Keyboard::PrimaryModifier = GDK_CONTROL_MASK; // Control guint Keyboard::SecondaryModifier = GDK_MOD1_MASK; // Alt/Option guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift @@ -70,8 +82,15 @@ guint Keyboard::Level4Modifier = GDK_MOD4_MASK; // Mod4/Windows guint Keyboard::CopyModifier = GDK_CONTROL_MASK; guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK; guint Keyboard::button2_modifiers = 0; /* not used */ -#endif +const char* Keyboard::primary_modifier_name() { return _("Control"); } +const char* Keyboard::secondary_modifier_name() { return _("Alt"); } +const char* Keyboard::tertiary_modifier_name() { return _("Shift"); } +const char* Keyboard::level4_modifier_name() { return _("Meta"); } +const char* Keyboard::copy_modifier_name() { return _("Control"); } +const char* Keyboard::rangeselect_modifier_name() { return _("Shift"); } + +#endif Keyboard* Keyboard::_the_keyboard = 0; Gtk::Window* Keyboard::current_window = 0; @@ -148,6 +167,10 @@ Keyboard::get_state (void) node->add_property ("delete-modifier", buf); snprintf (buf, sizeof (buf), "%d", snap_mod); node->add_property ("snap-modifier", buf); + snprintf (buf, sizeof (buf), "%d", insert_note_but); + node->add_property ("insert-note-button", buf); + snprintf (buf, sizeof (buf), "%d", insert_note_mod); + node->add_property ("insert-note-modifier", buf); return *node; } @@ -177,6 +200,14 @@ Keyboard::set_state (const XMLNode& node, int /*version*/) sscanf (prop->value().c_str(), "%d", &snap_mod); } + if ((prop = node.property ("insert-note-button")) != 0) { + sscanf (prop->value().c_str(), "%d", &insert_note_but); + } + + if ((prop = node.property ("insert-note-modifier")) != 0) { + sscanf (prop->value().c_str(), "%d", &insert_note_mod); + } + return 0; } @@ -360,6 +391,21 @@ Keyboard::set_delete_modifier (guint mod) } void +Keyboard::set_insert_note_button (guint but) +{ + insert_note_but = but; +} + +void +Keyboard::set_insert_note_modifier (guint mod) +{ + RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~insert_note_mod); + insert_note_mod = mod; + RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | insert_note_mod); +} + + +void Keyboard::set_modifier (uint32_t newval, uint32_t& var) { RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~var); @@ -384,6 +430,14 @@ Keyboard::is_edit_event (GdkEventButton *ev) } bool +Keyboard::is_insert_note_event (GdkEventButton *ev) +{ + return (ev->type == GDK_BUTTON_PRESS || ev->type == GDK_BUTTON_RELEASE) && + (ev->button == Keyboard::insert_note_button()) && + ((ev->state & RelevantModifierKeyMask) == Keyboard::insert_note_modifier()); +} + +bool Keyboard::is_button2_event (GdkEventButton* ev) { #ifdef GTKOSX |