1 // vi: et sw=2 fileencoding=utf8
4 const Gtk = imports.gi.Gtk;
5 const GObject = imports.gi.GObject;
7 const Gettext = imports.gettext.domain('gnome-shell-extensions-AdvancedVolumeMixer');
8 const _ = Gettext.gettext;
10 const AVM = imports.misc.extensionUtils.getCurrentExtension();
11 const Lib = AVM.imports.lib;
17 gsettings = Lib.getSettings(AVM);
21 label: _("Position of volume mixer"),
23 {nick: "left", name: _("Left"), id: 0},
24 {nick: "center", name: _("Center"), id: 1},
25 {nick: "right", name: _("Right"), id: 2},
26 {nick: "aggregatedMenu", name: _("Aggregated menu"), id: 3},
31 label: _("Type of output slider"),
33 {nick: "default", name: _("Default"), id: 0},
34 {nick: "advItem", name: _("AdvItem"), id: 1},
40 function buildPrefsWidget() {
41 let frame = new Gtk.Box({
42 orientation: Gtk.Orientation.VERTICAL,
45 let vbox = new Gtk.Box({
46 orientation: Gtk.Orientation.VERTICAL,
47 margin: 20, margin_top: 10
51 for (setting in settings) {
52 hbox = buildHbox(settings, setting);
62 function buildHbox(settings, setting) {
65 if (settings[setting].type == 's') {
66 hbox = createStringSetting(settings, setting);
67 } else if (settings[setting].type == "i") {
68 hbox = createIntSetting(settings, setting);
69 } else if (settings[setting].type == "b") {
70 hbox = createBoolSetting(settings, setting);
71 } else if (settings[setting].type == "r") {
72 hbox = createRangeSetting(settings, setting);
73 } else if (settings[setting].type == "e") {
74 hbox = createEnumSetting(settings, setting);
81 function createEnumSetting(settings, setting) {
82 let hbox = new Gtk.Box({
83 orientation: Gtk.Orientation.HORIZONTAL,
87 let setting_label = new Gtk.Label({
88 label: settings[setting].label,
92 let model = new Gtk.ListStore();
93 model.set_column_types([GObject.TYPE_INT, GObject.TYPE_STRING]);
94 let setting_enum = new Gtk.ComboBox({model: model});
95 setting_enum.get_style_context().add_class(Gtk.STYLE_CLASS_RAISED);
96 let renderer = new Gtk.CellRendererText();
97 setting_enum.pack_start(renderer, true);
98 setting_enum.add_attribute(renderer, 'text', 1);
100 for (let i=0; i<settings[setting].list.length; i++) {
101 let item = settings[setting].list[i];
102 let iter = model.append();
103 model.set(iter, [0, 1], [item.id, item.name]);
104 if (item.id == gsettings.get_enum(setting.replace('_', '-'))) {
105 setting_enum.set_active(item.id);
109 setting_enum.connect('changed', function(entry) {
110 let [success, iter] = setting_enum.get_active_iter();
115 let id = model.get_value(iter, 0)
116 gsettings.set_enum(setting.replace('_', '-'), id);
119 if (settings[setting].help) {
120 setting_label.set_tooltip_text(settings[setting].help)
121 setting_enum.set_tooltip_text(settings[setting].help)
124 hbox.pack_start(setting_label, true, true, 0);
125 hbox.add(setting_enum);