Merge libs/ardour and gtk2_ardour with 2.0-ongoing R2837.
[ardour.git] / gtk2_ardour / latency_gui.h
1 #ifndef __gtk2_ardour_latency_gui_h__
2 #define __gtk2_ardour_latency_gui_h__
3
4 #include <vector>
5 #include <string>
6
7 #include <gtkmm/dialog.h>
8 #include <gtkmm/box.h>
9 #include <gtkmm/button.h>
10 #include <gtkmm/adjustment.h>
11
12 #include <gtkmm2ext/barcontroller.h>
13 #include <pbd/controllable.h>
14
15 #include <ardour/types.h>
16
17 #include "ardour_dialog.h"
18
19 namespace ARDOUR {
20         class Latent;
21 }
22
23 class LatencyGUI : public Gtk::VBox
24 {
25   public:
26         LatencyGUI (ARDOUR::Latent&, nframes64_t sample_rate, nframes64_t period_size);
27         ~LatencyGUI() { }
28
29         void finish ();
30         void reset ();
31         void refresh ();
32
33   private:
34         ARDOUR::Latent& _latent;
35         nframes64_t initial_value;
36         nframes64_t sample_rate;
37         nframes64_t period_size;
38         PBD::IgnorableControllable ignored;
39
40         Gtk::Adjustment adjustment;
41         Gtkmm2ext::BarController bc;
42         Gtk::HBox hbox1;
43         Gtk::HBox hbox2;
44         Gtk::HButtonBox hbbox;
45         Gtk::Button minus_button;
46         Gtk::Button plus_button;
47         Gtk::Button reset_button;
48         Gtk::ComboBoxText units_combo;
49
50         void change_latency_from_button (int dir);
51         void latency_printer (char* buf, unsigned int bufsize);
52
53         static std::vector<std::string> unit_strings;
54 };
55
56 class LatencyDialog : public ArdourDialog
57 {
58   public:
59         LatencyDialog (const Glib::ustring& title, ARDOUR::Latent&, nframes64_t sample_rate, nframes64_t period_size);
60         ~LatencyDialog() {}
61
62   private:
63         LatencyGUI lwidget;
64 };
65
66 #endif /* __gtk2_ardour_latency_gui_h__ */