764f5b62f0
The preference dialog for the panel clock does not set its gettext domain, so it's not translated even if though translations are already available. Fix by setting the domain in the GtkBuilder file and binding the domain to the locale directory. https://bugzilla.gnome.org/show_bug.cgi?id=618873
99 lines
3.1 KiB
JavaScript
99 lines
3.1 KiB
JavaScript
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
|
|
const GLib = imports.gi.GLib;
|
|
const Gtk = imports.gi.Gtk;
|
|
const GConf = imports.gi.GConf;
|
|
|
|
const Lang = imports.lang;
|
|
const Signals = imports.signals;
|
|
|
|
const Gettext = imports.gettext;
|
|
|
|
const GCONF_DIR = '/desktop/gnome/shell/clock';
|
|
const FORMAT_KEY = GCONF_DIR + '/format';
|
|
const SHOW_DATE_KEY = GCONF_DIR + '/show_date';
|
|
const SHOW_SECONDS_KEY = GCONF_DIR + '/show_seconds';
|
|
|
|
|
|
function ClockPreferences(uiFile) {
|
|
this._init(uiFile);
|
|
};
|
|
|
|
ClockPreferences.prototype = {
|
|
_init: function(uiFile) {
|
|
let builder = new Gtk.Builder();
|
|
builder.add_from_file(uiFile);
|
|
|
|
this._dialog = builder.get_object('prefs-dialog');
|
|
this._dialog.connect('response', Lang.bind(this, this._onResponse));
|
|
|
|
this._12hrRadio = builder.get_object('12hr_radio');
|
|
this._24hrRadio = builder.get_object('24hr_radio');
|
|
this._dateCheck = builder.get_object('date_check');
|
|
this._secondsCheck = builder.get_object('seconds_check');
|
|
|
|
delete builder;
|
|
|
|
this._gconf = GConf.Client.get_default();
|
|
this._gconf.add_dir(GCONF_DIR, GConf.ClientPreloadType.PRELOAD_NONE);
|
|
this._notifyId = this._gconf.notify_add(GCONF_DIR,
|
|
Lang.bind(this,
|
|
this._updateDialog));
|
|
|
|
this._12hrRadio.connect('toggled', Lang.bind(this,
|
|
function() {
|
|
let format = this._12hrRadio.active ? '12-hour' : '24-hour';
|
|
this._gconf.set_string(FORMAT_KEY, format);
|
|
}));
|
|
this._dateCheck.connect('toggled', Lang.bind(this,
|
|
function() {
|
|
this._gconf.set_bool(SHOW_DATE_KEY, this._dateCheck.active);
|
|
}));
|
|
this._secondsCheck.connect('toggled', Lang.bind(this,
|
|
function() {
|
|
this._gconf.set_bool(SHOW_SECONDS_KEY,
|
|
this._secondsCheck.active);
|
|
}));
|
|
|
|
this._updateDialog();
|
|
},
|
|
|
|
show: function() {
|
|
this._dialog.show_all();
|
|
},
|
|
|
|
_updateDialog: function() {
|
|
let format = this._gconf.get_string(FORMAT_KEY);
|
|
this._12hrRadio.active = (format == "12-hour");
|
|
this._24hrRadio.active = (format == "24-hour");
|
|
|
|
this._dateCheck.active = this._gconf.get_bool(SHOW_DATE_KEY);
|
|
this._secondsCheck.active = this._gconf.get_bool(SHOW_SECONDS_KEY);
|
|
},
|
|
|
|
_onResponse: function() {
|
|
this._dialog.destroy();
|
|
this._gconf.notify_remove(this._notifyId);
|
|
this.emit('destroy');
|
|
}
|
|
};
|
|
Signals.addSignalMethods(ClockPreferences.prototype);
|
|
|
|
function main(params) {
|
|
if ('progName' in params)
|
|
GLib.set_prgname(params['progName']);
|
|
if ('localeDir' in params)
|
|
Gettext.bindtextdomain('gnome-shell', params['localeDir']);
|
|
|
|
Gtk.init(null, null);
|
|
|
|
let clockPrefs = new ClockPreferences(params['uiFile']);
|
|
clockPrefs.connect('destroy',
|
|
function() {
|
|
Gtk.main_quit();
|
|
});
|
|
clockPrefs.show();
|
|
|
|
Gtk.main();
|
|
}
|