X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ftempo_dialog.h;h=f9f0dd34a01e423b107b4b6a9022cc0d43344a8d;hb=79731a716deae9a90be646695480f06f92c268f5;hp=5dc56b1e376ca8a38303723a1050e13fd52695b1;hpb=cb160c81fa8bb1d2ba243cc6738996fd192e8245;p=ardour.git diff --git a/gtk2_ardour/tempo_dialog.h b/gtk2_ardour/tempo_dialog.h index 5dc56b1e37..f9f0dd34a0 100644 --- a/gtk2_ardour/tempo_dialog.h +++ b/gtk2_ardour/tempo_dialog.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2007 Paul Davis + Copyright (C) 2000-2007 Paul Davis 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 @@ -35,58 +35,102 @@ #include "ardour_dialog.h" -struct TempoDialog : public ArdourDialog +class TempoDialog : public ArdourDialog { - Gtk::ComboBoxText note_types; - std::vector strings; - Gtk::Adjustment bpm_adjustment; - Gtk::SpinButton bpm_spinner; - Gtk::Button ok_button; - Gtk::Button cancel_button; - Gtk::Entry when_bar_entry; - Gtk::Entry when_beat_entry; - Gtk::Label when_bar_label; - Gtk::Label when_beat_label; - char buf[64]; - - TempoDialog (ARDOUR::TempoMap&, nframes_t, const std::string & action); - TempoDialog (ARDOUR::TempoSection&, const std::string & action); +public: + TempoDialog (ARDOUR::TempoMap&, samplepos_t, const std::string & action); + TempoDialog (ARDOUR::TempoMap&, ARDOUR::TempoSection&, const std::string & action); double get_bpm (); + double get_end_bpm (); double get_note_type (); - bool get_bbt_time (ARDOUR::BBT_Time&); - + bool get_bbt_time (Timecode::BBT_Time&); + ARDOUR::TempoSection::Type get_tempo_type (); + ARDOUR::PositionLockStyle get_lock_style (); + private: - void init (const ARDOUR::BBT_Time& start, double, double, bool); + void init (const Timecode::BBT_Time& start, double bpm, double end_bpm, double note_type, ARDOUR::TempoSection::Type type, bool movable, ARDOUR::PositionLockStyle style); + bool is_user_input_valid() const; void bpm_changed (); bool bpm_button_press (GdkEventButton* ); bool bpm_button_release (GdkEventButton* ); bool entry_key_release (GdkEventKey* ); - void note_types_change (); + void pulse_change (); + void tempo_type_change (); + void lock_style_change (); + bool tap_tempo_key_press (GdkEventKey*); + bool tap_tempo_button_press (GdkEventButton*); + bool tap_tempo_focus_out (GdkEventFocus* ); + + void tap_tempo (); + + typedef std::map NoteTypes; + NoteTypes note_types; + + typedef std::map TempoTypes; + TempoTypes tempo_types; + + typedef std::map LockStyles; + LockStyles lock_styles; + + bool tapped; // whether the tap-tempo button has been clicked + double sum_x, sum_xx, sum_xy, sum_y; + double tap_count; + double last_t; + gint64 first_t; + + ARDOUR::TempoMap* _map; + ARDOUR::TempoSection* _section; + + Gtk::ComboBoxText pulse_selector; + Gtk::Adjustment bpm_adjustment; + Gtk::SpinButton bpm_spinner; + Gtk::Adjustment end_bpm_adjustment; + Gtk::SpinButton end_bpm_spinner; + Gtk::Label _end_bpm_label; + Gtk::Entry when_bar_entry; + Gtk::Entry when_beat_entry; + Gtk::Label when_bar_label; + Gtk::Label when_beat_label; + Gtk::Label pulse_selector_label; + Gtk::Button tap_tempo_button; + Gtk::ComboBoxText tempo_type; + Gtk::ComboBoxText lock_style; }; -struct MeterDialog : public ArdourDialog +class MeterDialog : public ArdourDialog { - Gtk::Entry bpb_entry; - Gtk::ComboBoxText note_types; - std::vector strings; - Gtk::Button ok_button; - Gtk::Button cancel_button; - Gtk::Entry when_bar_entry; - char buf[64]; - - MeterDialog (ARDOUR::TempoMap&, nframes_t, const std::string & action); - MeterDialog (ARDOUR::MeterSection&, const std::string & action); +public: + + MeterDialog (ARDOUR::TempoMap&, samplepos_t, const std::string & action); + MeterDialog (ARDOUR::TempoMap&, ARDOUR::MeterSection&, const std::string & action); double get_bpb (); double get_note_type (); - bool get_bbt_time (ARDOUR::BBT_Time&); + ARDOUR::PositionLockStyle get_lock_style (); + bool get_bbt_time (Timecode::BBT_Time&); private: - void init (const ARDOUR::BBT_Time&, double, double, bool); + void init (const Timecode::BBT_Time&, double, double, bool, ARDOUR::PositionLockStyle style); + bool is_user_input_valid() const; bool entry_key_press (GdkEventKey* ); bool entry_key_release (GdkEventKey* ); - void note_types_change (); + void note_type_change (); + void lock_style_change (); + + typedef std::map NoteTypes; + NoteTypes note_types; + + typedef std::map LockStyles; + LockStyles lock_styles; + + Gtk::Entry bpb_entry; + Gtk::ComboBoxText note_type; + Gtk::ComboBoxText lock_style; + std::vector strings; + Gtk::Button ok_button; + Gtk::Button cancel_button; + Gtk::Entry when_bar_entry; }; #endif /* __ardour_gtk_tempo_dialog_h__ */