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},
32 function buildPrefsWidget() {
33 let frame = new Gtk.Box({
34 orientation: Gtk.Orientation.VERTICAL,
37 let vbox = new Gtk.Box({
38 orientation: Gtk.Orientation.VERTICAL,
39 margin: 20, margin_top: 10
43 for (setting in settings) {
44 hbox = buildHbox(settings, setting);
54 function buildHbox(settings, setting) {
57 if (settings[setting].type == 's') {
58 hbox = createStringSetting(settings, setting);
59 } else if (settings[setting].type == "i") {
60 hbox = createIntSetting(settings, setting);
61 } else if (settings[setting].type == "b") {
62 hbox = createBoolSetting(settings, setting);
63 } else if (settings[setting].type == "r") {
64 hbox = createRangeSetting(settings, setting);
65 } else if (settings[setting].type == "e") {
66 hbox = createEnumSetting(settings, setting);
73 function createEnumSetting(settings, setting) {
74 let hbox = new Gtk.Box({
75 orientation: Gtk.Orientation.HORIZONTAL,
79 let setting_label = new Gtk.Label({
80 label: settings[setting].label,
84 let model = new Gtk.ListStore();
85 model.set_column_types([GObject.TYPE_INT, GObject.TYPE_STRING]);
86 let setting_enum = new Gtk.ComboBox({model: model});
87 setting_enum.get_style_context().add_class(Gtk.STYLE_CLASS_RAISED);
88 let renderer = new Gtk.CellRendererText();
89 setting_enum.pack_start(renderer, true);
90 setting_enum.add_attribute(renderer, 'text', 1);
92 for (let i=0; i<settings[setting].list.length; i++) {
93 let item = settings[setting].list[i];
94 let iter = model.append();
95 model.set(iter, [0, 1], [item.id, item.name]);
96 if (item.id == gsettings.get_enum(setting.replace('_', '-'))) {
97 setting_enum.set_active(item.id);
101 setting_enum.connect('changed', function(entry) {
102 let [success, iter] = setting_enum.get_active_iter();
107 let id = model.get_value(iter, 0)
108 gsettings.set_enum(setting.replace('_', '-'), id);
111 if (settings[setting].help) {
112 setting_label.set_tooltip_text(settings[setting].help)
113 setting_enum.set_tooltip_text(settings[setting].help)
116 hbox.pack_start(setting_label, true, true, 0);
117 hbox.add(setting_enum);