Strip trailing whitespace and fix other whitespace errors (e.g. space/tab mixing...
[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;
24
25 class LatencyBarController : public Gtkmm2ext::BarController
26 {
27 public:
28         LatencyBarController (Gtk::Adjustment& adj, LatencyGUI* g)
29                 : BarController (adj, boost::shared_ptr<PBD::IgnorableControllable> (new PBD::IgnorableControllable ())),
30                   _latency_gui (g) {}
31
32 private:
33         LatencyGUI* _latency_gui;
34
35         std::string get_label (int&);
36 };
37
38 class LatencyGUI : public Gtk::VBox
39 {
40   public:
41         LatencyGUI (ARDOUR::Latent&, nframes64_t sample_rate, nframes64_t period_size);
42         ~LatencyGUI() { }
43
44         void finish ();
45         void reset ();
46         void refresh ();
47
48   private:
49         ARDOUR::Latent& _latent;
50         nframes64_t initial_value;
51         nframes64_t sample_rate;
52         nframes64_t period_size;
53         boost::shared_ptr<PBD::IgnorableControllable> ignored;
54
55         Gtk::Adjustment adjustment;
56         LatencyBarController bc;
57         Gtk::HBox hbox1;
58         Gtk::HBox hbox2;
59         Gtk::HButtonBox hbbox;
60         Gtk::Button minus_button;
61         Gtk::Button plus_button;
62         Gtk::Button reset_button;
63         Gtk::ComboBoxText units_combo;
64
65         void change_latency_from_button (int dir);
66
67         friend class LatencyBarController;
68
69         static std::vector<std::string> unit_strings;
70 };
71
72 class LatencyDialog : public ArdourDialog
73 {
74   public:
75         LatencyDialog (const Glib::ustring& title, ARDOUR::Latent&, nframes64_t sample_rate, nframes64_t period_size);
76         ~LatencyDialog() {}
77
78   private:
79         LatencyGUI lwidget;
80 };
81
82 #endif /* __gtk2_ardour_latency_gui_h__ */