def enable_equalizer(self, state): values = None if state: try: values = blacfg.getlistfloat( "equalizer.profiles", blacfg.getstring("player", "equalizer.profile")) except: pass if not values: values = [0.0] * blaconst.EQUALIZER_BANDS try: for band, value in enumerate(values): self.__equalizer.set_property("band%d" % band, value) except AttributeError: pass
def __profile_changed(self, combobox): profile_name = combobox.get_active_text() if profile_name: values = blacfg.getlistfloat( "equalizer.profiles", profile_name) blacfg.set("player", "equalizer.profile", profile_name) if not values: values = [0.0] * blaconst.EQUALIZER_BANDS blacfg.set( "equalizer.profiles", profile_name, ("%.1f, " * (blaconst.EQUALIZER_BANDS-1) + "%.1f") % tuple(values)) for idx, s in enumerate(self.__scales): s.set_value(values[idx]) else: blacfg.set("player", "equalizer.profile", "") for s in self.__scales: s.set_value(0) self.__scale_box.set_sensitive(False) player.enable_equalizer(True)
def __init__(self): super(BlaPreferences.PlayerSettings, self).__init__("Player") logarithmic_volume_scale = gtk.CheckButton( "Use logarithmic volume scale") logarithmic_volume_scale.set_active( blacfg.getboolean("player", "logarithmic.volume.scale")) logarithmic_volume_scale.connect( "toggled", self.__volume_scale_changed) state = blacfg.getboolean("player", "use.equalizer") self.__scales = [] use_equalizer = gtk.CheckButton("Use equalizer") use_equalizer.set_active(state) use_equalizer.connect("toggled", self.__use_equalizer_changed) self.__profiles_box = gtk.combo_box_new_text() self.__profiles_box.connect("changed", self.__profile_changed) old_profile = blacfg.getstring("player", "equalizer.profile") profiles = blacfg.get_keys("equalizer.profiles") for idx, profile in enumerate(profiles): self.__profiles_box.append_text(profile[0]) if profile[0] == old_profile: self.__profiles_box.set_active(idx) button_table = gtk.Table(rows=1, columns=3, homogeneous=True) new_profile_button = gtk.Button("New") new_profile_button.connect( "clicked", self.__new_profile, self.__profiles_box) delete_profile_button = gtk.Button("Delete") delete_profile_button.connect( "clicked", self.__delete_profile, self.__profiles_box) reset_profile_button = gtk.Button("Reset") reset_profile_button.connect_object( "clicked", BlaPreferences.PlayerSettings.__reset_profile, self) button_table.attach(new_profile_button, 0, 1, 0, 1, xpadding=2) button_table.attach(delete_profile_button, 1, 2, 0, 1, xpadding=2) button_table.attach(reset_profile_button, 2, 3, 0, 1, xpadding=2) self.__button_box = gtk.HBox() self.__button_box.pack_start( gtk.Label("Profiles:"), expand=False, padding=10) self.__button_box.pack_start(self.__profiles_box, expand=False) self.__button_box.pack_start( button_table, expand=False, padding=16) table = gtk.Table(rows=2, columns=2, homogeneous=False) table.set_row_spacings(2) table.attach(logarithmic_volume_scale, 0, 2, 0, 1, xpadding=2) table.attach(use_equalizer, 0, 1, 1, 2, xpadding=2) table.attach(self.__button_box, 1, 2, 1, 2, xpadding=2) self.__scale_box = gtk.HBox(homogeneous=True) bands = [29, 59, 119, 237, 474, 947, 1889, 3770, 7523, 15011] values = blacfg.getlistfloat("equalizer.profiles", old_profile) if not values: values = [0] * blaconst.EQUALIZER_BANDS for idx, val in enumerate(values): box = gtk.VBox(spacing=10) scale = gtk.VScale(gtk.Adjustment(val, -24., 12., 0.1)) scale.set_inverted(True) scale.set_update_policy(gtk.UPDATE_DISCONTINUOUS) scale.set_value(values[idx]) scale.set_digits(1) scale.set_draw_value(True) scale.set_value_pos(gtk.POS_BOTTOM) scale.connect("value_changed", self.__equalizer_value_changed, idx, self.__profiles_box) scale.connect("format_value", lambda *x: "%.1f dB" % x[-1]) self.__scales.append(scale) label = gtk.Label("%d Hz" % bands[idx]) box.pack_start(label, expand=False) box.pack_start(scale, expand=True) self.__scale_box.pack_start(box) self.pack_start(table, expand=False, padding=10) self.pack_start(self.__scale_box, expand=True) self.__use_equalizer_changed(use_equalizer)