Changeset 53e24573f438b3127f3acf8dddba3fc383178aa5
- Timestamp:
- 06/06/09 02:21:54 (3 years ago)
- Children:
- 92734ec69ee76842de3cb995ad24056caa272fde
- Parents:
- a0304dc201653703aa54a0878fabdf3f06b9f0c9
- git-committer:
- Nedko Arnaudov <nedko@arnaudov.name> / 2009-06-06T02:21:54Z+0300
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
ui
ra0304dc r53e2457 26 26 import xml.dom.minidom 27 27 import cairo 28 from math import pi, sin, cos, atan2 28 from math import pi, sin, cos, atan2, log 29 29 from colorsys import hls_to_rgb, rgb_to_hls 30 30 import liblo … … 115 115 116 116 def show_tooltip(self, knob): 117 text = knob.format_value(knob.value) 118 self.tooltip.set_text(knob.format_value(knob.max_value)) 117 text = knob.format_value() 119 118 rc = knob.get_allocation() 120 119 x,y = knob.window.get_origin() … … 153 152 knob_tooltip = KnobTooltip() 154 153 return knob_tooltip 154 155 class SmartAdjustment(gtk.Adjustment): 156 def __init__(self, log=False, value=0, lower=0, upper=0, step_incr=0, page_incr=0, page_size=0): 157 self.log = log 158 gtk.Adjustment.__init__(self, value, lower, upper, step_incr, page_incr, page_size) 159 self.normalized_value = self.real2norm(self.value) 160 161 def real2norm(self, value): 162 if self.log: 163 return log(value / self.lower, self.upper / self.lower) 164 else: 165 return (value - self.lower) / (self.upper - self.lower) 166 167 def norm2real(self, value): 168 if self.log: 169 return self.lower * pow(self.upper / self.lower, value) 170 else: 171 return value * (self.upper - self.lower) + self.lower 172 173 def set_value(self, value): 174 self.normalized_value = self.real2norm(value) 175 gtk.Adjustment.set_value(self, value) 176 177 def get_normalized_value(self): 178 return self.normalized_value 179 180 def set_normalized_value(self, value): 181 self.normalized_value = value 182 183 if self.normalized_value < 0.0: 184 self.normalized_value = 0.0 185 elif self.normalized_value > 1.0: 186 self.normalized_value = 1.0 187 188 self.set_value(self.norm2real(self.normalized_value)) 155 189 156 190 class Knob(gtk.VBox): … … 185 219 186 220 def set_adjustment(self, adj): 187 self.min_value = adj.lower188 self.max_value = adj.upper189 self.value = adj. value221 self.min_value = 0.0 222 self.max_value = 1.0 223 self.value = adj.get_normalized_value() 190 224 if self.adj: 191 225 self.adj.disconnect(self.adj_id) … … 196 230 return self.get_property("sensitive") 197 231 198 def format_value(self, value): 232 def format_value(self): 233 if self.adj: 234 value = self.adj.value 235 else: 236 value = self.value 199 237 return ("%%.%if" % self.digits) % value 200 238 … … 247 285 248 286 def on_adj_value_changed(self, adj): 249 if self.value != adj.value: 250 self.value = adj.value 287 new_value = adj.get_normalized_value() 288 if self.value != new_value: 289 self.value = new_value 251 290 self.refresh() 252 291 … … 256 295 if self.value != oldval: 257 296 if self.adj: 258 self.adj.set_ value(value)297 self.adj.set_normalized_value(value) 259 298 self.refresh() 260 299 … … 690 729 self.add_param_box(master_box, self.create_toggle_box(port)) 691 730 692 port = {'index': 1, 'name': 'Gain', 'type': 'knob', 'min': -20.0, 'max': 20.0, 'unit': 'dB' }731 port = {'index': 1, 'name': 'Gain', 'type': 'knob', 'min': -20.0, 'max': 20.0, 'unit': 'dB', 'log': False} 693 732 self.ports.append(port) 694 733 self.add_param_box(master_box, self.create_knob_box(port)) … … 698 737 band_parameters = [ 699 738 {'name': 'Active', 'type': 'toggle'}, 700 {'name': 'Frequency', 'type': 'knob', 'unit': 'Hz' },701 {'name': 'Bandwidth', 'type': 'knob', 'min': 0.125, 'max': 8.0, 'unit': '' },702 {'name': 'Gain', 'type': 'knob', 'min': -20.0, 'max': 20.0, 'unit': 'dB' }]739 {'name': 'Frequency', 'type': 'knob', 'unit': 'Hz', 'log': True}, 740 {'name': 'Bandwidth', 'type': 'knob', 'min': 0.125, 'max': 8.0, 'unit': '', 'log': True}, 741 {'name': 'Gain', 'type': 'knob', 'min': -20.0, 'max': 20.0, 'unit': 'dB', 'log': False}] 703 742 704 743 freq_min = [ 20.0, 40.0, 100.0, 200.0] … … 742 781 param_box = gtk.VBox() 743 782 step = (port['max'] - port['min']) / 100 744 adj = gtk.Adjustment(port['min'], port['min'], port['max'], step, step * 20)783 adj = SmartAdjustment(port['log'], port['min'], port['min'], port['max'], step, step * 20) 745 784 adj.port = port 746 785 port['adj'] = adj
