universal-access: Use "text-scaling-factor" instead of "dpi"

The latter has been removed from the schema, so adjust to that change.
This commit is contained in:
Florian Müllner 2011-03-03 17:01:19 +01:00
parent d964d2baae
commit 602fa1c657

View File

@ -25,16 +25,12 @@ const KEY_MOUSE_KEYS_ENABLED = 'mousekeys-enable';
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications'; const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
const XSETTINGS_SCHEMA = 'org.gnome.settings-daemon.plugins.xsettings';
const KEY_DPI = 'dpi';
const DPI_LOW_REASONABLE_VALUE = 50; const DPI_LOW_REASONABLE_VALUE = 50;
const DPI_HIGH_REASONABLE_VALUE = 500; const DPI_HIGH_REASONABLE_VALUE = 500;
const DPI_FACTOR_LARGE = 1.25; const DPI_FACTOR_LARGE = 1.25;
const DPI_FACTOR_LARGER = 1.5; const DPI_FACTOR_LARGER = 1.5;
const DPI_FACTOR_LARGEST = 2.0; const DPI_FACTOR_LARGEST = 2.0;
const DPI_DEFAULT = 96;
const KEY_META_DIR = '/apps/metacity/general'; const KEY_META_DIR = '/apps/metacity/general';
const KEY_VISUAL_BELL = KEY_META_DIR + '/visual_bell'; const KEY_VISUAL_BELL = KEY_META_DIR + '/visual_bell';
@ -42,25 +38,10 @@ const KEY_VISUAL_BELL = KEY_META_DIR + '/visual_bell';
const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface'; const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
const KEY_GTK_THEME = 'gtk-theme'; const KEY_GTK_THEME = 'gtk-theme';
const KEY_ICON_THEME = 'icon-theme'; const KEY_ICON_THEME = 'icon-theme';
const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
const HIGH_CONTRAST_THEME = 'HighContrast'; const HIGH_CONTRAST_THEME = 'HighContrast';
function getDPIFromX() {
let screen = global.get_gdk_screen();
if (screen) {
let width_dpi = (screen.get_width() / (screen.get_width_mm() / 25.4));
let height_dpi = (screen.get_height() / (screen.get_height_mm() / 25.4));
if (width_dpi < DPI_LOW_REASONABLE_VALUE
|| width_dpi > DPI_HIGH_REASONABLE_VALUE
|| height_dpi < DPI_LOW_REASONABLE_VALUE
|| height_dpi > DPI_HIGH_REASONABLE_VALUE)
return DPI_DEFAULT;
else
return (width_dpi + height_dpi) / 2;
}
return DPI_DEFAULT;
}
function ATIndicator() { function ATIndicator() {
this._init.apply(this, arguments); this._init.apply(this, arguments);
} }
@ -194,30 +175,23 @@ ATIndicator.prototype = {
}, },
_buildFontItem: function() { _buildFontItem: function() {
let settings = new Gio.Settings({ schema: XSETTINGS_SCHEMA }); let settings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
// we assume this never changes (which is not true if resolution let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
// is changed, but we would need XRandR events for that) let initial_setting = (factor > 1.0);
let x_value = getDPIFromX();
let user_value;
function on_get() {
user_value = settings.get_double(KEY_DPI);
return (user_value - (DPI_FACTOR_LARGE * x_value) > -1);
}
let initial_setting = on_get();
let default_value = (initial_setting || user_value == 0) ? x_value : user_value;
let widget = this._buildItemExtended(_("Large Text"), let widget = this._buildItemExtended(_("Large Text"),
initial_setting, initial_setting,
settings.is_writable(KEY_DPI), settings.is_writable(KEY_TEXT_SCALING_FACTOR),
function (enabled) { function (enabled) {
if (enabled) if (enabled)
settings.set_double(KEY_DPI, DPI_FACTOR_LARGE * default_value); settings.set_double(KEY_TEXT_SCALING_FACTOR,
DPI_FACTOR_LARGE);
else else
settings.set_double(KEY_DPI, default_value); settings.reset(KEY_TEXT_SCALING_FACTOR);
}); });
settings.connect('changed::' + KEY_DPI, function() { settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, function() {
let active = on_get(); let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
default_value = (active || user_value == 0) ? x_value : user_value; let active = (factor > 1.0);
widget.setToggleState(active); widget.setToggleState(active);
}); });
return widget; return widget;