1 /* Demo Recorder for MAEMO 5
2 * Copyright (C) 2010 Dru Moore <usr@dru-id.co.uk>
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2,
5 * or (at your option) any later version, as published by the Free
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details
13 * You should have received a copy of the GNU General Public
14 * License along with this program; if not, write to the
15 * Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 public class DynamicsPopUp : Hildon.Dialog {
22 Hildon.TouchSelector characteristics_selector;
23 Hildon.TouchSelector mode_selector;
24 Gtk.HScale ratio_slider;
25 Gtk.HScale threshold_slider;
27 public signal void characteristics_updated(string val);
28 public signal void mode_updated(string val);
29 public signal void ratio_updated(double val);
30 public signal void threshold_updated(double val);
32 public SettingsStructures.DynamicsSettings get_settings_structure() {
33 SettingsStructures.DynamicsSettings settings = SettingsStructures.DynamicsSettings();
34 settings.active = true;
35 settings.mode = this.get_mode();
36 settings.characteristics = this.get_characteristics();
37 settings.ratio = this.get_ratio();
38 settings.threshold = this.get_threshold();
41 public void set_settings_structure(SettingsStructures.DynamicsSettings settings) {
42 // ignore active for now
43 this.set_mode(settings.mode);
44 this.set_characteristics(settings.characteristics);
45 this.set_ratio(settings.ratio);
46 this.set_threshold(settings.threshold);
49 public DynamicsPopUp(string title, Gtk.Widget parent) {
50 this.set_title(title);
51 this.set_parent(parent);
52 this.construct_interface(SettingsStructures.DynamicsSettings());
54 public DynamicsPopUp.with_settings(string title, Gtk.Widget parent, SettingsStructures.DynamicsSettings settings) {
55 this.set_title(title);
56 this.set_parent(parent);
57 stdout.printf("dynamics popup constructing interface\n");
59 this.construct_interface(settings);
60 stdout.printf("dynamics popup interface constructed\n");
64 private void construct_interface(SettingsStructures.DynamicsSettings settings) {
65 this.set_default_response(Gtk.ResponseType.ACCEPT);
66 this.add_button(Gtk.STOCK_CLOSE, Gtk.ResponseType.ACCEPT);
68 Gtk.VBox control_area = (Gtk.VBox)this.get_content_area();
70 Gtk.HButtonBox button_bar = new Gtk.HButtonBox();
71 button_bar.set_layout(Gtk.ButtonBoxStyle.START);
72 button_bar.set_homogeneous(true);
73 button_bar.set_spacing(4);
75 mode_selector = new Hildon.TouchSelector.text();
76 mode_selector.append_text("compressor");
77 mode_selector.append_text("expander");
78 //mode_selector.set_active(0, 0);
79 stdout.printf("dynamics setting mode %s\n", settings.mode);
81 this.set_mode(settings.mode);
82 stdout.printf("dynamics mode set %s\n", settings.mode);
84 Hildon.PickerButton mode_picker = new Hildon.PickerButton(Hildon.SizeType.FINGER_HEIGHT | Hildon.SizeType.AUTO_WIDTH, Hildon.ButtonArrangement.VERTICAL);
85 mode_picker.set_title("Mode:");
86 mode_picker.set_selector(mode_selector);
87 mode_picker.set_alignment(0, 0, 1, 1);
88 stdout.printf("dynamics mode connect\n");
90 mode_picker.value_changed.connect( (s) => { mode_updated(s.get_selector().get_current_text()); } );
91 stdout.printf("dynamics mode connected\n");
93 button_bar.pack_start(mode_picker, true, true, 2);
95 stdout.printf("dynamics mode starting 0\n");
97 characteristics_selector = new Hildon.TouchSelector.text();
98 stdout.printf("dynamics mode starting 1\n");
100 characteristics_selector.append_text("soft-knee");
101 stdout.printf("dynamics mode starting 2\n");
103 characteristics_selector.append_text("hard-knee");
104 //characteristics_selector.set_active(0, 0);
105 stdout.printf("dynamics setting characteristics %s\n", settings.characteristics);
107 this.set_characteristics(settings.characteristics);
108 Hildon.PickerButton characteristics_picker = new Hildon.PickerButton(Hildon.SizeType.FINGER_HEIGHT | Hildon.SizeType.AUTO_WIDTH, Hildon.ButtonArrangement.VERTICAL);
109 characteristics_picker.set_title("Characteristics:");
110 characteristics_picker.set_selector(characteristics_selector);
111 characteristics_picker.set_alignment(0, 0, 1, 1);
112 characteristics_picker.value_changed.connect( (s) => { characteristics_updated(s.get_selector().get_current_text()); } );
113 button_bar.pack_start(characteristics_picker, true, true, 2);
115 control_area.pack_start(button_bar, true, true, 2);
117 Gtk.HBox ratio_bar = new Gtk.HBox(false, 4);
119 Gtk.Label ratio_label = new Gtk.Label("Ratio: ");
120 ratio_slider = new Gtk.HScale.with_range(0.0, 25.0, 0.5);
121 ratio_slider.set_value_pos(Gtk.PositionType.LEFT);
122 stdout.printf("dynamics setting ratio\n");
124 this.set_ratio(settings.ratio);
125 ratio_slider.value_changed.connect((s) => {ratio_updated(s.get_value());});
126 ratio_bar.pack_start(ratio_label, false, false, 2);
127 ratio_bar.pack_start(ratio_slider, true, true, 2);
129 control_area.pack_start(ratio_bar, true, true, 2);
131 Gtk.HBox threshold_bar = new Gtk.HBox(false, 4);
133 Gtk.Label threshold_label = new Gtk.Label("Threshold: ");
134 threshold_slider = new Gtk.HScale.with_range(0.0, 1.0, 0.05);
135 threshold_slider.set_value_pos(Gtk.PositionType.LEFT);
136 stdout.printf("dynamics setting threshold\n");
138 this.set_threshold(settings.threshold);
139 threshold_slider.value_changed.connect((s) => {threshold_updated(s.get_value());});
140 threshold_bar.pack_start(threshold_label, false, false, 2);
141 threshold_bar.pack_start(threshold_slider, true, true, 2);
143 control_area.pack_start(threshold_bar, true, true, 2);
148 public string get_mode() {
149 return mode_selector.get_current_text();
151 public void set_mode(string val) {
154 mode_selector.set_active(0, 0);
157 mode_selector.set_active(0, 1);
160 mode_selector.set_active(0, 0);
165 public string get_characteristics() {
166 return characteristics_selector.get_current_text();
168 public void set_characteristics(string val) {
171 characteristics_selector.set_active(0, 0);
174 characteristics_selector.set_active(0, 1);
177 characteristics_selector.set_active(0, 0);
182 public double get_ratio() {
183 return ratio_slider.get_value();
185 public void set_ratio(double val) {
186 ratio_slider.set_value(val);
189 public double get_threshold() {
190 return threshold_slider.get_value();
192 public void set_threshold(double val) {
193 threshold_slider.set_value(val);