Changeset f39d91d10209bd8db7b241fe3bb693fba162e99d

Show
Ignore:
Timestamp:
06/06/09 20:04:56 (3 years ago)
Author:
Nedko Arnaudov <nedko@…>
Children:
4a9e3e0e1071493950e5583f5f14bf136388ea28
Parents:
4e1bb7c46ce848faf660a90d7510ab5f8ca7b365
git-committer:
Nedko Arnaudov <nedko@arnaudov.name> / 2009-06-06T20:04:56Z+0300
Message:

Draw filter base points

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • ui

    r4e1bb7c rf39d91d  
    625625        return False 
    626626 
     627class filter_band: 
     628    pass 
     629 
    627630class frequency_response(gtk.DrawingArea): 
    628631    def __init__(self): 
     
    641644        self.db_range = 30 
    642645 
    643         self.points = [] 
     646        self.filters = {} 
    644647 
    645648    def on_expose(self, widget, event): 
     
    698701 
    699702        cairo_ctx.stroke() 
     703 
     704    def invalidate_all(self): 
     705        self.queue_draw_area(0, 0, int(self.width), int(self.height)) 
    700706 
    701707    def draw(self, cairo_ctx): 
     
    740746                self.draw_db_grid(cairo_ctx, -db) 
    741747 
     748        cairo_ctx.set_source_color(self.color_value) 
     749        for label, filter in self.filters.items(): 
     750            if not filter.enabled: 
     751                continue 
     752 
     753            x = self.get_x(filter.adj_hz.value) 
     754            y = self.get_y(filter.adj_db.value) 
     755            cairo_ctx.move_to(x, y) 
     756            cairo_ctx.show_text(label) 
     757            cairo_ctx.stroke() 
     758 
     759    def add_filter(self, label, adj_hz, adj_db, adj_bw): 
     760        #print "filter %s added (%.2f Hz, %.2f dB, %.2f bw)" % (label, adj_hz.value, adj_db.value, adj_bw.value) 
     761        filter = filter_band() 
     762        filter.enabled = False 
     763        filter.label = label 
     764        filter.adj_hz = adj_hz 
     765        filter.adj_db = adj_db 
     766        filter.adj_bw = adj_bw 
     767        adj_hz.connect("value-changed", self.on_value_change_request) 
     768        adj_db.connect("value-changed", self.on_value_change_request) 
     769        adj_bw.connect("value-changed", self.on_value_change_request) 
     770        self.filters[label] = filter 
     771 
     772    def enable_filter(self, label): 
     773        filter = self.filters[label] 
     774        #print "filter %s enabled (%.2f Hz, %.2f dB, %.2f bw)" % (label, filter.adj_hz.value, filter.adj_db.value, filter.adj_bw.value) 
     775        filter.enabled = True 
     776        self.invalidate_all() 
     777 
     778    def disable_filter(self, label): 
     779        filter = self.filters[label] 
     780        #print "filter %s disabled (%.2f Hz, %.2f dB, %.2f bw)" % (label, filter.adj_hz.value, filter.adj_db.value, filter.adj_bw.value) 
     781        filter.enabled = False 
     782        self.invalidate_all() 
     783 
     784    def on_value_change_request(self, adj): 
     785        #print "adj changed" 
     786        self.invalidate_all() 
     787 
    742788class dssi_ui: 
    743789    def __init__(self, argv): 
     
    904950                elif port['type'] == 'toggle': 
    905951                    self.add_param_box(band_box, self.create_toggle_box(port)) 
     952 
     953            self.fr.add_filter( 
     954                str(i + 1), 
     955                self.ports[port_index - 3]['adj'], # frequency 
     956                self.ports[port_index - 1]['adj'], # gain 
     957                self.ports[port_index - 2]['adj']) # bandwidth 
    906958 
    907959            band_frame.add(band_box) 
     
    9761028    def on_button_toggled(self, widget): 
    9771029        if self.initator: 
     1030            port_index = widget.port['index'] 
     1031            band_no = (port_index - 2) / 4 + 1 
    9781032            if widget.get_active(): 
    9791033                value = 1.0 
     1034                if band_no > 0: 
     1035                    self.fr.enable_filter(str(band_no)) 
    9801036            else: 
    9811037                value = 0.0 
    982             self.send_port_value(widget.port['index'] + self.port_base, value) 
     1038                if band_no > 0: 
     1039                    self.fr.disable_filter(str(band_no)) 
     1040            self.send_port_value(port_index + self.port_base, value) 
    9831041 
    9841042    def run(self):