diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js
index 7660856f5..e6b1a6eb7 100644
--- a/js/extensionPrefs/main.js
+++ b/js/extensionPrefs/main.js
@@ -1,4 +1,3 @@
-
const Lang = imports.lang;
const Gettext = imports.gettext;
const GLib = imports.gi.GLib;
@@ -24,9 +23,8 @@ function stripPrefix(string, prefix) {
return string;
}
-var Application = new Lang.Class({
- Name: 'Application',
- _init() {
+var Application = class {
+ constructor() {
GLib.set_prgname('gnome-shell-extension-prefs');
this.application = new Gtk.Application({
application_id: 'org.gnome.shell.ExtensionPrefs',
@@ -42,7 +40,7 @@ var Application = new Lang.Class({
this._startupUuid = null;
this._loaded = false;
this._skipMainWindow = false;
- },
+ }
_extensionAvailable(uuid) {
let extension = ExtensionUtils.extensions[uuid];
@@ -54,7 +52,7 @@ var Application = new Lang.Class({
return false;
return true;
- },
+ }
_getExtensionPrefsModule(extension) {
let uuid = extension.metadata.uuid;
@@ -69,7 +67,7 @@ var Application = new Lang.Class({
this._extensionPrefsModules[uuid] = prefsModule;
return prefsModule;
- },
+ }
_selectExtension(uuid) {
if (!this._extensionAvailable(uuid))
@@ -104,7 +102,7 @@ var Application = new Lang.Class({
dialog.set_default_size(600, 400);
dialog.add(widget);
dialog.show();
- },
+ }
_buildErrorUI(extension, exc) {
let box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
@@ -130,7 +128,7 @@ var Application = new Lang.Class({
box.show_all();
return box;
- },
+ }
_buildUI(app) {
this._window = new Gtk.ApplicationWindow({ application: app,
@@ -167,13 +165,13 @@ var Application = new Lang.Class({
});
this._window.show_all();
- },
+ }
_sortList(row1, row2) {
let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name;
let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name;
return name1.localeCompare(name2);
- },
+ }
_updateHeader(row, before) {
if (!before || row.get_header())
@@ -181,14 +179,14 @@ var Application = new Lang.Class({
let sep = new Gtk.Separator({ orientation: Gtk.Orientation.HORIZONTAL });
row.set_header(sep);
- },
+ }
_scanExtensions() {
let finder = new ExtensionUtils.ExtensionFinder();
finder.connect('extension-found', this._extensionFound.bind(this));
finder.scanExtensions();
this._extensionsLoaded();
- },
+ }
_extensionFound(finder, extension) {
let row = new ExtensionRow(extension.uuid);
@@ -200,7 +198,7 @@ var Application = new Lang.Class({
row.show_all();
this._extensionSelector.add(row);
- },
+ }
_extensionsLoaded() {
if (this._startupUuid && this._extensionAvailable(this._startupUuid))
@@ -208,16 +206,16 @@ var Application = new Lang.Class({
this._startupUuid = null;
this._skipMainWindow = false;
this._loaded = true;
- },
+ }
_onActivate() {
this._window.present();
- },
+ }
_onStartup(app) {
this._buildUI(app);
this._scanExtensions();
- },
+ }
_onCommandLine(app, commandLine) {
app.activate();
@@ -240,7 +238,7 @@ var Application = new Lang.Class({
}
return 0;
}
-});
+};
var DescriptionLabel = new Lang.Class({
Name: 'DescriptionLabel',
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index fcb1a585b..6dd5cdba6 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Pango = imports.gi.Pango;
const Signals = imports.signals;
const St = imports.gi.St;
@@ -38,10 +37,8 @@ var BeginRequestType = {
DONT_PROVIDE_USERNAME: 1
};
-var AuthPrompt = new Lang.Class({
- Name: 'AuthPrompt',
-
- _init(gdmClient, mode) {
+var AuthPrompt = class {
+ constructor(gdmClient, mode) {
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
this._gdmClient = gdmClient;
@@ -131,12 +128,12 @@ var AuthPrompt = new Lang.Class({
this._spinner.actor.opacity = 0;
this._spinner.actor.show();
this._defaultButtonWell.add_child(this._spinner.actor);
- },
+ }
_onDestroy() {
this._userVerifier.destroy();
this._userVerifier = null;
- },
+ }
_initButtons() {
this.cancelButton = new St.Button({ style_class: 'modal-dialog-button button',
@@ -184,7 +181,7 @@ var AuthPrompt = new Lang.Class({
if (this.nextButton.reactive)
this.emit('next');
});
- },
+ }
_onAskQuestion(verifier, serviceName, question, passwordChar) {
if (this._queryingService)
@@ -210,12 +207,12 @@ var AuthPrompt = new Lang.Class({
this.updateSensitivity(true);
this.emit('prompted');
- },
+ }
_onOVirtUserAuthenticated() {
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED)
this.reset();
- },
+ }
_onSmartcardStatusChanged() {
this.smartcardDetected = this._userVerifier.smartcardDetected;
@@ -234,12 +231,12 @@ var AuthPrompt = new Lang.Class({
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED)
this.reset();
- },
+ }
_onShowMessage(userVerifier, message, type) {
this.setMessage(message, type);
this.emit('prompted');
- },
+ }
_onVerificationFailed(userVerifier, canRetry) {
this._queryingService = null;
@@ -248,22 +245,22 @@ var AuthPrompt = new Lang.Class({
this.updateSensitivity(canRetry);
this.setActorInDefaultButtonWell(null);
this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED;
- },
+ }
_onVerificationComplete() {
this.setActorInDefaultButtonWell(null);
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
this.cancelButton.reactive = false;
- },
+ }
_onReset() {
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
this.reset();
- },
+ }
addActorToDefaultButtonWell(actor) {
this._defaultButtonWell.add_child(actor);
- },
+ }
setActorInDefaultButtonWell(actor, animate) {
if (!this._defaultButtonWellActor &&
@@ -327,25 +324,25 @@ var AuthPrompt = new Lang.Class({
}
this._defaultButtonWellActor = actor;
- },
+ }
startSpinning() {
this.setActorInDefaultButtonWell(this._spinner.actor, true);
- },
+ }
stopSpinning() {
this.setActorInDefaultButtonWell(null, false);
- },
+ }
clear() {
this._entry.text = '';
this.stopSpinning();
- },
+ }
setPasswordChar(passwordChar) {
this._entry.clutter_text.set_password_char(passwordChar);
this._entry.menu.isPassword = passwordChar != '';
- },
+ }
setQuestion(question) {
this._label.set_text(question);
@@ -354,7 +351,7 @@ var AuthPrompt = new Lang.Class({
this._entry.show();
this._entry.grab_key_focus();
- },
+ }
getAnswer() {
let text;
@@ -367,7 +364,7 @@ var AuthPrompt = new Lang.Class({
}
return text;
- },
+ }
_fadeOutMessage() {
if (this._message.opacity == 0)
@@ -378,7 +375,7 @@ var AuthPrompt = new Lang.Class({
time: MESSAGE_FADE_OUT_ANIMATION_TIME,
transition: 'easeOutQuad'
});
- },
+ }
setMessage(message, type) {
if (type == GdmUtil.MessageType.ERROR)
@@ -398,18 +395,18 @@ var AuthPrompt = new Lang.Class({
} else {
this._message.opacity = 0;
}
- },
+ }
_updateNextButtonSensitivity(sensitive) {
this.nextButton.reactive = sensitive;
this.nextButton.can_focus = sensitive;
- },
+ }
updateSensitivity(sensitive) {
this._updateNextButtonSensitivity(sensitive && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING));
this._entry.reactive = sensitive;
this._entry.clutter_text.editable = sensitive;
- },
+ }
hide() {
this.setActorInDefaultButtonWell(null, true);
@@ -420,7 +417,7 @@ var AuthPrompt = new Lang.Class({
this.updateSensitivity(true);
this._entry.set_text('');
- },
+ }
setUser(user) {
let oldChild = this._userWell.get_child();
@@ -431,7 +428,7 @@ var AuthPrompt = new Lang.Class({
let userWidget = new UserWidget.UserWidget(user);
this._userWell.set_child(userWidget.actor);
}
- },
+ }
reset() {
let oldStatus = this.verificationStatus;
@@ -469,7 +466,7 @@ var AuthPrompt = new Lang.Class({
}
this.emit('reset', beginRequestType);
- },
+ }
addCharacter(unichar) {
if (!this._entry.visible)
@@ -477,7 +474,7 @@ var AuthPrompt = new Lang.Class({
this._entry.grab_key_focus();
this._entry.clutter_text.insert_unichar(unichar);
- },
+ }
begin(params) {
params = Params.parse(params, { userName: null,
@@ -491,7 +488,7 @@ var AuthPrompt = new Lang.Class({
this._userVerifier.begin(params.userName, hold);
this.verificationStatus = AuthPromptStatus.VERIFYING;
- },
+ }
finish(onComplete) {
if (!this._userVerifier.hasPendingMessages) {
@@ -505,7 +502,7 @@ var AuthPrompt = new Lang.Class({
this._userVerifier.clear();
onComplete();
});
- },
+ }
cancel() {
if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
@@ -514,5 +511,5 @@ var AuthPrompt = new Lang.Class({
this.reset();
this.emit('cancelled');
}
-});
+};
Signals.addSignalMethods(AuthPrompt.prototype);
diff --git a/js/gdm/batch.js b/js/gdm/batch.js
index 29c222343..bd84c9230 100644
--- a/js/gdm/batch.js
+++ b/js/gdm/batch.js
@@ -44,45 +44,39 @@
* replaced by something else.
*/
-const Lang = imports.lang;
const Signals = imports.signals;
-var Task = new Lang.Class({
- Name: 'Task',
-
- _init(scope, handler) {
+var Task = class {
+ constructor(scope, handler) {
if (scope)
this.scope = scope;
else
this.scope = this;
this.handler = handler;
- },
+ }
run() {
if (this.handler)
return this.handler.call(this.scope);
return null;
- },
-});
+ }
+};
Signals.addSignalMethods(Task.prototype);
-var Hold = new Lang.Class({
- Name: 'Hold',
- Extends: Task,
-
- _init() {
- this.parent(this, () => this);
+var Hold = class extends Task {
+ constructor() {
+ super(null, () => this);
this._acquisitions = 1;
- },
+ }
acquire() {
if (this._acquisitions <= 0)
throw new Error("Cannot acquire hold after it's been released");
this._acquisitions++;
- },
+ }
acquireUntilAfter(hold) {
if (!hold.isAcquired())
@@ -93,27 +87,24 @@ var Hold = new Lang.Class({
hold.disconnect(signalId);
this.release();
});
- },
+ }
release() {
this._acquisitions--;
if (this._acquisitions == 0)
this.emit('release');
- },
+ }
isAcquired() {
return this._acquisitions > 0;
}
-});
+};
Signals.addSignalMethods(Hold.prototype);
-var Batch = new Lang.Class({
- Name: 'Batch',
- Extends: Task,
-
- _init(scope, tasks) {
- this.parent();
+var Batch = class extends Task {
+ constructor(scope, tasks) {
+ super();
this.tasks = [];
@@ -130,11 +121,11 @@ var Batch = new Lang.Class({
this.tasks.push(task);
}
- },
+ }
process() {
throw new Error('Not implemented');
- },
+ }
runTask() {
if (!(this._currentTaskIndex in this.tasks)) {
@@ -142,11 +133,11 @@ var Batch = new Lang.Class({
}
return this.tasks[this._currentTaskIndex].run();
- },
+ }
_finish() {
this.hold.release();
- },
+ }
nextTask() {
this._currentTaskIndex++;
@@ -159,7 +150,7 @@ var Batch = new Lang.Class({
}
this.process();
- },
+ }
_start() {
// acquire a hold to get released when the entire
@@ -167,7 +158,7 @@ var Batch = new Lang.Class({
this.hold = new Hold();
this._currentTaskIndex = 0;
this.process();
- },
+ }
run() {
this._start();
@@ -175,18 +166,15 @@ var Batch = new Lang.Class({
// hold may be destroyed at this point
// if we're already done running
return this.hold;
- },
+ }
cancel() {
this.tasks = this.tasks.splice(0, this._currentTaskIndex + 1);
}
-});
+};
Signals.addSignalMethods(Batch.prototype);
-var ConcurrentBatch = new Lang.Class({
- Name: 'ConcurrentBatch',
- Extends: Batch,
-
+var ConcurrentBatch = class extends Batch {
process() {
let hold = this.runTask();
@@ -199,13 +187,10 @@ var ConcurrentBatch = new Lang.Class({
// concurrently.
this.nextTask();
}
-});
+};
Signals.addSignalMethods(ConcurrentBatch.prototype);
-var ConsecutiveBatch = new Lang.Class({
- Name: 'ConsecutiveBatch',
- Extends: Batch,
-
+var ConsecutiveBatch = class extends Batch {
process() {
let hold = this.runTask();
@@ -222,5 +207,5 @@ var ConsecutiveBatch = new Lang.Class({
this.nextTask();
}
}
-});
+};
Signals.addSignalMethods(ConsecutiveBatch.prototype);
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 16a8682e2..252caa24d 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -50,10 +50,8 @@ const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
const _LOGO_ICON_HEIGHT = 48;
const _MAX_BOTTOM_MENU_ITEMS = 5;
-var UserListItem = new Lang.Class({
- Name: 'UserListItem',
-
- _init(user) {
+var UserListItem = class {
+ constructor(user) {
this.user = user;
this._userChangedId = this.user.connect('changed',
this._onUserChanged.bind(this));
@@ -91,26 +89,26 @@ var UserListItem = new Lang.Class({
this.actor.connect('clicked', this._onClicked.bind(this));
this._onUserChanged();
- },
+ }
_onUserChanged() {
this._updateLoggedIn();
- },
+ }
_updateLoggedIn() {
if (this.user.is_logged_in())
this.actor.add_style_pseudo_class('logged-in');
else
this.actor.remove_style_pseudo_class('logged-in');
- },
+ }
_onDestroy() {
this.user.disconnect(this._userChangedId);
- },
+ }
_onClicked() {
this.emit('activate');
- },
+ }
_setSelected(selected) {
if (selected) {
@@ -119,7 +117,7 @@ var UserListItem = new Lang.Class({
} else {
this.actor.remove_style_pseudo_class('selected');
}
- },
+ }
showTimedLoginIndicator(time) {
let hold = new Batch.Hold();
@@ -147,7 +145,7 @@ var UserListItem = new Lang.Class({
GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId');
return hold;
- },
+ }
hideTimedLoginIndicator() {
if (this._timedLoginTimeoutId) {
@@ -158,13 +156,11 @@ var UserListItem = new Lang.Class({
this._timedLoginIndicator.visible = false;
this._timedLoginIndicator.scale_x = 0.;
}
-});
+};
Signals.addSignalMethods(UserListItem.prototype);
-var UserList = new Lang.Class({
- Name: 'UserList',
-
- _init() {
+var UserList = class {
+ constructor() {
this.actor = new St.ScrollView({ style_class: 'login-dialog-user-list-view'});
this.actor.set_policy(Gtk.PolicyType.NEVER,
Gtk.PolicyType.AUTOMATIC);
@@ -177,7 +173,7 @@ var UserList = new Lang.Class({
this._items = {};
this.actor.connect('key-focus-in', this._moveFocusToItems.bind(this));
- },
+ }
_moveFocusToItems() {
let hasItems = Object.keys(this._items).length > 0;
@@ -195,11 +191,11 @@ var UserList = new Lang.Class({
return false;
});
}
- },
+ }
_onItemActivated(activatedItem) {
this.emit('activate', activatedItem);
- },
+ }
updateStyle(isExpanded) {
let tasks = [];
@@ -213,7 +209,7 @@ var UserList = new Lang.Class({
let item = this._items[userName];
item.actor.sync_hover();
}
- },
+ }
scrollToItem(item) {
let box = item.actor.get_allocation_box();
@@ -226,7 +222,7 @@ var UserList = new Lang.Class({
{ value: value,
time: _SCROLL_ANIMATION_TIME,
transition: 'easeOutQuad' });
- },
+ }
jumpToItem(item) {
let box = item.actor.get_allocation_box();
@@ -236,7 +232,7 @@ var UserList = new Lang.Class({
let value = (box.y1 + adjustment.step_increment / 2.0) - (adjustment.page_size / 2.0);
adjustment.set_value(value);
- },
+ }
getItemFromUserName(userName) {
let item = this._items[userName];
@@ -245,11 +241,11 @@ var UserList = new Lang.Class({
return null;
return item;
- },
+ }
containsUser(user) {
return this._items[user.get_user_name()] != null;
- },
+ }
addUser(user) {
if (!user.is_loaded)
@@ -281,7 +277,7 @@ var UserList = new Lang.Class({
this._moveFocusToItems();
this.emit('item-added', item);
- },
+ }
removeUser(user) {
if (!user.is_loaded)
@@ -299,18 +295,16 @@ var UserList = new Lang.Class({
item.actor.destroy();
delete this._items[userName];
- },
+ }
numItems() {
return Object.keys(this._items).length;
}
-});
+};
Signals.addSignalMethods(UserList.prototype);
-var SessionMenuButton = new Lang.Class({
- Name: 'SessionMenuButton',
-
- _init() {
+var SessionMenuButton = class {
+ constructor() {
let gearIcon = new St.Icon({ icon_name: 'emblem-system-symbolic' });
this._button = new St.Button({ style_class: 'login-dialog-session-list-button',
reactive: true,
@@ -350,13 +344,13 @@ var SessionMenuButton = new Lang.Class({
this._items = {};
this._activeSessionId = null;
this._populate();
- },
+ }
updateSensitivity(sensitive) {
this._button.reactive = sensitive;
this._button.can_focus = sensitive;
this._menu.close(BoxPointer.PopupAnimation.NONE);
- },
+ }
_updateOrnament() {
let itemIds = Object.keys(this._items);
@@ -366,7 +360,7 @@ var SessionMenuButton = new Lang.Class({
else
this._items[itemIds[i]].setOrnament(PopupMenu.Ornament.NONE);
}
- },
+ }
setActiveSession(sessionId) {
if (sessionId == this._activeSessionId)
@@ -374,11 +368,11 @@ var SessionMenuButton = new Lang.Class({
this._activeSessionId = sessionId;
this._updateOrnament();
- },
+ }
close() {
this._menu.close();
- },
+ }
_populate() {
let ids = Gdm.get_session_ids();
@@ -403,7 +397,7 @@ var SessionMenuButton = new Lang.Class({
});
}
}
-});
+};
Signals.addSignalMethods(SessionMenuButton.prototype);
var LoginDialog = new Lang.Class({
diff --git a/js/gdm/oVirt.js b/js/gdm/oVirt.js
index e53e0ff7b..d5f6fbbac 100644
--- a/js/gdm/oVirt.js
+++ b/js/gdm/oVirt.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Signals = imports.signals;
const OVirtCredentialsIface = `
@@ -28,33 +27,32 @@ function OVirtCredentials() {
return self;
}
-var OVirtCredentialsManager = new Lang.Class({
- Name: 'OVirtCredentialsManager',
- _init() {
+var OVirtCredentialsManager = class {
+ constructor() {
this._token = null;
this._credentials = new OVirtCredentials();
this._credentials.connectSignal('UserAuthenticated',
this._onUserAuthenticated.bind(this));
- },
+ }
_onUserAuthenticated(proxy, sender, [token]) {
this._token = token;
this.emit('user-authenticated', token);
- },
+ }
hasToken() {
return this._token != null;
- },
+ }
getToken() {
return this._token;
- },
+ }
resetToken() {
this._token = null;
}
-});
+};
Signals.addSignalMethods(OVirtCredentialsManager.prototype);
function getOVirtCredentialsManager() {
diff --git a/js/gdm/realmd.js b/js/gdm/realmd.js
index 7b1fb907d..94007aa49 100644
--- a/js/gdm/realmd.js
+++ b/js/gdm/realmd.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -16,10 +15,8 @@ const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface);
const RealmIface = loadInterfaceXML("org.freedesktop.realmd.Realm");
const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface);
-var Manager = new Lang.Class({
- Name: 'Manager',
-
- _init(parentActor) {
+var Manager = class {
+ constructor(parentActor) {
this._aggregateProvider = Provider(Gio.DBus.system,
'org.freedesktop.realmd',
'/org/freedesktop/realmd',
@@ -31,7 +28,7 @@ var Manager = new Lang.Class({
if ('Realms' in properties.deep_unpack())
this._reloadRealms();
});
- },
+ }
_reloadRealms() {
let realmPaths = this._aggregateProvider.Realms;
@@ -45,7 +42,7 @@ var Manager = new Lang.Class({
realmPaths[i],
this._onRealmLoaded.bind(this));
}
- },
+ }
_reloadRealm(realm) {
if (!realm.Configured) {
@@ -58,7 +55,7 @@ var Manager = new Lang.Class({
this._realms[realm.get_object_path()] = realm;
this._updateLoginFormat();
- },
+ }
_onRealmLoaded(realm, error) {
if (error)
@@ -70,7 +67,7 @@ var Manager = new Lang.Class({
if ('Configured' in properties.deep_unpack())
this._reloadRealm(realm);
});
- },
+ }
_updateLoginFormat() {
let newLoginFormat;
@@ -87,7 +84,7 @@ var Manager = new Lang.Class({
this._loginFormat = newLoginFormat;
this.emit('login-format-changed', newLoginFormat);
}
- },
+ }
get loginFormat() {
if (this._loginFormat !== undefined)
@@ -96,7 +93,7 @@ var Manager = new Lang.Class({
this._updateLoginFormat();
return this._loginFormat;
- },
+ }
release() {
Service(Gio.DBus.system,
@@ -107,5 +104,5 @@ var Manager = new Lang.Class({
this._realms = { };
this._updateLoginFormat();
}
-});
+};
Signals.addSignalMethods(Manager.prototype)
diff --git a/js/gdm/util.js b/js/gdm/util.js
index eac8ccd50..63376873e 100644
--- a/js/gdm/util.js
+++ b/js/gdm/util.js
@@ -3,7 +3,6 @@
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
const St = imports.gi.St;
@@ -119,10 +118,8 @@ function cloneAndFadeOutActor(actor) {
return hold;
}
-var ShellUserVerifier = new Lang.Class({
- Name: 'ShellUserVerifier',
-
- _init(client, params) {
+var ShellUserVerifier = class {
+ constructor(client, params) {
params = Params.parse(params, { reauthenticationOnly: false });
this._reauthOnly = params.reauthenticationOnly;
@@ -165,7 +162,7 @@ var ShellUserVerifier = new Lang.Class({
this._oVirtUserAuthenticatedId = this._oVirtCredentialsManager.connect('user-authenticated',
this._oVirtUserAuthenticated.bind(this));
- },
+ }
begin(userName, hold) {
this._cancellable = new Gio.Cancellable();
@@ -183,7 +180,7 @@ var ShellUserVerifier = new Lang.Class({
} else {
this._client.get_user_verifier(this._cancellable, this._userVerifierGot.bind(this));
}
- },
+ }
cancel() {
if (this._cancellable)
@@ -193,14 +190,14 @@ var ShellUserVerifier = new Lang.Class({
this._userVerifier.call_cancel_sync(null);
this.clear();
}
- },
+ }
_clearUserVerifier() {
if (this._userVerifier) {
this._userVerifier.run_dispose();
this._userVerifier = null;
}
- },
+ }
clear() {
if (this._cancellable) {
@@ -210,7 +207,7 @@ var ShellUserVerifier = new Lang.Class({
this._clearUserVerifier();
this._clearMessageQueue();
- },
+ }
destroy() {
this.clear();
@@ -224,7 +221,7 @@ var ShellUserVerifier = new Lang.Class({
this._oVirtCredentialsManager.disconnect(this._oVirtUserAuthenticatedId);
this._oVirtCredentialsManager = null;
- },
+ }
answerQuery(serviceName, answer) {
if (!this.hasPendingMessages) {
@@ -235,12 +232,12 @@ var ShellUserVerifier = new Lang.Class({
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
});
}
- },
+ }
_getIntervalForMessage(message) {
// We probably could be smarter here
return message.length * USER_READ_TIME;
- },
+ }
finishMessageQueue() {
if (!this.hasPendingMessages)
@@ -250,7 +247,7 @@ var ShellUserVerifier = new Lang.Class({
this.hasPendingMessages = false;
this.emit('no-more-messages');
- },
+ }
_queueMessageTimeout() {
if (this._messageQueue.length == 0) {
@@ -273,7 +270,7 @@ var ShellUserVerifier = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._messageQueueTimeoutId, '[gnome-shell] this._queueMessageTimeout');
- },
+ }
_queueMessage(message, messageType) {
let interval = this._getIntervalForMessage(message);
@@ -281,7 +278,7 @@ var ShellUserVerifier = new Lang.Class({
this.hasPendingMessages = true;
this._messageQueue.push({ text: message, type: messageType, interval: interval });
this._queueMessageTimeout();
- },
+ }
_clearMessageQueue() {
this.finishMessageQueue();
@@ -291,7 +288,7 @@ var ShellUserVerifier = new Lang.Class({
this._messageQueueTimeoutId = 0;
}
this.emit('show-message', null, MessageType.NONE);
- },
+ }
_checkForFingerprintReader() {
this._haveFingerprintReader = false;
@@ -309,12 +306,12 @@ var ShellUserVerifier = new Lang.Class({
this._updateDefaultService();
}
});
- },
+ }
_oVirtUserAuthenticated(token) {
this._preemptingService = OVIRT_SERVICE_NAME;
this.emit('ovirt-user-authenticated');
- },
+ }
_checkForSmartcard() {
let smartcardDetected;
@@ -336,7 +333,7 @@ var ShellUserVerifier = new Lang.Class({
this.emit('smartcard-status-changed');
}
- },
+ }
_reportInitError(where, error) {
logError(error, where);
@@ -344,7 +341,7 @@ var ShellUserVerifier = new Lang.Class({
this._queueMessage(_("Authentication error"), MessageType.ERROR);
this._verificationFailed(false);
- },
+ }
_reauthenticationChannelOpened(client, result) {
try {
@@ -371,7 +368,7 @@ var ShellUserVerifier = new Lang.Class({
this._connectSignals();
this._beginVerification();
this._hold.release();
- },
+ }
_userVerifierGot(client, result) {
try {
@@ -387,7 +384,7 @@ var ShellUserVerifier = new Lang.Class({
this._connectSignals();
this._beginVerification();
this._hold.release();
- },
+ }
_connectSignals() {
this._userVerifier.connect('info', this._onInfo.bind(this));
@@ -397,22 +394,22 @@ var ShellUserVerifier = new Lang.Class({
this._userVerifier.connect('conversation-stopped', this._onConversationStopped.bind(this));
this._userVerifier.connect('reset', this._onReset.bind(this));
this._userVerifier.connect('verification-complete', this._onVerificationComplete.bind(this));
- },
+ }
_getForegroundService() {
if (this._preemptingService)
return this._preemptingService;
return this._defaultService;
- },
+ }
serviceIsForeground(serviceName) {
return serviceName == this._getForegroundService();
- },
+ }
serviceIsDefault(serviceName) {
return serviceName == this._defaultService;
- },
+ }
_updateDefaultService() {
if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY))
@@ -426,7 +423,7 @@ var ShellUserVerifier = new Lang.Class({
log("no authentication service is enabled, using password authentication");
this._defaultService = PASSWORD_SERVICE_NAME;
}
- },
+ }
_startService(serviceName) {
this._hold.acquire();
@@ -462,14 +459,14 @@ var ShellUserVerifier = new Lang.Class({
this._hold.release();
});
}
- },
+ }
_beginVerification() {
this._startService(this._getForegroundService());
if (this._userName && this._haveFingerprintReader && !this.serviceIsForeground(FINGERPRINT_SERVICE_NAME))
this._startService(FINGERPRINT_SERVICE_NAME);
- },
+ }
_onInfo(client, serviceName, info) {
if (this.serviceIsForeground(serviceName)) {
@@ -484,21 +481,21 @@ var ShellUserVerifier = new Lang.Class({
// to indicate the user can swipe their finger instead
this._queueMessage(_("(or swipe finger)"), MessageType.HINT);
}
- },
+ }
_onProblem(client, serviceName, problem) {
if (!this.serviceIsForeground(serviceName))
return;
this._queueMessage(problem, MessageType.ERROR);
- },
+ }
_onInfoQuery(client, serviceName, question) {
if (!this.serviceIsForeground(serviceName))
return;
this.emit('ask-question', serviceName, question, '');
- },
+ }
_onSecretInfoQuery(client, serviceName, secretQuestion) {
if (!this.serviceIsForeground(serviceName))
@@ -511,7 +508,7 @@ var ShellUserVerifier = new Lang.Class({
}
this.emit('ask-question', serviceName, secretQuestion, '\u25cf');
- },
+ }
_onReset() {
// Clear previous attempts to authenticate
@@ -519,20 +516,20 @@ var ShellUserVerifier = new Lang.Class({
this._updateDefaultService();
this.emit('reset');
- },
+ }
_onVerificationComplete() {
this.emit('verification-complete');
- },
+ }
_cancelAndReset() {
this.cancel();
this._onReset();
- },
+ }
_retry() {
this.begin(this._userName, new Batch.Hold());
- },
+ }
_verificationFailed(retry) {
// For Not Listed / enterprise logins, immediately reset
@@ -567,7 +564,7 @@ var ShellUserVerifier = new Lang.Class({
}
this.emit('verification-failed', canRetry);
- },
+ }
_onConversationStopped(client, serviceName) {
// If the login failed with the preauthenticated oVirt credentials
@@ -586,6 +583,6 @@ var ShellUserVerifier = new Lang.Class({
if (this.serviceIsForeground(serviceName)) {
this._verificationFailed(true);
}
- },
-});
+ }
+};
Signals.addSignalMethods(ShellUserVerifier.prototype);
diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js
index 6e39f87d7..be6db8343 100644
--- a/js/misc/extensionUtils.js
+++ b/js/misc/extensionUtils.js
@@ -3,7 +3,6 @@
// Common utils for the extension system and the extension
// preferences tool
-const Lang = imports.lang;
const Signals = imports.signals;
const Gio = imports.gi.Gio;
@@ -160,9 +159,7 @@ function installImporter(extension) {
imports.searchPath = oldSearchPath;
}
-var ExtensionFinder = new Lang.Class({
- Name: 'ExtensionFinder',
-
+var ExtensionFinder = class {
_loadExtension(extensionDir, info, perUserDir) {
let fileType = info.get_file_type();
if (fileType != Gio.FileType.DIRECTORY)
@@ -184,7 +181,7 @@ var ExtensionFinder = new Lang.Class({
return;
}
this.emit('extension-found', extension);
- },
+ }
scanExtensions() {
let perUserDir = Gio.File.new_for_path(global.userdatadir);
@@ -192,5 +189,5 @@ var ExtensionFinder = new Lang.Class({
this._loadExtension(dir, info, perUserDir);
});
}
-});
+};
Signals.addSignalMethods(ExtensionFinder.prototype);
diff --git a/js/misc/history.js b/js/misc/history.js
index f1d037018..fbe1c088f 100644
--- a/js/misc/history.js
+++ b/js/misc/history.js
@@ -1,16 +1,13 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Signals = imports.signals;
const Clutter = imports.gi.Clutter;
const Params = imports.misc.params;
var DEFAULT_LIMIT = 512;
-var HistoryManager = new Lang.Class({
- Name: 'HistoryManager',
-
- _init(params) {
+var HistoryManager = class {
+ constructor(params) {
params = Params.parse(params, { gsettingsKey: null,
limit: DEFAULT_LIMIT,
entry: null });
@@ -34,12 +31,12 @@ var HistoryManager = new Lang.Class({
this._entry.connect('key-press-event',
this._onEntryKeyPress.bind(this));
}
- },
+ }
_historyChanged() {
this._history = global.settings.get_strv(this._key);
this._historyIndex = this._history.length;
- },
+ }
_setPrevItem(text) {
if (this._historyIndex <= 0)
@@ -50,7 +47,7 @@ var HistoryManager = new Lang.Class({
this._historyIndex--;
this._indexChanged();
return true;
- },
+ }
_setNextItem(text) {
if (this._historyIndex >= this._history.length)
@@ -61,7 +58,7 @@ var HistoryManager = new Lang.Class({
this._historyIndex++;
this._indexChanged();
return true;
- },
+ }
lastItem() {
if (this._historyIndex != this._history.length) {
@@ -70,7 +67,7 @@ var HistoryManager = new Lang.Class({
}
return this._historyIndex ? this._history[this._historyIndex -1] : null;
- },
+ }
addItem(input) {
if (this._history.length == 0 ||
@@ -81,7 +78,7 @@ var HistoryManager = new Lang.Class({
this._save();
}
this._historyIndex = this._history.length;
- },
+ }
_onEntryKeyPress(entry, event) {
let symbol = event.get_key_symbol();
@@ -91,7 +88,7 @@ var HistoryManager = new Lang.Class({
return this._setNextItem(entry.get_text());
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_indexChanged() {
let current = this._history[this._historyIndex] || '';
@@ -99,7 +96,7 @@ var HistoryManager = new Lang.Class({
if (this._entry)
this._entry.set_text(current);
- },
+ }
_save() {
if (this._history.length > this._limit)
@@ -108,5 +105,5 @@ var HistoryManager = new Lang.Class({
if (this._key)
global.settings.set_strv(this._key, this._history);
}
-});
+};
Signals.addSignalMethods(HistoryManager.prototype);
diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js
index 33ad8777e..fe86a8326 100644
--- a/js/misc/ibusManager.js
+++ b/js/misc/ibusManager.js
@@ -2,7 +2,6 @@
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
@@ -32,17 +31,16 @@ function getIBusManager() {
return _ibusManager;
}
-var IBusManager = new Lang.Class({
- Name: 'IBusManager',
-
- // This is the longest we'll keep the keyboard frozen until an input
- // source is active.
- _MAX_INPUT_SOURCE_ACTIVATION_TIME: 4000, // ms
- _PRELOAD_ENGINES_DELAY_TIME: 30, // sec
-
- _init() {
+var IBusManager = class {
+ constructor() {
IBus.init();
+ // This is the longest we'll keep the keyboard frozen until an input
+ // source is active.
+ this._MAX_INPUT_SOURCE_ACTIVATION_TIME = 4000; // ms
+ this._PRELOAD_ENGINES_DELAY_TIME = 30; // sec
+
+
this._candidatePopup = new IBusCandidatePopup.CandidatePopup();
this._panelService = null;
@@ -60,7 +58,7 @@ var IBusManager = new Lang.Class({
this._ibus.connect('global-engine-changed', this._engineChanged.bind(this));
this._spawn();
- },
+ }
_spawn() {
try {
@@ -69,7 +67,7 @@ var IBusManager = new Lang.Class({
} catch(e) {
log('Failed to launch ibus-daemon: ' + e.message);
}
- },
+ }
_clear() {
if (this._panelService)
@@ -85,7 +83,7 @@ var IBusManager = new Lang.Class({
this.emit('ready', false);
this._spawn();
- },
+ }
_onConnected() {
this._ibus.list_engines_async(-1, null, this._initEngines.bind(this));
@@ -93,7 +91,7 @@ var IBusManager = new Lang.Class({
IBus.BusNameFlag.REPLACE_EXISTING,
-1, null,
this._initPanelService.bind(this));
- },
+ }
_initEngines(ibus, result) {
let enginesList = this._ibus.list_engines_async_finish(result);
@@ -106,7 +104,7 @@ var IBusManager = new Lang.Class({
} else {
this._clear();
}
- },
+ }
_initPanelService(ibus, result) {
let success = this._ibus.request_name_async_finish(result);
@@ -151,13 +149,13 @@ var IBusManager = new Lang.Class({
} else {
this._clear();
}
- },
+ }
_updateReadiness() {
this._ready = (Object.keys(this._engines).length > 0 &&
this._panelService != null);
this.emit('ready', this._ready);
- },
+ }
_engineChanged(bus, engineName) {
if (!this._ready)
@@ -178,26 +176,26 @@ var IBusManager = new Lang.Class({
this.emit('properties-registered', this._currentEngineName, props);
});
- },
+ }
_updateProperty(panel, prop) {
this.emit('property-updated', this._currentEngineName, prop);
- },
+ }
_setContentType(panel, purpose, hints) {
this.emit('set-content-type', purpose, hints);
- },
+ }
activateProperty(key, state) {
this._panelService.property_activate(key, state);
- },
+ }
getEngineDesc(id) {
if (!this._ready || !this._engines.hasOwnProperty(id))
return null;
return this._engines[id];
- },
+ }
setEngine(id, callback) {
// Send id even if id == this._currentEngineName
@@ -211,7 +209,7 @@ var IBusManager = new Lang.Class({
this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
null, callback || null);
- },
+ }
preloadEngines(ids) {
if (!this._ibus || ids.length == 0)
@@ -233,6 +231,6 @@ var IBusManager = new Lang.Class({
this._preloadEnginesId = 0;
return GLib.SOURCE_REMOVE;
});
- },
-});
+ }
+};
Signals.addSignalMethods(IBusManager.prototype);
diff --git a/js/misc/introspect.js b/js/misc/introspect.js
index 5599e1a66..b9b0a987b 100644
--- a/js/misc/introspect.js
+++ b/js/misc/introspect.js
@@ -1,6 +1,5 @@
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
@@ -12,10 +11,8 @@ const { loadInterfaceXML } = imports.misc.fileUtils;
const IntrospectDBusIface = loadInterfaceXML('org.gnome.Shell.Introspect');
-var IntrospectService = new Lang.Class({
- Name: 'IntrospectService',
-
- _init() {
+var IntrospectService = class {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(IntrospectDBusIface,
this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Introspect');
@@ -45,21 +42,21 @@ var IntrospectService = new Lang.Class({
});
this._syncRunningApplications();
- },
+ }
_isStandaloneApp(app) {
let windows = app.get_windows();
return app.get_windows().some(w => w.transient_for == null);
- },
+ }
_isIntrospectEnabled() {
return this._settings.get_boolean(INTROSPECT_KEY);
- },
+ }
_isSenderWhitelisted(sender) {
return APP_WHITELIST.includes(sender);
- },
+ }
_syncRunningApplications() {
let tracker = Shell.WindowTracker.get_default();
@@ -95,7 +92,7 @@ var IntrospectService = new Lang.Class({
}
this._runningApplicationsDirty = false;
this._activeApplicationDirty = false;
- },
+ }
_isEligibleWindow(window) {
if (window.is_override_redirect())
@@ -106,7 +103,7 @@ var IntrospectService = new Lang.Class({
type == Meta.WindowType.DIALOG ||
type == Meta.WindowType.MODAL_DIALOG ||
type == Meta.WindowType.UTILITY);
- },
+ }
GetRunningApplicationsAsync(params, invocation) {
if (!this._isIntrospectEnabled() &&
@@ -118,7 +115,7 @@ var IntrospectService = new Lang.Class({
}
invocation.return_value(new GLib.Variant('(a{sa{sv}})', [this._runningApplications]));
- },
+ }
GetWindowsAsync(params, invocation) {
let focusWindow = global.display.get_focus_window();
@@ -163,4 +160,4 @@ var IntrospectService = new Lang.Class({
}
invocation.return_value(new GLib.Variant('(a{ta{sv}})', [windowsList]));
}
-});
+};
diff --git a/js/misc/keyboardManager.js b/js/misc/keyboardManager.js
index f4001f130..5d720e88a 100644
--- a/js/misc/keyboardManager.js
+++ b/js/misc/keyboardManager.js
@@ -2,7 +2,6 @@
const GLib = imports.gi.GLib;
const GnomeDesktop = imports.gi.GnomeDesktop;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Main = imports.ui.main;
@@ -38,22 +37,20 @@ function holdKeyboard() {
global.display.freeze_keyboard(global.get_current_time());
}
-var KeyboardManager = new Lang.Class({
- Name: 'KeyboardManager',
+var KeyboardManager = class {
+ constructor() {
+ // The XKB protocol doesn't allow for more that 4 layouts in a
+ // keymap. Wayland doesn't impose this limit and libxkbcommon can
+ // handle up to 32 layouts but since we need to support X clients
+ // even as a Wayland compositor, we can't bump this.
+ this.MAX_LAYOUTS_PER_GROUP = 4;
- // The XKB protocol doesn't allow for more that 4 layouts in a
- // keymap. Wayland doesn't impose this limit and libxkbcommon can
- // handle up to 32 layouts but since we need to support X clients
- // even as a Wayland compositor, we can't bump this.
- MAX_LAYOUTS_PER_GROUP: 4,
-
- _init() {
this._xkbInfo = getXkbInfo();
this._current = null;
this._localeLayoutInfo = this._getLocaleLayout();
this._layoutInfos = {};
this._currentKeymap = null;
- },
+ }
_applyLayoutGroup(group) {
let options = this._buildOptionsString();
@@ -67,11 +64,11 @@ var KeyboardManager = new Lang.Class({
this._currentKeymap = {layouts, variants, options};
Meta.get_backend().set_keymap(layouts, variants, options);
- },
+ }
_applyLayoutGroupIndex(idx) {
Meta.get_backend().lock_layout_group(idx);
- },
+ }
apply(id) {
let info = this._layoutInfos[id];
@@ -87,7 +84,7 @@ var KeyboardManager = new Lang.Class({
}
this._current = info;
- },
+ }
reapply() {
if (!this._current)
@@ -95,7 +92,7 @@ var KeyboardManager = new Lang.Class({
this._applyLayoutGroup(this._current.group);
this._applyLayoutGroupIndex(this._current.groupIndex);
- },
+ }
setUserLayouts(ids) {
this._current = null;
@@ -126,7 +123,7 @@ var KeyboardManager = new Lang.Class({
i += 1;
}
- },
+ }
_getLocaleLayout() {
let locale = GLib.get_language_names()[0];
@@ -143,21 +140,21 @@ var KeyboardManager = new Lang.Class({
return { layout: _layout, variant: _variant };
else
return { layout: DEFAULT_LAYOUT, variant: DEFAULT_VARIANT };
- },
+ }
_buildGroupStrings(_group) {
let group = _group.concat(this._localeLayoutInfo);
let layouts = group.map(g => g.layout).join(',');
let variants = group.map(g => g.variant).join(',');
return [layouts, variants];
- },
+ }
setKeyboardOptions(options) {
this._xkbOptions = options;
- },
+ }
_buildOptionsString() {
let options = this._xkbOptions.join(',');
return options;
}
-});
+};
diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js
index d3868184e..139129b60 100644
--- a/js/misc/loginManager.js
+++ b/js/misc/loginManager.js
@@ -2,7 +2,6 @@
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -70,10 +69,8 @@ function getLoginManager() {
return _loginManager;
}
-var LoginManagerSystemd = new Lang.Class({
- Name: 'LoginManagerSystemd',
-
- _init() {
+var LoginManagerSystemd = class {
+ constructor() {
this._proxy = new SystemdLoginManager(Gio.DBus.system,
'org.freedesktop.login1',
'/org/freedesktop/login1');
@@ -82,7 +79,7 @@ var LoginManagerSystemd = new Lang.Class({
'/org/freedesktop/login1/user/self');
this._proxy.connectSignal('PrepareForSleep',
this._prepareForSleep.bind(this));
- },
+ }
getCurrentSessionProxy(callback) {
if (this._currentSession) {
@@ -129,7 +126,7 @@ var LoginManagerSystemd = new Lang.Class({
callback(this._currentSession);
}
});
- },
+ }
canSuspend(asyncCallback) {
this._proxy.CanSuspendRemote((result, error) => {
@@ -141,7 +138,7 @@ var LoginManagerSystemd = new Lang.Class({
asyncCallback(canSuspend, needsAuth);
}
});
- },
+ }
listSessions(asyncCallback) {
this._proxy.ListSessionsRemote((result, error) => {
@@ -150,11 +147,11 @@ var LoginManagerSystemd = new Lang.Class({
else
asyncCallback(result[0]);
});
- },
+ }
suspend() {
this._proxy.SuspendRemote(true);
- },
+ }
inhibit(reason, callback) {
let inVariant = GLib.Variant.new('(ssss)',
@@ -174,38 +171,36 @@ var LoginManagerSystemd = new Lang.Class({
callback(null);
}
});
- },
+ }
_prepareForSleep(proxy, sender, [aboutToSuspend]) {
this.emit('prepare-for-sleep', aboutToSuspend);
}
-});
+};
Signals.addSignalMethods(LoginManagerSystemd.prototype);
-var LoginManagerDummy = new Lang.Class({
- Name: 'LoginManagerDummy',
-
+var LoginManagerDummy = class {
getCurrentSessionProxy(callback) {
// we could return a DummySession object that fakes whatever callers
// expect (at the time of writing: connect() and connectSignal()
// methods), but just never calling the callback should be safer
- },
+ }
canSuspend(asyncCallback) {
asyncCallback(false, false);
- },
+ }
listSessions(asyncCallback) {
asyncCallback([]);
- },
+ }
suspend() {
this.emit('prepare-for-sleep', true);
this.emit('prepare-for-sleep', false);
- },
+ }
inhibit(reason, callback) {
callback(null);
}
-});
+};
Signals.addSignalMethods(LoginManagerDummy.prototype);
diff --git a/js/misc/modemManager.js b/js/misc/modemManager.js
index f57057848..82849ba1e 100644
--- a/js/misc/modemManager.js
+++ b/js/misc/modemManager.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const NMA = imports.gi.NMA;
const Signals = imports.signals;
@@ -100,10 +99,8 @@ const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInter
const ModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager.Modem.Cdma');
const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
-var ModemGsm = new Lang.Class({
- Name: 'ModemGsm',
-
- _init(path) {
+var ModemGsm = class {
+ constructor(path) {
this._proxy = new ModemGsmNetworkProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path);
this.signal_quality = 0;
@@ -139,13 +136,11 @@ var ModemGsm = new Lang.Class({
this.emit('notify::signal-quality');
});
}
-});
+};
Signals.addSignalMethods(ModemGsm.prototype);
-var ModemCdma = new Lang.Class({
- Name: 'ModemCdma',
-
- _init(path) {
+var ModemCdma = class {
+ constructor(path) {
this._proxy = new ModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path);
this.signal_quality = 0;
@@ -169,7 +164,7 @@ var ModemCdma = new Lang.Class({
}
this.emit('notify::signal-quality');
});
- },
+ }
_refreshServingSystem() {
this._proxy.GetServingSystemRemote(([result], err) => {
@@ -184,7 +179,7 @@ var ModemCdma = new Lang.Class({
this.emit('notify::operator-name');
});
}
-});
+};
Signals.addSignalMethods(ModemCdma.prototype);
@@ -201,10 +196,8 @@ const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gp
const BroadbandModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem.ModemCdma');
const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface);
-var BroadbandModem = new Lang.Class({
- Name: 'BroadbandModem',
-
- _init(path, capabilities) {
+var BroadbandModem = class {
+ constructor(path, capabilities) {
this._proxy = new BroadbandModemProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
this._proxy_3gpp = new BroadbandModem3gppProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
this._proxy_cdma = new BroadbandModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
@@ -229,13 +222,13 @@ var BroadbandModem = new Lang.Class({
this._reloadCdmaOperatorName();
});
this._reloadCdmaOperatorName();
- },
+ }
_reloadSignalQuality() {
let [quality, recent] = this._proxy.SignalQuality;
this.signal_quality = quality;
this.emit('notify::signal-quality');
- },
+ }
_reloadOperatorName() {
let new_name = "";
@@ -250,19 +243,19 @@ var BroadbandModem = new Lang.Class({
this.operator_name = new_name;
this.emit('notify::operator-name');
- },
+ }
_reload3gppOperatorName() {
let name = this._proxy_3gpp.OperatorName;
let code = this._proxy_3gpp.OperatorCode;
this.operator_name_3gpp = _findProviderForMccMnc(name, code);
this._reloadOperatorName();
- },
+ }
_reloadCdmaOperatorName() {
let sid = this._proxy_cdma.Sid;
this.operator_name_cdma = _findProviderForSid(sid);
this._reloadOperatorName();
}
-});
+};
Signals.addSignalMethods(BroadbandModem.prototype);
diff --git a/js/misc/objectManager.js b/js/misc/objectManager.js
index a1b7eb9d2..5a1ee3180 100644
--- a/js/misc/objectManager.js
+++ b/js/misc/objectManager.js
@@ -2,7 +2,6 @@
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Params = imports.misc.params;
const Signals = imports.signals;
@@ -27,9 +26,8 @@ const ObjectManagerIface = `
const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface);
-var ObjectManager = new Lang.Class({
- Name: 'ObjectManager',
- _init(params) {
+var ObjectManager = class {
+ constructor(params) {
params = Params.parse(params, { connection: null,
name: null,
objectPath: null,
@@ -63,7 +61,7 @@ var ObjectManager = new Lang.Class({
this._managerProxy.init_async(GLib.PRIORITY_DEFAULT,
this._cancellable,
this._onManagerProxyLoaded.bind(this));
- },
+ }
_tryToCompleteLoad() {
if (this._numLoadInhibitors == 0)
@@ -74,7 +72,7 @@ var ObjectManager = new Lang.Class({
if (this._onLoaded)
this._onLoaded();
}
- },
+ }
_addInterface(objectPath, interfaceName, onFinished) {
let info = this._interfaceInfos[interfaceName];
@@ -129,7 +127,7 @@ var ObjectManager = new Lang.Class({
if (onFinished)
onFinished();
});
- },
+ }
_removeInterface(objectPath, interfaceName) {
if (!this._objects[objectPath])
@@ -155,7 +153,7 @@ var ObjectManager = new Lang.Class({
delete this._objects[objectPath];
this.emit('object-removed', objectPath);
}
- },
+ }
_onManagerProxyLoaded(initable, result) {
let error = null;
@@ -194,7 +192,7 @@ var ObjectManager = new Lang.Class({
if (this._managerProxy.g_name_owner)
this._onNameAppeared();
- },
+ }
_onNameAppeared() {
this._managerProxy.GetManagedObjectsRemote((result, error) => {
@@ -232,7 +230,7 @@ var ObjectManager = new Lang.Class({
}
this._tryToCompleteLoad();
});
- },
+ }
_onNameVanished() {
let objectPaths = Object.keys(this._objects);
@@ -248,14 +246,14 @@ var ObjectManager = new Lang.Class({
this._removeInterface(objectPath, interfaceName);
}
}
- },
+ }
_registerInterfaces(interfaces) {
for (let i = 0; i < interfaces.length; i++) {
let info = Gio.DBusInterfaceInfo.new_for_xml(interfaces[i]);
this._interfaceInfos[info.name] = info;
}
- },
+ }
getProxy(objectPath, interfaceName) {
let object = this._objects[objectPath];
@@ -264,7 +262,7 @@ var ObjectManager = new Lang.Class({
return null;
return object[interfaceName];
- },
+ }
getProxiesForInterface(interfaceName) {
let proxyList = this._interfaces[interfaceName];
@@ -273,7 +271,7 @@ var ObjectManager = new Lang.Class({
return [];
return proxyList;
- },
+ }
getAllProxies() {
let proxies = [];
@@ -292,5 +290,5 @@ var ObjectManager = new Lang.Class({
return proxies;
}
-});
+};
Signals.addSignalMethods(ObjectManager.prototype);
diff --git a/js/misc/smartcardManager.js b/js/misc/smartcardManager.js
index 51d2ea9cc..b67f9a785 100644
--- a/js/misc/smartcardManager.js
+++ b/js/misc/smartcardManager.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -26,9 +25,8 @@ function getSmartcardManager() {
return _smartcardManager;
}
-var SmartcardManager = new Lang.Class({
- Name: 'SmartcardManager',
- _init() {
+var SmartcardManager = class {
+ constructor() {
this._objectManager = new ObjectManager.ObjectManager({ connection: Gio.DBus.session,
name: "org.gnome.SettingsDaemon.Smartcard",
objectPath: '/org/gnome/SettingsDaemon/Smartcard',
@@ -36,7 +34,7 @@ var SmartcardManager = new Lang.Class({
onLoaded: this._onLoaded.bind(this) });
this._insertedTokens = {};
this._loginToken = null;
- },
+ }
_onLoaded() {
let tokens = this._objectManager.getProxiesForInterface('org.gnome.SettingsDaemon.Smartcard.Token');
@@ -53,7 +51,7 @@ var SmartcardManager = new Lang.Class({
if (interfaceName == 'org.gnome.SettingsDaemon.Smartcard.Token')
this._removeToken(proxy);
});
- },
+ }
_updateToken(token) {
let objectPath = token.get_object_path();
@@ -65,7 +63,7 @@ var SmartcardManager = new Lang.Class({
if (token.UsedToLogin)
this._loginToken = token;
- },
+ }
_addToken(token) {
this._updateToken(token);
@@ -85,7 +83,7 @@ var SmartcardManager = new Lang.Class({
// Emit a smartcard-inserted at startup if it's already plugged in
if (token.IsInserted)
this.emit('smartcard-inserted', token);
- },
+ }
_removeToken(token) {
let objectPath = token.get_object_path();
@@ -99,11 +97,11 @@ var SmartcardManager = new Lang.Class({
this._loginToken = null;
token.disconnectAll();
- },
+ }
hasInsertedTokens() {
return Object.keys(this._insertedTokens).length > 0;
- },
+ }
hasInsertedLoginToken() {
if (!this._loginToken)
@@ -115,5 +113,5 @@ var SmartcardManager = new Lang.Class({
return true;
}
-});
+};
Signals.addSignalMethods(SmartcardManager.prototype);
diff --git a/js/misc/util.js b/js/misc/util.js
index 4e1f5de55..25fe3d02e 100644
--- a/js/misc/util.js
+++ b/js/misc/util.js
@@ -437,10 +437,8 @@ function ensureActorVisibleInScrollView(scrollView, actor) {
transition: 'easeOutQuad' });
}
-var AppSettingsMonitor = new Lang.Class({
- Name: 'AppSettingsMonitor',
-
- _init(appId, schemaId) {
+var AppSettingsMonitor = class {
+ constructor(appId, schemaId) {
this._appId = appId;
this._schemaId = schemaId;
@@ -454,23 +452,23 @@ var AppSettingsMonitor = new Lang.Class({
this._appSystem.connect('installed-changed',
this._onInstalledChanged.bind(this));
this._onInstalledChanged();
- },
+ }
get available() {
return this._app != null && this._settings != null;
- },
+ }
activateApp() {
if (this._app)
this._app.activate();
- },
+ }
watchSetting(key, callback) {
let handler = { id: 0, key: key, callback: callback };
this._handlers.push(handler);
this._connectHandler(handler);
- },
+ }
_connectHandler(handler) {
if (!this._settings || handler.id > 0)
@@ -479,13 +477,13 @@ var AppSettingsMonitor = new Lang.Class({
handler.id = this._settings.connect('changed::' + handler.key,
handler.callback);
handler.callback(this._settings, handler.key);
- },
+ }
_disconnectHandler(handler) {
if (this._settings && handler.id > 0)
this._settings.disconnect(handler.id);
handler.id = 0;
- },
+ }
_onInstalledChanged() {
let hadApp = (this._app != null);
@@ -499,7 +497,7 @@ var AppSettingsMonitor = new Lang.Class({
this._checkSettings();
else
this._setSettings(null);
- },
+ }
_setSettings(settings) {
this._handlers.forEach((handler) => { this._disconnectHandler(handler); });
@@ -512,7 +510,7 @@ var AppSettingsMonitor = new Lang.Class({
if (hadSettings != haveSettings)
this.emit('available-changed');
- },
+ }
_checkSettings() {
let schema = this._schemaSource.lookup(this._schemaId, true);
@@ -525,5 +523,5 @@ var AppSettingsMonitor = new Lang.Class({
});
}
}
-});
+};
Signals.addSignalMethods(AppSettingsMonitor.prototype);
diff --git a/js/misc/weather.js b/js/misc/weather.js
index 398f1fd52..ce50b2ff4 100644
--- a/js/misc/weather.js
+++ b/js/misc/weather.js
@@ -4,7 +4,6 @@ const Geoclue = imports.gi.Geoclue;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GWeather = imports.gi.GWeather;
-const Lang = imports.lang;
const Signals = imports.signals;
const PermissionStore = imports.misc.permissionStore;
@@ -13,10 +12,8 @@ const Util = imports.misc.util;
// Minimum time between updates to show loading indication
var UPDATE_THRESHOLD = 10 * GLib.TIME_SPAN_MINUTE;
-var WeatherClient = new Lang.Class({
- Name: 'WeatherClient',
-
- _init() {
+var WeatherClient = class {
+ constructor() {
this._loading = false;
this._locationValid = false;
this._lastUpdate = GLib.DateTime.new_from_unix_local(0);
@@ -71,27 +68,27 @@ var WeatherClient = new Lang.Class({
this._onAutomaticLocationChanged.bind(this));
this._weatherAppMon.watchSetting('locations',
this._onLocationsChanged.bind(this));
- },
+ }
get available() {
return this._weatherAppMon.available;
- },
+ }
get loading() {
return this._loading;
- },
+ }
get hasLocation() {
return this._locationValid;
- },
+ }
get info() {
return this._weatherInfo;
- },
+ }
activateApp() {
this._weatherAppMon.activateApp();
- },
+ }
update() {
if (!this._locationValid)
@@ -104,13 +101,13 @@ var WeatherClient = new Lang.Class({
this._weatherInfo.update();
else
this._loadInfo();
- },
+ }
get _useAutoLocation() {
return this._autoLocationRequested &&
this._locationSettings.get_boolean('enabled') &&
this._weatherAuthorized;
- },
+ }
_loadInfo() {
let id = this._weatherInfo.connect('updated', () => {
@@ -122,7 +119,7 @@ var WeatherClient = new Lang.Class({
this.emit('changed');
this._weatherInfo.update();
- },
+ }
_locationsEqual(loc1, loc2) {
if (loc1 == loc2)
@@ -132,7 +129,7 @@ var WeatherClient = new Lang.Class({
return false;
return loc1.equal(loc2);
- },
+ }
_setLocation(location) {
if (this._locationsEqual(this._weatherInfo.location, location))
@@ -148,7 +145,7 @@ var WeatherClient = new Lang.Class({
this._loadInfo();
else
this.emit('changed');
- },
+ }
_updateLocationMonitoring() {
if (this._useAutoLocation) {
@@ -164,7 +161,7 @@ var WeatherClient = new Lang.Class({
this._gclueService.disconnect(this._gclueLocationChangedId);
this._gclueLocationChangedId = 0;
}
- },
+ }
_startGClueService() {
if (this._gclueStarting)
@@ -185,7 +182,7 @@ var WeatherClient = new Lang.Class({
this._gclueService.get_client().distance_threshold = 100;
this._updateLocationMonitoring();
});
- },
+ }
_onGClueLocationChanged() {
let geoLocation = this._gclueService.location;
@@ -194,7 +191,7 @@ var WeatherClient = new Lang.Class({
geoLocation.latitude,
geoLocation.longitude);
this._setLocation(location);
- },
+ }
_onAutomaticLocationChanged(settings, key) {
let useAutoLocation = settings.get_boolean(key);
@@ -204,7 +201,7 @@ var WeatherClient = new Lang.Class({
this._autoLocationRequested = useAutoLocation;
this._updateAutoLocation();
- },
+ }
_updateAutoLocation() {
this._updateLocationMonitoring();
@@ -213,7 +210,7 @@ var WeatherClient = new Lang.Class({
this._startGClueService();
else
this._setLocation(this._mostRecentLocation);
- },
+ }
_onLocationsChanged(settings, key) {
let serialized = settings.get_value(key).deep_unpack().shift();
@@ -229,7 +226,7 @@ var WeatherClient = new Lang.Class({
if (!this._useAutoLocation || !this._gclueStarted)
this._setLocation(this._mostRecentLocation);
- },
+ }
_onPermStoreChanged(proxy, sender, params) {
let [table, id, deleted, data, perms] = params;
@@ -243,5 +240,5 @@ var WeatherClient = new Lang.Class({
this._updateAutoLocation();
}
-});
+};
Signals.addSignalMethods(WeatherClient.prototype);
diff --git a/js/ui/accessDialog.js b/js/ui/accessDialog.js
index ca0ff54a5..c6a5a1882 100644
--- a/js/ui/accessDialog.js
+++ b/js/ui/accessDialog.js
@@ -1,7 +1,6 @@
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -21,12 +20,9 @@ var DialogResponse = {
CLOSED: 2
};
-var AccessDialog = new Lang.Class({
- Name: 'AccessDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(invocation, handle, title, subtitle, body, options) {
- this.parent({ styleClass: 'access-dialog' });
+var AccessDialog = class extends ModalDialog.ModalDialog {
+ constructor(invocation, handle, title, subtitle, body, options) {
+ super({ styleClass: 'access-dialog' });
this._invocation = invocation;
this._handle = handle;
@@ -38,7 +34,7 @@ var AccessDialog = new Lang.Class({
options[option] = options[option].deep_unpack();
this._buildLayout(title, subtitle, body, options);
- },
+ }
_buildLayout(title, subtitle, body, options) {
// No support for non-modal system dialogs, so ignore the option
@@ -78,14 +74,14 @@ var AccessDialog = new Lang.Class({
action: () => {
this._sendResponse(DialogResponse.OK);
}});
- },
+ }
open() {
- this.parent();
+ super.open();
let connection = this._invocation.get_connection();
this._requestExported = this._request.export(connection, this._handle);
- },
+ }
CloseAsync(invocation, params) {
if (this._invocation.get_sender() != invocation.get_sender()) {
@@ -96,7 +92,7 @@ var AccessDialog = new Lang.Class({
}
this._sendResponse(DialogResponse.CLOSED);
- },
+ }
_sendResponse(response) {
if (this._requestExported)
@@ -118,12 +114,10 @@ var AccessDialog = new Lang.Class({
});
this.close();
}
-});
+};
-var AccessDialogDBus = new Lang.Class({
- Name: 'AccessDialogDBus',
-
- _init() {
+var AccessDialogDBus = class {
+ constructor() {
this._accessDialog = null;
this._windowTracker = Shell.WindowTracker.get_default();
@@ -132,7 +126,7 @@ var AccessDialogDBus = new Lang.Class({
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/portal/desktop');
Gio.DBus.session.own_name('org.freedesktop.impl.portal.desktop.gnome', Gio.BusNameOwnerFlags.REPLACE, null, null);
- },
+ }
AccessDialogAsync(params, invocation) {
if (this._accessDialog) {
@@ -160,4 +154,4 @@ var AccessDialogDBus = new Lang.Class({
this._accessDialog = dialog;
}
-});
+};
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index d6d99f270..7544a3d1f 100644
--- a/js/ui/altTab.js
+++ b/js/ui/altTab.js
@@ -411,10 +411,8 @@ var AppSwitcherPopup = new Lang.Class({
}
});
-var CyclerHighlight = new Lang.Class({
- Name: 'CyclerHighlight',
-
- _init() {
+class CyclerHighlight {
+ constructor() {
this._window = null;
this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout() });
@@ -434,7 +432,7 @@ var CyclerHighlight = new Lang.Class({
this.actor.connect('notify::allocation',
this._onAllocationChanged.bind(this));
this.actor.connect('destroy', this._onDestroy.bind(this));
- },
+ }
set window(w) {
if (this._window == w)
@@ -452,7 +450,7 @@ var CyclerHighlight = new Lang.Class({
windowActor.hide();
this._clone.source = windowActor;
- },
+ }
_onAllocationChanged() {
if (!this._window) {
@@ -465,12 +463,12 @@ var CyclerHighlight = new Lang.Class({
this._highlight.set_position(rect.x - x, rect.y - y);
this._highlight.show();
}
- },
+ }
_onDestroy() {
this.window = null;
}
-});
+};
// We don't show an actual popup, so just provide what SwitcherPopup
// expects instead of inheriting from SwitcherList
diff --git a/js/ui/animation.js b/js/ui/animation.js
index 65fff2cd7..12e2ab282 100644
--- a/js/ui/animation.js
+++ b/js/ui/animation.js
@@ -2,7 +2,6 @@
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const St = imports.gi.St;
const Signals = imports.signals;
@@ -14,10 +13,8 @@ var ANIMATED_ICON_UPDATE_TIMEOUT = 16;
var SPINNER_ANIMATION_TIME = 0.3;
var SPINNER_ANIMATION_DELAY = 1.0;
-var Animation = new Lang.Class({
- Name: 'Animation',
-
- _init(file, width, height, speed) {
+var Animation = class {
+ constructor(file, width, height, speed) {
this.actor = new St.Bin();
this.actor.connect('destroy', this._onDestroy.bind(this));
this._speed = speed;
@@ -31,7 +28,7 @@ var Animation = new Lang.Class({
this._animations = St.TextureCache.get_default().load_sliced_image (file, width, height, scaleFactor,
this._animationsLoaded.bind(this));
this.actor.set_child(this._animations);
- },
+ }
play() {
if (this._isLoaded && this._timeoutId == 0) {
@@ -43,7 +40,7 @@ var Animation = new Lang.Class({
}
this._isPlaying = true;
- },
+ }
stop() {
if (this._timeoutId > 0) {
@@ -52,7 +49,7 @@ var Animation = new Lang.Class({
}
this._isPlaying = false;
- },
+ }
_showFrame(frame) {
let oldFrameActor = this._animations.get_child_at_index(this._frame);
@@ -64,56 +61,50 @@ var Animation = new Lang.Class({
let newFrameActor = this._animations.get_child_at_index(this._frame);
if (newFrameActor)
newFrameActor.show();
- },
+ }
_update() {
this._showFrame(this._frame + 1);
return GLib.SOURCE_CONTINUE;
- },
+ }
_animationsLoaded() {
this._isLoaded = this._animations.get_n_children() > 0;
if (this._isPlaying)
this.play();
- },
+ }
_onDestroy() {
this.stop();
}
-});
+};
-var AnimatedIcon = new Lang.Class({
- Name: 'AnimatedIcon',
- Extends: Animation,
-
- _init(file, size) {
- this.parent(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
+var AnimatedIcon = class extends Animation {
+ constructor(file, size) {
+ super(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
}
-});
+};
-var Spinner = new Lang.Class({
- Name: 'Spinner',
- Extends: AnimatedIcon,
-
- _init(size, animate=false) {
+var Spinner = class extends AnimatedIcon {
+ constructor(size, animate=false) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
- this.parent(file, size);
+ super(file, size);
this.actor.opacity = 0;
this._animate = animate;
- },
+ }
_onDestroy() {
this._animate = false;
- this.parent();
- },
+ super._onDestroy();
+ }
play() {
Tweener.removeTweens(this.actor);
if (this._animate) {
- this.parent();
+ super.play();
Tweener.addTween(this.actor, {
opacity: 255,
delay: SPINNER_ANIMATION_DELAY,
@@ -122,9 +113,9 @@ var Spinner = new Lang.Class({
});
} else {
this.actor.opacity = 255;
- this.parent();
+ super.play();
}
- },
+ }
stop() {
Tweener.removeTweens(this.actor);
@@ -140,7 +131,7 @@ var Spinner = new Lang.Class({
});
} else {
this.actor.opacity = 0;
- this.parent();
+ super.stop();
}
}
-});
+};
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index c705a0d77..0feb26ff5 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -108,11 +108,11 @@ function clamp(value, min, max) {
return Math.max(min, Math.min(max, value));
}
-var BaseAppView = new Lang.Class({
- Name: 'BaseAppView',
- Abstract: true,
+class BaseAppView {
+ constructor(params, gridParams) {
+ if (new.target === BaseAppView)
+ throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
- _init(params, gridParams) {
gridParams = Params.parse(gridParams, { xAlign: St.Align.MIDDLE,
columnLimit: MAX_COLUMNS,
minRows: MIN_ROWS,
@@ -134,26 +134,26 @@ var BaseAppView = new Lang.Class({
this._items = {};
this._allItems = [];
- },
+ }
_childFocused(actor) {
// Nothing by default
- },
+ }
removeAll() {
this._grid.destroyAll();
this._items = {};
this._allItems = [];
- },
+ }
_redisplay() {
this.removeAll();
this._loadApps();
- },
+ }
getAllItems() {
return this._allItems;
- },
+ }
addItem(icon) {
let id = icon.id;
@@ -162,24 +162,24 @@ var BaseAppView = new Lang.Class({
this._allItems.push(icon);
this._items[id] = icon;
- },
+ }
_compareItems(a, b) {
return a.name.localeCompare(b.name);
- },
+ }
loadGrid() {
this._allItems.sort(this._compareItems);
this._allItems.forEach(item => { this._grid.addItem(item); });
this.emit('view-loaded');
- },
+ }
_selectAppInternal(id) {
if (this._items[id])
this._items[id].actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
else
log('No such application ' + id);
- },
+ }
selectApp(id) {
if (this._items[id] && this._items[id].actor.mapped) {
@@ -200,13 +200,13 @@ var BaseAppView = new Lang.Class({
this.selectApp(id);
});
}
- },
+ }
_doSpringAnimation(animationDirection) {
this._grid.opacity = 255;
this._grid.animateSpring(animationDirection,
Main.overview.getShowAppsButton());
- },
+ }
animate(animationDirection, onComplete) {
if (onComplete) {
@@ -224,7 +224,7 @@ var BaseAppView = new Lang.Class({
} else {
this._doSpringAnimation(animationDirection);
}
- },
+ }
animateSwitch(animationDirection) {
Tweener.removeTweens(this.actor);
@@ -244,7 +244,7 @@ var BaseAppView = new Lang.Class({
Tweener.addTween(this._grid, params);
}
-});
+};
Signals.addSignalMethods(BaseAppView.prototype);
var PageIndicatorsActor = new Lang.Class({
@@ -271,10 +271,8 @@ var PageIndicatorsActor = new Lang.Class({
}
});
-var PageIndicators = new Lang.Class({
- Name:'PageIndicators',
-
- _init() {
+class PageIndicators {
+ constructor() {
this.actor = new PageIndicatorsActor();
this._nPages = 0;
this._currentPage = undefined;
@@ -282,7 +280,7 @@ var PageIndicators = new Lang.Class({
this.actor.connect('notify::mapped', () => {
this.animateIndicators(IconGrid.AnimationDirection.IN);
});
- },
+ }
setNPages(nPages) {
if (this._nPages == nPages)
@@ -311,7 +309,7 @@ var PageIndicators = new Lang.Class({
}
this._nPages = nPages;
this.actor.visible = (this._nPages > 1);
- },
+ }
setCurrentPage(currentPage) {
this._currentPage = currentPage;
@@ -319,7 +317,7 @@ var PageIndicators = new Lang.Class({
let children = this.actor.get_children();
for (let i = 0; i < children.length; i++)
children[i].set_checked(i == this._currentPage);
- },
+ }
animateIndicators(animationDirection) {
if (!this.actor.mapped)
@@ -358,15 +356,12 @@ var PageIndicators = new Lang.Class({
});
}
}
-});
+};
Signals.addSignalMethods(PageIndicators.prototype);
-var AllView = new Lang.Class({
- Name: 'AllView',
- Extends: BaseAppView,
-
- _init() {
- this.parent({ usePagination: true }, null);
+var AllView = class AllView extends BaseAppView {
+ constructor() {
+ super({ usePagination: true }, null);
this._scrollView = new St.ScrollView({ style_class: 'all-apps',
x_expand: true,
y_expand: true,
@@ -462,12 +457,12 @@ var AllView = new Lang.Class({
this._folderSettings.connect('changed::folder-children', () => {
Main.queueDeferredWork(this._redisplayWorkId);
});
- },
+ }
removeAll() {
this.folderIcons = [];
- this.parent();
- },
+ super.removeAll();
+ }
_itemNameChanged(item) {
// If an item's name changed, we can pluck it out of where it's
@@ -478,7 +473,7 @@ var AllView = new Lang.Class({
this._grid.removeItem(item);
this._grid.addItem(item, newIdx);
- },
+ }
_refilterApps() {
this._allItems.forEach(icon => {
@@ -493,7 +488,7 @@ var AllView = new Lang.Class({
appIcon.actor.visible = false;
});
});
- },
+ }
_loadApps() {
let apps = Gio.AppInfo.get_all().filter(appInfo => {
@@ -535,7 +530,7 @@ var AllView = new Lang.Class({
this.loadGrid();
this._refilterApps();
- },
+ }
// Overriden from BaseAppView
animate(animationDirection, onComplete) {
@@ -551,21 +546,17 @@ var AllView = new Lang.Class({
this._currentPopup.popdown();
let spaceClosedId = this._grid.connect('space-closed', () => {
this._grid.disconnect(spaceClosedId);
- // Given that we can't call this.parent() inside the
- // signal handler, call again animate which will
- // call the parent given that popup is already
- // closed.
- this.animate(animationDirection, completionFunc);
+ super.animate(animationDirection, completionFunc);
});
} else {
- this.parent(animationDirection, completionFunc);
+ super.animate(animationDirection, completionFunc);
if (animationDirection == IconGrid.AnimationDirection.OUT)
this._pageIndicators.animateIndicators(animationDirection);
}
- },
+ }
animateSwitch(animationDirection) {
- this.parent(animationDirection);
+ super.animateSwitch(animationDirection);
if (this._currentPopup && this._displayingPopup &&
animationDirection == IconGrid.AnimationDirection.OUT)
@@ -579,11 +570,11 @@ var AllView = new Lang.Class({
if (animationDirection == IconGrid.AnimationDirection.OUT)
this._pageIndicators.animateIndicators(animationDirection);
- },
+ }
getCurrentPageY() {
return this._grid.getPageY(this._grid.currentPage);
- },
+ }
goToPage(pageNumber) {
pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1);
@@ -625,18 +616,18 @@ var AllView = new Lang.Class({
time: time,
transition: 'easeOutQuad' });
this._pageIndicators.setCurrentPage(pageNumber);
- },
+ }
_diffToPage(pageNumber) {
let currentScrollPosition = this._adjustment.value;
return Math.abs(currentScrollPosition - this._grid.getPageY(pageNumber));
- },
+ }
openSpaceForPopup(item, side, nRows) {
this._updateIconOpacities(true);
this._displayingPopup = true;
this._grid.openExtraSpace(item, side, nRows);
- },
+ }
_closeSpaceForPopup() {
this._updateIconOpacities(false);
@@ -646,7 +637,7 @@ var AllView = new Lang.Class({
fadeEffect.enabled = true;
this._grid.closeExtraSpace();
- },
+ }
_onScroll(actor, event) {
if (this._displayingPopup || !this._scrollView.reactive)
@@ -659,7 +650,7 @@ var AllView = new Lang.Class({
this.goToPage(this._grid.currentPage + 1);
return Clutter.EVENT_STOP;
- },
+ }
_onPan(action) {
if (this._displayingPopup)
@@ -670,7 +661,7 @@ var AllView = new Lang.Class({
let adjustment = this._adjustment;
adjustment.value -= (dy / this._scrollView.height) * adjustment.page_size;
return false;
- },
+ }
_onPanEnd(action) {
if (this._displayingPopup)
@@ -689,7 +680,7 @@ var AllView = new Lang.Class({
this.goToPage(closestPage);
this._panning = false;
- },
+ }
_onKeyPressEvent(actor, event) {
if (this._displayingPopup)
@@ -704,7 +695,7 @@ var AllView = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
addFolderPopup(popup) {
this._stack.add_actor(popup.actor);
@@ -715,12 +706,12 @@ var AllView = new Lang.Class({
if(!isOpen)
this._closeSpaceForPopup();
});
- },
+ }
_childFocused(icon) {
let itemPage = this._grid.getItemPage(icon);
this.goToPage(itemPage);
- },
+ }
_updateIconOpacities(folderOpen) {
for (let id in this._items) {
@@ -734,7 +725,7 @@ var AllView = new Lang.Class({
transition: 'easeOutQuad' };
Tweener.addTween(this._items[id].actor, params);
}
- },
+ }
// Called before allocation to calculate dynamic spacing
adaptToSize(width, height) {
@@ -773,15 +764,12 @@ var AllView = new Lang.Class({
for (let i = 0; i < this.folderIcons.length; i++)
this.folderIcons[i].adaptToSize(availWidth, availHeight);
}
-});
+};
Signals.addSignalMethods(AllView.prototype);
-var FrequentView = new Lang.Class({
- Name: 'FrequentView',
- Extends: BaseAppView,
-
- _init() {
- this.parent(null, { fillParent: true });
+var FrequentView = class FrequentView extends BaseAppView {
+ constructor() {
+ super(null, { fillParent: true });
this.actor = new St.Widget({ style_class: 'frequent-apps',
layout_manager: new Clutter.BinLayout(),
@@ -806,11 +794,11 @@ var FrequentView = new Lang.Class({
if (this.actor.mapped)
this._redisplay();
});
- },
+ }
hasUsefulData() {
return this._usage.get_most_used().length >= MIN_FREQUENT_APPS_COUNT;
- },
+ }
_loadApps() {
let mostUsed = this._usage.get_most_used();
@@ -834,7 +822,7 @@ var FrequentView = new Lang.Class({
{ isDraggable: favoritesWritable });
this._grid.addItem(appIcon, -1);
}
- },
+ }
// Called before allocation to calculate dynamic spacing
adaptToSize(width, height) {
@@ -848,7 +836,7 @@ var FrequentView = new Lang.Class({
let availHeight = box.y2 - box.y1;
this._grid.adaptToSize(availWidth, availHeight);
}
-});
+};
var Views = {
FREQUENT: 0,
@@ -896,10 +884,8 @@ var ViewStackLayout = new Lang.Class({
}
});
-var AppDisplay = new Lang.Class({
- Name: 'AppDisplay',
-
- _init() {
+var AppDisplay = class AppDisplay {
+ constructor() {
this._privacySettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.privacy' });
this._privacySettings.connect('changed::remember-app-usage',
this._updateFrequentVisibility.bind(this));
@@ -972,14 +958,14 @@ var AppDisplay = new Lang.Class({
this._switcherooProxy = null;
this._updateDiscreteGpuAvailable();
});
- },
+ }
_updateDiscreteGpuAvailable() {
if (!this._switcherooProxy)
discreteGpuAvailable = false;
else
discreteGpuAvailable = this._switcherooProxy.HasDualGpu;
- },
+ }
_switcherooProxyAppeared() {
this._switcherooProxy = new SwitcherooProxy(Gio.DBus.system, SWITCHEROO_BUS_NAME, SWITCHEROO_OBJECT_PATH,
@@ -990,7 +976,7 @@ var AppDisplay = new Lang.Class({
}
this._updateDiscreteGpuAvailable();
});
- },
+ }
animate(animationDirection, onComplete) {
let currentView = this._views.filter(v => v.control.has_style_pseudo_class('checked')).pop().view;
@@ -1013,7 +999,7 @@ var AppDisplay = new Lang.Class({
});
currentView.animate(animationDirection, onComplete);
- },
+ }
_showView(activeIndex) {
for (let i = 0; i < this._views.length; i++) {
@@ -1026,7 +1012,7 @@ var AppDisplay = new Lang.Class({
IconGrid.AnimationDirection.OUT;
this._views[i].view.animateSwitch(animationDirection);
}
- },
+ }
_updateFrequentVisibility() {
let enabled = this._privacySettings.get_boolean('remember-app-usage');
@@ -1037,12 +1023,12 @@ var AppDisplay = new Lang.Class({
if (!enabled && this._views[Views.FREQUENT].view.actor.visible)
this._showView(Views.ALL);
- },
+ }
selectApp(id) {
this._showView(Views.ALL);
this._views[Views.ALL].view.selectApp(id);
- },
+ }
_onAllocatedSizeChanged(actor, width, height) {
let box = new Clutter.ActorBox();
@@ -1055,19 +1041,17 @@ var AppDisplay = new Lang.Class({
for (let i = 0; i < this._views.length; i++)
this._views[i].view.adaptToSize(availWidth, availHeight);
}
-})
+};
-var AppSearchProvider = new Lang.Class({
- Name: 'AppSearchProvider',
-
- _init() {
+var AppSearchProvider = class AppSearchProvider {
+ constructor() {
this._appSys = Shell.AppSystem.get_default();
this.id = 'applications';
this.isRemoteProvider = false;
this.canLaunchSearch = false;
this._systemActions = new SystemActions.getDefault();
- },
+ }
getResultMetas(apps, callback) {
let metas = [];
@@ -1095,11 +1079,11 @@ var AppSearchProvider = new Lang.Class({
}
callback(metas);
- },
+ }
filterResults(results, maxNumber) {
return results.slice(0, maxNumber);
- },
+ }
getInitialResultSet(terms, callback, cancellable) {
let query = terms.join(' ');
@@ -1119,11 +1103,11 @@ var AppSearchProvider = new Lang.Class({
results = results.concat(this._systemActions.getMatchingActions(terms));
callback(results);
- },
+ }
getSubsearchResultSet(previousResults, terms, callback, cancellable) {
this.getInitialResultSet(terms, callback, cancellable);
- },
+ }
createResultObject(resultMeta) {
if (resultMeta.id.endsWith('.desktop'))
@@ -1131,14 +1115,11 @@ var AppSearchProvider = new Lang.Class({
else
return new SystemActionIcon(this, resultMeta);
}
-});
+};
-var FolderView = new Lang.Class({
- Name: 'FolderView',
- Extends: BaseAppView,
-
- _init() {
- this.parent(null, null);
+var FolderView = class FolderView extends BaseAppView {
+ constructor() {
+ super(null, null);
// If it not expand, the parent doesn't take into account its preferred_width when allocating
// the second time it allocates, so we apply the "Standard hack for ClutterBinLayout"
this._grid.x_expand = true;
@@ -1152,16 +1133,16 @@ var FolderView = new Lang.Class({
let action = new Clutter.PanAction({ interpolate: true });
action.connect('pan', this._onPan.bind(this));
this.actor.add_action(action);
- },
+ }
_childFocused(actor) {
Util.ensureActorVisibleInScrollView(this.actor, actor);
- },
+ }
// Overriden from BaseAppView
animate(animationDirection) {
this._grid.animatePulse(animationDirection);
- },
+ }
createFolderIcon(size) {
let layout = new Clutter.GridLayout();
@@ -1181,14 +1162,14 @@ var FolderView = new Lang.Class({
}
return icon;
- },
+ }
_onPan(action) {
let [dist, dx, dy] = action.get_motion_delta(0);
let adjustment = this.actor.vscroll.adjustment;
adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
return false;
- },
+ }
adaptToSize(width, height) {
this._parentAvailableWidth = width;
@@ -1212,7 +1193,7 @@ var FolderView = new Lang.Class({
this.actor.set_width(this.usedWidth());
this.actor.set_height(this.usedHeight());
- },
+ }
_getPageAvailableSize() {
let pageBox = new Clutter.ActorBox();
@@ -1224,32 +1205,30 @@ var FolderView = new Lang.Class({
// We only can show icons inside the collection view boxPointer
// so we have to substract the required padding etc of the boxpointer
return [(contentBox.x2 - contentBox.x1) - 2 * this._offsetForEachSide, (contentBox.y2 - contentBox.y1) - 2 * this._offsetForEachSide];
- },
+ }
usedWidth() {
let [availWidthPerPage, availHeightPerPage] = this._getPageAvailableSize();
return this._grid.usedWidth(availWidthPerPage);
- },
+ }
usedHeight() {
return this._grid.usedHeightForNRows(this.nRowsDisplayedAtOnce());
- },
+ }
nRowsDisplayedAtOnce() {
let [availWidthPerPage, availHeightPerPage] = this._getPageAvailableSize();
let maxRows = this._grid.rowsForHeight(availHeightPerPage) - 1;
return Math.min(this._grid.nRows(availWidthPerPage), maxRows);
- },
+ }
setPaddingOffsets(offset) {
this._offsetForEachSide = offset;
}
-});
+};
-var FolderIcon = new Lang.Class({
- Name: 'FolderIcon',
-
- _init(id, path, parentView) {
+var FolderIcon = class FolderIcon {
+ constructor(id, path, parentView) {
this.id = id;
this.name = '';
this._parentView = parentView;
@@ -1284,11 +1263,11 @@ var FolderIcon = new Lang.Class({
this._folder.connect('changed', this._redisplay.bind(this));
this._redisplay();
- },
+ }
getAppIds() {
return this.view.getAllItems().map(item => item.id);
- },
+ }
_updateName() {
let name = _getFolderName(this._folder);
@@ -1298,7 +1277,7 @@ var FolderIcon = new Lang.Class({
this.name = name;
this.icon.label.text = this.name;
this.emit('name-changed');
- },
+ }
_redisplay() {
this._updateName();
@@ -1340,16 +1319,16 @@ var FolderIcon = new Lang.Class({
this.actor.visible = this.view.getAllItems().length > 0;
this.view.loadGrid();
this.emit('apps-changed');
- },
+ }
_createIcon(iconSize) {
return this.view.createFolderIcon(iconSize, this);
- },
+ }
_popupHeight() {
let usedHeight = this.view.usedHeight() + this._popup.getOffset(St.Side.TOP) + this._popup.getOffset(St.Side.BOTTOM);
return usedHeight;
- },
+ }
_openSpaceForPopup() {
let id = this._parentView.connect('space-ready', () => {
@@ -1358,14 +1337,14 @@ var FolderIcon = new Lang.Class({
this._updatePopupPosition();
});
this._parentView.openSpaceForPopup(this, this._boxPointerArrowside, this.view.nRowsDisplayedAtOnce());
- },
+ }
_calculateBoxPointerArrowSide() {
let spaceTop = this.actor.y - this._parentView.getCurrentPageY();
let spaceBottom = this._parentView.actor.height - (spaceTop + this.actor.height);
return spaceTop > spaceBottom ? St.Side.BOTTOM : St.Side.TOP;
- },
+ }
_updatePopupSize() {
// StWidget delays style calculation until needed, make sure we use the correct values
@@ -1377,7 +1356,7 @@ var FolderIcon = new Lang.Class({
// Add extra padding to prevent boxpointer decorations and close button being cut off
this.view.setPaddingOffsets(offsetForEachSide);
this.view.adaptToSize(this._parentAvailableWidth, this._parentAvailableHeight);
- },
+ }
_updatePopupPosition() {
if (!this._popup)
@@ -1387,7 +1366,7 @@ var FolderIcon = new Lang.Class({
this._popup.actor.y = this.actor.allocation.y1 + this.actor.translation_y - this._popupHeight();
else
this._popup.actor.y = this.actor.allocation.y1 + this.actor.translation_y + this.actor.height;
- },
+ }
_ensurePopup() {
if (this._popup && !this._popupInvalidated)
@@ -1406,7 +1385,7 @@ var FolderIcon = new Lang.Class({
this._updatePopupSize();
this._updatePopupPosition();
this._popupInvalidated = false;
- },
+ }
adaptToSize(width, height) {
this._parentAvailableWidth = width;
@@ -1414,14 +1393,12 @@ var FolderIcon = new Lang.Class({
if(this._popup)
this.view.adaptToSize(width, height);
this._popupInvalidated = true;
- },
-});
+ }
+};
Signals.addSignalMethods(FolderIcon.prototype);
-var AppFolderPopup = new Lang.Class({
- Name: 'AppFolderPopup',
-
- _init(source, side) {
+var AppFolderPopup = class AppFolderPopup {
+ constructor(source, side) {
this._source = source;
this._view = source.view;
this._arrowSide = side;
@@ -1467,7 +1444,7 @@ var AppFolderPopup = new Lang.Class({
});
this._grabHelper.addActor(Main.layoutManager.overviewGroup);
this.actor.connect('key-press-event', this._onKeyPress.bind(this));
- },
+ }
_onKeyPress(actor, event) {
if (global.stage.get_key_focus() != actor)
@@ -1511,14 +1488,14 @@ var AppFolderPopup = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
}
return actor.navigate_focus(null, direction, false);
- },
+ }
toggle() {
if (this._isOpen)
this.popdown();
else
this.popup();
- },
+ }
popup() {
if (this._isOpen)
@@ -1545,7 +1522,7 @@ var AppFolderPopup = new Lang.Class({
});
this.emit('open-state-changed', true);
- },
+ }
popdown() {
if (!this._isOpen)
@@ -1557,30 +1534,28 @@ var AppFolderPopup = new Lang.Class({
BoxPointer.PopupAnimation.SLIDE);
this._isOpen = false;
this.emit('open-state-changed', false);
- },
+ }
getCloseButtonOverlap() {
return this.closeButton.get_theme_node().get_length('-shell-close-overlap-y');
- },
+ }
getOffset(side) {
let offset = this._boxPointer.getPadding(side);
if (this._arrowSide == side)
offset += this._boxPointer.getArrowHeight();
return offset;
- },
+ }
updateArrowSide(side) {
this._arrowSide = side;
this._boxPointer.updateArrowSide(side);
}
-});
+};
Signals.addSignalMethods(AppFolderPopup.prototype);
-var AppIcon = new Lang.Class({
- Name: 'AppIcon',
-
- _init(app, iconParams) {
+var AppIcon = class AppIcon {
+ constructor(app, iconParams) {
this.app = app;
this.id = app.get_id();
this.name = app.get_name();
@@ -1651,32 +1626,32 @@ var AppIcon = new Lang.Class({
this._updateRunningStyle();
});
this._updateRunningStyle();
- },
+ }
_onDestroy() {
if (this._stateChangedId > 0)
this.app.disconnect(this._stateChangedId);
this._stateChangedId = 0;
this._removeMenuTimeout();
- },
+ }
_createIcon(iconSize) {
return this.app.create_icon_texture(iconSize);
- },
+ }
_removeMenuTimeout() {
if (this._menuTimeoutId > 0) {
Mainloop.source_remove(this._menuTimeoutId);
this._menuTimeoutId = 0;
}
- },
+ }
_updateRunningStyle() {
if (this.app.state != Shell.AppState.STOPPED)
this._dot.show();
else
this._dot.hide();
- },
+ }
_setPopupTimeout() {
this._removeMenuTimeout();
@@ -1686,12 +1661,12 @@ var AppIcon = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._menuTimeoutId, '[gnome-shell] this.popupMenu');
- },
+ }
_onLeaveEvent(actor, event) {
this.actor.fake_release();
this._removeMenuTimeout();
- },
+ }
_onButtonPress(actor, event) {
let button = event.get_button();
@@ -1702,28 +1677,28 @@ var AppIcon = new Lang.Class({
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onTouchEvent(actor, event) {
if (event.type() == Clutter.EventType.TOUCH_BEGIN)
this._setPopupTimeout();
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onClicked(actor, button) {
this._removeMenuTimeout();
this.activate(button);
- },
+ }
_onKeyboardPopupMenu() {
this.popupMenu();
this._menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
- },
+ }
getId() {
return this.app.get_id();
- },
+ }
popupMenu() {
this._removeMenuTimeout();
@@ -1759,7 +1734,7 @@ var AppIcon = new Lang.Class({
this.emit('sync-tooltip');
return false;
- },
+ }
activateWindow(metaWindow) {
if (metaWindow) {
@@ -1767,12 +1742,12 @@ var AppIcon = new Lang.Class({
} else {
Main.overview.hide();
}
- },
+ }
_onMenuPoppedDown() {
this.actor.sync_hover();
this.emit('menu-state-changed', false);
- },
+ }
activate(button) {
let event = Clutter.get_current_event();
@@ -1792,45 +1767,42 @@ var AppIcon = new Lang.Class({
this.app.activate();
Main.overview.hide();
- },
+ }
animateLaunch() {
this.icon.animateZoomOut();
- },
+ }
shellWorkspaceLaunch(params) {
params = Params.parse(params, { workspace: -1,
timestamp: 0 });
this.app.open_new_window(params.workspace);
- },
+ }
getDragActor() {
return this.app.create_icon_texture(Main.overview.dashIconSize);
- },
+ }
// Returns the original actor that should align with the actor
// we show as the item is being dragged.
getDragActorSource() {
return this.icon.icon;
- },
+ }
shouldShowTooltip() {
return this.actor.hover && (!this._menu || !this._menu.isOpen);
- },
-});
+ }
+};
Signals.addSignalMethods(AppIcon.prototype);
-var AppIconMenu = new Lang.Class({
- Name: 'AppIconMenu',
- Extends: PopupMenu.PopupMenu,
-
- _init(source) {
+var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
+ constructor(source) {
let side = St.Side.LEFT;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
side = St.Side.RIGHT;
- this.parent(source.actor, 0.5, side);
+ super(source.actor, 0.5, side);
// We want to keep the item hovered while the menu is up
this.blockSourceEvents = true;
@@ -1850,7 +1822,7 @@ var AppIconMenu = new Lang.Class({
});
Main.uiGroup.add_actor(this.actor);
- },
+ }
_redisplay() {
this.removeAll();
@@ -1960,33 +1932,30 @@ var AppIconMenu = new Lang.Class({
});
}
}
- },
+ }
_appendSeparator() {
let separator = new PopupMenu.PopupSeparatorMenuItem();
this.addMenuItem(separator);
- },
+ }
_appendMenuItem(labelText) {
// FIXME: app-well-menu-item style
let item = new PopupMenu.PopupMenuItem(labelText);
this.addMenuItem(item);
return item;
- },
+ }
popup(activatingButton) {
this._redisplay();
this.open();
}
-});
+};
Signals.addSignalMethods(AppIconMenu.prototype);
-var SystemActionIcon = new Lang.Class({
- Name: 'SystemActionIcon',
- Extends: Search.GridSearchResult,
-
+var SystemActionIcon = class SystemActionIcon extends Search.GridSearchResult {
activate() {
SystemActions.getDefault().activateAction(this.metaInfo['id']);
Main.overview.hide();
}
-});
+};
diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js
index 3bdf04efb..0bdf41b22 100644
--- a/js/ui/appFavorites.js
+++ b/js/ui/appFavorites.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Shell = imports.gi.Shell;
-const Lang = imports.lang;
const Signals = imports.signals;
const Main = imports.ui.main;
@@ -49,21 +48,18 @@ const RENAMED_DESKTOP_IDS = {
'evince.desktop': 'org.gnome.Evince.desktop',
};
-var AppFavorites = new Lang.Class({
- Name: 'AppFavorites',
-
- FAVORITE_APPS_KEY: 'favorite-apps',
-
- _init() {
+class AppFavorites {
+ constructor() {
+ this.FAVORITE_APPS_KEY = 'favorite-apps';
this._favorites = {};
global.settings.connect('changed::' + this.FAVORITE_APPS_KEY, this._onFavsChanged.bind(this));
this.reload();
- },
+ }
_onFavsChanged() {
this.reload();
this.emit('changed');
- },
+ }
reload() {
let ids = global.settings.get_strv(this.FAVORITE_APPS_KEY);
@@ -91,29 +87,29 @@ var AppFavorites = new Lang.Class({
let app = apps[i];
this._favorites[app.get_id()] = app;
}
- },
+ }
_getIds() {
let ret = [];
for (let id in this._favorites)
ret.push(id);
return ret;
- },
+ }
getFavoriteMap() {
return this._favorites;
- },
+ }
getFavorites() {
let ret = [];
for (let id in this._favorites)
ret.push(this._favorites[id]);
return ret;
- },
+ }
isFavorite(appId) {
return appId in this._favorites;
- },
+ }
_addFavorite(appId, pos) {
if (appId in this._favorites)
@@ -131,7 +127,7 @@ var AppFavorites = new Lang.Class({
ids.splice(pos, 0, appId);
global.settings.set_strv(this.FAVORITE_APPS_KEY, ids);
return true;
- },
+ }
addFavoriteAtPos(appId, pos) {
if (!this._addFavorite(appId, pos))
@@ -145,16 +141,16 @@ var AppFavorites = new Lang.Class({
this._removeFavorite(appId);
}
});
- },
+ }
addFavorite(appId) {
this.addFavoriteAtPos(appId, -1);
- },
+ }
moveFavoriteToPos(appId, pos) {
this._removeFavorite(appId);
this._addFavorite(appId, pos);
- },
+ }
_removeFavorite(appId) {
if (!appId in this._favorites)
@@ -163,7 +159,7 @@ var AppFavorites = new Lang.Class({
let ids = this._getIds().filter(id => id != appId);
global.settings.set_strv(this.FAVORITE_APPS_KEY, ids);
return true;
- },
+ }
removeFavorite(appId) {
let ids = this._getIds();
@@ -180,7 +176,7 @@ var AppFavorites = new Lang.Class({
}
});
}
-});
+};
Signals.addSignalMethods(AppFavorites.prototype);
var appFavoritesInstance = null;
diff --git a/js/ui/audioDeviceSelection.js b/js/ui/audioDeviceSelection.js
index b44a3e7ac..b10eb7d3e 100644
--- a/js/ui/audioDeviceSelection.js
+++ b/js/ui/audioDeviceSelection.js
@@ -1,7 +1,6 @@
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -19,12 +18,10 @@ var AudioDevice = {
const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection');
-var AudioDeviceSelectionDialog = new Lang.Class({
- Name: 'AudioDeviceSelectionDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(devices) {
- this.parent({ styleClass: 'audio-device-selection-dialog' });
+var AudioDeviceSelectionDialog =
+class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
+ constructor(devices) {
+ super({ styleClass: 'audio-device-selection-dialog' });
this._deviceItems = {};
@@ -39,11 +36,11 @@ var AudioDeviceSelectionDialog = new Lang.Class({
if (this._selectionBox.get_n_children() < 2)
throw new Error('Too few devices for a selection');
- },
+ }
destroy() {
- this.parent();
- },
+ super.destroy();
+ }
_buildLayout(devices) {
let title = new St.Label({ style_class: 'audio-selection-title',
@@ -62,7 +59,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
this.addButton({ action: this.close.bind(this),
label: _("Cancel"),
key: Clutter.Escape });
- },
+ }
_getDeviceLabel(device) {
switch(device) {
@@ -75,7 +72,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
default:
return null;
}
- },
+ }
_getDeviceIcon(device) {
switch(device) {
@@ -88,7 +85,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
default:
return null;
}
- },
+ }
_addDevice(device) {
let box = new St.BoxLayout({ style_class: 'audio-selection-device-box',
@@ -118,7 +115,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
this.close();
Main.overview.hide();
});
- },
+ }
_openSettings() {
let desktopFile = 'gnome-sound-panel.desktop'
@@ -133,23 +130,21 @@ var AudioDeviceSelectionDialog = new Lang.Class({
Main.overview.hide();
app.activate();
}
-});
+};
-var AudioDeviceSelectionDBus = new Lang.Class({
- Name: 'AudioDeviceSelectionDBus',
-
- _init() {
+var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
+ constructor() {
this._audioSelectionDialog = null;
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(AudioDeviceSelectionIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/AudioDeviceSelection');
Gio.DBus.session.own_name('org.gnome.Shell.AudioDeviceSelection', Gio.BusNameOwnerFlags.REPLACE, null, null);
- },
+ }
_onDialogClosed() {
this._audioSelectionDialog = null;
- },
+ }
_onDeviceSelected(dialog, device) {
let connection = this._dbusImpl.get_connection();
@@ -162,7 +157,7 @@ var AudioDeviceSelectionDBus = new Lang.Class({
info ? info.name : null,
'DeviceSelected',
GLib.Variant.new('(s)', [deviceName]));
- },
+ }
OpenAsync(params, invocation) {
if (this._audioSelectionDialog) {
@@ -190,7 +185,7 @@ var AudioDeviceSelectionDBus = new Lang.Class({
this._audioSelectionDialog = dialog;
invocation.return_value(null);
- },
+ }
CloseAsync(params, invocation) {
if (this._audioSelectionDialog &&
@@ -199,4 +194,4 @@ var AudioDeviceSelectionDBus = new Lang.Class({
invocation.return_value(null);
}
-});
+};
diff --git a/js/ui/background.js b/js/ui/background.js
index 941b28903..874bda390 100644
--- a/js/ui/background.js
+++ b/js/ui/background.js
@@ -98,7 +98,6 @@ const GDesktopEnums = imports.gi.GDesktopEnums;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GnomeDesktop = imports.gi.GnomeDesktop;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
@@ -138,14 +137,12 @@ function _fileEqual0(file1, file2) {
return file1.equal(file2);
}
-var BackgroundCache = new Lang.Class({
- Name: 'BackgroundCache',
-
- _init() {
+var BackgroundCache = class BackgroundCache {
+ constructor() {
this._fileMonitors = {};
this._backgroundSources = {};
this._animations = {};
- },
+ }
monitorFile(file) {
let key = file.hash();
@@ -163,7 +160,7 @@ var BackgroundCache = new Lang.Class({
});
this._fileMonitors[key] = monitor;
- },
+ }
getAnimation(params) {
params = Params.parse(params, { file: null,
@@ -195,7 +192,7 @@ var BackgroundCache = new Lang.Class({
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
}
});
- },
+ }
getBackgroundSource(layoutManager, settingsSchema) {
// The layoutManager is always the same one; we pass in it since
@@ -209,7 +206,7 @@ var BackgroundCache = new Lang.Class({
}
return this._backgroundSources[settingsSchema];
- },
+ }
releaseBackgroundSource(settingsSchema) {
if (settingsSchema in this._backgroundSources) {
@@ -221,7 +218,7 @@ var BackgroundCache = new Lang.Class({
}
}
}
-});
+};
Signals.addSignalMethods(BackgroundCache.prototype);
function getBackgroundCache() {
@@ -230,10 +227,8 @@ function getBackgroundCache() {
return _backgroundCache;
}
-var Background = new Lang.Class({
- Name: 'Background',
-
- _init(params) {
+var Background = class Background {
+ constructor(params) {
params = Params.parse(params, { monitorIndex: 0,
layoutManager: Main.layoutManager,
settings: null,
@@ -272,7 +267,7 @@ var Background = new Lang.Class({
});
this._load();
- },
+ }
destroy() {
this._cancellable.cancel();
@@ -298,12 +293,12 @@ var Background = new Lang.Class({
if (this._settingsChangedSignalId != 0)
this._settings.disconnect(this._settingsChangedSignalId);
this._settingsChangedSignalId = 0;
- },
+ }
updateResolution() {
if (this._animation)
this._refreshAnimation();
- },
+ }
_refreshAnimation() {
if (!this._animation)
@@ -311,7 +306,7 @@ var Background = new Lang.Class({
this._removeAnimationTimeout();
this._updateAnimation();
- },
+ }
_setLoaded() {
if (this.isLoaded)
@@ -324,7 +319,7 @@ var Background = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] this.emit');
- },
+ }
_loadPattern() {
let colorString, res, color, secondColor;
@@ -340,7 +335,7 @@ var Background = new Lang.Class({
this.background.set_color(color);
else
this.background.set_gradient(shadingType, color, secondColor);
- },
+ }
_watchFile(file) {
let key = file.hash();
@@ -357,14 +352,14 @@ var Background = new Lang.Class({
}
});
this._fileWatches[key] = signalId;
- },
+ }
_removeAnimationTimeout() {
if (this._updateAnimationTimeoutId) {
GLib.source_remove(this._updateAnimationTimeoutId);
this._updateAnimationTimeoutId = 0;
}
- },
+ }
_updateAnimation() {
this._updateAnimationTimeoutId = 0;
@@ -404,7 +399,7 @@ var Background = new Lang.Class({
});
}
}
- },
+ }
_queueUpdateAnimation() {
if (this._updateAnimationTimeoutId != 0)
@@ -433,7 +428,7 @@ var Background = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
- },
+ }
_loadAnimation(file) {
this._cache.getAnimation({ file: file,
@@ -450,7 +445,7 @@ var Background = new Lang.Class({
this._watchFile(file);
}
});
- },
+ }
_loadImage(file) {
this.background.set_file(file, this._style);
@@ -466,14 +461,14 @@ var Background = new Lang.Class({
image.disconnect(id);
});
}
- },
+ }
_loadFile(file) {
if (file.get_basename().endsWith('.xml'))
this._loadAnimation(file);
else
this._loadImage(file);
- },
+ }
_load() {
this._cache = getBackgroundCache();
@@ -486,16 +481,14 @@ var Background = new Lang.Class({
}
this._loadFile(this._file);
- },
-});
+ }
+};
Signals.addSignalMethods(Background.prototype);
let _systemBackground;
-var SystemBackground = new Lang.Class({
- Name: 'SystemBackground',
-
- _init() {
+var SystemBackground = class SystemBackground {
+ constructor() {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png');
if (_systemBackground == null) {
@@ -524,14 +517,12 @@ var SystemBackground = new Lang.Class({
image = null;
});
}
- },
-});
+ }
+};
Signals.addSignalMethods(SystemBackground.prototype);
-var BackgroundSource = new Lang.Class({
- Name: 'BackgroundSource',
-
- _init(layoutManager, settingsSchema) {
+var BackgroundSource = class BackgroundSource {
+ constructor(layoutManager, settingsSchema) {
// Allow override the background image setting for performance testing
this._layoutManager = layoutManager;
this._overrideImage = GLib.getenv('SHELL_BACKGROUND_IMAGE');
@@ -542,7 +533,7 @@ var BackgroundSource = new Lang.Class({
this._monitorsChangedId =
monitorManager.connect('monitors-changed',
this._onMonitorsChanged.bind(this));
- },
+ }
_onMonitorsChanged() {
for (let monitorIndex in this._backgrounds) {
@@ -556,7 +547,7 @@ var BackgroundSource = new Lang.Class({
delete this._backgrounds[monitorIndex];
}
}
- },
+ }
getBackground(monitorIndex) {
let file = null;
@@ -603,7 +594,7 @@ var BackgroundSource = new Lang.Class({
}
return this._backgrounds[monitorIndex];
- },
+ }
destroy() {
let monitorManager = Meta.MonitorManager.get();
@@ -617,12 +608,10 @@ var BackgroundSource = new Lang.Class({
this._backgrounds = null;
}
-});
+};
-var Animation = new Lang.Class({
- Name: 'Animation',
-
- _init(params) {
+var Animation = class Animation {
+ constructor(params) {
params = Params.parse(params, { file: null });
this.file = params.file;
@@ -630,7 +619,7 @@ var Animation = new Lang.Class({
this.transitionProgress = 0.0;
this.transitionDuration = 0.0;
this.loaded = false;
- },
+ }
load(callback) {
this._show = new GnomeDesktop.BGSlideShow({ filename: this.file.get_path() });
@@ -640,7 +629,7 @@ var Animation = new Lang.Class({
if (callback)
callback();
});
- },
+ }
update(monitor) {
this.keyFrameFiles = [];
@@ -661,14 +650,12 @@ var Animation = new Lang.Class({
if (filename2)
this.keyFrameFiles.push(Gio.File.new_for_path(filename2));
- },
-});
+ }
+};
Signals.addSignalMethods(Animation.prototype);
-var BackgroundManager = new Lang.Class({
- Name: 'BackgroundManager',
-
- _init(params) {
+var BackgroundManager = class BackgroundManager {
+ constructor(params) {
params = Params.parse(params, { container: null,
layoutManager: Main.layoutManager,
monitorIndex: null,
@@ -688,7 +675,7 @@ var BackgroundManager = new Lang.Class({
this.backgroundActor = this._createBackgroundActor();
this._newBackgroundActor = null;
- },
+ }
destroy() {
let cache = getBackgroundCache();
@@ -704,7 +691,7 @@ var BackgroundManager = new Lang.Class({
this.backgroundActor.destroy();
this.backgroundActor = null;
}
- },
+ }
_swapBackgroundActor() {
let oldBackgroundActor = this.backgroundActor;
@@ -721,7 +708,7 @@ var BackgroundManager = new Lang.Class({
oldBackgroundActor.destroy();
}
});
- },
+ }
_updateBackgroundActor() {
if (this._newBackgroundActor) {
@@ -750,7 +737,7 @@ var BackgroundManager = new Lang.Class({
this._swapBackgroundActor();
});
}
- },
+ }
_createBackgroundActor() {
let background = this._backgroundSource.getBackground(this._monitorIndex);
@@ -787,6 +774,6 @@ var BackgroundManager = new Lang.Class({
});
return backgroundActor;
- },
-});
+ }
+};
Signals.addSignalMethods(BackgroundManager.prototype);
diff --git a/js/ui/backgroundMenu.js b/js/ui/backgroundMenu.js
index 4d748bd63..352c7d31a 100644
--- a/js/ui/backgroundMenu.js
+++ b/js/ui/backgroundMenu.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
@@ -9,12 +8,9 @@ const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
-var BackgroundMenu = new Lang.Class({
- Name: 'BackgroundMenu',
- Extends: PopupMenu.PopupMenu,
-
- _init(layoutManager) {
- this.parent(layoutManager.dummyCursor, 0, St.Side.TOP);
+var BackgroundMenu = class BackgroundMenu extends PopupMenu.PopupMenu {
+ constructor(layoutManager) {
+ super(layoutManager.dummyCursor, 0, St.Side.TOP);
this.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
@@ -26,7 +22,7 @@ var BackgroundMenu = new Lang.Class({
layoutManager.uiGroup.add_actor(this.actor);
this.actor.hide();
}
-});
+};
function addBackgroundMenu(actor, layoutManager) {
actor.reactive = true;
diff --git a/js/ui/barLevel.js b/js/ui/barLevel.js
index 408f10dbf..6b0e72464 100644
--- a/js/ui/barLevel.js
+++ b/js/ui/barLevel.js
@@ -3,14 +3,11 @@
const Atk = imports.gi.Atk;
const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
const St = imports.gi.St;
const Signals = imports.signals;
-var BarLevel = new Lang.Class({
- Name: "BarLevel",
-
- _init(value, params) {
+var BarLevel = class {
+ constructor(value, params) {
if (isNaN(value))
// Avoid spreading NaNs around
throw TypeError('The bar level value must be a number');
@@ -40,7 +37,7 @@ var BarLevel = new Lang.Class({
this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this));
this.connect('value-changed', this._valueChanged.bind(this));
- },
+ }
setValue(value) {
if (isNaN(value))
@@ -48,7 +45,7 @@ var BarLevel = new Lang.Class({
this._value = Math.max(Math.min(value, this._maxValue), 0);
this.actor.queue_repaint();
- },
+ }
setMaximumValue(value) {
if (isNaN(value))
@@ -57,7 +54,7 @@ var BarLevel = new Lang.Class({
this._maxValue = Math.max(value, 1);
this._overdriveStart = Math.min(this._overdriveStart, this._maxValue);
this.actor.queue_repaint();
- },
+ }
setOverdriveStart(value) {
if (isNaN(value))
@@ -69,7 +66,7 @@ var BarLevel = new Lang.Class({
this._overdriveStart = value;
this._value = Math.max(Math.min(value, this._maxValue), 0);
this.actor.queue_repaint();
- },
+ }
_barLevelRepaint(area) {
let cr = area.get_context();
@@ -176,35 +173,34 @@ var BarLevel = new Lang.Class({
}
cr.$dispose();
- },
+ }
_getCurrentValue(actor) {
return this._value;
- },
+ }
_getOverdriveStart(actor) {
return this._overdriveStart;
- },
+ }
_getMinimumValue(actor) {
return 0;
- },
+ }
_getMaximumValue(actor) {
return this._maxValue;
- },
+ }
_setCurrentValue(actor, value) {
this._value = value;
- },
+ }
_valueChanged(barLevel, value, property) {
this._customAccessible.notify("accessible-value");
- },
+ }
get value() {
return this._value;
}
-});
-
+};
Signals.addSignalMethods(BarLevel.prototype);
diff --git a/js/ui/calendar.js b/js/ui/calendar.js
index a64cba89c..bbe44d022 100644
--- a/js/ui/calendar.js
+++ b/js/ui/calendar.js
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const St = imports.gi.St;
const Signals = imports.signals;
const Shell = imports.gi.Shell;
@@ -89,46 +88,42 @@ function _getCalendarDayAbbreviation(dayNumber) {
// Abstraction for an appointment/event in a calendar
-var CalendarEvent = new Lang.Class({
- Name: 'CalendarEvent',
-
- _init(id, date, end, summary, allDay) {
+var CalendarEvent = class CalendarEvent {
+ constructor(id, date, end, summary, allDay) {
this.id = id;
this.date = date;
this.end = end;
this.summary = summary;
this.allDay = allDay;
}
-});
+};
// Interface for appointments/events - e.g. the contents of a calendar
//
// First, an implementation with no events
-var EmptyEventSource = new Lang.Class({
- Name: 'EmptyEventSource',
-
- _init() {
+var EmptyEventSource = class EmptyEventSource {
+ constructor() {
this.isLoading = false;
this.isDummy = true;
this.hasCalendars = false;
- },
+ }
destroy() {
- },
+ }
requestRange(begin, end) {
- },
+ }
getEvents(begin, end) {
let result = [];
return result;
- },
+ }
hasEvents(day) {
return false;
}
-});
+};
Signals.addSignalMethods(EmptyEventSource.prototype);
const CalendarServerIface = `
@@ -174,10 +169,8 @@ function _dateIntervalsOverlap(a0, a1, b0, b1)
}
// an implementation that reads data from a session bus service
-var DBusEventSource = new Lang.Class({
- Name: 'DBusEventSource',
-
- _init() {
+var DBusEventSource = class DBusEventSource {
+ constructor() {
this._resetCache();
this.isLoading = false;
this.isDummy = false;
@@ -224,39 +217,39 @@ var DBusEventSource = new Lang.Class({
this._onNameAppeared();
}
});
- },
+ }
destroy() {
this._dbusProxy.run_dispose();
- },
+ }
get hasCalendars() {
if (this._initialized)
return this._dbusProxy.HasCalendars;
else
return false;
- },
+ }
_resetCache() {
this._events = [];
this._lastRequestBegin = null;
this._lastRequestEnd = null;
- },
+ }
_onNameAppeared(owner) {
this._initialized = true;
this._resetCache();
this._loadEvents(true);
- },
+ }
_onNameVanished(oldOwner) {
this._resetCache();
this.emit('changed');
- },
+ }
_onChanged() {
this._loadEvents(false);
- },
+ }
_onEventsReceived(results, error) {
let newEvents = [];
@@ -278,7 +271,7 @@ var DBusEventSource = new Lang.Class({
this._events = newEvents;
this.isLoading = false;
this.emit('changed');
- },
+ }
_loadEvents(forceReload) {
// Ignore while loading
@@ -292,7 +285,7 @@ var DBusEventSource = new Lang.Class({
this._onEventsReceived.bind(this),
Gio.DBusCallFlags.NONE);
}
- },
+ }
requestRange(begin, end) {
if (!(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) {
@@ -303,7 +296,7 @@ var DBusEventSource = new Lang.Class({
this._curRequestEnd = end;
this._loadEvents(false);
}
- },
+ }
getEvents(begin, end) {
let result = [];
@@ -321,7 +314,7 @@ var DBusEventSource = new Lang.Class({
return d1.getTime() - d2.getTime();
});
return result;
- },
+ }
hasEvents(day) {
let dayBegin = _getBeginningOfDay(day);
@@ -334,13 +327,11 @@ var DBusEventSource = new Lang.Class({
return true;
}
-});
+};
Signals.addSignalMethods(DBusEventSource.prototype);
-var Calendar = new Lang.Class({
- Name: 'Calendar',
-
- _init() {
+var Calendar = class Calendar {
+ constructor() {
this._weekStart = Shell.util_get_week_start();
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.calendar' });
@@ -378,7 +369,7 @@ var Calendar = new Lang.Class({
this._onScroll.bind(this));
this._buildHeader ();
- },
+ }
// @eventSource: is an object implementing the EventSource API, e.g. the
// requestRange(), getEvents(), hasEvents() methods and the ::changed signal.
@@ -390,7 +381,7 @@ var Calendar = new Lang.Class({
});
this._rebuildCalendar();
this._update();
- },
+ }
// Sets the calendar to show a specific date
setDate(date) {
@@ -400,14 +391,14 @@ var Calendar = new Lang.Class({
this._selectedDate = date;
this._update();
this.emit('selected-date-changed', new Date(this._selectedDate));
- },
+ }
updateTimeZone() {
// The calendar need to be rebuilt after a time zone update because
// the date might have changed.
this._rebuildCalendar();
this._update();
- },
+ }
_buildHeader() {
let layout = this.actor.layout_manager;
@@ -464,7 +455,7 @@ var Calendar = new Lang.Class({
// All the children after this are days, and get removed when we update the calendar
this._firstDayIndex = this.actor.get_n_children();
- },
+ }
_onScroll(actor, event) {
switch (event.get_scroll_direction()) {
@@ -478,7 +469,7 @@ var Calendar = new Lang.Class({
break;
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onPrevMonthButtonClicked() {
let newDate = new Date(this._selectedDate);
@@ -502,7 +493,7 @@ var Calendar = new Lang.Class({
this._backButton.grab_key_focus();
this.setDate(newDate);
- },
+ }
_onNextMonthButtonClicked() {
let newDate = new Date(this._selectedDate);
@@ -526,14 +517,14 @@ var Calendar = new Lang.Class({
this._forwardButton.grab_key_focus();
this.setDate(newDate);
- },
+ }
_onSettingsChange() {
this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
this._buildHeader();
this._rebuildCalendar();
this._update();
- },
+ }
_rebuildCalendar() {
let now = new Date();
@@ -654,7 +645,7 @@ var Calendar = new Lang.Class({
// Signal to the event source that we are interested in events
// only from this date range
this._eventSource.requestRange(beginDate, iter);
- },
+ }
_update() {
let now = new Date();
@@ -677,18 +668,17 @@ var Calendar = new Lang.Class({
button.remove_style_pseudo_class('selected');
});
}
-});
+};
Signals.addSignalMethods(Calendar.prototype);
-var EventMessage = new Lang.Class({
- Name: 'EventMessage',
- Extends: MessageList.Message,
+var EventMessage = class EventMessage extends MessageList.Message {
+ constructor(event, date) {
+ super('', event.summary);
- _init(event, date) {
this._event = event;
this._date = date;
- this.parent(this._formatEventTime(), event.summary);
+ this.setTitle(this._formatEventTime());
this._icon = new St.Icon({ icon_name: 'x-office-calendar-symbolic' });
this.setIcon(this._icon);
@@ -697,7 +687,7 @@ var EventMessage = new Lang.Class({
let iconVisible = this.actor.get_parent().has_style_pseudo_class('first-child');
this._icon.opacity = (iconVisible ? 255 : 0);
});
- },
+ }
_formatEventTime() {
let periodBegin = _getBeginningOfDay(this._date);
@@ -731,18 +721,16 @@ var EventMessage = new Lang.Class({
}
return title;
}
-});
+};
-var NotificationMessage = new Lang.Class({
- Name: 'NotificationMessage',
- Extends: MessageList.Message,
-
- _init(notification) {
- this.notification = notification;
-
- this.parent(notification.title, notification.bannerBodyText);
+var NotificationMessage =
+class NotificationMessage extends MessageList.Message {
+ constructor(notification) {
+ super(notification.title, notification.bannerBodyText);
this.setUseBodyMarkup(notification.bannerBodyMarkup);
+ this.notification = notification;
+
this.setIcon(this._getIcon());
this.connect('close', () => {
@@ -758,7 +746,7 @@ var NotificationMessage = new Lang.Class({
});
this._updatedId = notification.connect('updated',
this._onUpdated.bind(this));
- },
+ }
_getIcon() {
if (this.notification.gicon)
@@ -766,23 +754,23 @@ var NotificationMessage = new Lang.Class({
icon_size: MESSAGE_ICON_SIZE });
else
return this.notification.source.createIcon(MESSAGE_ICON_SIZE);
- },
+ }
_onUpdated(n, clear) {
this.setIcon(this._getIcon());
this.setTitle(n.title);
this.setBody(n.bannerBodyText);
this.setUseBodyMarkup(n.bannerBodyMarkup);
- },
+ }
_onClicked() {
this.notification.activate();
- },
+ }
_onDestroy() {
- this.parent();
+ super._onDestroy();
this._disconnectNotificationSignals();
- },
+ }
_disconnectNotificationSignals() {
if (this._updatedId)
@@ -792,26 +780,23 @@ var NotificationMessage = new Lang.Class({
if (this._destroyId)
this.notification.disconnect(this._destroyId);
this._destroyId = 0;
- },
+ }
canClose() {
return true;
}
-});
+};
-var EventsSection = new Lang.Class({
- Name: 'EventsSection',
- Extends: MessageList.MessageListSection,
+var EventsSection = class EventsSection extends MessageList.MessageListSection {
+ constructor() {
+ super();
- _init() {
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
this._desktopSettings.connect('changed', this._reloadEvents.bind(this));
this._eventSource = new EmptyEventSource();
this._messageById = new Map();
- this.parent();
-
this._title = new St.Button({ style_class: 'events-section-title',
label: '',
x_align: St.Align.START,
@@ -824,16 +809,16 @@ var EventsSection = new Lang.Class({
Shell.AppSystem.get_default().connect('installed-changed',
this._appInstalledChanged.bind(this));
this._appInstalledChanged();
- },
+ }
setEventSource(eventSource) {
this._eventSource = eventSource;
this._eventSource.connect('changed', this._reloadEvents.bind(this));
- },
+ }
get allowed() {
return Main.sessionMode.showCalendarEvents;
- },
+ }
_updateTitle() {
this._title.visible = !isToday(this._date);
@@ -852,7 +837,7 @@ var EventsSection = new Lang.Class({
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
"%A, %B %-d, %Y"));
this._title.label = this._date.toLocaleFormat(dayFormat);
- },
+ }
_reloadEvents() {
if (this._eventSource.isLoading)
@@ -887,12 +872,12 @@ var EventsSection = new Lang.Class({
this._reloading = false;
this._sync();
- },
+ }
_appInstalledChanged() {
this._calendarApp = undefined;
this._title.reactive = (this._getCalendarApp() != null);
- },
+ }
_getCalendarApp() {
if (this._calendarApp !== undefined)
@@ -907,7 +892,7 @@ var EventsSection = new Lang.Class({
this._calendarApp = null;
}
return this._calendarApp;
- },
+ }
_onTitleClicked() {
Main.overview.hide();
@@ -917,32 +902,30 @@ var EventsSection = new Lang.Class({
if (app.get_id() == 'evolution.desktop')
app = Gio.DesktopAppInfo.new('evolution-calendar.desktop');
app.launch([], global.create_app_launch_context(0, -1));
- },
+ }
setDate(date) {
- this.parent(date);
+ super.setDate(date);
this._updateTitle();
this._reloadEvents();
- },
+ }
_shouldShow() {
return !this.empty || !isToday(this._date);
- },
+ }
_sync() {
if (this._reloading)
return;
- this.parent();
+ super._sync();
}
-});
+};
-var NotificationSection = new Lang.Class({
- Name: 'NotificationSection',
- Extends: MessageList.MessageListSection,
-
- _init() {
- this.parent();
+var NotificationSection =
+class NotificationSection extends MessageList.MessageListSection {
+ constructor() {
+ super();
this._sources = new Map();
this._nUrgent = 0;
@@ -953,12 +936,12 @@ var NotificationSection = new Lang.Class({
});
this.actor.connect('notify::mapped', this._onMapped.bind(this));
- },
+ }
get allowed() {
return Main.sessionMode.hasNotifications &&
!Main.sessionMode.isGreeter;
- },
+ }
_createTimeLabel(datetime) {
let label = new St.Label({ style_class: 'event-time',
@@ -969,7 +952,7 @@ var NotificationSection = new Lang.Class({
label.text = Util.formatTimeSpan(datetime);
});
return label;
- },
+ }
_sourceAdded(tray, source) {
let obj = {
@@ -984,7 +967,7 @@ var NotificationSection = new Lang.Class({
this._onNotificationAdded.bind(this));
this._sources.set(source, obj);
- },
+ }
_onNotificationAdded(source, notification) {
let message = new NotificationMessage(notification);
@@ -1015,14 +998,14 @@ var NotificationSection = new Lang.Class({
let index = isUrgent ? 0 : this._nUrgent;
this.addMessageAtIndex(message, index, this.actor.mapped);
- },
+ }
_onSourceDestroy(source, obj) {
source.disconnect(obj.destroyId);
source.disconnect(obj.notificationAddedId);
this._sources.delete(source);
- },
+ }
_onMapped() {
if (!this.actor.mapped)
@@ -1031,17 +1014,15 @@ var NotificationSection = new Lang.Class({
for (let message of this._messages.keys())
if (message.notification.urgency != MessageTray.Urgency.CRITICAL)
message.notification.acknowledged = true;
- },
+ }
_shouldShow() {
return !this.empty && isToday(this._date);
}
-});
+};
-var Placeholder = new Lang.Class({
- Name: 'Placeholder',
-
- _init() {
+var Placeholder = class Placeholder {
+ constructor() {
this.actor = new St.BoxLayout({ style_class: 'message-list-placeholder',
vertical: true });
@@ -1059,14 +1040,14 @@ var Placeholder = new Lang.Class({
this.actor.add_actor(this._label);
this._sync();
- },
+ }
setDate(date) {
if (sameDay(this._date, date))
return;
this._date = date;
this._sync();
- },
+ }
_sync() {
let today = isToday(this._date);
@@ -1083,12 +1064,10 @@ var Placeholder = new Lang.Class({
this._label.text = _("No Events");
}
}
-});
+};
-var CalendarMessageList = new Lang.Class({
- Name: 'CalendarMessageList',
-
- _init() {
+var CalendarMessageList = class CalendarMessageList {
+ constructor() {
this.actor = new St.Widget({ style_class: 'message-list',
layout_manager: new Clutter.BinLayout(),
x_expand: true, y_expand: true });
@@ -1134,7 +1113,7 @@ var CalendarMessageList = new Lang.Class({
this._addSection(this._eventsSection);
Main.sessionMode.connect('updated', this._sync.bind(this));
- },
+ }
_addSection(section) {
let obj = {
@@ -1159,7 +1138,7 @@ var CalendarMessageList = new Lang.Class({
this._sections.set(section, obj);
this._sectionList.add_actor(section.actor);
this._sync();
- },
+ }
_removeSection(section) {
let obj = this._sections.get(section);
@@ -1172,11 +1151,11 @@ var CalendarMessageList = new Lang.Class({
this._sections.delete(section);
this._sectionList.remove_actor(section.actor);
this._sync();
- },
+ }
_onKeyFocusIn(section, actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
- },
+ }
_sync() {
let sections = [...this._sections.keys()];
@@ -1191,15 +1170,15 @@ var CalendarMessageList = new Lang.Class({
let canClear = sections.some(s => s.canClear && s.actor.visible);
this._clearButton.reactive = canClear;
- },
+ }
setEventSource(eventSource) {
this._eventsSection.setEventSource(eventSource);
- },
+ }
setDate(date) {
for (let section of this._sections.keys())
section.setDate(date);
this._placeholder.setDate(date);
}
-});
+};
diff --git a/js/ui/checkBox.js b/js/ui/checkBox.js
index 8fa481777..2d3787b70 100644
--- a/js/ui/checkBox.js
+++ b/js/ui/checkBox.js
@@ -2,12 +2,8 @@ const Clutter = imports.gi.Clutter;
const Pango = imports.gi.Pango;
const St = imports.gi.St;
-const Lang = imports.lang;
-
-var CheckBox = new Lang.Class({
- Name: 'CheckBox',
-
- _init(label) {
+var CheckBox = class CheckBox {
+ constructor(label) {
let container = new St.BoxLayout();
this.actor = new St.Button({ style_class: 'check-box',
child: container,
@@ -28,13 +24,13 @@ var CheckBox = new Lang.Class({
if (label)
this.setLabel(label);
- },
+ }
setLabel(label) {
this._label.set_text(label);
- },
+ }
getLabelActor() {
return this._label;
}
-});
+};
diff --git a/js/ui/components/__init__.js b/js/ui/components/__init__.js
index 055900b72..6d6cc9d69 100644
--- a/js/ui/components/__init__.js
+++ b/js/ui/components/__init__.js
@@ -1,17 +1,13 @@
-
-const Lang = imports.lang;
const Main = imports.ui.main;
-var ComponentManager = new Lang.Class({
- Name: 'ComponentManager',
-
- _init() {
+var ComponentManager = class {
+ constructor() {
this._allComponents = {};
this._enabledComponents = [];
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
this._sessionUpdated();
- },
+ }
_sessionUpdated() {
let newEnabledComponents = Main.sessionMode.components;
@@ -29,12 +25,12 @@ var ComponentManager = new Lang.Class({
});
this._enabledComponents = newEnabledComponents;
- },
+ }
_importComponent(name) {
let module = imports.ui.components[name];
return module.Component;
- },
+ }
_ensureComponent(name) {
let component = this._allComponents[name];
@@ -48,13 +44,13 @@ var ComponentManager = new Lang.Class({
component = new constructor();
this._allComponents[name] = component;
return component;
- },
+ }
_enableComponent(name) {
let component = this._ensureComponent(name);
if (component)
component.enable();
- },
+ }
_disableComponent(name) {
let component = this._allComponents[name];
@@ -62,4 +58,4 @@ var ComponentManager = new Lang.Class({
return;
component.disable();
}
-});
+};
diff --git a/js/ui/components/automountManager.js b/js/ui/components/automountManager.js
index 579c8a6b3..9903a48f5 100644
--- a/js/ui/components/automountManager.js
+++ b/js/ui/components/automountManager.js
@@ -1,6 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
@@ -19,10 +18,8 @@ const SETTING_ENABLE_AUTOMOUNT = 'automount';
var AUTORUN_EXPIRE_TIMEOUT_SECS = 10;
-var AutomountManager = new Lang.Class({
- Name: 'AutomountManager',
-
- _init() {
+var AutomountManager = class {
+ constructor() {
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
this._volumeQueue = [];
this._activeOperations = new Map();
@@ -34,7 +31,7 @@ var AutomountManager = new Lang.Class({
this._inhibited = false;
this._volumeMonitor = Gio.VolumeMonitor.get();
- },
+ }
enable() {
this._volumeAddedId = this._volumeMonitor.connect('volume-added', this._onVolumeAdded.bind(this));
@@ -45,7 +42,7 @@ var AutomountManager = new Lang.Class({
this._mountAllId = Mainloop.idle_add(this._startupMountAll.bind(this));
GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll');
- },
+ }
disable() {
this._volumeMonitor.disconnect(this._volumeAddedId);
@@ -58,7 +55,7 @@ var AutomountManager = new Lang.Class({
Mainloop.source_remove(this._mountAllId);
this._mountAllId = 0;
}
- },
+ }
_InhibitorsChanged(object, senderName, [inhibtor]) {
this._session.IsInhibitedRemote(GNOME_SESSION_AUTOMOUNT_INHIBIT,
@@ -67,7 +64,7 @@ var AutomountManager = new Lang.Class({
this._inhibited = result[0];
}
});
- },
+ }
_startupMountAll() {
let volumes = this._volumeMonitor.get_volumes();
@@ -79,7 +76,7 @@ var AutomountManager = new Lang.Class({
this._mountAllId = 0;
return GLib.SOURCE_REMOVE;
- },
+ }
_onDriveConnected() {
// if we're not in the current ConsoleKit session,
@@ -91,7 +88,7 @@ var AutomountManager = new Lang.Class({
player.play_from_theme('device-added-media',
_("External drive connected"),
null);
- },
+ }
_onDriveDisconnected() {
// if we're not in the current ConsoleKit session,
@@ -103,7 +100,7 @@ var AutomountManager = new Lang.Class({
sound.play_from_theme('device-removed-media',
_("External drive disconnected"),
null);
- },
+ }
_onDriveEjectButton(monitor, drive) {
// TODO: this code path is not tested, as the GVfs volume monitor
@@ -134,11 +131,11 @@ var AutomountManager = new Lang.Class({
}
});
}
- },
+ }
_onVolumeAdded(monitor, volume) {
this._checkAndMountVolume(volume);
- },
+ }
_checkAndMountVolume(volume, params) {
params = Params.parse(params, { checkSession: true,
@@ -178,7 +175,7 @@ var AutomountManager = new Lang.Class({
} else {
this._mountVolume(volume, null, params.allowAutorun);
}
- },
+ }
_mountVolume(volume, operation, allowAutorun) {
if (allowAutorun)
@@ -189,7 +186,7 @@ var AutomountManager = new Lang.Class({
volume.mount(0, mountOp, null,
this._onVolumeMounted.bind(this));
- },
+ }
_onVolumeMounted(volume, res) {
this._allowAutorunExpire(volume);
@@ -214,7 +211,7 @@ var AutomountManager = new Lang.Class({
this._closeOperation(volume);
}
}
- },
+ }
_onVolumeRemoved(monitor, volume) {
if (volume._allowAutorunExpireId && volume._allowAutorunExpireId > 0) {
@@ -223,7 +220,7 @@ var AutomountManager = new Lang.Class({
}
this._volumeQueue =
this._volumeQueue.filter(element => (element != volume));
- },
+ }
_reaskPassword(volume) {
let prevOperation = this._activeOperations.get(volume);
@@ -232,7 +229,7 @@ var AutomountManager = new Lang.Class({
new ShellMountOperation.ShellMountOperation(volume,
{ existingDialog: existingDialog });
this._mountVolume(volume, operation);
- },
+ }
_closeOperation(volume) {
let operation = this._activeOperations.get(volume);
@@ -240,11 +237,11 @@ var AutomountManager = new Lang.Class({
return;
operation.close();
this._activeOperations.delete(volume);
- },
+ }
_allowAutorun(volume) {
volume.allowAutorun = true;
- },
+ }
_allowAutorunExpire(volume) {
let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, () => {
@@ -255,5 +252,5 @@ var AutomountManager = new Lang.Class({
volume._allowAutorunExpireId = id;
GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun');
}
-});
+};
var Component = AutomountManager;
diff --git a/js/ui/components/autorunManager.js b/js/ui/components/autorunManager.js
index 68a1643f2..20499daee 100644
--- a/js/ui/components/autorunManager.js
+++ b/js/ui/components/autorunManager.js
@@ -1,6 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Gio = imports.gi.Gio;
const St = imports.gi.St;
@@ -84,13 +83,11 @@ function HotplugSniffer() {
'/org/gnome/Shell/HotplugSniffer');
}
-var ContentTypeDiscoverer = new Lang.Class({
- Name: 'ContentTypeDiscoverer',
-
- _init(callback) {
+var ContentTypeDiscoverer = class {
+ constructor(callback) {
this._callback = callback;
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
- },
+ }
guessContentTypes(mount) {
let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN);
@@ -103,7 +100,7 @@ var ContentTypeDiscoverer = new Lang.Class({
} else {
this._emitCallback(mount, []);
}
- },
+ }
_onContentTypeGuessed(mount, res) {
let contentTypes = [];
@@ -126,7 +123,7 @@ var ContentTypeDiscoverer = new Lang.Class({
this._emitCallback(mount, contentTypes);
});
}
- },
+ }
_emitCallback(mount, contentTypes) {
if (!contentTypes)
@@ -150,27 +147,25 @@ var ContentTypeDiscoverer = new Lang.Class({
this._callback(mount, apps, contentTypes);
}
-});
+};
-var AutorunManager = new Lang.Class({
- Name: 'AutorunManager',
-
- _init() {
+var AutorunManager = class {
+ constructor() {
this._session = new GnomeSession.SessionManager();
this._volumeMonitor = Gio.VolumeMonitor.get();
this._dispatcher = new AutorunDispatcher(this);
- },
+ }
enable() {
this._mountAddedId = this._volumeMonitor.connect('mount-added', this._onMountAdded.bind(this));
this._mountRemovedId = this._volumeMonitor.connect('mount-removed', this._onMountRemoved.bind(this));
- },
+ }
disable() {
this._volumeMonitor.disconnect(this._mountAddedId);
this._volumeMonitor.disconnect(this._mountRemovedId);
- },
+ }
_onMountAdded(monitor, mount) {
// don't do anything if our session is not the currently
@@ -182,21 +177,19 @@ var AutorunManager = new Lang.Class({
this._dispatcher.addMount(mount, apps, contentTypes);
});
discoverer.guessContentTypes(mount);
- },
+ }
_onMountRemoved(monitor, mount) {
this._dispatcher.removeMount(mount);
}
-});
+};
-var AutorunDispatcher = new Lang.Class({
- Name: 'AutorunDispatcher',
-
- _init(manager) {
+var AutorunDispatcher = class {
+ constructor(manager) {
this._manager = manager;
this._sources = [];
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
- },
+ }
_getAutorunSettingForType(contentType) {
let runApp = this._settings.get_strv(SETTING_START_APP);
@@ -212,7 +205,7 @@ var AutorunDispatcher = new Lang.Class({
return AutorunSetting.FILES;
return AutorunSetting.ASK;
- },
+ }
_getSourceForMount(mount) {
let filtered = this._sources.filter(source => (source.mount == mount));
@@ -224,7 +217,7 @@ var AutorunDispatcher = new Lang.Class({
return filtered[0];
return null;
- },
+ }
_addSource(mount, apps) {
// if we already have a source showing for this
@@ -234,7 +227,7 @@ var AutorunDispatcher = new Lang.Class({
// add a new source
this._sources.push(new AutorunSource(this._manager, mount, apps));
- },
+ }
addMount(mount, apps, contentTypes) {
// if autorun is disabled globally, return
@@ -272,7 +265,7 @@ var AutorunDispatcher = new Lang.Class({
// but we failed launching the default app or the default file manager
if (!success)
this._addSource(mount, apps);
- },
+ }
removeMount(mount) {
let source = this._getSourceForMount(mount);
@@ -284,45 +277,39 @@ var AutorunDispatcher = new Lang.Class({
// destroy the notification source
source.destroy();
}
-});
+};
-var AutorunSource = new Lang.Class({
- Name: 'AutorunSource',
- Extends: MessageTray.Source,
+var AutorunSource = class extends MessageTray.Source {
+ constructor(manager, mount, apps) {
+ super(mount.get_name());
- _init(manager, mount, apps) {
this._manager = manager;
this.mount = mount;
this.apps = apps;
- this.parent(mount.get_name());
-
this._notification = new AutorunNotification(this._manager, this);
// add ourselves as a source, and popup the notification
Main.messageTray.add(this);
this.notify(this._notification);
- },
+ }
getIcon() {
return this.mount.get_icon();
- },
+ }
_createPolicy() {
return new MessageTray.NotificationApplicationPolicy('org.gnome.Nautilus');
}
-});
+};
-var AutorunNotification = new Lang.Class({
- Name: 'AutorunNotification',
- Extends: MessageTray.Notification,
-
- _init(manager, source) {
- this.parent(source, source.title);
+var AutorunNotification = class extends MessageTray.Notification {
+ constructor(manager, source) {
+ super(source, source.title);
this._manager = manager;
this._mount = source.mount;
- },
+ }
createBanner() {
let banner = new MessageTray.NotificationBanner(this);
@@ -335,7 +322,7 @@ var AutorunNotification = new Lang.Class({
});
return banner;
- },
+ }
_buttonForApp(app) {
let box = new St.BoxLayout();
@@ -362,14 +349,14 @@ var AutorunNotification = new Lang.Class({
});
return button;
- },
+ }
activate() {
- this.parent();
+ super.activate();
let app = Gio.app_info_get_default_for_type('inode/directory', false);
startAppForMount(app, this._mount);
}
-});
+};
var Component = AutorunManager;
diff --git a/js/ui/components/keyring.js b/js/ui/components/keyring.js
index 180b86556..22ea5d25b 100644
--- a/js/ui/components/keyring.js
+++ b/js/ui/components/keyring.js
@@ -1,6 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
@@ -18,12 +17,9 @@ const Tweener = imports.ui.tweener;
var WORK_SPINNER_ICON_SIZE = 16;
-var KeyringDialog = new Lang.Class({
- Name: 'KeyringDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init() {
- this.parent({ styleClass: 'prompt-dialog' });
+var KeyringDialog = class extends ModalDialog.ModalDialog {
+ constructor() {
+ super({ styleClass: 'prompt-dialog' });
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password', this._onShowPassword.bind(this));
@@ -61,7 +57,7 @@ var KeyringDialog = new Lang.Class({
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
- },
+ }
_setWorking(working) {
if (!this._workSpinner)
@@ -71,7 +67,7 @@ var KeyringDialog = new Lang.Class({
this._workSpinner.play();
else
this._workSpinner.stop();
- },
+ }
_buildControlTable() {
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
@@ -162,7 +158,7 @@ var KeyringDialog = new Lang.Class({
this._controlTable = table;
this._content.messageBox.add(table, { x_fill: true, y_fill: true });
- },
+ }
_updateSensitivity(sensitive) {
if (this._passwordEntry) {
@@ -178,7 +174,7 @@ var KeyringDialog = new Lang.Class({
this._continueButton.can_focus = sensitive;
this._continueButton.reactive = sensitive;
this._setWorking(!sensitive);
- },
+ }
_ensureOpen() {
// NOTE: ModalDialog.open() is safe to call if the dialog is
@@ -196,65 +192,61 @@ var KeyringDialog = new Lang.Class({
' Dismissing prompt request');
this.prompt.cancel()
return false;
- },
+ }
_onShowPassword(prompt) {
this._buildControlTable();
this._ensureOpen();
this._updateSensitivity(true);
this._passwordEntry.grab_key_focus();
- },
+ }
_onShowConfirm(prompt) {
this._buildControlTable();
this._ensureOpen();
this._updateSensitivity(true);
this._continueButton.grab_key_focus();
- },
+ }
_onHidePrompt(prompt) {
this.close();
- },
+ }
_onPasswordActivate() {
if (this.prompt.confirm_visible)
this._confirmEntry.grab_key_focus();
else
this._onContinueButton();
- },
+ }
_onConfirmActivate() {
this._onContinueButton();
- },
+ }
_onContinueButton() {
this._updateSensitivity(false);
this.prompt.complete();
- },
+ }
_onCancelButton() {
this.prompt.cancel();
- },
-});
+ }
+};
-var KeyringDummyDialog = new Lang.Class({
- Name: 'KeyringDummyDialog',
-
- _init() {
+var KeyringDummyDialog = class {
+ constructor() {
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password', this._cancelPrompt.bind(this));
this.prompt.connect('show-confirm', this._cancelPrompt.bind(this));
- },
+ }
_cancelPrompt() {
this.prompt.cancel();
}
-});
+};
-var KeyringPrompter = new Lang.Class({
- Name: 'KeyringPrompter',
-
- _init() {
+var KeyringPrompter = class {
+ constructor() {
this._prompter = new Gcr.SystemPrompter();
this._prompter.connect('new-prompt', () => {
let dialog = this._enabled ? new KeyringDialog()
@@ -266,7 +258,7 @@ var KeyringPrompter = new Lang.Class({
this._registered = false;
this._enabled = false;
this._currentPrompt = null;
- },
+ }
enable() {
if (!this._registered) {
@@ -276,7 +268,7 @@ var KeyringPrompter = new Lang.Class({
this._registered = true;
}
this._enabled = true;
- },
+ }
disable() {
this._enabled = false;
@@ -285,6 +277,6 @@ var KeyringPrompter = new Lang.Class({
this._currentPrompt.cancel();
this._currentPrompt = null;
}
-});
+};
var Component = KeyringPrompter;
diff --git a/js/ui/components/networkAgent.js b/js/ui/components/networkAgent.js
index 6f7b81f94..7a6011ce9 100644
--- a/js/ui/components/networkAgent.js
+++ b/js/ui/components/networkAgent.js
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
-const Lang = imports.lang;
const NM = imports.gi.NM;
const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell;
@@ -21,12 +20,9 @@ const ShellEntry = imports.ui.shellEntry;
const VPN_UI_GROUP = 'VPN Plugin UI';
-var NetworkSecretDialog = new Lang.Class({
- Name: 'NetworkSecretDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(agent, requestId, connection, settingName, hints, contentOverride) {
- this.parent({ styleClass: 'prompt-dialog' });
+var NetworkSecretDialog = class extends ModalDialog.ModalDialog {
+ constructor(agent, requestId, connection, settingName, hints, contentOverride) {
+ super({ styleClass: 'prompt-dialog' });
this._agent = agent;
this._requestId = requestId;
@@ -121,7 +117,7 @@ var NetworkSecretDialog = new Lang.Class({
this._okButton]);
this._updateOkButton();
- },
+ }
_updateOkButton() {
let valid = true;
@@ -132,7 +128,7 @@ var NetworkSecretDialog = new Lang.Class({
this._okButton.button.reactive = valid;
this._okButton.button.can_focus = valid;
- },
+ }
_onOk() {
let valid = true;
@@ -148,12 +144,12 @@ var NetworkSecretDialog = new Lang.Class({
this.close(global.get_current_time());
}
// do nothing if not valid
- },
+ }
cancel() {
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
this.close(global.get_current_time());
- },
+ }
_validateWpaPsk(secret) {
let value = secret.value;
@@ -169,7 +165,7 @@ var NetworkSecretDialog = new Lang.Class({
}
return (value.length >= 8 && value.length <= 63);
- },
+ }
_validateStaticWep(secret) {
let value = secret.value;
@@ -194,7 +190,7 @@ var NetworkSecretDialog = new Lang.Class({
return false;
}
return true;
- },
+ }
_getWirelessSecrets(secrets, wirelessSetting) {
let wirelessSecuritySetting = this._connection.get_setting_wireless_security();
@@ -231,7 +227,7 @@ var NetworkSecretDialog = new Lang.Class({
default:
log('Invalid wireless key management: ' + wirelessSecuritySetting.key_mgmt);
}
- },
+ }
_get8021xSecrets(secrets) {
let ieee8021xSetting = this._connection.get_setting_802_1x();
@@ -274,7 +270,7 @@ var NetworkSecretDialog = new Lang.Class({
default:
log('Invalid EAP/IEEE802.1x method: ' + ieee8021xSetting.get_eap_method(0));
}
- },
+ }
_getPPPoESecrets(secrets) {
let pppoeSetting = this._connection.get_setting_pppoe();
@@ -284,7 +280,7 @@ var NetworkSecretDialog = new Lang.Class({
value: pppoeSetting.service || '', password: false });
secrets.push({ label: _("Password: "), key: 'password',
value: pppoeSetting.password || '', password: true });
- },
+ }
_getMobileSecrets(secrets, connectionType) {
let setting;
@@ -294,7 +290,7 @@ var NetworkSecretDialog = new Lang.Class({
setting = this._connection.get_setting_by_name(connectionType);
secrets.push({ label: _("Password: "), key: 'password',
value: setting.value || '', password: true });
- },
+ }
_getContent() {
let connectionSetting = this._connection.get_setting_connection();
@@ -347,12 +343,10 @@ var NetworkSecretDialog = new Lang.Class({
return content;
}
-});
+};
-var VPNRequestHandler = new Lang.Class({
- Name: 'VPNRequestHandler',
-
- _init(agent, requestId, authHelper, serviceType, connection, hints, flags) {
+var VPNRequestHandler = class {
+ constructor(agent, requestId, authHelper, serviceType, connection, hints, flags) {
this._agent = agent;
this._requestId = requestId;
this._connection = connection;
@@ -412,7 +406,7 @@ var VPNRequestHandler = new Lang.Class({
this._agent.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
}
- },
+ }
cancel(respond) {
if (respond)
@@ -428,7 +422,7 @@ var VPNRequestHandler = new Lang.Class({
}
this.destroy();
- },
+ }
destroy() {
if (this._destroyed)
@@ -442,7 +436,7 @@ var VPNRequestHandler = new Lang.Class({
// Stdout is closed when we finish reading from it
this._destroyed = true;
- },
+ }
_vpnChildFinished(pid, status, requestObj) {
this._childWatch = 0;
@@ -463,7 +457,7 @@ var VPNRequestHandler = new Lang.Class({
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
this.destroy();
- },
+ }
_vpnChildProcessLineOldStyle(line) {
if (this._previousLine != undefined) {
@@ -481,7 +475,7 @@ var VPNRequestHandler = new Lang.Class({
} else {
this._previousLine = line;
}
- },
+ }
_readStdoutOldStyle() {
this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null, (stream, result) => {
@@ -498,7 +492,7 @@ var VPNRequestHandler = new Lang.Class({
// try to read more!
this._readStdoutOldStyle();
});
- },
+ }
_readStdoutNewStyle() {
this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null, (stream, result) => {
@@ -516,7 +510,7 @@ var VPNRequestHandler = new Lang.Class({
this._dataStdout.set_buffer_size(2 * this._dataStdout.get_buffer_size());
this._readStdoutNewStyle();
});
- },
+ }
_showNewStyleDialog() {
let keyfile = new GLib.KeyFile();
@@ -580,7 +574,7 @@ var VPNRequestHandler = new Lang.Class({
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.CONFIRMED);
this.destroy();
}
- },
+ }
_writeConnection() {
let vpnSetting = this._connection.get_setting_vpn();
@@ -601,14 +595,12 @@ var VPNRequestHandler = new Lang.Class({
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
this.destroy();
}
- },
-});
+ }
+};
Signals.addSignalMethods(VPNRequestHandler.prototype);
-var NetworkAgent = new Lang.Class({
- Name: 'NetworkAgent',
-
- _init() {
+var NetworkAgent = class {
+ constructor() {
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
capabilities: NM.SecretAgentCapabilities.VPN_HINTS,
auto_register: false
@@ -639,7 +631,7 @@ var NetworkAgent = new Lang.Class({
logError(e, 'error initializing the NetworkManager Agent');
}
});
- },
+ }
enable() {
if (!this._native)
@@ -648,7 +640,7 @@ var NetworkAgent = new Lang.Class({
this._native.auto_register = true;
if (this._initialized && !this._native.registered)
this._native.register_async(null, null);
- },
+ }
disable() {
let requestId;
@@ -671,7 +663,7 @@ var NetworkAgent = new Lang.Class({
this._native.auto_register = false;
if (this._initialized && this._native.registered)
this._native.unregister_async(null, null);
- },
+ }
_showNotification(requestId, connection, settingName, hints, flags) {
let source = new MessageTray.Source(_("Network Manager"), 'network-transmit-receive');
@@ -731,14 +723,14 @@ var NetworkAgent = new Lang.Class({
Main.messageTray.add(source);
source.notify(notification);
- },
+ }
_newRequest(agent, requestId, connection, settingName, hints, flags) {
if (!(flags & NM.SecretAgentGetSecretsFlags.USER_REQUESTED))
this._showNotification(requestId, connection, settingName, hints, flags);
else
this._handleRequest(requestId, connection, settingName, hints, flags);
- },
+ }
_handleRequest(requestId, connection, settingName, hints, flags) {
if (settingName == 'vpn') {
@@ -752,7 +744,7 @@ var NetworkAgent = new Lang.Class({
});
this._dialogs[requestId] = dialog;
dialog.open(global.get_current_time());
- },
+ }
_cancelRequest(agent, requestId) {
if (this._dialogs[requestId]) {
@@ -763,7 +755,7 @@ var NetworkAgent = new Lang.Class({
this._vpnRequests[requestId].cancel(false);
delete this._vpnRequests[requestId];
}
- },
+ }
_vpnRequest(requestId, connection, hints, flags) {
let vpnSetting = connection.get_setting_vpn();
@@ -785,7 +777,7 @@ var NetworkAgent = new Lang.Class({
delete this._vpnRequests[requestId];
});
this._vpnRequests[requestId] = vpnRequest;
- },
+ }
_buildVPNServiceCache() {
if (this._vpnCacheBuilt)
@@ -818,5 +810,5 @@ var NetworkAgent = new Lang.Class({
}
});
}
-});
+};
var Component = NetworkAgent;
diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js
index dee5f38b3..3e5090fb1 100644
--- a/js/ui/components/polkitAgent.js
+++ b/js/ui/components/polkitAgent.js
@@ -1,6 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Signals = imports.signals;
const Shell = imports.gi.Shell;
const AccountsService = imports.gi.AccountsService;
@@ -26,12 +25,9 @@ var DIALOG_ICON_SIZE = 48;
var WORK_SPINNER_ICON_SIZE = 16;
-var AuthenticationDialog = new Lang.Class({
- Name: 'AuthenticationDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(actionId, body, cookie, userNames) {
- this.parent({ styleClass: 'prompt-dialog' });
+var AuthenticationDialog = class extends ModalDialog.ModalDialog {
+ constructor(actionId, body, cookie, userNames) {
+ super({ styleClass: 'prompt-dialog' });
this.actionId = actionId;
this.message = body;
@@ -158,14 +154,14 @@ var AuthenticationDialog = new Lang.Class({
this._identityToAuth = Polkit.UnixUser.new_for_name(userName);
this._cookie = cookie;
- },
+ }
_setWorking(working) {
if (working)
this._workSpinner.play();
else
this._workSpinner.stop();
- },
+ }
performAuthentication() {
this._destroySession();
@@ -176,7 +172,7 @@ var AuthenticationDialog = new Lang.Class({
this._sessionShowErrorId = this._session.connect('show-error', this._onSessionShowError.bind(this));
this._sessionShowInfoId = this._session.connect('show-info', this._onSessionShowInfo.bind(this));
this._session.initiate();
- },
+ }
_ensureOpen() {
// NOTE: ModalDialog.open() is safe to call if the dialog is
@@ -198,14 +194,14 @@ var AuthenticationDialog = new Lang.Class({
' cookie ' + this._cookie);
this._emitDone(true);
}
- },
+ }
_emitDone(dismissed) {
if (!this._doneEmitted) {
this._doneEmitted = true;
this.emit('done', dismissed);
}
- },
+ }
_updateSensitivity(sensitive) {
this._passwordEntry.reactive = sensitive;
@@ -214,7 +210,7 @@ var AuthenticationDialog = new Lang.Class({
this._okButton.can_focus = sensitive;
this._okButton.reactive = sensitive;
this._setWorking(!sensitive);
- },
+ }
_onEntryActivate() {
let response = this._passwordEntry.get_text();
@@ -225,11 +221,11 @@ var AuthenticationDialog = new Lang.Class({
this._errorMessageLabel.hide();
this._infoMessageLabel.hide();
this._nullMessageLabel.show();
- },
+ }
_onAuthenticateButtonPressed() {
this._onEntryActivate();
- },
+ }
_onSessionCompleted(session, gainedAuthorization) {
if (this._completed || this._doneEmitted)
@@ -261,7 +257,7 @@ var AuthenticationDialog = new Lang.Class({
/* Try and authenticate again */
this.performAuthentication();
}
- },
+ }
_onSessionRequest(session, request, echo_on) {
// Cheap localization trick
@@ -280,7 +276,7 @@ var AuthenticationDialog = new Lang.Class({
this._passwordEntry.grab_key_focus();
this._updateSensitivity(true);
this._ensureOpen();
- },
+ }
_onSessionShowError(session, text) {
this._passwordEntry.set_text('');
@@ -289,7 +285,7 @@ var AuthenticationDialog = new Lang.Class({
this._infoMessageLabel.hide();
this._nullMessageLabel.hide();
this._ensureOpen();
- },
+ }
_onSessionShowInfo(session, text) {
this._passwordEntry.set_text('');
@@ -298,7 +294,7 @@ var AuthenticationDialog = new Lang.Class({
this._errorMessageLabel.hide();
this._nullMessageLabel.hide();
this._ensureOpen();
- },
+ }
_destroySession() {
if (this._session) {
@@ -312,20 +308,20 @@ var AuthenticationDialog = new Lang.Class({
this._session.disconnect(this._sessionShowInfoId);
this._session = null;
}
- },
+ }
_onUserChanged() {
if (this._user.is_loaded && this._userAvatar) {
this._userAvatar.update();
this._userAvatar.actor.show();
}
- },
+ }
cancel() {
this._wasDismissed = true;
this.close(global.get_current_time());
this._emitDone(true);
- },
+ }
_onDialogClosed() {
if (this._sessionUpdatedId)
@@ -339,21 +335,19 @@ var AuthenticationDialog = new Lang.Class({
}
this._destroySession();
- },
-});
+ }
+};
Signals.addSignalMethods(AuthenticationDialog.prototype);
-var AuthenticationAgent = new Lang.Class({
- Name: 'AuthenticationAgent',
-
- _init() {
+var AuthenticationAgent = class {
+ constructor() {
this._currentDialog = null;
this._handle = null;
this._native = new Shell.PolkitAuthenticationAgent();
this._native.connect('initiate', this._onInitiate.bind(this));
this._native.connect('cancel', this._onCancel.bind(this));
this._sessionUpdatedId = 0;
- },
+ }
enable() {
try {
@@ -361,7 +355,7 @@ var AuthenticationAgent = new Lang.Class({
} catch(e) {
log('Failed to register AuthenticationAgent');
}
- },
+ }
disable() {
try {
@@ -369,7 +363,7 @@ var AuthenticationAgent = new Lang.Class({
} catch(e) {
log('Failed to unregister AuthenticationAgent');
}
- },
+ }
_onInitiate(nativeAgent, actionId, message, iconName, cookie, userNames) {
// Don't pop up a dialog while locked
@@ -397,15 +391,15 @@ var AuthenticationAgent = new Lang.Class({
this._currentDialog.connect('done', this._onDialogDone.bind(this));
this._currentDialog.performAuthentication();
- },
+ }
_onCancel(nativeAgent) {
this._completeRequest(false);
- },
+ }
_onDialogDone(dialog, dismissed) {
this._completeRequest(dismissed);
- },
+ }
_completeRequest(dismissed) {
this._currentDialog.close();
@@ -416,7 +410,7 @@ var AuthenticationAgent = new Lang.Class({
this._sessionUpdatedId = 0;
this._native.complete(dismissed);
- },
-});
+ }
+};
var Component = AuthenticationAgent;
diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js
index 257b24fdd..d26e8a07e 100644
--- a/js/ui/components/telepathyClient.js
+++ b/js/ui/components/telepathyClient.js
@@ -79,17 +79,15 @@ function makeMessageFromTplEvent(event) {
};
}
-var TelepathyComponent = new Lang.Class({
- Name: 'TelepathyComponent',
-
- _init() {
+var TelepathyComponent = class {
+ constructor() {
this._client = null;
if (!HAVE_TP)
return; // Telepathy isn't available
this._client = new TelepathyClient();
- },
+ }
enable() {
if (!this._client)
@@ -103,7 +101,7 @@ var TelepathyComponent = new Lang.Class({
if (!this._client.account_manager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
this._client.account_manager.prepare_async(null, null);
- },
+ }
disable() {
if (!this._client)
@@ -111,7 +109,7 @@ var TelepathyComponent = new Lang.Class({
this._client.unregister();
}
-});
+};
var TelepathyClient = HAVE_TP ? new Lang.Class({
Name: 'TelepathyClient',
@@ -279,17 +277,14 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
},
}) : null;
-var ChatSource = new Lang.Class({
- Name: 'ChatSource',
- Extends: MessageTray.Source,
+var ChatSource = class extends MessageTray.Source {
+ constructor(account, conn, channel, contact, client) {
+ super(contact.get_alias());
- _init(account, conn, channel, contact, client) {
this._account = account;
this._contact = contact;
this._client = client;
- this.parent(contact.get_alias());
-
this.isChat = true;
this._pendingMessages = [];
@@ -313,7 +308,7 @@ var ChatSource = new Lang.Class({
Main.messageTray.add(this);
this._getLogMessages();
- },
+ }
_ensureNotification() {
if (this._notification)
@@ -329,13 +324,13 @@ var ChatSource = new Lang.Class({
this._notification = null;
});
this.pushNotification(this._notification);
- },
+ }
_createPolicy() {
if (this._account.protocol_name == 'irc')
return new MessageTray.NotificationApplicationPolicy('org.gnome.Polari');
return new MessageTray.NotificationApplicationPolicy('empathy');
- },
+ }
createBanner() {
this._banner = new ChatNotificationBanner(this._notification);
@@ -348,7 +343,7 @@ var ChatSource = new Lang.Class({
});
return this._banner;
- },
+ }
_updateAlias() {
let oldAlias = this.title;
@@ -360,7 +355,7 @@ var ChatSource = new Lang.Class({
this.setTitle(newAlias);
if (this._notification)
this._notification.appendAliasChange(oldAlias, newAlias);
- },
+ }
getIcon() {
let file = this._contact.get_avatar_file();
@@ -369,7 +364,7 @@ var ChatSource = new Lang.Class({
} else {
return new Gio.ThemedIcon({ name: 'avatar-default' });
}
- },
+ }
getSecondaryIcon() {
let iconName;
@@ -398,7 +393,7 @@ var ChatSource = new Lang.Class({
iconName = 'user-offline';
}
return new Gio.ThemedIcon({ name: iconName });
- },
+ }
_updateAvatarIcon() {
this.iconUpdated();
@@ -406,7 +401,7 @@ var ChatSource = new Lang.Class({
this._notification.update(this._notification.title,
this._notification.bannerBodyText,
{ gicon: this.getIcon() });
- },
+ }
open() {
Main.overview.hide();
@@ -431,7 +426,7 @@ var ChatSource = new Lang.Class({
cd.present_channel_async(this._channel, global.get_current_time(), null);
}
- },
+ }
_getLogMessages() {
let logManager = Tpl.LogManager.dup_singleton();
@@ -440,7 +435,7 @@ var ChatSource = new Lang.Class({
logManager.get_filtered_events_async(this._account, entity,
Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES,
null, this._displayPendingMessages.bind(this));
- },
+ }
_displayPendingMessages(logManager, result) {
let [success, events] = logManager.get_filtered_events_finish(result);
@@ -493,7 +488,7 @@ var ChatSource = new Lang.Class({
if (pendingMessages.length > 0)
this.notify();
- },
+ }
destroy(reason) {
if (this._client.is_handling_channel(this._channel)) {
@@ -527,25 +522,25 @@ var ChatSource = new Lang.Class({
this._contact.disconnect(this._notifyAvatarId);
this._contact.disconnect(this._presenceChangedId);
- this.parent(reason);
- },
+ super.destroy(reason);
+ }
_channelClosed() {
this.destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED);
- },
+ }
/* All messages are new messages for Telepathy sources */
get count() {
return this._pendingMessages.length;
- },
+ }
get unseenCount() {
return this.count;
- },
+ }
get countVisible() {
return this.count > 0;
- },
+ }
_messageReceived(channel, message) {
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
@@ -565,7 +560,7 @@ var ChatSource = new Lang.Class({
this._notifyTimeoutId = Mainloop.timeout_add(500,
this._notifyTimeout.bind(this));
GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout');
- },
+ }
_notifyTimeout() {
if (this._pendingMessages.length != 0)
@@ -574,7 +569,7 @@ var ChatSource = new Lang.Class({
this._notifyTimeoutId = 0;
return GLib.SOURCE_REMOVE;
- },
+ }
// This is called for both messages we send from
// our client and other clients as well.
@@ -582,11 +577,11 @@ var ChatSource = new Lang.Class({
this._ensureNotification();
message = makeMessageFromTpMessage(message, NotificationDirection.SENT);
this._notification.appendMessage(message);
- },
+ }
notify() {
- this.parent(this._notification);
- },
+ super.notify(this._notification);
+ }
respond(text) {
let type;
@@ -601,7 +596,7 @@ var ChatSource = new Lang.Class({
this._channel.send_message_async(msg, 0, (src, result) => {
this._channel.send_message_finish(result);
});
- },
+ }
setChatState(state) {
// We don't want to send COMPOSING every time a letter is typed into
@@ -614,14 +609,14 @@ var ChatSource = new Lang.Class({
this._chatState = state;
this._channel.set_chat_state_async(state, null);
}
- },
+ }
_presenceChanged(contact, presence, status, message) {
if (this._notification)
this._notification.update(this._notification.title,
this._notification.bannerBodyText,
{ secondaryGIcon: this.getSecondaryIcon() });
- },
+ }
_pendingRemoved(channel, message) {
let idx = this._pendingMessages.indexOf(message);
@@ -634,35 +629,32 @@ var ChatSource = new Lang.Class({
if (this._pendingMessages.length == 0 &&
this._banner && !this._banner.expanded)
this._banner.hide();
- },
+ }
_ackMessages() {
// Don't clear our messages here, tp-glib will send a
// 'pending-message-removed' for each one.
this._channel.ack_all_pending_messages_async(null);
}
-});
+};
-var ChatNotification = new Lang.Class({
- Name: 'ChatNotification',
- Extends: MessageTray.Notification,
-
- _init(source) {
- this.parent(source, source.title, null,
- { secondaryGIcon: source.getSecondaryIcon() });
+var ChatNotification = class extends MessageTray.Notification {
+ constructor(source) {
+ super(source, source.title, null,
+ { secondaryGIcon: source.getSecondaryIcon() });
this.setUrgency(MessageTray.Urgency.HIGH);
this.setResident(true);
this.messages = [];
this._timestampTimeoutId = 0;
- },
+ }
destroy(reason) {
if (this._timestampTimeoutId)
Mainloop.source_remove(this._timestampTimeoutId);
this._timestampTimeoutId = 0;
- this.parent(reason);
- },
+ super.destroy(reason);
+ }
/**
* appendMessage:
@@ -700,7 +692,7 @@ var ChatNotification = new Lang.Class({
styles: styles,
timestamp: message.timestamp,
noTimestamp: noTimestamp });
- },
+ }
_filterMessages() {
if (this.messages.length < 1)
@@ -725,7 +717,7 @@ var ChatNotification = new Lang.Class({
for (let i = 0; i < expired.length; i++)
this.emit('message-removed', expired[i]);
}
- },
+ }
/**
* _append:
@@ -773,7 +765,7 @@ var ChatNotification = new Lang.Class({
}
this._filterMessages();
- },
+ }
appendTimestamp() {
this._timestampTimeoutId = 0;
@@ -784,7 +776,7 @@ var ChatNotification = new Lang.Class({
this._filterMessages();
return GLib.SOURCE_REMOVE;
- },
+ }
appendAliasChange(oldAlias, newAlias) {
oldAlias = GLib.markup_escape_text(oldAlias, -1);
@@ -800,7 +792,7 @@ var ChatNotification = new Lang.Class({
this._filterMessages();
}
-});
+};
var ChatLineBox = new Lang.Class({
Name: 'ChatLineBox',
@@ -812,12 +804,9 @@ var ChatLineBox = new Lang.Class({
}
});
-var ChatNotificationBanner = new Lang.Class({
- Name: 'ChatNotificationBanner',
- Extends: MessageTray.NotificationBanner,
-
- _init(notification) {
- this.parent(notification);
+var ChatNotificationBanner = class extends MessageTray.NotificationBanner {
+ constructor(notification) {
+ super(notification);
this._responseEntry = new St.Entry({ style_class: 'chat-response',
x_expand: true,
@@ -880,14 +869,14 @@ var ChatNotificationBanner = new Lang.Class({
for (let i = this.notification.messages.length - 1; i >= 0; i--)
this._addMessage(this.notification.messages[i]);
- },
+ }
_onDestroy() {
- this.parent();
+ super._onDestroy();
this.notification.disconnect(this._messageAddedId);
this.notification.disconnect(this._messageRemovedId);
this.notification.disconnect(this._timestampChangedId);
- },
+ }
scrollTo(side) {
let adjustment = this._scrollArea.vscroll.adjustment;
@@ -895,11 +884,11 @@ var ChatNotificationBanner = new Lang.Class({
adjustment.value = adjustment.lower;
else if (side == St.Side.BOTTOM)
adjustment.value = adjustment.upper;
- },
+ }
hide() {
this.emit('done-displaying');
- },
+ }
_addMessage(message) {
let highlighter = new MessageList.URLHighlighter(message.body, true, true);
@@ -921,7 +910,7 @@ var ChatNotificationBanner = new Lang.Class({
this._messageActors.set(message, lineBox);
this._updateTimestamp(message);
- },
+ }
_updateTimestamp(message) {
let actor = this._messageActors.get(message);
@@ -942,7 +931,7 @@ var ChatNotificationBanner = new Lang.Class({
actor.add_actor(timeLabel);
}
- },
+ }
_onEntryActivated() {
let text = this._responseEntry.get_text();
@@ -955,7 +944,7 @@ var ChatNotificationBanner = new Lang.Class({
// see Source._messageSent
this._responseEntry.set_text('');
this.notification.source.respond(text);
- },
+ }
_composingStopTimeout() {
this._composingTimeoutId = 0;
@@ -963,7 +952,7 @@ var ChatNotificationBanner = new Lang.Class({
this.notification.source.setChatState(Tp.ChannelChatState.PAUSED);
return GLib.SOURCE_REMOVE;
- },
+ }
_onEntryChanged() {
let text = this._responseEntry.get_text();
@@ -990,6 +979,6 @@ var ChatNotificationBanner = new Lang.Class({
this.notification.source.setChatState(Tp.ChannelChatState.ACTIVE);
}
}
-});
+};
var Component = TelepathyComponent;
diff --git a/js/ui/ctrlAltTab.js b/js/ui/ctrlAltTab.js
index 8ab1db9ba..62e1f3d93 100644
--- a/js/ui/ctrlAltTab.js
+++ b/js/ui/ctrlAltTab.js
@@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -21,15 +20,13 @@ var SortGroup = {
BOTTOM: 2
};
-var CtrlAltTabManager = new Lang.Class({
- Name: 'CtrlAltTabManager',
-
- _init() {
+var CtrlAltTabManager = class CtrlAltTabManager {
+ constructor() {
this._items = [];
this.addGroup(global.window_group, _("Windows"),
'focus-windows-symbolic', { sortGroup: SortGroup.TOP,
focusCallback: this._focusWindows.bind(this) });
- },
+ }
addGroup(root, name, icon, params) {
let item = Params.parse(params, { sortGroup: SortGroup.MIDDLE,
@@ -44,7 +41,7 @@ var CtrlAltTabManager = new Lang.Class({
root.connect('destroy', () => { this.removeGroup(root); });
if (root instanceof St.Widget)
global.focus_manager.add_group(root);
- },
+ }
removeGroup(root) {
if (root instanceof St.Widget)
@@ -55,14 +52,14 @@ var CtrlAltTabManager = new Lang.Class({
return;
}
}
- },
+ }
focusGroup(item, timestamp) {
if (item.focusCallback)
item.focusCallback(timestamp);
else
item.root.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
- },
+ }
// Sort the items into a consistent order; panel first, tray last,
// and everything else in between, sorted by X coordinate, so that
@@ -77,7 +74,7 @@ var CtrlAltTabManager = new Lang.Class({
[bx, y] = b.proxy.get_transformed_position();
return ax - bx;
- },
+ }
popup(backward, binding, mask) {
// Start with the set of focus groups that are currently mapped
@@ -130,22 +127,20 @@ var CtrlAltTabManager = new Lang.Class({
this._popup = null;
});
}
- },
+ }
_focusWindows(timestamp) {
global.display.focus_default_window(timestamp);
}
-});
+};
-var CtrlAltTabPopup = new Lang.Class({
- Name: 'CtrlAltTabPopup',
- Extends: SwitcherPopup.SwitcherPopup,
-
- _init(items) {
- this.parent(items);
+var CtrlAltTabPopup =
+class CtrlAltTabPopup extends SwitcherPopup.SwitcherPopup {
+ constructor(items) {
+ super(items);
this._switcherList = new CtrlAltTabSwitcher(this._items);
- },
+ }
_keyPressHandler(keysym, action) {
if (action == Meta.KeyBindingAction.SWITCH_PANELS)
@@ -160,24 +155,22 @@ var CtrlAltTabPopup = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
return Clutter.EVENT_STOP;
- },
+ }
_finish(time) {
- this.parent(time);
+ super._finish(time);
Main.ctrlAltTabManager.focusGroup(this._items[this._selectedIndex], time);
- },
-});
+ }
+};
-var CtrlAltTabSwitcher = new Lang.Class({
- Name: 'CtrlAltTabSwitcher',
- Extends: SwitcherPopup.SwitcherList,
-
- _init(items) {
- this.parent(true);
+var CtrlAltTabSwitcher =
+class CtrlAltTabSwitcher extends SwitcherPopup.SwitcherList {
+ constructor(items) {
+ super(true);
for (let i = 0; i < items.length; i++)
this._addIcon(items[i]);
- },
+ }
_addIcon(item) {
let box = new St.BoxLayout({ style_class: 'alt-tab-app',
@@ -195,4 +188,4 @@ var CtrlAltTabSwitcher = new Lang.Class({
this.addItem(box, text);
}
-});
+};
diff --git a/js/ui/dash.js b/js/ui/dash.js
index ce970a610..be529213e 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -347,10 +347,8 @@ var DashActor = new Lang.Class({
const baseIconSizes = [ 16, 22, 24, 32, 48, 64 ];
-var Dash = new Lang.Class({
- Name: 'Dash',
-
- _init() {
+var Dash = class Dash {
+ constructor() {
this._maxHeight = -1;
this.iconSize = 64;
this._shownInitially = false;
@@ -407,7 +405,7 @@ var Dash = new Lang.Class({
// Translators: this is the name of the dock/favorites area on
// the left of the overview
Main.ctrlAltTabManager.addGroup(this.actor, _("Dash"), 'user-bookmarks-symbolic');
- },
+ }
_onDragBegin() {
this._dragCancelled = false;
@@ -421,26 +419,26 @@ var Dash = new Lang.Class({
this._box.insert_child_at_index(this._emptyDropTarget, 0);
this._emptyDropTarget.show(true);
}
- },
+ }
_onDragCancelled() {
this._dragCancelled = true;
this._endDrag();
- },
+ }
_onDragEnd() {
if (this._dragCancelled)
return;
this._endDrag();
- },
+ }
_endDrag() {
this._clearDragPlaceholder();
this._clearEmptyDropTarget();
this._showAppsIcon.setDragApp(null);
DND.removeDragMonitor(this._dragMonitor);
- },
+ }
_onDragMotion(dragEvent) {
let app = getAppFromSource(dragEvent.source);
@@ -459,18 +457,18 @@ var Dash = new Lang.Class({
this._showAppsIcon.setDragApp(null);
return DND.DragMotionResult.CONTINUE;
- },
+ }
_appIdListToHash(apps) {
let ids = {};
for (let i = 0; i < apps.length; i++)
ids[apps[i].get_id()] = apps[i];
return ids;
- },
+ }
_queueRedisplay() {
Main.queueDeferredWork(this._workId);
- },
+ }
_hookUpLabel(item, appIcon) {
item.child.connect('notify::hover', () => {
@@ -490,7 +488,7 @@ var Dash = new Lang.Class({
this._syncLabel(item, appIcon);
});
}
- },
+ }
_createAppItem(app) {
let appIcon = new AppDisplay.AppIcon(app,
@@ -524,7 +522,7 @@ var Dash = new Lang.Class({
this._hookUpLabel(item, appIcon);
return item;
- },
+ }
_itemMenuStateChanged(item, opened) {
// When the menu closes, it calls sync_hover, which means
@@ -537,7 +535,7 @@ var Dash = new Lang.Class({
item.hideLabel();
}
- },
+ }
_syncLabel(item, appIcon) {
let shouldShow = appIcon ? appIcon.shouldShowTooltip() : item.child.get_hover();
@@ -573,7 +571,7 @@ var Dash = new Lang.Class({
GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing');
}
}
- },
+ }
_adjustIconSize() {
// For the icon size, we only consider children which are "proper"
@@ -663,7 +661,7 @@ var Dash = new Lang.Class({
transition: 'easeOutQuad',
});
}
- },
+ }
_redisplay() {
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
@@ -792,7 +790,7 @@ var Dash = new Lang.Class({
// Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=692744
// Without it, StBoxLayout may use a stale size cache
this._box.queue_relayout();
- },
+ }
_clearDragPlaceholder() {
if (this._dragPlaceholder) {
@@ -804,14 +802,14 @@ var Dash = new Lang.Class({
this._dragPlaceholder = null;
}
this._dragPlaceholderPos = -1;
- },
+ }
_clearEmptyDropTarget() {
if (this._emptyDropTarget) {
this._emptyDropTarget.animateOutAndDestroy();
this._emptyDropTarget = null;
}
- },
+ }
handleDragOver(source, actor, x, y, time) {
let app = getAppFromSource(source);
@@ -888,7 +886,7 @@ var Dash = new Lang.Class({
return DND.DragMotionResult.MOVE_DROP;
return DND.DragMotionResult.COPY_DROP;
- },
+ }
// Draggable target interface
acceptDrop(source, actor, x, y, time) {
@@ -938,6 +936,5 @@ var Dash = new Lang.Class({
return true;
}
-});
-
+};
Signals.addSignalMethods(Dash.prototype);
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 83967c9f4..a95c09ec2 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -31,10 +31,8 @@ function _isToday(date) {
now.getDate() == date.getDate();
}
-var TodayButton = new Lang.Class({
- Name: 'TodayButton',
-
- _init(calendar) {
+var TodayButton = class TodayButton {
+ constructor(calendar) {
// Having the ability to go to the current date if the user is already
// on the current date can be confusing. So don't make the button reactive
// until the selected date changes.
@@ -63,7 +61,7 @@ var TodayButton = new Lang.Class({
// current date.
this.actor.reactive = !_isToday(date)
});
- },
+ }
setDate(date) {
this._dayLabel.set_text(date.toLocaleFormat('%A'));
@@ -83,12 +81,10 @@ var TodayButton = new Lang.Class({
dateFormat = Shell.util_translate_time_string (N_("%A %B %e %Y"));
this.actor.accessible_name = date.toLocaleFormat(dateFormat);
}
-});
+};
-var WorldClocksSection = new Lang.Class({
- Name: 'WorldClocksSection',
-
- _init() {
+var WorldClocksSection = class WorldClocksSection {
+ constructor() {
this._clock = new GnomeDesktop.WallClock();
this._clockNotifyId = 0;
@@ -118,11 +114,11 @@ var WorldClocksSection = new Lang.Class({
this._clockAppMon.watchSetting('world-clocks',
this._clocksChanged.bind(this));
this._sync();
- },
+ }
_sync() {
this.actor.visible = this._clockAppMon.available;
- },
+ }
_clocksChanged(settings) {
this._grid.destroy_all_children();
@@ -187,7 +183,7 @@ var WorldClocksSection = new Lang.Class({
this._clock.disconnect(this._clockNotifyId);
this._clockNotifyId = 0;
}
- },
+ }
_updateLabels() {
for (let i = 0; i < this._locations.length; i++) {
@@ -197,12 +193,10 @@ var WorldClocksSection = new Lang.Class({
l.actor.text = Util.formatTime(now, { timeOnly: true });
}
}
-});
+};
-var WeatherSection = new Lang.Class({
- Name: 'WeatherSection',
-
- _init() {
+var WeatherSection = class WeatherSection {
+ constructor() {
this._weatherClient = new Weather.WeatherClient();
this.actor = new St.Button({ style_class: 'weather-button',
@@ -236,7 +230,7 @@ var WeatherSection = new Lang.Class({
this._weatherClient.connect('changed', this._sync.bind(this));
this._sync();
- },
+ }
_getSummary(info, capitalize=false) {
let options = capitalize ? GWeather.FormatOptions.SENTENCE_CAPITALIZATION
@@ -250,7 +244,7 @@ var WeatherSection = new Lang.Class({
let [, sky] = info.get_value_sky();
return GWeather.Sky.to_string_full(sky, options);
- },
+ }
_sameSummary(info1, info2) {
let [ok1, phenom1, qualifier1] = info1.get_value_conditions();
@@ -261,7 +255,7 @@ var WeatherSection = new Lang.Class({
let [, sky1] = info1.get_value_sky();
let [, sky2] = info2.get_value_sky();
return sky1 == sky2;
- },
+ }
_getSummaryText() {
let info = this._weatherClient.info;
@@ -309,7 +303,7 @@ var WeatherSection = new Lang.Class({
return this._getSummary(info, capitalize);
});
return String.prototype.format.apply(fmt, summaries);
- },
+ }
_getLabelText() {
if (!this._weatherClient.hasLocation)
@@ -328,7 +322,7 @@ var WeatherSection = new Lang.Class({
return _("Go online for weather information");
return _("Weather information is currently unavailable");
- },
+ }
_sync() {
this.actor.visible = this._weatherClient.available;
@@ -338,12 +332,10 @@ var WeatherSection = new Lang.Class({
this._conditionsLabel.text = this._getLabelText();
}
-});
+};
-var MessagesIndicator = new Lang.Class({
- Name: 'MessagesIndicator',
-
- _init() {
+var MessagesIndicator = class MessagesIndicator {
+ constructor() {
this.actor = new St.Icon({ icon_name: 'message-indicator-symbolic',
icon_size: 16,
visible: false, y_expand: true,
@@ -357,18 +349,18 @@ var MessagesIndicator = new Lang.Class({
let sources = Main.messageTray.getSources();
sources.forEach(source => { this._onSourceAdded(null, source); });
- },
+ }
_onSourceAdded(tray, source) {
source.connect('count-updated', this._updateCount.bind(this));
this._sources.push(source);
this._updateCount();
- },
+ }
_onSourceRemoved(tray, source) {
this._sources.splice(this._sources.indexOf(source), 1);
this._updateCount();
- },
+ }
_updateCount() {
let count = 0;
@@ -377,7 +369,7 @@ var MessagesIndicator = new Lang.Class({
this.actor.visible = (count > 0);
}
-});
+};
var IndicatorPad = new Lang.Class({
Name: 'IndicatorPad',
@@ -592,5 +584,5 @@ var DateMenuButton = new Lang.Class({
// but the corresponding app (clocks, weather); however we can consider
// that display-specific settings, so re-use "allowSettings" here ...
this._displaysSection.visible = Main.sessionMode.allowSettings;
- }
+ },
});
diff --git a/js/ui/dnd.js b/js/ui/dnd.js
index 665881363..4aca7c341 100644
--- a/js/ui/dnd.js
+++ b/js/ui/dnd.js
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const St = imports.gi.St;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -74,10 +73,8 @@ function removeDragMonitor(monitor) {
}
}
-var _Draggable = new Lang.Class({
- Name: 'Draggable',
-
- _init(actor, params) {
+var _Draggable = class _Draggable {
+ constructor(actor, params) {
params = Params.parse(params, { manualMode: false,
restoreOnSuccess: false,
dragActorMaxSize: undefined,
@@ -112,7 +109,7 @@ var _Draggable = new Lang.Class({
this._dragCancellable = true;
this._eventsGrabbed = false;
- },
+ }
_onButtonPress(actor, event) {
if (event.get_button() != 1)
@@ -129,7 +126,7 @@ var _Draggable = new Lang.Class({
this._dragStartY = stageY;
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onTouchEvent(actor, event) {
if (event.type() != Clutter.EventType.TOUCH_BEGIN ||
@@ -149,7 +146,7 @@ var _Draggable = new Lang.Class({
this._dragStartY = stageY;
return Clutter.EVENT_PROPAGATE;
- },
+ }
_grabDevice(actor) {
let manager = Clutter.DeviceManager.get_default();
@@ -161,7 +158,7 @@ var _Draggable = new Lang.Class({
pointer.grab (actor);
this._grabbedDevice = pointer;
- },
+ }
_ungrabDevice() {
if (this._touchSequence)
@@ -171,13 +168,13 @@ var _Draggable = new Lang.Class({
this._touchSequence = null;
this._grabbedDevice = null;
- },
+ }
_grabActor() {
this._grabDevice(this.actor);
this._onEventId = this.actor.connect('event',
this._onEvent.bind(this));
- },
+ }
_ungrabActor() {
if (!this._onEventId)
@@ -186,7 +183,7 @@ var _Draggable = new Lang.Class({
this._ungrabDevice();
this.actor.disconnect(this._onEventId);
this._onEventId = null;
- },
+ }
_grabEvents() {
if (!this._eventsGrabbed) {
@@ -194,7 +191,7 @@ var _Draggable = new Lang.Class({
if (this._eventsGrabbed)
this._grabDevice(_getEventHandlerActor());
}
- },
+ }
_ungrabEvents() {
if (this._eventsGrabbed) {
@@ -202,7 +199,7 @@ var _Draggable = new Lang.Class({
Main.popModal(_getEventHandlerActor());
this._eventsGrabbed = false;
}
- },
+ }
_onEvent(actor, event) {
// We intercept BUTTON_RELEASE event to know that the button was released in case we
@@ -246,7 +243,7 @@ var _Draggable = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
/**
* fakeRelease:
@@ -259,7 +256,7 @@ var _Draggable = new Lang.Class({
fakeRelease() {
this._buttonDown = false;
this._ungrabActor();
- },
+ }
/**
* startDrag:
@@ -395,7 +392,7 @@ var _Draggable = new Lang.Class({
onUpdateScope: this });
}
}
- },
+ }
_maybeStartDrag(event) {
let [stageX, stageY] = event.get_coords();
@@ -409,12 +406,12 @@ var _Draggable = new Lang.Class({
}
return true;
- },
+ }
_pickTargetActor() {
return this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL,
this._dragX, this._dragY);
- },
+ }
_updateDragHover() {
this._updateHoverId = 0;
@@ -471,7 +468,7 @@ var _Draggable = new Lang.Class({
}
global.display.set_cursor(Meta.Cursor.DND_IN_DRAG);
return GLib.SOURCE_REMOVE;
- },
+ }
_queueUpdateDragHover() {
if (this._updateHoverId)
@@ -480,7 +477,7 @@ var _Draggable = new Lang.Class({
this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT,
this._updateDragHover.bind(this));
GLib.Source.set_name_by_id(this._updateHoverId, '[gnome-shell] this._updateDragHover');
- },
+ }
_updateDragPosition(event) {
let [stageX, stageY] = event.get_coords();
@@ -491,7 +488,7 @@ var _Draggable = new Lang.Class({
this._queueUpdateDragHover();
return true;
- },
+ }
_dragActorDropped(event) {
let [dropX, dropY] = event.get_coords();
@@ -554,7 +551,7 @@ var _Draggable = new Lang.Class({
this._cancelDrag(event.get_time());
return true;
- },
+ }
_getRestoreLocation() {
let x, y, scale;
@@ -586,7 +583,7 @@ var _Draggable = new Lang.Class({
}
return [x, y, scale];
- },
+ }
_cancelDrag(eventTime) {
this.emit('drag-cancelled', eventTime);
@@ -613,7 +610,7 @@ var _Draggable = new Lang.Class({
scale_y: snapBackScale,
time: SNAP_BACK_ANIMATION_TIME,
});
- },
+ }
_restoreDragActor(eventTime) {
this._dragState = DragState.INIT;
@@ -626,7 +623,7 @@ var _Draggable = new Lang.Class({
this._animateDragEnd(eventTime,
{ time: REVERT_ANIMATION_TIME });
- },
+ }
_animateDragEnd(eventTime, params) {
this._animationInProgress = true;
@@ -639,7 +636,7 @@ var _Draggable = new Lang.Class({
// start the animation
Tweener.addTween(this._dragActor, params)
- },
+ }
_finishAnimation() {
if (!this._animationInProgress)
@@ -650,7 +647,7 @@ var _Draggable = new Lang.Class({
this._dragComplete();
global.display.set_cursor(Meta.Cursor.DEFAULT);
- },
+ }
_onAnimationComplete(dragActor, eventTime) {
if (this._dragOrigParent) {
@@ -664,7 +661,7 @@ var _Draggable = new Lang.Class({
this.emit('drag-end', eventTime, false);
this._finishAnimation();
- },
+ }
_dragComplete() {
if (!this._actorDestroyed && this._dragActor)
@@ -686,8 +683,7 @@ var _Draggable = new Lang.Class({
this._dragState = DragState.INIT;
currentDraggable = null;
}
-});
-
+};
Signals.addSignalMethods(_Draggable.prototype);
/**
diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js
index 4804333d4..7c3a02256 100644
--- a/js/ui/endSessionDialog.js
+++ b/js/ui/endSessionDialog.js
@@ -16,7 +16,6 @@
* along with this program; if not, see .
*/
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const AccountsService = imports.gi.AccountsService;
@@ -235,13 +234,10 @@ function init() {
_endSessionDialog = new EndSessionDialog();
}
-var EndSessionDialog = new Lang.Class({
- Name: 'EndSessionDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init() {
- this.parent({ styleClass: 'end-session-dialog',
- destroyOnClose: false });
+var EndSessionDialog = class EndSessionDialog extends ModalDialog.ModalDialog {
+ constructor() {
+ super({ styleClass: 'end-session-dialog',
+ destroyOnClose: false });
this._loginManager = LoginManager.getLoginManager();
this._userManager = AccountsService.UserManager.get_default();
@@ -356,12 +352,12 @@ var EndSessionDialog = new Lang.Class({
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(EndSessionDialogIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog');
- },
+ }
_onDestroy() {
this._user.disconnect(this._userLoadedId);
this._user.disconnect(this._userChangedId);
- },
+ }
_sync() {
let open = (this.state == ModalDialog.State.OPENING || this.state == ModalDialog.State.OPENED);
@@ -434,7 +430,7 @@ var EndSessionDialog = new Lang.Class({
this._scrollView.visible = hasApplications || hasSessions;
this._applicationHeader.visible = hasApplications;
this._sessionHeader.visible = hasSessions;
- },
+ }
_updateButtons() {
let dialogContent = DialogContent[this._type];
@@ -456,20 +452,20 @@ var EndSessionDialog = new Lang.Class({
}
this.setButtons(buttons);
- },
+ }
close(skipSignal) {
- this.parent();
+ super.close();
if (!skipSignal)
this._dbusImpl.emit_signal('Closed', null);
- },
+ }
cancel() {
this._stopTimer();
this._dbusImpl.emit_signal('Canceled', null);
this.close();
- },
+ }
_confirm(signal) {
let callback = () => {
@@ -504,11 +500,11 @@ var EndSessionDialog = new Lang.Class({
} else {
this._triggerOfflineUpdateCancel(callback);
}
- },
+ }
_onOpened() {
this._sync();
- },
+ }
_triggerOfflineUpdateReboot(callback) {
this._pkOfflineProxy.TriggerRemote('reboot', (result, error) => {
@@ -517,7 +513,7 @@ var EndSessionDialog = new Lang.Class({
callback();
});
- },
+ }
_triggerOfflineUpdateShutdown(callback) {
this._pkOfflineProxy.TriggerRemote('power-off', (result, error) => {
@@ -526,7 +522,7 @@ var EndSessionDialog = new Lang.Class({
callback();
});
- },
+ }
_triggerOfflineUpdateCancel(callback) {
this._pkOfflineProxy.CancelRemote((result, error) => {
@@ -535,7 +531,7 @@ var EndSessionDialog = new Lang.Class({
callback();
});
- },
+ }
_startTimer() {
let startTime = GLib.get_monotonic_time();
@@ -559,7 +555,7 @@ var EndSessionDialog = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._timerId, '[gnome-shell] this._confirm');
- },
+ }
_stopTimer() {
if (this._timerId > 0) {
@@ -568,7 +564,7 @@ var EndSessionDialog = new Lang.Class({
}
this._secondsLeft = 0;
- },
+ }
_constructListItemForApp(inhibitor, app) {
let actor = new St.BoxLayout({ style_class: 'end-session-dialog-app-list-item',
@@ -593,7 +589,7 @@ var EndSessionDialog = new Lang.Class({
}
return actor;
- },
+ }
_onInhibitorLoaded(inhibitor) {
if (this._applications.indexOf(inhibitor) < 0) {
@@ -612,7 +608,7 @@ var EndSessionDialog = new Lang.Class({
}
this._sync();
- },
+ }
_constructListItemForSession(session) {
let avatar = new UserWidget.Avatar(session.user, { iconSize: _ITEM_ICON_SIZE });
@@ -642,7 +638,7 @@ var EndSessionDialog = new Lang.Class({
actor.label_actor = nameLabel;
return actor;
- },
+ }
_loadSessions() {
this._loginManager.listSessions(result => {
@@ -684,7 +680,7 @@ var EndSessionDialog = new Lang.Class({
this._sync();
});
- },
+ }
OpenAsync(parameters, invocation) {
let [type, timestamp, totalSecondsToStayOpen, inhibitorObjectPaths] = parameters;
@@ -754,9 +750,9 @@ var EndSessionDialog = new Lang.Class({
invocation.return_value(null);
this.disconnect(signalId);
});
- },
+ }
Close(parameters, invocation) {
this.close();
}
-});
+};
diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js
index 9b6f7a3a4..828f6f789 100644
--- a/js/ui/extensionDownloader.js
+++ b/js/ui/extensionDownloader.js
@@ -1,7 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
-
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
@@ -183,12 +181,10 @@ function checkForUpdates() {
});
}
-var InstallExtensionDialog = new Lang.Class({
- Name: 'InstallExtensionDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(uuid, info, invocation) {
- this.parent({ styleClass: 'extension-dialog' });
+var InstallExtensionDialog =
+class InstallExtensionDialog extends ModalDialog.ModalDialog {
+ constructor(uuid, info, invocation) {
+ super({ styleClass: 'extension-dialog' });
this._uuid = uuid;
this._info = info;
@@ -216,12 +212,12 @@ var InstallExtensionDialog = new Lang.Class({
let label = new St.Label({ style_class: 'message-dialog-title headline',
text: message });
box.add(label);
- },
+ }
_onCancelButtonPressed(button, event) {
this.close();
this._invocation.return_value(GLib.Variant.new('(s)', ['cancelled']));
- },
+ }
_onInstallButtonPressed(button, event) {
let params = { shell_version: Config.PACKAGE_VERSION };
@@ -264,7 +260,7 @@ var InstallExtensionDialog = new Lang.Class({
this.close();
}
-});
+};
function init() {
_httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });
diff --git a/js/ui/focusCaretTracker.js b/js/ui/focusCaretTracker.js
index 6695cbadf..473ae3e6e 100644
--- a/js/ui/focusCaretTracker.js
+++ b/js/ui/focusCaretTracker.js
@@ -22,29 +22,26 @@
*/
const Atspi = imports.gi.Atspi;
-const Lang = imports.lang;
const Signals = imports.signals;
const CARETMOVED = 'object:text-caret-moved';
const STATECHANGED = 'object:state-changed';
-var FocusCaretTracker = new Lang.Class({
- Name: 'FocusCaretTracker',
-
- _init() {
+var FocusCaretTracker = class FocusCaretTracker {
+ constructor() {
this._atspiListener = Atspi.EventListener.new(this._onChanged.bind(this));
this._atspiInited = false;
this._focusListenerRegistered = false;
this._caretListenerRegistered = false;
- },
+ }
_onChanged(event) {
if (event.type.indexOf(STATECHANGED) == 0)
this.emit('focus-changed', event);
else if (event.type == CARETMOVED)
this.emit('caret-moved', event);
- },
+ }
_initAtspi() {
if (!this._atspiInited && Atspi.init() == 0) {
@@ -53,7 +50,7 @@ var FocusCaretTracker = new Lang.Class({
}
return this._atspiInited;
- },
+ }
registerFocusListener() {
if (!this._initAtspi() || this._focusListenerRegistered)
@@ -62,7 +59,7 @@ var FocusCaretTracker = new Lang.Class({
this._atspiListener.register(STATECHANGED + ':focused');
this._atspiListener.register(STATECHANGED + ':selected');
this._focusListenerRegistered = true;
- },
+ }
registerCaretListener() {
if (!this._initAtspi() || this._caretListenerRegistered)
@@ -70,7 +67,7 @@ var FocusCaretTracker = new Lang.Class({
this._atspiListener.register(CARETMOVED);
this._caretListenerRegistered = true;
- },
+ }
deregisterFocusListener() {
if (!this._focusListenerRegistered)
@@ -79,7 +76,7 @@ var FocusCaretTracker = new Lang.Class({
this._atspiListener.deregister(STATECHANGED + ':focused');
this._atspiListener.deregister(STATECHANGED + ':selected');
this._focusListenerRegistered = false;
- },
+ }
deregisterCaretListener() {
if (!this._caretListenerRegistered)
@@ -88,5 +85,5 @@ var FocusCaretTracker = new Lang.Class({
this._atspiListener.deregister(CARETMOVED);
this._caretListenerRegistered = false;
}
-});
+};
Signals.addSignalMethods(FocusCaretTracker.prototype);
diff --git a/js/ui/grabHelper.js b/js/ui/grabHelper.js
index 38e116fd9..9f6f188bd 100644
--- a/js/ui/grabHelper.js
+++ b/js/ui/grabHelper.js
@@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -46,10 +45,8 @@ function _popGrabHelper(grabHelper) {
// your code just needs to deal with it; you shouldn't adjust behavior directly
// after you call ungrab(), but instead pass an 'onUngrab' callback when you
// call grab().
-var GrabHelper = new Lang.Class({
- Name: 'GrabHelper',
-
- _init(owner, params) {
+var GrabHelper = class GrabHelper {
+ constructor(owner, params) {
this._owner = owner;
this._modalParams = params;
@@ -59,7 +56,7 @@ var GrabHelper = new Lang.Class({
this._ignoreUntilRelease = false;
this._modalCount = 0;
- },
+ }
// addActor:
// @actor: an actor
@@ -71,7 +68,7 @@ var GrabHelper = new Lang.Class({
this.removeActor(actor);
});
this._actors.push(actor);
- },
+ }
// removeActor:
// @actor: an actor
@@ -86,7 +83,7 @@ var GrabHelper = new Lang.Class({
actor.disconnect(actor.__grabHelperDestroyId);
delete actor.__grabHelperDestroyId;
}
- },
+ }
_isWithinGrabbedActor(actor) {
let currentActor = this.currentGrab.actor;
@@ -98,19 +95,19 @@ var GrabHelper = new Lang.Class({
actor = actor.get_parent();
}
return false;
- },
+ }
get currentGrab() {
return this._grabStack[this._grabStack.length - 1] || {};
- },
+ }
get grabbed() {
return this._grabStack.length > 0;
- },
+ }
get grabStack() {
return this._grabStack;
- },
+ }
_findStackIndex(actor) {
if (!actor)
@@ -121,7 +118,7 @@ var GrabHelper = new Lang.Class({
return i;
}
return -1;
- },
+ }
_actorInGrabStack(actor) {
while (actor) {
@@ -131,11 +128,11 @@ var GrabHelper = new Lang.Class({
actor = actor.get_parent();
}
return -1;
- },
+ }
isActorGrabbed(actor) {
return this._findStackIndex(actor) >= 0;
- },
+ }
// grab:
// @params: A bunch of parameters, see below
@@ -195,7 +192,7 @@ var GrabHelper = new Lang.Class({
}
return true;
- },
+ }
_takeModalGrab() {
let firstGrab = (this._modalCount == 0);
@@ -208,7 +205,7 @@ var GrabHelper = new Lang.Class({
this._modalCount++;
return true;
- },
+ }
_releaseModalGrab() {
this._modalCount--;
@@ -221,7 +218,7 @@ var GrabHelper = new Lang.Class({
Main.popModal(this._owner);
global.sync_pointer();
- },
+ }
// ignoreRelease:
//
@@ -231,7 +228,7 @@ var GrabHelper = new Lang.Class({
// the next release event.
ignoreRelease() {
this._ignoreUntilRelease = true;
- },
+ }
// ungrab:
// @params: The parameters for the grab; see below.
@@ -274,7 +271,7 @@ var GrabHelper = new Lang.Class({
if (poppedGrab.savedFocus)
poppedGrab.savedFocus.grab_key_focus();
}
- },
+ }
onCapturedEvent(event) {
let type = event.type();
@@ -322,5 +319,5 @@ var GrabHelper = new Lang.Class({
}
return Clutter.EVENT_STOP;
- },
-});
+ }
+};
diff --git a/js/ui/ibusCandidatePopup.js b/js/ui/ibusCandidatePopup.js
index 085aaaa25..124426887 100644
--- a/js/ui/ibusCandidatePopup.js
+++ b/js/ui/ibusCandidatePopup.js
@@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter;
const IBus = imports.gi.IBus;
-const Lang = imports.lang;
const Signals = imports.signals;
const St = imports.gi.St;
@@ -14,10 +13,8 @@ var MAX_CANDIDATES_PER_PAGE = 16;
var DEFAULT_INDEX_LABELS = [ '1', '2', '3', '4', '5', '6', '7', '8',
'9', '0', 'a', 'b', 'c', 'd', 'e', 'f' ];
-var CandidateArea = new Lang.Class({
- Name: 'CandidateArea',
-
- _init() {
+var CandidateArea = class CandidateArea {
+ constructor() {
this.actor = new St.BoxLayout({ vertical: true,
reactive: true,
visible: false });
@@ -74,7 +71,7 @@ var CandidateArea = new Lang.Class({
this._orientation = -1;
this._cursorPosition = 0;
- },
+ }
setOrientation(orientation) {
if (this._orientation == orientation)
@@ -95,7 +92,7 @@ var CandidateArea = new Lang.Class({
this._previousButton.child.icon_name = 'go-up-symbolic';
this._nextButton.child.icon_name = 'go-down-symbolic';
}
- },
+ }
setCandidates(indexes, candidates, cursorPosition, cursorVisible) {
for (let i = 0; i < MAX_CANDIDATES_PER_PAGE; ++i) {
@@ -114,7 +111,7 @@ var CandidateArea = new Lang.Class({
this._cursorPosition = cursorPosition;
if (cursorVisible)
this._candidateBoxes[cursorPosition].add_style_pseudo_class('selected');
- },
+ }
updateButtons(wrapsAround, page, nPages) {
if (nPages < 2) {
@@ -124,14 +121,12 @@ var CandidateArea = new Lang.Class({
this._buttonBox.show();
this._previousButton.reactive = wrapsAround || page > 0;
this._nextButton.reactive = wrapsAround || page < nPages - 1;
- },
-});
+ }
+};
Signals.addSignalMethods(CandidateArea.prototype);
-var CandidatePopup = new Lang.Class({
- Name: 'CandidatePopup',
-
- _init() {
+var CandidatePopup = class CandidatePopup {
+ constructor() {
this._boxPointer = new BoxPointer.BoxPointer(St.Side.TOP);
this._boxPointer.visible = false;
this._boxPointer.style_class = 'candidate-popup-boxpointer';
@@ -171,7 +166,7 @@ var CandidatePopup = new Lang.Class({
});
this._panelService = null;
- },
+ }
setPanelService(panelService) {
this._panelService = panelService;
@@ -275,13 +270,13 @@ var CandidatePopup = new Lang.Class({
this._boxPointer.close(BoxPointer.PopupAnimation.NONE);
Main.keyboard.resetSuggestions();
});
- },
+ }
_setDummyCursorGeometry(x, y, w, h) {
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
if (this._boxPointer.actor.visible)
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
- },
+ }
_updateVisibility() {
let isVisible = (!Main.keyboard.visible &&
@@ -296,7 +291,7 @@ var CandidatePopup = new Lang.Class({
} else {
this._boxPointer.close(BoxPointer.PopupAnimation.NONE);
}
- },
+ }
_setTextAttributes(clutterText, ibusAttrList) {
let attr;
@@ -304,4 +299,4 @@ var CandidatePopup = new Lang.Class({
if (attr.get_attr_type() == IBus.AttrType.BACKGROUND)
clutterText.set_selection(attr.get_start_index(), attr.get_end_index());
}
-});
+};
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index fac42671d..518379cbe 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -6,6 +6,7 @@ const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
+const GObject = imports.gi.GObject;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -155,33 +156,28 @@ var KeyContainer = new Lang.Class({
}
});
-var Suggestions = new Lang.Class({
- Name: 'Suggestions',
-
- _init() {
+var Suggestions = class {
+ constructor() {
this.actor = new St.BoxLayout({ style_class: 'word-suggestions',
vertical: false });
this.actor.show();
- },
+ }
add(word, callback) {
let button = new St.Button({ label: word });
button.connect('clicked', callback);
this.actor.add(button);
- },
+ }
clear() {
this.actor.remove_all_children();
- },
-});
+ }
+};
Signals.addSignalMethods(Suggestions.prototype);
-var LanguageSelectionPopup = new Lang.Class({
- Name: 'LanguageSelectionPopup',
- Extends: PopupMenu.PopupMenu,
-
- _init(actor) {
- this.parent(actor, 0.5, St.Side.BOTTOM);
+var LanguageSelectionPopup = class extends PopupMenu.PopupMenu {
+ constructor(actor) {
+ super(actor, 0.5, St.Side.BOTTOM);
let inputSourceManager = InputSourceManager.getInputSourceManager();
let inputSources = inputSourceManager.inputSources;
@@ -202,7 +198,7 @@ var LanguageSelectionPopup = new Lang.Class({
if (!actor.is_mapped())
this.close(true);
});
- },
+ }
_onCapturedEvent(actor, event) {
if (event.get_source() == this.actor ||
@@ -213,35 +209,33 @@ var LanguageSelectionPopup = new Lang.Class({
this.close(true);
return Clutter.EVENT_STOP;
- },
+ }
open(animate) {
- this.parent(animate);
+ super.open(animate);
this._capturedEventId = global.stage.connect('captured-event',
this._onCapturedEvent.bind(this));
- },
+ }
close(animate) {
- this.parent(animate);
+ super.close(animate);
if (this._capturedEventId != 0) {
global.stage.disconnect(this._capturedEventId);
this._capturedEventId = 0;
}
- },
+ }
destroy() {
if (this._capturedEventId != 0)
global.stage.disconnect(this._capturedEventId);
if (this._unmapId != 0)
this.sourceActor.disconnect(this._unmapId);
- this.parent();
- },
-});
+ super.destroy();
+ }
+};
-var Key = new Lang.Class({
- Name: 'Key',
-
- _init(key, extendedKeys) {
+var Key = class Key {
+ constructor(key) {
this.key = key || "";
this.keyButton = this._makeKey(this.key);
@@ -260,14 +254,14 @@ var Key = new Lang.Class({
this._capturedEventId = 0;
this._unmapId = 0;
this._longPress = false;
- },
+ }
_onDestroy() {
if (this._boxPointer) {
this._boxPointer.destroy();
this._boxPointer = null;
}
- },
+ }
_ensureExtendedKeysPopup() {
if (this._extended_keys.length == 0)
@@ -285,12 +279,12 @@ var Key = new Lang.Class({
this._boxPointer.actor.add_style_class_name('keyboard-subkeys');
this._getExtendedKeys();
this.keyButton._extended_keys = this._extended_keyboard;
- },
+ }
_getKeyval(key) {
let unicode = String.charCodeAt(key, 0);
return Gdk.unicode_to_keyval(unicode);
- },
+ }
_press(key) {
if (key != this.key || this._extended_keys.length == 0) {
@@ -317,7 +311,7 @@ var Key = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
}
- },
+ }
_release(key) {
if (this._pressTimeoutId != 0) {
@@ -331,7 +325,7 @@ var Key = new Lang.Class({
this.emit('released', this._getKeyval(key), key);
this._hideSubkeys();
this._longPress = false;
- },
+ }
_onCapturedEvent(actor, event) {
let type = event.type();
@@ -348,7 +342,7 @@ var Key = new Lang.Class({
this._hideSubkeys();
return Clutter.EVENT_STOP;
- },
+ }
_showSubkeys() {
this._boxPointer.open(BoxPointer.PopupAnimation.FULL);
@@ -358,7 +352,7 @@ var Key = new Lang.Class({
if (!this.keyButton.is_mapped())
this._hideSubkeys();
});
- },
+ }
_hideSubkeys() {
if (this._boxPointer)
@@ -372,7 +366,7 @@ var Key = new Lang.Class({
this._unmapId = 0;
}
this._capturedPress = false;
- },
+ }
_makeKey(key) {
let label = GLib.markup_escape_text(key, -1);
@@ -418,7 +412,7 @@ var Key = new Lang.Class({
});
return button;
- },
+ }
_getExtendedKeys() {
this._extended_keyboard = new St.BoxLayout({ style_class: 'key-container',
@@ -434,35 +428,33 @@ var Key = new Lang.Class({
key.height = this.keyButton.height;
}
this._boxPointer.bin.add_actor(this._extended_keyboard);
- },
+ }
get subkeys() {
return this._boxPointer;
- },
+ }
setWidth(width) {
this.keyButton.keyWidth = width;
- },
+ }
setLatched(latched) {
if (latched)
this.keyButton.add_style_pseudo_class('latched');
else
this.keyButton.remove_style_pseudo_class('latched');
- },
-});
+ }
+};
Signals.addSignalMethods(Key.prototype);
-var KeyboardModel = new Lang.Class({
- Name: 'KeyboardModel',
-
- _init(groupName) {
+var KeyboardModel = class {
+ constructor(groupName) {
try {
this._model = this._loadModel(groupName);
} catch (e) {
this._model = this._loadModel('us');
}
- },
+ }
_loadModel(groupName) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName));
@@ -471,21 +463,19 @@ var KeyboardModel = new Lang.Class({
contents = imports.byteArray.toString(contents);
return JSON.parse(contents);
- },
+ }
getLevels() {
return this._model.levels;
- },
+ }
getKeysForLevel(levelName) {
return this._model.levels.find(level => level == levelName);
}
-});
+};
-var FocusTracker = new Lang.Class({
- Name: 'FocusTracker',
-
- _init() {
+var FocusTracker = class {
+ constructor() {
this._currentWindow = null;
this._rect = null;
@@ -520,15 +510,15 @@ var FocusTracker = new Lang.Class({
this._ibusManager.connect('focus-out', () => {
this.emit('focus-changed', false);
});
- },
+ }
get currentWindow() {
return this._currentWindow;
- },
+ }
_setCurrentWindow(window) {
this._currentWindow = window;
- },
+ }
_setCurrentRect(rect) {
if (this._currentWindow) {
@@ -546,7 +536,7 @@ var FocusTracker = new Lang.Class({
this._rect = rect;
this.emit('position-changed');
- },
+ }
getCurrentRect() {
let rect = { x: this._rect.x, y: this._rect.y,
@@ -560,13 +550,11 @@ var FocusTracker = new Lang.Class({
return rect;
}
-});
+};
Signals.addSignalMethods(FocusTracker.prototype);
-var Keyboard = new Lang.Class({
- Name: 'Keyboard',
-
- _init() {
+var Keyboard = class Keyboard {
+ constructor() {
this.actor = null;
this._focusInExtendedKeys = false;
@@ -624,16 +612,16 @@ var Keyboard = new Lang.Class({
this._keyboardRestingId = 0;
Main.layoutManager.connect('monitors-changed', this._relayout.bind(this));
- },
+ }
get visible() {
return this._keyboardVisible;
- },
+ }
_onFocusPositionChanged(focusTracker) {
let rect = focusTracker.getCurrentRect();
this.setCursorLocation(focusTracker.currentWindow, rect.x, rect.y, rect.width, rect.height);
- },
+ }
_lastDeviceIsTouchscreen() {
if (!this._lastDeviceId)
@@ -646,7 +634,7 @@ var Keyboard = new Lang.Class({
return false;
return device.get_device_type() == Clutter.InputDeviceType.TOUCHSCREEN_DEVICE;
- },
+ }
_syncEnabled() {
let wasEnabled = this._enabled;
@@ -662,7 +650,7 @@ var Keyboard = new Lang.Class({
if (!this._enabled && wasEnabled)
Main.layoutManager.hideKeyboard(true);
- },
+ }
_destroyKeyboard() {
if (this._keyboardNotifyId)
@@ -681,7 +669,7 @@ var Keyboard = new Lang.Class({
this._languagePopup.destroy();
this._languagePopup = null;
}
- },
+ }
_setupKeyboard() {
this.actor = new St.BoxLayout({ name: 'keyboard', vertical: true, reactive: true });
@@ -715,7 +703,7 @@ var Keyboard = new Lang.Class({
this._focusNotifyId = global.stage.connect('notify::key-focus', this._onKeyFocusChanged.bind(this));
this._relayout();
- },
+ }
_onKeyFocusChanged() {
let focus = global.stage.key_focus;
@@ -739,7 +727,7 @@ var Keyboard = new Lang.Class({
});
GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.show');
}
- },
+ }
_createLayersForGroup(groupName) {
let keyboardModel = new KeyboardModel(groupName);
@@ -764,12 +752,12 @@ var Keyboard = new Lang.Class({
layout.hide();
}
return layers;
- },
+ }
_ensureKeysForGroup(group) {
if (!this._groups[group])
this._groups[group] = this._createLayersForGroup(group);
- },
+ }
_addRowKeys(keys, layout) {
for (let i = 0; i < keys.length; ++i) {
@@ -802,7 +790,7 @@ var Keyboard = new Lang.Class({
layout.appendKey(button.actor, button.keyButton.keyWidth);
}
- },
+ }
_popupLanguageMenu(keyActor) {
if (this._languagePopup)
@@ -811,7 +799,7 @@ var Keyboard = new Lang.Class({
this._languagePopup = new LanguageSelectionPopup(keyActor);
Main.layoutManager.addChrome(this._languagePopup.actor);
this._languagePopup.open(true);
- },
+ }
_loadDefaultKeys(keys, layout, numLevels, numKeys) {
let extraButton;
@@ -876,14 +864,14 @@ var Keyboard = new Lang.Class({
layout.appendKey(extraButton.actor, extraButton.keyButton.keyWidth);
}
- },
+ }
_setCurrentLevelLatched(layout, latched) {
for (let i = 0; layout.shiftKeys[i]; i++) {
let key = layout.shiftKeys[i];
key.setLatched(latched);
}
- },
+ }
_getDefaultKeysForRow(row, numRows, level) {
let pre, post;
@@ -901,7 +889,7 @@ var Keyboard = new Lang.Class({
} else {
return [null, null];
}
- },
+ }
_mergeRowKeys(layout, pre, row, post, numLevels) {
if (pre != null)
@@ -911,7 +899,7 @@ var Keyboard = new Lang.Class({
if (post != null)
this._loadDefaultKeys(post, layout, numLevels, row.length);
- },
+ }
_loadRows(model, level, numLevels, layout) {
let rows = model.rows;
@@ -920,7 +908,7 @@ var Keyboard = new Lang.Class({
let [pre, post] = this._getDefaultKeysForRow(i, rows.length, level);
this._mergeRowKeys (layout, pre, rows[i], post, numLevels);
}
- },
+ }
_getGridSlots() {
let numOfHorizSlots = 0, numOfVertSlots;
@@ -935,7 +923,7 @@ var Keyboard = new Lang.Class({
}
return [numOfHorizSlots, numOfVertSlots];
- },
+ }
_relayout() {
let monitor = Main.layoutManager.keyboardMonitor;
@@ -946,17 +934,17 @@ var Keyboard = new Lang.Class({
let maxHeight = monitor.height / 3;
this.actor.width = monitor.width;
this.actor.height = maxHeight;
- },
+ }
_onGroupChanged() {
this._ensureKeysForGroup(this._keyboardController.getCurrentGroup());
this._setActiveLayer(0);
- },
+ }
_onKeyboardGroupsChanged(keyboard) {
this._groups = [];
this._onGroupChanged();
- },
+ }
_onKeyboardStateChanged(controller, state) {
let enabled;
@@ -973,7 +961,7 @@ var Keyboard = new Lang.Class({
this.show(Main.layoutManager.focusIndex);
else
this.hide();
- },
+ }
_setActiveLayer(activeLevel) {
let activeGroupName = this._keyboardController.getCurrentGroup();
@@ -986,20 +974,20 @@ var Keyboard = new Lang.Class({
this._current_page = layers[activeLevel];
this._current_page.show();
- },
+ }
shouldTakeEvent(event) {
let actor = event.get_source();
return Main.layoutManager.keyboardBox.contains(actor) ||
!!actor._extended_keys || !!actor.extended_key;
- },
+ }
_clearKeyboardRestTimer() {
if (!this._keyboardRestingId)
return;
GLib.source_remove(this._keyboardRestingId);
this._keyboardRestingId = 0;
- },
+ }
show(monitor) {
if (!this._enabled)
@@ -1025,7 +1013,7 @@ var Keyboard = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
- },
+ }
_show(monitor) {
if (!this._keyboardRequested)
@@ -1039,7 +1027,7 @@ var Keyboard = new Lang.Class({
this._setAnimationWindow(this._delayedAnimFocusWindow);
this._delayedAnimFocusWindow = null;
}
- },
+ }
hide() {
if (!this._enabled)
@@ -1060,7 +1048,7 @@ var Keyboard = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
- },
+ }
_hide() {
if (this._keyboardRequested)
@@ -1068,7 +1056,7 @@ var Keyboard = new Lang.Class({
Main.layoutManager.hideKeyboard();
this.setCursorLocation(null);
- },
+ }
_hideSubkeys() {
if (this._subkeysBoxPointer) {
@@ -1080,26 +1068,26 @@ var Keyboard = new Lang.Class({
this._capturedEventId = 0;
}
this._capturedPress = false;
- },
+ }
resetSuggestions() {
if (this._suggestions)
this._suggestions.clear();
- },
+ }
addSuggestion(text, callback) {
if (!this._suggestions)
return;
this._suggestions.add(text, callback);
this._suggestions.actor.show();
- },
+ }
_clearShowIdle() {
if (!this._showIdleId)
return;
GLib.source_remove(this._showIdleId);
this._showIdleId = 0;
- },
+ }
_windowSlideAnimationComplete(window, delta) {
// Synchronize window and actor positions again.
@@ -1107,7 +1095,7 @@ var Keyboard = new Lang.Class({
let frameRect = window.get_frame_rect();
frameRect.y += delta;
window.move_frame(true, frameRect.x, frameRect.y);
- },
+ }
_animateWindow(window, show) {
let windowActor = window.get_compositor_private();
@@ -1130,7 +1118,7 @@ var Keyboard = new Lang.Class({
onComplete: this._windowSlideAnimationComplete,
onCompleteParams: [window, deltaY] });
}
- },
+ }
_setAnimationWindow(window) {
if (this._animFocusedWindow == window)
@@ -1142,7 +1130,7 @@ var Keyboard = new Lang.Class({
this._animateWindow(window, true);
this._animFocusedWindow = window;
- },
+ }
setCursorLocation(window, x, y , w, h) {
let monitor = Main.layoutManager.keyboardMonitor;
@@ -1165,14 +1153,11 @@ var Keyboard = new Lang.Class({
}
this._oskFocusWindow = window;
- },
-});
+ }
+};
-var KeyboardController = new Lang.Class({
- Name: 'KeyboardController',
-
- _init() {
- this.parent();
+var KeyboardController = class {
+ constructor() {
let deviceManager = Clutter.DeviceManager.get_default();
this._virtualDevice = deviceManager.create_virtual_device(Clutter.InputDeviceType.KEYBOARD_DEVICE);
@@ -1190,24 +1175,24 @@ var KeyboardController = new Lang.Class({
Main.inputMethod.connect('input-panel-state', (o, state) => {
this.emit('panel-state', state);
});
- },
+ }
_onSourcesModified() {
this.emit('groups-changed');
- },
+ }
_onSourceChanged(inputSourceManager, oldSource) {
let source = inputSourceManager.currentSource;
this._currentSource = source;
this.emit('active-group', source.id);
- },
+ }
_onContentPurposeHintsChanged(method) {
let hints = method.content_hints;
let purpose = method.content_purpose;
// XXX: hook numeric/emoji/etc special keyboards
- },
+ }
getGroups() {
let inputSources = this._inputSourceManager.inputSources;
@@ -1219,11 +1204,11 @@ var KeyboardController = new Lang.Class({
}
return groups;
- },
+ }
getCurrentGroup() {
return this._currentSource.xkbId;
- },
+ }
commitString(string, fromKey) {
if (string == null)
@@ -1234,16 +1219,16 @@ var KeyboardController = new Lang.Class({
Main.inputMethod.commit(string);
return true;
- },
+ }
keyvalPress(keyval) {
this._virtualDevice.notify_keyval(Clutter.get_current_event_time(),
keyval, Clutter.KeyState.PRESSED);
- },
+ }
keyvalRelease(keyval) {
this._virtualDevice.notify_keyval(Clutter.get_current_event_time(),
keyval, Clutter.KeyState.RELEASED);
- },
-});
+ }
+};
Signals.addSignalMethods(KeyboardController.prototype);
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 1e223934c..22b2807a9 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -153,21 +153,19 @@ var MonitorConstraint = new Lang.Class({
}
});
-var Monitor = new Lang.Class({
- Name: 'Monitor',
-
- _init(index, geometry) {
+var Monitor = class Monitor {
+ constructor(index, geometry) {
this.index = index;
this.x = geometry.x;
this.y = geometry.y;
this.width = geometry.width;
this.height = geometry.height;
- },
+ }
get inFullscreen() {
return global.display.get_monitor_in_fullscreen(this.index);
}
-})
+};
const defaultParams = {
trackFullscreen: false,
@@ -1083,10 +1081,8 @@ var LayoutManager = new Lang.Class({
//
// This class manages a "hot corner" that can toggle switching to
// overview.
-var HotCorner = new Lang.Class({
- Name: 'HotCorner',
-
- _init(layoutManager, monitor, x, y) {
+var HotCorner = class HotCorner {
+ constructor(layoutManager, monitor, x, y) {
// We use this flag to mark the case where the user has entered the
// hot corner and has not left both the hot corner and a surrounding
// guard area (the "environs"). This avoids triggering the hot corner
@@ -1114,7 +1110,7 @@ var HotCorner = new Lang.Class({
layoutManager.uiGroup.add_actor(this._ripple1);
layoutManager.uiGroup.add_actor(this._ripple2);
layoutManager.uiGroup.add_actor(this._ripple3);
- },
+ }
setBarrierSize(size) {
if (this._verticalBarrier) {
@@ -1149,7 +1145,7 @@ var HotCorner = new Lang.Class({
this._pressureBarrier.addBarrier(this._verticalBarrier);
this._pressureBarrier.addBarrier(this._horizontalBarrier);
}
- },
+ }
_setupFallbackCornerIfNeeded(layoutManager) {
if (!global.display.supports_extended_barriers()) {
@@ -1184,7 +1180,7 @@ var HotCorner = new Lang.Class({
this._corner.connect('leave-event',
this._onCornerLeft.bind(this));
}
- },
+ }
destroy() {
this.setBarrierSize(0);
@@ -1193,7 +1189,7 @@ var HotCorner = new Lang.Class({
if (this.actor)
this.actor.destroy();
- },
+ }
_animRipple(ripple, delay, time, startScale, startOpacity, finalScale) {
// We draw a ripple by using a source image and animating it scaling
@@ -1223,7 +1219,7 @@ var HotCorner = new Lang.Class({
transition: 'linear',
onUpdate() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
onComplete() { ripple.visible = false; } });
- },
+ }
_rippleAnimation() {
// Show three concentric ripples expanding outwards; the exact
@@ -1234,7 +1230,7 @@ var HotCorner = new Lang.Class({
this._animRipple(this._ripple1, 0.0, 0.83, 0.25, 1.0, 1.5);
this._animRipple(this._ripple2, 0.05, 1.0, 0.0, 0.7, 1.25);
this._animRipple(this._ripple3, 0.35, 1.0, 0.0, 0.3, 1);
- },
+ }
_toggleOverview() {
if (this._monitor.inFullscreen && !Main.overview.visible)
@@ -1244,7 +1240,7 @@ var HotCorner = new Lang.Class({
this._rippleAnimation();
Main.overview.toggle();
}
- },
+ }
handleDragOver(source, actor, x, y, time) {
if (source != Main.xdndHandler)
@@ -1253,7 +1249,7 @@ var HotCorner = new Lang.Class({
this._toggleOverview();
return DND.DragMotionResult.CONTINUE;
- },
+ }
_onCornerEntered() {
if (!this._entered) {
@@ -1261,26 +1257,24 @@ var HotCorner = new Lang.Class({
this._toggleOverview();
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onCornerLeft(actor, event) {
if (event.get_related() != this.actor)
this._entered = false;
// Consume event, otherwise this will confuse onEnvironsLeft
return Clutter.EVENT_STOP;
- },
+ }
_onEnvironsLeft(actor, event) {
if (event.get_related() != this._corner)
this._entered = false;
return Clutter.EVENT_PROPAGATE;
}
-});
+};
-var PressureBarrier = new Lang.Class({
- Name: 'PressureBarrier',
-
- _init(threshold, timeout, actionMode) {
+var PressureBarrier = class PressureBarrier {
+ constructor(threshold, timeout, actionMode) {
this._threshold = threshold;
this._timeout = timeout;
this._actionMode = actionMode;
@@ -1289,57 +1283,57 @@ var PressureBarrier = new Lang.Class({
this._isTriggered = false;
this._reset();
- },
+ }
addBarrier(barrier) {
barrier._pressureHitId = barrier.connect('hit', this._onBarrierHit.bind(this));
barrier._pressureLeftId = barrier.connect('left', this._onBarrierLeft.bind(this));
this._barriers.push(barrier);
- },
+ }
_disconnectBarrier(barrier) {
barrier.disconnect(barrier._pressureHitId);
barrier.disconnect(barrier._pressureLeftId);
- },
+ }
removeBarrier(barrier) {
this._disconnectBarrier(barrier);
this._barriers.splice(this._barriers.indexOf(barrier), 1);
- },
+ }
destroy() {
this._barriers.forEach(this._disconnectBarrier.bind(this));
this._barriers = [];
- },
+ }
setEventFilter(filter) {
this._eventFilter = filter;
- },
+ }
_reset() {
this._barrierEvents = [];
this._currentPressure = 0;
this._lastTime = 0;
- },
+ }
_isHorizontal(barrier) {
return barrier.y1 == barrier.y2;
- },
+ }
_getDistanceAcrossBarrier(barrier, event) {
if (this._isHorizontal(barrier))
return Math.abs(event.dy);
else
return Math.abs(event.dx);
- },
+ }
_getDistanceAlongBarrier(barrier, event) {
if (this._isHorizontal(barrier))
return Math.abs(event.dx);
else
return Math.abs(event.dy);
- },
+ }
_trimBarrierEvents() {
// Events are guaranteed to be sorted in time order from
@@ -1363,7 +1357,7 @@ var PressureBarrier = new Lang.Class({
}
this._barrierEvents = this._barrierEvents.slice(firstNewEvent);
- },
+ }
_onBarrierLeft(barrier, event) {
barrier._isHit = false;
@@ -1371,13 +1365,13 @@ var PressureBarrier = new Lang.Class({
this._reset();
this._isTriggered = false;
}
- },
+ }
_trigger() {
this._isTriggered = true;
this.emit('trigger');
this._reset();
- },
+ }
_onBarrierHit(barrier, event) {
barrier._isHit = true;
@@ -1419,5 +1413,5 @@ var PressureBarrier = new Lang.Class({
if (this._currentPressure >= this._threshold)
this._trigger();
}
-});
+};
Signals.addSignalMethods(PressureBarrier.prototype);
diff --git a/js/ui/lightbox.js b/js/ui/lightbox.js
index 76562492a..120aafd6f 100644
--- a/js/ui/lightbox.js
+++ b/js/ui/lightbox.js
@@ -91,10 +91,8 @@ var RadialShaderQuad = new Lang.Class({
* @container and will track any changes in its size. You can override
* this by passing an explicit width and height in @params.
*/
-var Lightbox = new Lang.Class({
- Name: 'Lightbox',
-
- _init(container, params) {
+var Lightbox = class Lightbox {
+ constructor(container, params) {
params = Params.parse(params, { inhibitEvents: false,
width: null,
height: null,
@@ -137,7 +135,7 @@ var Lightbox = new Lang.Class({
this._actorRemovedSignalId = container.connect('actor-removed', this._actorRemoved.bind(this));
this._highlighted = null;
- },
+ }
_actorAdded(container, newChild) {
let children = this._container.get_children();
@@ -159,7 +157,7 @@ var Lightbox = new Lang.Class({
if (prevChild != -1) // paranoia
this._children.splice(prevChild + 1, 0, newChild);
}
- },
+ }
show(fadeInTime) {
fadeInTime = fadeInTime || 0;
@@ -189,7 +187,7 @@ var Lightbox = new Lang.Class({
}
this.actor.show();
- },
+ }
hide(fadeOutTime) {
fadeOutTime = fadeOutTime || 0;
@@ -217,7 +215,7 @@ var Lightbox = new Lang.Class({
}
});
}
- },
+ }
_actorRemoved(container, child) {
let index = this._children.indexOf(child);
@@ -226,7 +224,7 @@ var Lightbox = new Lang.Class({
if (child == this._highlighted)
this._highlighted = null;
- },
+ }
/**
* highlight:
@@ -257,7 +255,7 @@ var Lightbox = new Lang.Class({
}
this._highlighted = window;
- },
+ }
/**
* destroy:
@@ -266,7 +264,7 @@ var Lightbox = new Lang.Class({
*/
destroy() {
this.actor.destroy();
- },
+ }
/**
* _onDestroy:
@@ -280,5 +278,5 @@ var Lightbox = new Lang.Class({
this.highlight(null);
}
-});
+};
Signals.addSignalMethods(Lightbox.prototype);
diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js
index 186b53ce3..26e21c4ee 100644
--- a/js/ui/lookingGlass.js
+++ b/js/ui/lookingGlass.js
@@ -62,14 +62,12 @@ function _getAutoCompleteGlobalKeywords() {
return keywords.concat(windowProperties).concat(headerProperties);
}
-var AutoComplete = new Lang.Class({
- Name: 'AutoComplete',
-
- _init(entry) {
+var AutoComplete = class AutoComplete {
+ constructor(entry) {
this._entry = entry;
this._entry.connect('key-press-event', this._entryKeyPressEvent.bind(this));
this._lastTabTime = global.get_current_time();
- },
+ }
_processCompletionRequest(event) {
if (event.completions.length == 0) {
@@ -91,7 +89,7 @@ var AutoComplete = new Lang.Class({
} else if (event.completions.length > 1 && event.tabType === 'double') {
this.emit('suggest', { completions: event.completions});
}
- },
+ }
_entryKeyPressEvent(actor, event) {
let cursorPos = this._entry.clutter_text.get_cursor_position();
@@ -114,7 +112,7 @@ var AutoComplete = new Lang.Class({
this._lastTabTime = currTime;
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
// Insert characters of text not already included in head at cursor position. i.e., if text="abc" and head="a",
// the string "bc" will be appended to this._entry
@@ -124,21 +122,19 @@ var AutoComplete = new Lang.Class({
this._entry.clutter_text.insert_text(additionalCompletionText, cursorPos);
}
-});
+};
Signals.addSignalMethods(AutoComplete.prototype);
-var Notebook = new Lang.Class({
- Name: 'Notebook',
-
- _init() {
+var Notebook = class Notebook {
+ constructor() {
this.actor = new St.BoxLayout({ vertical: true });
this.tabControls = new St.BoxLayout({ style_class: 'labels' });
this._selectedIndex = -1;
this._tabs = [];
- },
+ }
appendPage(name, child) {
let labelBox = new St.BoxLayout({ style_class: 'notebook-tab',
@@ -171,7 +167,7 @@ var Notebook = new Lang.Class({
if (this._selectedIndex == -1)
this.selectIndex(0);
- },
+ }
_unselect() {
if (this._selectedIndex < 0)
@@ -180,7 +176,7 @@ var Notebook = new Lang.Class({
tabData.labelBox.remove_style_pseudo_class('selected');
tabData.scrollView.hide();
this._selectedIndex = -1;
- },
+ }
selectIndex(index) {
if (index == this._selectedIndex)
@@ -202,7 +198,7 @@ var Notebook = new Lang.Class({
tabData.scrollView.show();
this._selectedIndex = index;
this.emit('selection', tabData.child);
- },
+ }
selectChild(child) {
if (child == null)
@@ -216,26 +212,26 @@ var Notebook = new Lang.Class({
}
}
}
- },
+ }
scrollToBottom(index) {
let tabData = this._tabs[index];
tabData._scrollToBottom = true;
- },
+ }
_onAdjustValueChanged(tabData) {
let vAdjust = tabData.scrollView.vscroll.adjustment;
if (vAdjust.value < (vAdjust.upper - vAdjust.lower - 0.5))
tabData._scrolltoBottom = false;
- },
+ }
_onAdjustScopeChanged(tabData) {
if (!tabData._scrollToBottom)
return;
let vAdjust = tabData.scrollView.vscroll.adjustment;
vAdjust.value = vAdjust.upper - vAdjust.page_size;
- },
+ }
nextTab() {
let nextIndex = this._selectedIndex;
@@ -244,7 +240,7 @@ var Notebook = new Lang.Class({
}
this.selectIndex(nextIndex);
- },
+ }
prevTab() {
let prevIndex = this._selectedIndex;
@@ -254,7 +250,7 @@ var Notebook = new Lang.Class({
this.selectIndex(prevIndex);
}
-});
+};
Signals.addSignalMethods(Notebook.prototype);
function objectToString(o) {
@@ -266,10 +262,8 @@ function objectToString(o) {
}
}
-var ObjLink = new Lang.Class({
- Name: 'ObjLink',
-
- _init(lookingGlass, o, title) {
+var ObjLink = class ObjLink {
+ constructor(lookingGlass, o, title) {
let text;
if (title)
text = title;
@@ -286,17 +280,15 @@ var ObjLink = new Lang.Class({
this.actor.connect('clicked', this._onClicked.bind(this));
this._lookingGlass = lookingGlass;
- },
+ }
_onClicked(link) {
this._lookingGlass.inspectObject(this._obj, this.actor);
}
-});
+};
-var Result = new Lang.Class({
- Name: 'Result',
-
- _init(lookingGlass, command, o, index) {
+var Result = class Result {
+ constructor(lookingGlass, command, o, index) {
this.index = index;
this.o = o;
@@ -314,12 +306,10 @@ var Result = new Lang.Class({
let objLink = new ObjLink(this._lookingGlass, o);
box.add(objLink.actor);
}
-});
+};
-var WindowList = new Lang.Class({
- Name: 'WindowList',
-
- _init(lookingGlass) {
+var WindowList = class WindowList {
+ constructor(lookingGlass) {
this.actor = new St.BoxLayout({ name: 'Windows', vertical: true, style: 'spacing: 8px' });
let tracker = Shell.WindowTracker.get_default();
this._updateId = Main.initializeDeferredWork(this.actor, this._updateWindowList.bind(this));
@@ -327,7 +317,7 @@ var WindowList = new Lang.Class({
tracker.connect('tracked-windows-changed', this._updateWindowList.bind(this));
this._lookingGlass = lookingGlass;
- },
+ }
_updateWindowList() {
this.actor.destroy_all_children();
@@ -361,13 +351,11 @@ var WindowList = new Lang.Class({
}
}
}
-});
+};
Signals.addSignalMethods(WindowList.prototype);
-var ObjInspector = new Lang.Class({
- Name: 'ObjInspector',
-
- _init(lookingGlass) {
+var ObjInspector = class ObjInspector {
+ constructor(lookingGlass) {
this._obj = null;
this._previousObj = null;
@@ -382,7 +370,7 @@ var ObjInspector = new Lang.Class({
this.actor.add_actor(this._container);
this._lookingGlass = lookingGlass;
- },
+ }
selectObject(obj, skipPrevious) {
if (!skipPrevious)
@@ -436,7 +424,7 @@ var ObjInspector = new Lang.Class({
this._container.add_actor(hbox);
}
}
- },
+ }
open(sourceActor) {
if (this._open)
@@ -452,7 +440,7 @@ var ObjInspector = new Lang.Class({
} else {
this.actor.set_scale(1, 1);
}
- },
+ }
close() {
if (!this._open)
@@ -461,18 +449,18 @@ var ObjInspector = new Lang.Class({
this.actor.hide();
this._previousObj = null;
this._obj = null;
- },
+ }
_onInsert() {
let obj = this._obj;
this.close();
this._lookingGlass.insertObject(obj);
- },
+ }
_onBack() {
this.selectObject(this._previousObj, true);
}
-});
+};
var RedBorderEffect = new Lang.Class({
Name: 'RedBorderEffect',
@@ -637,10 +625,8 @@ var Inspector = new Lang.Class({
}
});
-var Extensions = new Lang.Class({
- Name: 'Extensions',
-
- _init(lookingGlass) {
+var Extensions = class Extensions {
+ constructor(lookingGlass) {
this._lookingGlass = lookingGlass;
this.actor = new St.BoxLayout({ vertical: true,
name: 'lookingGlassExtensions' });
@@ -657,7 +643,7 @@ var Extensions = new Lang.Class({
ExtensionSystem.connect('extension-loaded',
this._loadExtension.bind(this));
- },
+ }
_loadExtension(o, uuid) {
let extension = ExtensionUtils.extensions[uuid];
@@ -672,20 +658,20 @@ var Extensions = new Lang.Class({
this._numExtensions ++;
this._extensionsList.add(extensionDisplay);
- },
+ }
_onViewSource(actor) {
let extension = actor._extension;
let uri = extension.dir.get_uri();
Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context(0, -1));
this._lookingGlass.close();
- },
+ }
_onWebPage(actor) {
let extension = actor._extension;
Gio.app_info_launch_default_for_uri(extension.metadata.url, global.create_app_launch_context(0, -1));
this._lookingGlass.close();
- },
+ }
_onViewErrors(actor) {
let extension = actor._extension;
@@ -713,7 +699,7 @@ var Extensions = new Lang.Class({
}
actor._isShowing = shouldShow;
- },
+ }
_stateToString(extensionState) {
switch (extensionState) {
@@ -730,7 +716,7 @@ var Extensions = new Lang.Class({
return _("Downloading");
}
return 'Unknown'; // Not translated, shouldn't appear
- },
+ }
_createExtensionDisplay(extension) {
let box = new St.BoxLayout({ style_class: 'lg-extension', vertical: true });
@@ -778,12 +764,10 @@ var Extensions = new Lang.Class({
return box;
}
-});
+};
-var LookingGlass = new Lang.Class({
- Name: 'LookingGlass',
-
- _init() {
+var LookingGlass = class LookingGlass {
+ constructor() {
this._borderPaintTarget = null;
this._redBorderEffect = new RedBorderEffect();
@@ -917,7 +901,7 @@ var LookingGlass = new Lang.Class({
});
this._resize();
- },
+ }
_updateFont() {
let fontName = this._interfaceSettings.get_string('monospace-font-name');
@@ -927,7 +911,7 @@ var LookingGlass = new Lang.Class({
this.actor.style =
'font-size: ' + fontDesc.get_size() / 1024. + (fontDesc.get_size_is_absolute() ? 'px' : 'pt') + ';'
+ 'font-family: "' + fontDesc.get_family() + '";';
- },
+ }
setBorderPaintTarget(obj) {
if (this._borderPaintTarget != null)
@@ -935,7 +919,7 @@ var LookingGlass = new Lang.Class({
this._borderPaintTarget = obj;
if (this._borderPaintTarget != null)
this._borderPaintTarget.add_effect(this._redBorderEffect);
- },
+ }
_pushResult(command, obj) {
let index = this._results.length + this._offset;
@@ -955,7 +939,7 @@ var LookingGlass = new Lang.Class({
// Scroll to bottom
this._notebook.scrollToBottom(0);
- },
+ }
_showCompletions(completions) {
if (!this._completionActor) {
@@ -984,7 +968,7 @@ var LookingGlass = new Lang.Class({
opacity: 255
});
}
- },
+ }
_hideCompletions() {
if (this._completionActor) {
@@ -998,7 +982,7 @@ var LookingGlass = new Lang.Class({
}
});
}
- },
+ }
_evaluate(command) {
this._history.addItem(command);
@@ -1017,30 +1001,30 @@ var LookingGlass = new Lang.Class({
this._pushResult(command, resultObj);
this._entry.text = '';
- },
+ }
inspect(x, y) {
return global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
- },
+ }
getIt() {
return this._it;
- },
+ }
getResult(idx) {
return this._results[idx - this._offset].o;
- },
+ }
toggle() {
if (this._open)
this.close();
else
this.open();
- },
+ }
_queueResize() {
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { this._resize(); });
- },
+ }
_resize() {
let primary = Main.layoutManager.primaryMonitor;
@@ -1056,16 +1040,16 @@ var LookingGlass = new Lang.Class({
this._objInspector.actor.set_size(Math.floor(myWidth * 0.8), Math.floor(myHeight * 0.8));
this._objInspector.actor.set_position(this.actor.x + Math.floor(myWidth * 0.1),
this._targetY + Math.floor(myHeight * 0.1));
- },
+ }
insertObject(obj) {
this._pushResult('', obj);
- },
+ }
inspectObject(obj, sourceActor) {
this._objInspector.open(sourceActor);
this._objInspector.selectObject(obj);
- },
+ }
// Handle key events which are relevant for all tabs of the LookingGlass
_globalKeyPressEvent(actor, event) {
@@ -1088,7 +1072,7 @@ var LookingGlass = new Lang.Class({
}
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
open() {
if (this._open)
@@ -1110,7 +1094,7 @@ var LookingGlass = new Lang.Class({
transition: 'easeOutQuad',
y: this._targetY
});
- },
+ }
close() {
if (!this._open)
@@ -1133,5 +1117,5 @@ var LookingGlass = new Lang.Class({
}
});
}
-});
+};
Signals.addSignalMethods(LookingGlass.prototype);
diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js
index 11f00088d..6931c7d4f 100644
--- a/js/ui/magnifier.js
+++ b/js/ui/magnifier.js
@@ -7,7 +7,6 @@ const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
@@ -53,10 +52,8 @@ const CROSS_HAIRS_CLIP_KEY = 'cross-hairs-clip';
let magDBusService = null;
-var Magnifier = new Lang.Class({
- Name: 'Magnifier',
-
- _init() {
+var Magnifier = class Magnifier {
+ constructor() {
// Magnifier is a manager of ZoomRegions.
this._zoomRegions = [];
@@ -84,7 +81,7 @@ var Magnifier = new Lang.Class({
// Export to dbus.
magDBusService = new MagnifierDBus.ShellMagnifier();
this.setActive(showAtLaunch);
- },
+ }
/**
* showSystemCursor:
@@ -92,7 +89,7 @@ var Magnifier = new Lang.Class({
*/
showSystemCursor() {
this._cursorTracker.set_pointer_visible(true);
- },
+ }
/**
* hideSystemCursor:
@@ -100,7 +97,7 @@ var Magnifier = new Lang.Class({
*/
hideSystemCursor() {
this._cursorTracker.set_pointer_visible(false);
- },
+ }
/**
* setActive:
@@ -131,7 +128,7 @@ var Magnifier = new Lang.Class({
// Notify interested parties of this change
this.emit('active-changed', activate);
- },
+ }
/**
* isActive:
@@ -144,7 +141,7 @@ var Magnifier = new Lang.Class({
return false;
else
return this._zoomRegions[0].isActive();
- },
+ }
/**
* startTrackingMouse:
@@ -155,7 +152,7 @@ var Magnifier = new Lang.Class({
let interval = 1000 / Clutter.get_default_frame_rate();
this._pointerWatch = PointerWatcher.getPointerWatcher().addWatch(interval, this.scrollToMousePos.bind(this));
}
- },
+ }
/**
* stopTrackingMouse:
@@ -166,7 +163,7 @@ var Magnifier = new Lang.Class({
this._pointerWatch.remove();
this._pointerWatch = null;
- },
+ }
/**
* isTrackingMouse:
@@ -174,7 +171,7 @@ var Magnifier = new Lang.Class({
*/
isTrackingMouse() {
return !!this._mouseTrackingId;
- },
+ }
/**
* scrollToMousePos:
@@ -200,7 +197,7 @@ var Magnifier = new Lang.Class({
this.showSystemCursor();
}
return true;
- },
+ }
/**
* createZoomRegion:
@@ -229,7 +226,7 @@ var Magnifier = new Lang.Class({
zoomRegion.addCrosshairs(this._crossHairs);
return zoomRegion;
- },
+ }
/**
* addZoomRegion:
@@ -243,7 +240,7 @@ var Magnifier = new Lang.Class({
if (!this.isTrackingMouse())
this.startTrackingMouse();
}
- },
+ }
/**
* getZoomRegions:
@@ -252,7 +249,7 @@ var Magnifier = new Lang.Class({
*/
getZoomRegions() {
return this._zoomRegions;
- },
+ }
/**
* clearAllZoomRegions:
@@ -265,7 +262,7 @@ var Magnifier = new Lang.Class({
this._zoomRegions.length = 0;
this.stopTrackingMouse();
this.showSystemCursor();
- },
+ }
/**
* addCrosshairs:
@@ -291,7 +288,7 @@ var Magnifier = new Lang.Class({
this._zoomRegions.forEach ((zoomRegion, index, array) => {
zoomRegion.addCrosshairs(theCrossHairs);
});
- },
+ }
/**
* setCrosshairsVisible:
@@ -308,7 +305,7 @@ var Magnifier = new Lang.Class({
if (this._crossHairs)
this._crossHairs.hide();
}
- },
+ }
/**
* setCrosshairsColor:
@@ -320,7 +317,7 @@ var Magnifier = new Lang.Class({
let [res, clutterColor] = Clutter.Color.from_string(color);
this._crossHairs.setColor(clutterColor);
}
- },
+ }
/**
* getCrosshairsColor:
@@ -334,7 +331,7 @@ var Magnifier = new Lang.Class({
}
else
return '#00000000';
- },
+ }
/**
* setCrosshairsThickness:
@@ -345,7 +342,7 @@ var Magnifier = new Lang.Class({
setCrosshairsThickness(thickness) {
if (this._crossHairs)
this._crossHairs.setThickness(thickness);
- },
+ }
/**
* getCrosshairsThickness:
@@ -358,7 +355,7 @@ var Magnifier = new Lang.Class({
return this._crossHairs.getThickness();
else
return 0;
- },
+ }
/**
* setCrosshairsOpacity:
@@ -367,7 +364,7 @@ var Magnifier = new Lang.Class({
setCrosshairsOpacity(opacity) {
if (this._crossHairs)
this._crossHairs.setOpacity(opacity * 255);
- },
+ }
/**
* getCrosshairsOpacity:
@@ -378,7 +375,7 @@ var Magnifier = new Lang.Class({
return this._crossHairs.getOpacity() / 255.0;
else
return 0.0;
- },
+ }
/**
* setCrosshairsLength:
@@ -389,7 +386,7 @@ var Magnifier = new Lang.Class({
setCrosshairsLength(length) {
if (this._crossHairs)
this._crossHairs.setLength(length);
- },
+ }
/**
* getCrosshairsLength:
@@ -402,7 +399,7 @@ var Magnifier = new Lang.Class({
return this._crossHairs.getLength();
else
return 0;
- },
+ }
/**
* setCrosshairsClip:
@@ -420,7 +417,7 @@ var Magnifier = new Lang.Class({
if (this._crossHairs)
this._crossHairs.setClip([0, 0]);
}
- },
+ }
/**
* getCrosshairsClip:
@@ -434,7 +431,7 @@ var Magnifier = new Lang.Class({
}
else
return false;
- },
+ }
//// Private methods ////
@@ -442,7 +439,7 @@ var Magnifier = new Lang.Class({
Shell.util_cursor_tracker_to_clutter(this._cursorTracker, this._mouseSprite);
let [xHot, yHot] = this._cursorTracker.get_hot();
this._mouseSprite.set_anchor_point(xHot, yHot);
- },
+ }
_settingsInit(zoomRegion) {
this._appSettings = new Gio.Settings({ schema_id: APPLICATIONS_SCHEMA });
@@ -560,7 +557,7 @@ var Magnifier = new Lang.Class({
this.setCrosshairsVisible(showCrosshairs);
return this._appSettings.get_boolean(SHOW_KEY);
- },
+ }
_updateScreenPosition() {
// Applies only to the first zoom region.
@@ -570,7 +567,7 @@ var Magnifier = new Lang.Class({
if (position != GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN)
this._updateLensMode();
}
- },
+ }
_updateMagFactor() {
// Applies only to the first zoom region.
@@ -579,14 +576,14 @@ var Magnifier = new Lang.Class({
let magFactor = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
this._zoomRegions[0].setMagFactor(magFactor, magFactor);
}
- },
+ }
_updateLensMode() {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
}
- },
+ }
_updateClampMode() {
// Applies only to the first zoom region.
@@ -595,7 +592,7 @@ var Magnifier = new Lang.Class({
!this._settings.get_boolean(CLAMP_MODE_KEY)
);
}
- },
+ }
_updateMouseTrackingMode() {
// Applies only to the first zoom region.
@@ -604,7 +601,7 @@ var Magnifier = new Lang.Class({
this._settings.get_enum(MOUSE_TRACKING_KEY)
);
}
- },
+ }
_updateFocusTrackingMode() {
// Applies only to the first zoom region.
@@ -613,7 +610,7 @@ var Magnifier = new Lang.Class({
this._settings.get_enum(FOCUS_TRACKING_KEY)
);
}
- },
+ }
_updateCaretTrackingMode() {
// Applies only to the first zoom region.
@@ -622,7 +619,7 @@ var Magnifier = new Lang.Class({
this._settings.get_enum(CARET_TRACKING_KEY)
);
}
- },
+ }
_updateInvertLightness() {
// Applies only to the first zoom region.
@@ -631,7 +628,7 @@ var Magnifier = new Lang.Class({
this._settings.get_boolean(INVERT_LIGHTNESS_KEY)
);
}
- },
+ }
_updateColorSaturation() {
// Applies only to the first zoom region.
@@ -640,7 +637,7 @@ var Magnifier = new Lang.Class({
this._settings.get_double(COLOR_SATURATION_KEY)
);
}
- },
+ }
_updateBrightness() {
// Applies only to the first zoom region.
@@ -651,7 +648,7 @@ var Magnifier = new Lang.Class({
brightness.b = this._settings.get_double(BRIGHT_BLUE_KEY);
this._zoomRegions[0].setBrightness(brightness);
}
- },
+ }
_updateContrast() {
// Applies only to the first zoom region.
@@ -663,13 +660,11 @@ var Magnifier = new Lang.Class({
this._zoomRegions[0].setContrast(contrast);
}
}
-});
+};
Signals.addSignalMethods(Magnifier.prototype);
-var ZoomRegion = new Lang.Class({
- Name: 'ZoomRegion',
-
- _init(magnifier, mouseSourceActor) {
+var ZoomRegion = class ZoomRegion {
+ constructor(magnifier, mouseSourceActor) {
this._magnifier = magnifier;
this._focusCaretTracker = new FocusCaretTracker.FocusCaretTracker();
@@ -715,7 +710,7 @@ var ZoomRegion = new Lang.Class({
this._updateCaret.bind(this));
this._focusCaretTracker.connect('focus-changed',
this._updateFocus.bind(this));
- },
+ }
_updateFocus(caller, event) {
let component = event.source.get_component_iface();
@@ -732,7 +727,7 @@ var ZoomRegion = new Lang.Class({
[this._xFocus, this._yFocus] = [extents.x + (extents.width / 2),
extents.y + (extents.height / 2)];
this._centerFromFocusPosition();
- },
+ }
_updateCaret(caller, event) {
let text = event.source.get_text_iface();
@@ -748,7 +743,7 @@ var ZoomRegion = new Lang.Class({
[this._xCaret, this._yCaret] = [extents.x, extents.y];
this._centerFromCaretPosition();
- },
+ }
/**
* setActive:
@@ -771,7 +766,7 @@ var ZoomRegion = new Lang.Class({
this._syncCaretTracking();
this._syncFocusTracking();
- },
+ }
/**
* isActive:
@@ -779,7 +774,7 @@ var ZoomRegion = new Lang.Class({
*/
isActive() {
return this._magView != null;
- },
+ }
/**
* setMagFactor:
@@ -793,7 +788,7 @@ var ZoomRegion = new Lang.Class({
this._changeROI({ xMagFactor: xMagFactor,
yMagFactor: yMagFactor,
redoCursorTracking: this._followingCursor });
- },
+ }
/**
* getMagFactor:
@@ -804,7 +799,7 @@ var ZoomRegion = new Lang.Class({
*/
getMagFactor() {
return [this._xMagFactor, this._yMagFactor];
- },
+ }
/**
* setMouseTrackingMode
@@ -814,7 +809,7 @@ var ZoomRegion = new Lang.Class({
if (mode >= GDesktopEnums.MagnifierMouseTrackingMode.NONE &&
mode <= GDesktopEnums.MagnifierMouseTrackingMode.PUSH)
this._mouseTrackingMode = mode;
- },
+ }
/**
* getMouseTrackingMode
@@ -822,7 +817,7 @@ var ZoomRegion = new Lang.Class({
*/
getMouseTrackingMode() {
return this._mouseTrackingMode;
- },
+ }
/**
* setFocusTrackingMode
@@ -831,7 +826,7 @@ var ZoomRegion = new Lang.Class({
setFocusTrackingMode(mode) {
this._focusTrackingMode = mode;
this._syncFocusTracking();
- },
+ }
/**
* setCaretTrackingMode
@@ -840,7 +835,7 @@ var ZoomRegion = new Lang.Class({
setCaretTrackingMode(mode) {
this._caretTrackingMode = mode;
this._syncCaretTracking();
- },
+ }
_syncFocusTracking() {
let enabled = this._focusTrackingMode != GDesktopEnums.MagnifierFocusTrackingMode.NONE &&
@@ -850,7 +845,7 @@ var ZoomRegion = new Lang.Class({
this._focusCaretTracker.registerFocusListener();
else
this._focusCaretTracker.deregisterFocusListener();
- },
+ }
_syncCaretTracking() {
let enabled = this._caretTrackingMode != GDesktopEnums.MagnifierCaretTrackingMode.NONE &&
@@ -860,7 +855,7 @@ var ZoomRegion = new Lang.Class({
this._focusCaretTracker.registerCaretListener();
else
this._focusCaretTracker.deregisterCaretListener();
- },
+ }
/**
* setViewPort
@@ -872,7 +867,7 @@ var ZoomRegion = new Lang.Class({
setViewPort(viewPort) {
this._setViewPort(viewPort);
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.NONE;
- },
+ }
/**
* setROI
@@ -890,7 +885,7 @@ var ZoomRegion = new Lang.Class({
yMagFactor: this._viewPortHeight / roi.height,
xCenter: roi.x + roi.width / 2,
yCenter: roi.y + roi.height / 2 });
- },
+ }
/**
* getROI:
@@ -907,7 +902,7 @@ var ZoomRegion = new Lang.Class({
return [this._xCenter - roiWidth / 2,
this._yCenter - roiHeight / 2,
roiWidth, roiHeight];
- },
+ }
/**
* setLensMode:
@@ -919,7 +914,7 @@ var ZoomRegion = new Lang.Class({
this._lensMode = lensMode;
if (!this._lensMode)
this.setScreenPosition (this._screenPosition);
- },
+ }
/**
* isLensMode:
@@ -928,7 +923,7 @@ var ZoomRegion = new Lang.Class({
*/
isLensMode() {
return this._lensMode;
- },
+ }
/**
* setClampScrollingAtEdges:
@@ -940,7 +935,7 @@ var ZoomRegion = new Lang.Class({
this._clampScrollingAtEdges = clamp;
if (clamp)
this._changeROI();
- },
+ }
/**
* setTopHalf:
@@ -954,7 +949,7 @@ var ZoomRegion = new Lang.Class({
viewPort.height = global.screen_height/2;
this._setViewPort(viewPort);
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.TOP_HALF;
- },
+ }
/**
* setBottomHalf:
@@ -968,7 +963,7 @@ var ZoomRegion = new Lang.Class({
viewPort.height = global.screen_height/2;
this._setViewPort(viewPort);
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.BOTTOM_HALF;
- },
+ }
/**
* setLeftHalf:
@@ -982,7 +977,7 @@ var ZoomRegion = new Lang.Class({
viewPort.height = global.screen_height;
this._setViewPort(viewPort);
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.LEFT_HALF;
- },
+ }
/**
* setRightHalf:
@@ -996,7 +991,7 @@ var ZoomRegion = new Lang.Class({
viewPort.height = global.screen_height;
this._setViewPort(viewPort);
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.RIGHT_HALF;
- },
+ }
/**
* setFullScreenMode:
@@ -1012,7 +1007,7 @@ var ZoomRegion = new Lang.Class({
this.setViewPort(viewPort);
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
- },
+ }
/**
* setScreenPosition:
@@ -1040,7 +1035,7 @@ var ZoomRegion = new Lang.Class({
this.setRightHalf();
break;
}
- },
+ }
/**
* getScreenPosition:
@@ -1050,7 +1045,7 @@ var ZoomRegion = new Lang.Class({
*/
getScreenPosition() {
return this._screenPosition;
- },
+ }
/**
* scrollToMousePos:
@@ -1066,14 +1061,14 @@ var ZoomRegion = new Lang.Class({
// Determine whether the system mouse pointer is over this zoom region.
return this._isMouseOverRegion();
- },
+ }
_clearScrollContentsTimer() {
if (this._scrollContentsTimerId != 0) {
Mainloop.source_remove(this._scrollContentsTimerId);
this._scrollContentsTimerId = 0;
}
- },
+ }
_scrollContentsToDelayed(x, y) {
if (this._pointerIdleMonitor.get_idletime() >= POINTER_REST_TIME) {
@@ -1086,7 +1081,7 @@ var ZoomRegion = new Lang.Class({
this._scrollContentsToDelayed(x, y);
return GLib.SOURCE_REMOVE;
});
- },
+ }
/**
* scrollContentsTo:
@@ -1101,7 +1096,7 @@ var ZoomRegion = new Lang.Class({
this._followingCursor = false;
this._changeROI({ xCenter: x,
yCenter: y });
- },
+ }
/**
* addCrosshairs:
@@ -1116,7 +1111,7 @@ var ZoomRegion = new Lang.Class({
if (crossHairs && this.isActive()) {
this._crossHairsActor = crossHairs.addToZoomRegion(this, this._mouseActor);
}
- },
+ }
/**
* setInvertLightness:
@@ -1127,7 +1122,7 @@ var ZoomRegion = new Lang.Class({
this._invertLightness = flag;
if (this._magShaderEffects)
this._magShaderEffects.setInvertLightness(this._invertLightness);
- },
+ }
/**
* getInvertLightness:
@@ -1136,7 +1131,7 @@ var ZoomRegion = new Lang.Class({
*/
getInvertLightness() {
return this._invertLightness;
- },
+ }
/**
* setColorSaturation:
@@ -1149,7 +1144,7 @@ var ZoomRegion = new Lang.Class({
this._colorSaturation = saturation;
if (this._magShaderEffects)
this._magShaderEffects.setColorSaturation(this._colorSaturation);
- },
+ }
/**
* getColorSaturation:
@@ -1157,7 +1152,7 @@ var ZoomRegion = new Lang.Class({
*/
getColorSaturation() {
return this._colorSaturation;
- },
+ }
/**
* setBrightness:
@@ -1173,7 +1168,7 @@ var ZoomRegion = new Lang.Class({
this._brightness.b = brightness.b;
if (this._magShaderEffects)
this._magShaderEffects.setBrightness(this._brightness);
- },
+ }
/**
* setContrast:
@@ -1189,7 +1184,7 @@ var ZoomRegion = new Lang.Class({
this._contrast.b = contrast.b;
if (this._magShaderEffects)
this._magShaderEffects.setContrast(this._contrast);
- },
+ }
/**
* getContrast:
@@ -1203,7 +1198,7 @@ var ZoomRegion = new Lang.Class({
contrast.g = this._contrast.g;
contrast.b = this._contrast.b;
return contrast;
- },
+ }
//// Private methods ////
@@ -1249,7 +1244,7 @@ var ZoomRegion = new Lang.Class({
this._magShaderEffects.setInvertLightness(this._invertLightness);
this._magShaderEffects.setBrightness(this._brightness);
this._magShaderEffects.setContrast(this._contrast);
- },
+ }
_destroyActors() {
if (this._mouseActor == this._mouseSourceActor)
@@ -1265,7 +1260,7 @@ var ZoomRegion = new Lang.Class({
this._uiGroupClone = null;
this._mouseActor = null;
this._crossHairsActor = null;
- },
+ }
_setViewPort(viewPort, fromROIUpdate) {
// Sets the position of the zoom region on the screen
@@ -1290,7 +1285,7 @@ var ZoomRegion = new Lang.Class({
if (this.isActive() && this._isMouseOverRegion())
this._magnifier.hideSystemCursor();
- },
+ }
_changeROI(params) {
// Updates the area we are viewing; the magnification factors
@@ -1341,7 +1336,7 @@ var ZoomRegion = new Lang.Class({
this._updateCloneGeometry();
this._updateMousePosition();
- },
+ }
_isMouseOverRegion() {
// Return whether the system mouse sprite is over this ZoomRegion. If the
@@ -1357,7 +1352,7 @@ var ZoomRegion = new Lang.Class({
);
}
return mouseIsOver;
- },
+ }
_isFullScreen() {
// Does the magnified view occupy the whole screen? Note that this
@@ -1370,7 +1365,7 @@ var ZoomRegion = new Lang.Class({
this._viewPortHeight != global.screen_height)
return false;
return true;
- },
+ }
_centerFromMousePosition() {
// Determines where the center should be given the current cursor
@@ -1390,7 +1385,7 @@ var ZoomRegion = new Lang.Class({
}
return null; // Should never be hit
- },
+ }
_centerFromCaretPosition() {
let xCaret = this._xCaret;
@@ -1404,7 +1399,7 @@ var ZoomRegion = new Lang.Class({
[xCaret, yCaret] = this._centerFromPointCentered(xCaret, yCaret);
this._scrollContentsToDelayed(xCaret, yCaret);
- },
+ }
_centerFromFocusPosition() {
let xFocus = this._xFocus;
@@ -1418,7 +1413,7 @@ var ZoomRegion = new Lang.Class({
[xFocus, yFocus] = this._centerFromPointCentered(xFocus, yFocus);
this._scrollContentsToDelayed(xFocus, yFocus);
- },
+ }
_centerFromPointPush(xPoint, yPoint) {
let [xRoi, yRoi, widthRoi, heightRoi] = this.getROI();
@@ -1439,7 +1434,7 @@ var ZoomRegion = new Lang.Class({
yPos += (yPoint - yRoiBottom);
return [xPos, yPos];
- },
+ }
_centerFromPointProportional(xPoint, yPoint) {
let [xRoi, yRoi, widthRoi, heightRoi] = this.getROI();
@@ -1456,18 +1451,18 @@ var ZoomRegion = new Lang.Class({
let yPos = yPoint - yProportion * (heightRoi /2 - yPadding);
return [xPos, yPos];
- },
+ }
_centerFromPointCentered(xPoint, yPoint) {
return [xPoint, yPoint];
- },
+ }
_screenToViewPort(screenX, screenY) {
// Converts coordinates relative to the (unmagnified) screen to coordinates
// relative to the origin of this._magView
return [this._viewPortWidth / 2 + (screenX - this._xCenter) * this._xMagFactor,
this._viewPortHeight / 2 + (screenY - this._yCenter) * this._yMagFactor];
- },
+ }
_updateMagViewGeometry() {
if (!this.isActive())
@@ -1480,7 +1475,7 @@ var ZoomRegion = new Lang.Class({
this._magView.set_size(this._viewPortWidth, this._viewPortHeight);
this._magView.set_position(this._viewPortX, this._viewPortY);
- },
+ }
_updateCloneGeometry() {
if (!this.isActive())
@@ -1493,7 +1488,7 @@ var ZoomRegion = new Lang.Class({
this._uiGroupClone.set_position(Math.round(x), Math.round(y));
this._updateMousePosition();
- },
+ }
_updateMousePosition() {
if (!this.isActive())
@@ -1512,7 +1507,7 @@ var ZoomRegion = new Lang.Class({
this._crossHairsActor.set_position(xMagMouse - groupWidth / 2,
yMagMouse - groupHeight / 2);
}
- },
+ }
_monitorsChanged() {
if (!this.isActive())
@@ -1528,12 +1523,10 @@ var ZoomRegion = new Lang.Class({
else
this.setScreenPosition(this._screenPosition);
}
-});
+};
-var Crosshairs = new Lang.Class({
- Name: 'Crosshairs',
-
- _init() {
+var Crosshairs = class Crosshairs {
+ constructor() {
// Set the group containing the crosshairs to three times the desktop
// size in case the crosshairs need to appear to be infinite in
@@ -1560,12 +1553,12 @@ var Crosshairs = new Lang.Class({
Main.layoutManager.connect('monitors-changed',
this._monitorsChanged.bind(this));
- },
+ }
_monitorsChanged() {
this._actor.set_size(global.screen_width * 3, global.screen_height * 3);
this.reCenter();
- },
+ }
/**
* addToZoomRegion
@@ -1599,7 +1592,7 @@ var Crosshairs = new Lang.Class({
}
}
return crosshairsActor;
- },
+ }
/**
* removeFromParent:
@@ -1612,7 +1605,7 @@ var Crosshairs = new Lang.Class({
childActor.get_parent().remove_actor(childActor);
else
childActor.destroy();
- },
+ }
/**
* setColor:
@@ -1624,7 +1617,7 @@ var Crosshairs = new Lang.Class({
this._horizRightHair.background_color = clutterColor;
this._vertTopHair.background_color = clutterColor;
this._vertBottomHair.background_color = clutterColor;
- },
+ }
/**
* getColor:
@@ -1633,7 +1626,7 @@ var Crosshairs = new Lang.Class({
*/
getColor() {
return this._horizLeftHair.get_color();
- },
+ }
/**
* setThickness:
@@ -1646,7 +1639,7 @@ var Crosshairs = new Lang.Class({
this._vertTopHair.set_width(thickness);
this._vertBottomHair.set_width(thickness);
this.reCenter();
- },
+ }
/**
* getThickness:
@@ -1655,7 +1648,7 @@ var Crosshairs = new Lang.Class({
*/
getThickness() {
return this._horizLeftHair.get_height();
- },
+ }
/**
* setOpacity:
@@ -1674,7 +1667,7 @@ var Crosshairs = new Lang.Class({
this._horizRightHair.set_opacity(opacity);
this._vertTopHair.set_opacity(opacity);
this._vertBottomHair.set_opacity(opacity);
- },
+ }
/**
* setLength:
@@ -1687,7 +1680,7 @@ var Crosshairs = new Lang.Class({
this._vertTopHair.set_height(length);
this._vertBottomHair.set_height(length);
this.reCenter();
- },
+ }
/**
* getLength:
@@ -1696,7 +1689,7 @@ var Crosshairs = new Lang.Class({
*/
getLength() {
return this._horizLeftHair.get_width();
- },
+ }
/**
* setClip:
@@ -1717,7 +1710,7 @@ var Crosshairs = new Lang.Class({
this._clipSize = [0, 0];
this.reCenter();
}
- },
+ }
/**
* show:
@@ -1728,7 +1721,7 @@ var Crosshairs = new Lang.Class({
// Clones don't share visibility.
for (let i = 0; i < this._clones.length; i++)
this._clones[i].show();
- },
+ }
/**
* hide:
@@ -1739,7 +1732,7 @@ var Crosshairs = new Lang.Class({
// Clones don't share visibility.
for (let i = 0; i < this._clones.length; i++)
this._clones[i].hide();
- },
+ }
/**
* reCenter:
@@ -1773,12 +1766,10 @@ var Crosshairs = new Lang.Class({
this._vertTopHair.set_position((groupWidth - thickness) / 2, top);
this._vertBottomHair.set_position((groupWidth - thickness) / 2, bottom);
}
-});
+};
-var MagShaderEffects = new Lang.Class({
- Name: 'MagShaderEffects',
-
- _init(uiGroupClone) {
+var MagShaderEffects = class MagShaderEffects {
+ constructor(uiGroupClone) {
this._inverse = new Shell.InvertLightnessEffect();
this._brightnessContrast = new Clutter.BrightnessContrastEffect();
this._colorDesaturation = new Clutter.DesaturateEffect();
@@ -1789,7 +1780,7 @@ var MagShaderEffects = new Lang.Class({
this._magView.add_effect(this._inverse);
this._magView.add_effect(this._brightnessContrast);
this._magView.add_effect(this._colorDesaturation);
- },
+ }
/**
* destroyEffects:
@@ -1803,7 +1794,7 @@ var MagShaderEffects = new Lang.Class({
this._brightnessContrast = null;
this._inverse = null;
this._magView = null;
- },
+ }
/**
* setInvertLightness:
@@ -1812,11 +1803,11 @@ var MagShaderEffects = new Lang.Class({
*/
setInvertLightness(invertFlag) {
this._inverse.set_enabled(invertFlag);
- },
+ }
setColorSaturation(factor) {
this._colorDesaturation.set_factor(1.0 - factor);
- },
+ }
/**
* setBrightness:
@@ -1840,7 +1831,7 @@ var MagShaderEffects = new Lang.Class({
(bRed != NO_CHANGE || bGreen != NO_CHANGE || bBlue != NO_CHANGE ||
cRed != NO_CHANGE || cGreen != NO_CHANGE || cBlue != NO_CHANGE)
);
- },
+ }
/**
* Set the contrast of the magnified view.
@@ -1865,5 +1856,5 @@ var MagShaderEffects = new Lang.Class({
cRed != NO_CHANGE || cGreen != NO_CHANGE || cBlue != NO_CHANGE ||
bRed != NO_CHANGE || bGreen != NO_CHANGE || bBlue != NO_CHANGE
);
- },
-});
+ }
+};
diff --git a/js/ui/magnifierDBus.js b/js/ui/magnifierDBus.js
index 210c5e337..e26724544 100644
--- a/js/ui/magnifierDBus.js
+++ b/js/ui/magnifierDBus.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Main = imports.ui.main;
const { loadInterfaceXML } = imports.misc.fileUtils;
@@ -22,15 +21,13 @@ const ZoomRegionIface = loadInterfaceXML('org.gnome.Magnifier.ZoomRegion');
// '/org/gnome/Magnifier/ZoomRegion/zoomer1', etc.
let _zoomRegionInstanceCount = 0;
-var ShellMagnifier = new Lang.Class({
- Name: 'ShellMagnifier',
-
- _init() {
+var ShellMagnifier = class ShellMagnifier {
+ constructor() {
this._zoomers = {};
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(MagnifierIface, this);
this._dbusImpl.export(Gio.DBus.session, MAG_SERVICE_PATH);
- },
+ }
/**
* setActive:
@@ -38,7 +35,7 @@ var ShellMagnifier = new Lang.Class({
*/
setActive(activate) {
Main.magnifier.setActive(activate);
- },
+ }
/**
* isActive:
@@ -46,7 +43,7 @@ var ShellMagnifier = new Lang.Class({
*/
isActive() {
return Main.magnifier.isActive();
- },
+ }
/**
* showCursor:
@@ -54,7 +51,7 @@ var ShellMagnifier = new Lang.Class({
*/
showCursor() {
Main.magnifier.showSystemCursor();
- },
+ }
/**
* hideCursor:
@@ -62,7 +59,7 @@ var ShellMagnifier = new Lang.Class({
*/
hideCursor() {
Main.magnifier.hideSystemCursor();
- },
+ }
/**
* createZoomRegion:
@@ -97,7 +94,7 @@ var ShellMagnifier = new Lang.Class({
proxyAndZoomRegion.zoomRegion = realZoomRegion;
this._zoomers[objectPath] = proxyAndZoomRegion;
return objectPath;
- },
+ }
/**
* addZoomRegion:
@@ -112,7 +109,7 @@ var ShellMagnifier = new Lang.Class({
}
else
return false;
- },
+ }
/**
* getZoomRegions:
@@ -150,7 +147,7 @@ var ShellMagnifier = new Lang.Class({
}
});
return objectPaths;
- },
+ }
/**
* clearAllZoomRegions:
@@ -166,7 +163,7 @@ var ShellMagnifier = new Lang.Class({
delete this._zoomers[objectPath];
}
this._zoomers = {};
- },
+ }
/**
* fullScreenCapable:
@@ -175,7 +172,7 @@ var ShellMagnifier = new Lang.Class({
*/
fullScreenCapable() {
return true;
- },
+ }
/**
* setCrosswireSize:
@@ -184,7 +181,7 @@ var ShellMagnifier = new Lang.Class({
*/
setCrosswireSize(size) {
Main.magnifier.setCrosshairsThickness(size);
- },
+ }
/**
* getCrosswireSize:
@@ -193,7 +190,7 @@ var ShellMagnifier = new Lang.Class({
*/
getCrosswireSize() {
return Main.magnifier.getCrosshairsThickness();
- },
+ }
/**
* setCrosswireLength:
@@ -202,7 +199,7 @@ var ShellMagnifier = new Lang.Class({
*/
setCrosswireLength(length) {
Main.magnifier.setCrosshairsLength(length);
- },
+ }
/**
* setCrosswireSize:
@@ -211,7 +208,7 @@ var ShellMagnifier = new Lang.Class({
*/
getCrosswireLength() {
return Main.magnifier.getCrosshairsLength();
- },
+ }
/**
* setCrosswireClip:
@@ -220,7 +217,7 @@ var ShellMagnifier = new Lang.Class({
*/
setCrosswireClip(clip) {
Main.magnifier.setCrosshairsClip(clip);
- },
+ }
/**
* getCrosswireClip:
@@ -229,7 +226,7 @@ var ShellMagnifier = new Lang.Class({
*/
getCrosswireClip() {
return Main.magnifier.getCrosshairsClip();
- },
+ }
/**
* setCrosswireColor:
@@ -238,7 +235,7 @@ var ShellMagnifier = new Lang.Class({
*/
setCrosswireColor(color) {
Main.magnifier.setCrosshairsColor('#%08x'.format(color));
- },
+ }
/**
* getCrosswireClip:
@@ -250,7 +247,7 @@ var ShellMagnifier = new Lang.Class({
// Drop the leading '#'.
return parseInt(colorString.slice(1), 16);
}
-});
+};
/**
* ShellMagnifierZoomRegion:
@@ -258,15 +255,13 @@ var ShellMagnifier = new Lang.Class({
* @zoomerObjectPath: String that is the path to a DBus ZoomRegion.
* @zoomRegion: The actual zoom region associated with the object path.
*/
-var ShellMagnifierZoomRegion = new Lang.Class({
- Name: 'ShellMagnifierZoomRegion',
-
- _init(zoomerObjectPath, zoomRegion) {
+var ShellMagnifierZoomRegion = class ShellMagnifierZoomRegion {
+ constructor(zoomerObjectPath, zoomRegion) {
this._zoomRegion = zoomRegion;
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ZoomRegionIface, this);
this._dbusImpl.export(Gio.DBus.session, zoomerObjectPath);
- },
+ }
/**
* setMagFactor:
@@ -278,7 +273,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
*/
setMagFactor(xMagFactor, yMagFactor) {
this._zoomRegion.setMagFactor(xMagFactor, yMagFactor);
- },
+ }
/**
* getMagFactor:
@@ -289,7 +284,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
*/
getMagFactor() {
return this._zoomRegion.getMagFactor();
- },
+ }
/**
* setRoi:
@@ -301,7 +296,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
setRoi(roi) {
let roiObject = { x: roi[0], y: roi[1], width: roi[2] - roi[0], height: roi[3] - roi[1] };
this._zoomRegion.setROI(roiObject);
- },
+ }
/**
* getRoi:
@@ -316,7 +311,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
roi[2] += roi[0];
roi[3] += roi[1];
return roi;
- },
+ }
/**
* Set the "region of interest" by centering the given screen coordinate
@@ -329,7 +324,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
shiftContentsTo(x, y) {
this._zoomRegion.scrollContentsTo(x, y);
return true;
- },
+ }
/**
* moveResize
@@ -340,9 +335,9 @@ var ShellMagnifierZoomRegion = new Lang.Class({
moveResize(viewPort) {
let viewRect = { x: viewPort[0], y: viewPort[1], width: viewPort[2] - viewPort[0], height: viewPort[3] - viewPort[1] };
this._zoomRegion.setViewPort(viewRect);
- },
+ }
destroy() {
this._dbusImpl.unexport();
}
-});
+};
diff --git a/js/ui/main.js b/js/ui/main.js
index f87b1ad02..fccfcb9ef 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -5,7 +5,6 @@ const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
@@ -700,15 +699,12 @@ function queueDeferredWork(workId) {
}
}
-var RestartMessage = new Lang.Class({
- Name: 'RestartMessage',
- Extends: ModalDialog.ModalDialog,
-
- _init(message) {
- this.parent({ shellReactive: true,
- styleClass: 'restart-message headline',
- shouldFadeIn: false,
- destroyOnClose: true });
+var RestartMessage = class extends ModalDialog.ModalDialog {
+ constructor(message) {
+ super({ shellReactive: true,
+ styleClass: 'restart-message headline',
+ shouldFadeIn: false,
+ destroyOnClose: true });
let label = new St.Label({ text: message });
@@ -718,7 +714,7 @@ var RestartMessage = new Lang.Class({
y_align: St.Align.MIDDLE });
this.buttonLayout.hide();
}
-});
+};
function showRestartMessage(message) {
let restartMessage = new RestartMessage(message);
diff --git a/js/ui/messageList.js b/js/ui/messageList.js
index 32b8e18b8..f8ef745d4 100644
--- a/js/ui/messageList.js
+++ b/js/ui/messageList.js
@@ -40,10 +40,8 @@ function _fixMarkup(text, allowMarkup) {
return GLib.markup_escape_text(text, -1);
}
-var URLHighlighter = new Lang.Class({
- Name: 'URLHighlighter',
-
- _init(text, lineWrap, allowMarkup) {
+var URLHighlighter = class URLHighlighter {
+ constructor(text, lineWrap, allowMarkup) {
if (!text)
text = '';
this.actor = new St.Label({ reactive: true, style_class: 'url-highlighter',
@@ -114,7 +112,7 @@ var URLHighlighter = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
});
- },
+ }
setMarkup(text, allowMarkup) {
text = text ? _fixMarkup(text, allowMarkup) : '';
@@ -124,7 +122,7 @@ var URLHighlighter = new Lang.Class({
/* clutter_text.text contain text without markup */
this._urls = Util.findUrls(this.actor.clutter_text.text);
this._highlightUrls();
- },
+ }
_highlightUrls() {
// text here contain markup
@@ -139,7 +137,7 @@ var URLHighlighter = new Lang.Class({
}
markup += this._text.substr(pos);
this.actor.clutter_text.set_markup(markup);
- },
+ }
_findUrlAtPos(event) {
let success;
@@ -160,7 +158,7 @@ var URLHighlighter = new Lang.Class({
}
return -1;
}
-});
+};
var ScaleLayout = new Lang.Class({
Name: 'ScaleLayout',
@@ -298,10 +296,8 @@ var LabelExpanderLayout = new Lang.Class({
}
});
-var Message = new Lang.Class({
- Name: 'Message',
-
- _init(title, body) {
+var Message = class Message {
+ constructor(title, body) {
this.expanded = false;
this._useBodyMarkup = false;
@@ -368,25 +364,25 @@ var Message = new Lang.Class({
this.actor.connect('clicked', this._onClicked.bind(this));
this.actor.connect('destroy', this._onDestroy.bind(this));
this._sync();
- },
+ }
close() {
this.emit('close');
- },
+ }
setIcon(actor) {
this._iconBin.child = actor;
this._iconBin.visible = (actor != null);
- },
+ }
setSecondaryActor(actor) {
this._secondaryBin.child = actor;
- },
+ }
setTitle(text) {
let title = text ? _fixMarkup(text.replace(/\n/g, ' '), false) : '';
this.titleLabel.clutter_text.set_markup(title);
- },
+ }
setBody(text) {
this._bodyText = text;
@@ -394,7 +390,7 @@ var Message = new Lang.Class({
this._useBodyMarkup);
if (this._expandedLabel)
this._expandedLabel.setMarkup(text, this._useBodyMarkup);
- },
+ }
setUseBodyMarkup(enable) {
if (this._useBodyMarkup === enable)
@@ -402,7 +398,7 @@ var Message = new Lang.Class({
this._useBodyMarkup = enable;
if (this.bodyLabel)
this.setBody(this._bodyText);
- },
+ }
setActionArea(actor) {
if (actor == null) {
@@ -416,7 +412,7 @@ var Message = new Lang.Class({
this._actionBin.add_actor(actor);
this._actionBin.visible = this.expanded;
- },
+ }
addMediaControl(iconName, callback) {
let icon = new St.Icon({ icon_name: iconName, icon_size: 16 });
@@ -425,7 +421,7 @@ var Message = new Lang.Class({
button.connect('clicked', callback);
this._mediaControls.add_actor(button);
return button;
- },
+ }
setExpandedBody(actor) {
if (actor == null) {
@@ -438,11 +434,11 @@ var Message = new Lang.Class({
throw new Error('Message already has an expanded body actor');
this._bodyStack.insert_child_at_index(actor, 1);
- },
+ }
setExpandedLines(nLines) {
this._bodyStack.layout_manager.expandLines = nLines;
- },
+ }
expand(animate) {
this.expanded = true;
@@ -471,7 +467,7 @@ var Message = new Lang.Class({
}
this.emit('expanded');
- },
+ }
unexpand(animate) {
if (animate) {
@@ -495,23 +491,23 @@ var Message = new Lang.Class({
}
this.emit('unexpanded');
- },
+ }
canClose() {
return false;
- },
+ }
_sync() {
let visible = this.actor.hover && this.canClose();
this._closeButton.opacity = visible ? 255 : 0;
this._closeButton.reactive = visible;
- },
+ }
_onClicked() {
- },
+ }
_onDestroy() {
- },
+ }
_onKeyPressed(a, event) {
let keysym = event.get_key_symbol();
@@ -523,13 +519,11 @@ var Message = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
}
-});
+};
Signals.addSignalMethods(Message.prototype);
-var MessageListSection = new Lang.Class({
- Name: 'MessageListSection',
-
- _init() {
+var MessageListSection = class MessageListSection {
+ constructor() {
this.actor = new St.BoxLayout({ style_class: 'message-list-section',
clip_to_allocation: true,
x_expand: true, vertical: true });
@@ -552,26 +546,26 @@ var MessageListSection = new Lang.Class({
this.empty = true;
this.canClear = false;
this._sync();
- },
+ }
_onKeyFocusIn(actor) {
this.emit('key-focus-in', actor);
- },
+ }
get allowed() {
return true;
- },
+ }
setDate(date) {
if (Calendar.sameDay(date, this._date))
return;
this._date = date;
this._sync();
- },
+ }
addMessage(message, animate) {
this.addMessageAtIndex(message, -1, animate);
- },
+ }
addMessageAtIndex(message, index, animate) {
let obj = {
@@ -604,7 +598,7 @@ var MessageListSection = new Lang.Class({
scale_y: 1,
time: MESSAGE_ANIMATION_TIME,
transition: 'easeOutQuad' });
- },
+ }
moveMessage(message, index, animate) {
let obj = this._messages.get(message);
@@ -626,7 +620,7 @@ var MessageListSection = new Lang.Class({
time: MESSAGE_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: onComplete });
- },
+ }
removeMessage(message, animate) {
let obj = this._messages.get(message);
@@ -649,7 +643,7 @@ var MessageListSection = new Lang.Class({
obj.container.destroy();
global.sync_pointer();
}
- },
+ }
clear() {
let messages = [...this._messages.keys()].filter(msg => msg.canClose());
@@ -677,18 +671,18 @@ var MessageListSection = new Lang.Class({
}});
}
}
- },
+ }
_canClear() {
for (let message of this._messages.keys())
if (message.canClose())
return true;
return false;
- },
+ }
_shouldShow() {
return !this.empty;
- },
+ }
_sync() {
let empty = this._list.get_n_children() == 0;
@@ -707,5 +701,5 @@ var MessageListSection = new Lang.Class({
this.actor.visible = this.allowed && this._shouldShow();
}
-});
+};
Signals.addSignalMethods(MessageListSection.prototype);
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 3c98b4f95..ebc7ae2fc 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -72,15 +72,13 @@ var Urgency = {
CRITICAL: 3
};
-var FocusGrabber = new Lang.Class({
- Name: 'FocusGrabber',
-
- _init(actor) {
+var FocusGrabber = class FocusGrabber {
+ constructor(actor) {
this._actor = actor;
this._prevKeyFocusActor = null;
this._focusActorChangedId = 0;
this._focused = false;
- },
+ }
grabFocus() {
if (this._focused)
@@ -94,7 +92,7 @@ var FocusGrabber = new Lang.Class({
this._actor.grab_key_focus();
this._focused = true;
- },
+ }
_focusUngrabbed() {
if (!this._focused)
@@ -107,13 +105,13 @@ var FocusGrabber = new Lang.Class({
this._focused = false;
return true;
- },
+ }
_focusActorChanged() {
let focusedActor = global.stage.get_key_focus();
if (!focusedActor || !this._actor.contains(focusedActor))
this._focusUngrabbed();
- },
+ }
ungrabFocus() {
if (!this._focusUngrabbed())
@@ -128,17 +126,15 @@ var FocusGrabber = new Lang.Class({
global.stage.set_key_focus(null);
}
}
-});
+};
// NotificationPolicy:
// An object that holds all bits of configurable policy related to a notification
// source, such as whether to play sound or honour the critical bit.
//
// A notification without a policy object will inherit the default one.
-var NotificationPolicy = new Lang.Class({
- Name: 'NotificationPolicy',
-
- _init(params) {
+var NotificationPolicy = class NotificationPolicy {
+ constructor(params) {
params = Params.parse(params, { enable: true,
enableSound: true,
showBanners: true,
@@ -150,77 +146,72 @@ var NotificationPolicy = new Lang.Class({
let desc = Object.getOwnPropertyDescriptor(params, key);
Object.defineProperty(this, `_${key}`, desc);
});
- },
+ }
// Do nothing for the default policy. These methods are only useful for the
// GSettings policy.
- store() { },
- destroy() { },
+ store() { }
+ destroy() { }
get enable() {
return this._enable;
- },
+ }
get enableSound() {
return this._enableSound;
- },
+ }
get showBanners() {
return this._showBanners;
- },
+ }
get forceExpanded() {
return this._forceExpanded;
- },
+ }
get showInLockScreen() {
return this._showInLockScreen;
- },
+ }
get detailsInLockScreen() {
return this._detailsInLockScreen;
}
-});
+};
Signals.addSignalMethods(NotificationPolicy.prototype);
-var NotificationGenericPolicy = new Lang.Class({
- Name: 'NotificationGenericPolicy',
- Extends: NotificationPolicy,
-
- _init() {
- this.parent();
-
+var NotificationGenericPolicy =
+class NotificationGenericPolicy extends NotificationPolicy {
+ constructor() {
+ super();
this.id = 'generic';
this._masterSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications' });
this._masterSettings.connect('changed', this._changed.bind(this));
- },
+ }
- store() { },
+ store() { }
destroy() {
this._masterSettings.run_dispose();
- },
+ }
_changed(settings, key) {
this.emit('policy-changed', key);
- },
+ }
get showBanners() {
return this._masterSettings.get_boolean('show-banners');
- },
+ }
get showInLockScreen() {
return this._masterSettings.get_boolean('show-in-lock-screen');
}
-});
+};
-var NotificationApplicationPolicy = new Lang.Class({
- Name: 'NotificationApplicationPolicy',
- Extends: NotificationPolicy,
-
- _init(id) {
- this.parent();
+var NotificationApplicationPolicy =
+class NotificationApplicationPolicy extends NotificationPolicy {
+ constructor(id) {
+ super();
this.id = id;
this._canonicalId = this._canonicalizeId(id);
@@ -231,7 +222,7 @@ var NotificationApplicationPolicy = new Lang.Class({
this._masterSettings.connect('changed', this._changed.bind(this));
this._settings.connect('changed', this._changed.bind(this));
- },
+ }
store() {
this._settings.set_string('application-id', this.id + '.desktop');
@@ -241,51 +232,51 @@ var NotificationApplicationPolicy = new Lang.Class({
apps.push(this._canonicalId);
this._masterSettings.set_strv('application-children', apps);
}
- },
+ }
destroy() {
this._masterSettings.run_dispose();
this._settings.run_dispose();
- },
+ }
_changed(settings, key) {
this.emit('policy-changed', key);
if (key == 'enable')
this.emit('enable-changed');
- },
+ }
_canonicalizeId(id) {
// Keys are restricted to lowercase alphanumeric characters and dash,
// and two dashes cannot be in succession
return id.toLowerCase().replace(/[^a-z0-9\-]/g, '-').replace(/--+/g, '-');
- },
+ }
get enable() {
return this._settings.get_boolean('enable');
- },
+ }
get enableSound() {
return this._settings.get_boolean('enable-sound-alerts');
- },
+ }
get showBanners() {
return this._masterSettings.get_boolean('show-banners') &&
this._settings.get_boolean('show-banners');
- },
+ }
get forceExpanded() {
return this._settings.get_boolean('force-expanded');
- },
+ }
get showInLockScreen() {
return this._masterSettings.get_boolean('show-in-lock-screen') &&
this._settings.get_boolean('show-in-lock-screen');
- },
+ }
get detailsInLockScreen() {
return this._settings.get_boolean('details-in-lock-screen');
}
-});
+};
// Notification:
// @source: the notification's Source
@@ -342,10 +333,8 @@ var NotificationApplicationPolicy = new Lang.Class({
// @source allows playing sounds).
//
// [1] https://developer.gnome.org/notification-spec/#markup
-var Notification = new Lang.Class({
- Name: 'Notification',
-
- _init(source, title, banner, params) {
+var Notification = class Notification {
+ constructor(source, title, banner, params) {
this.source = source;
this.title = title;
this.urgency = Urgency.NORMAL;
@@ -367,7 +356,7 @@ var Notification = new Lang.Class({
// for new and updated notifications
if (arguments.length != 1)
this.update(title, banner, params);
- },
+ }
// update:
// @title: the new title
@@ -412,41 +401,41 @@ var Notification = new Lang.Class({
}
this.emit('updated', params.clear);
- },
+ }
// addAction:
// @label: the label for the action's button
// @callback: the callback for the action
addAction(label, callback) {
this.actions.push({ label: label, callback: callback });
- },
+ }
get acknowledged() {
return this._acknowledged;
- },
+ }
set acknowledged(v) {
if (this._acknowledged == v)
return;
this._acknowledged = v;
this.emit('acknowledged-changed');
- },
+ }
setUrgency(urgency) {
this.urgency = urgency;
- },
+ }
setResident(resident) {
this.resident = resident;
- },
+ }
setTransient(isTransient) {
this.isTransient = isTransient;
- },
+ }
setForFeedback(forFeedback) {
this.forFeedback = forFeedback;
- },
+ }
playSound() {
if (this._soundPlayed)
@@ -462,7 +451,7 @@ var Notification = new Lang.Class({
player.play_from_theme(this._soundName, this.title, null);
else if (this._soundFile)
player.play_from_file(this._soundFile, this.title, null);
- },
+ }
// Allow customizing the banner UI:
// the default implementation defers the creation to
@@ -471,28 +460,26 @@ var Notification = new Lang.Class({
// Notification or Source
createBanner() {
return this.source.createBanner(this);
- },
+ }
activate() {
this.emit('activated');
if (!this.resident)
this.destroy();
- },
+ }
destroy(reason) {
if (!reason)
reason = NotificationDestroyedReason.DISMISSED;
this.emit('destroy', reason);
}
-});
+};
Signals.addSignalMethods(Notification.prototype);
-var NotificationBanner = new Lang.Class({
- Name: 'NotificationBanner',
- Extends: Calendar.NotificationMessage,
-
- _init(notification) {
- this.parent(notification);
+var NotificationBanner =
+class NotificationBanner extends Calendar.NotificationMessage {
+ constructor(notification) {
+ super(notification);
this.actor.can_focus = false;
this.actor.add_style_class_name('notification-banner');
@@ -509,15 +496,15 @@ var NotificationBanner = new Lang.Class({
// attention switching to the window.
this.emit('done-displaying');
});
- },
+ }
_onDestroy() {
- this.parent();
+ super._onDestroy();
this.notification.disconnect(this._activatedId);
- },
+ }
_onUpdated(n, clear) {
- this.parent(n, clear);
+ super._onUpdated(n, clear);
if (clear) {
this.setSecondaryActor(null);
@@ -527,13 +514,13 @@ var NotificationBanner = new Lang.Class({
this._addActions();
this._addSecondaryIcon();
- },
+ }
_addActions() {
this.notification.actions.forEach(action => {
this.addAction(action.label, action.callback);
});
- },
+ }
_addSecondaryIcon() {
if (this.notification.secondaryGIcon) {
@@ -541,7 +528,7 @@ var NotificationBanner = new Lang.Class({
x_align: Clutter.ActorAlign.END });
this.setSecondaryActor(icon);
}
- },
+ }
addButton(button, callback) {
if (!this._buttonBox) {
@@ -569,7 +556,7 @@ var NotificationBanner = new Lang.Class({
});
return button;
- },
+ }
addAction(label, callback) {
let button = new St.Button({ style_class: 'notification-button',
@@ -579,7 +566,7 @@ var NotificationBanner = new Lang.Class({
return this.addButton(button, callback);
}
-});
+};
var SourceActor = new Lang.Class({
Name: 'SourceActor',
@@ -697,12 +684,10 @@ var SourceActorWithLabel = new Lang.Class({
}
});
-var Source = new Lang.Class({
- Name: 'MessageTraySource',
+var Source = class Source {
+ constructor(title, iconName) {
+ this.SOURCE_ICON_SIZE = 48;
- SOURCE_ICON_SIZE: 48,
-
- _init(title, iconName) {
this.title = title;
this.iconName = iconName;
@@ -711,42 +696,42 @@ var Source = new Lang.Class({
this.notifications = [];
this._policy = null;
- },
+ }
get policy() {
if (!this._policy)
this._policy = this._createPolicy();
return this._policy;
- },
+ }
get count() {
return this.notifications.length;
- },
+ }
get unseenCount() {
return this.notifications.filter(n => !n.acknowledged).length;
- },
+ }
get countVisible() {
return this.count > 1;
- },
+ }
countUpdated() {
this.emit('count-updated');
- },
+ }
_createPolicy() {
return new NotificationPolicy();
- },
+ }
setTitle(newTitle) {
this.title = newTitle;
this.emit('title-changed');
- },
+ }
createBanner(notification) {
return new NotificationBanner(notification);
- },
+ }
// Called to create a new icon actor.
// Provides a sane default implementation, override if you need
@@ -754,11 +739,11 @@ var Source = new Lang.Class({
createIcon(size) {
return new St.Icon({ gicon: this.getIcon(),
icon_size: size });
- },
+ }
getIcon() {
return new Gio.ThemedIcon({ name: this.iconName });
- },
+ }
_onNotificationDestroy(notification) {
let index = this.notifications.indexOf(notification);
@@ -770,7 +755,7 @@ var Source = new Lang.Class({
this.destroy();
this.countUpdated();
- },
+ }
pushNotification(notification) {
if (this.notifications.indexOf(notification) >= 0)
@@ -785,7 +770,7 @@ var Source = new Lang.Class({
this.emit('notification-added', notification);
this.countUpdated();
- },
+ }
notify(notification) {
notification.acknowledged = false;
@@ -796,7 +781,7 @@ var Source = new Lang.Class({
} else {
notification.playSound();
}
- },
+ }
destroy(reason) {
this.policy.destroy();
@@ -808,15 +793,15 @@ var Source = new Lang.Class({
notifications[i].destroy(reason);
this.emit('destroy', reason);
- },
+ }
iconUpdated() {
this.emit('icon-updated');
- },
+ }
// To be overridden by subclasses
open() {
- },
+ }
destroyNonResidentNotifications() {
for (let i = this.notifications.length - 1; i >= 0; i--)
@@ -825,13 +810,11 @@ var Source = new Lang.Class({
this.countUpdated();
}
-});
+};
Signals.addSignalMethods(Source.prototype);
-var MessageTray = new Lang.Class({
- Name: 'MessageTray',
-
- _init() {
+var MessageTray = class MessageTray {
+ constructor() {
this._presence = new GnomeSession.Presence((proxy, error) => {
this._onStatusChanged(proxy.status);
});
@@ -938,27 +921,27 @@ var MessageTray = new Lang.Class({
this._sources = new Map();
this._sessionUpdated();
- },
+ }
_sessionUpdated() {
this._updateState();
- },
+ }
_onDragBegin() {
Shell.util_set_hidden_from_pick(this.actor, true);
- },
+ }
_onDragEnd() {
Shell.util_set_hidden_from_pick(this.actor, false);
- },
+ }
get bannerAlignment() {
return this._bannerBin.get_x_align();
- },
+ }
set bannerAlignment(align) {
this._bannerBin.set_x_align(align);
- },
+ }
_onNotificationKeyRelease(actor, event) {
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
@@ -967,27 +950,27 @@ var MessageTray = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_expireNotification() {
this._notificationExpired = true;
this._updateState();
- },
+ }
get queueCount() {
return this._notificationQueue.length;
- },
+ }
set bannerBlocked(v) {
if (this._bannerBlocked == v)
return;
this._bannerBlocked = v;
this._updateState();
- },
+ }
contains(source) {
return this._sources.has(source);
- },
+ }
add(source) {
if (this.contains(source)) {
@@ -1003,7 +986,7 @@ var MessageTray = new Lang.Class({
});
source.policy.connect('policy-changed', this._updateState.bind(this));
this._onSourceEnableChanged(source.policy, source);
- },
+ }
_addSource(source) {
let obj = {
@@ -1018,7 +1001,7 @@ var MessageTray = new Lang.Class({
obj.destroyId = source.connect('destroy', this._onSourceDestroy.bind(this));
this.emit('source-added', source);
- },
+ }
_removeSource(source) {
let obj = this._sources.get(source);
@@ -1028,11 +1011,11 @@ var MessageTray = new Lang.Class({
source.disconnect(obj.destroyId);
this.emit('source-removed', source);
- },
+ }
getSources() {
return [...this._sources.keys()];
- },
+ }
_onSourceEnableChanged(policy, source) {
let wasEnabled = this.contains(source);
@@ -1044,11 +1027,11 @@ var MessageTray = new Lang.Class({
else
this._removeSource(source);
}
- },
+ }
_onSourceDestroy(source) {
this._removeSource(source);
- },
+ }
_onNotificationDestroy(notification) {
if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
@@ -1063,7 +1046,7 @@ var MessageTray = new Lang.Class({
this._notificationQueue.splice(index, 1);
this.emit('queue-changed');
}
- },
+ }
_onNotify(source, notification) {
if (this._notification == notification) {
@@ -1089,7 +1072,7 @@ var MessageTray = new Lang.Class({
}
}
this._updateState();
- },
+ }
_resetNotificationLeftTimeout() {
this._useLongerNotificationLeftTimeout = false;
@@ -1099,7 +1082,7 @@ var MessageTray = new Lang.Class({
this._notificationLeftMouseX = -1;
this._notificationLeftMouseY = -1;
}
- },
+ }
_onNotificationHoverChanged() {
if (this._bannerBin.hover == this._notificationHovered)
@@ -1143,7 +1126,7 @@ var MessageTray = new Lang.Class({
this._notificationLeftTimeoutId = Mainloop.timeout_add(timeout, this._onNotificationLeftTimeout.bind(this));
GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout');
}
- },
+ }
_onStatusChanged(status) {
if (status == GnomeSession.PresenceStatus.BUSY) {
@@ -1158,7 +1141,7 @@ var MessageTray = new Lang.Class({
}
this._updateState();
- },
+ }
_onNotificationLeftTimeout() {
let [x, y, mods] = global.get_pointer();
@@ -1180,13 +1163,13 @@ var MessageTray = new Lang.Class({
this._updateState();
}
return GLib.SOURCE_REMOVE;
- },
+ }
_escapeTray() {
this._pointerInNotification = false;
this._updateNotificationTimeout(0);
this._updateState();
- },
+ }
// All of the logic for what happens when occurs here; the various
// event handlers merely update variables such as
@@ -1249,7 +1232,7 @@ var MessageTray = new Lang.Class({
// Clean transient variables that are used to communicate actions
// to updateState()
this._notificationExpired = false;
- },
+ }
_tween(actor, statevar, value, params) {
let onComplete = params.onComplete;
@@ -1266,24 +1249,24 @@ var MessageTray = new Lang.Class({
let valuing = (value == State.SHOWN) ? State.SHOWING : State.HIDING;
this[statevar] = valuing;
- },
+ }
_tweenComplete(statevar, value, onComplete, onCompleteScope, onCompleteParams) {
this[statevar] = value;
if (onComplete)
onComplete.apply(onCompleteScope, onCompleteParams);
this._updateState();
- },
+ }
_clampOpacity() {
this._bannerBin.opacity = Math.max(0, Math.min(this._bannerBin._opacity, 255));
- },
+ }
_onIdleMonitorBecameActive() {
this._userActiveWhileNotificationShown = true;
this._updateNotificationTimeout(2000);
this._updateState();
- },
+ }
_showNotification() {
this._notification = this._notificationQueue.shift();
@@ -1328,7 +1311,7 @@ var MessageTray = new Lang.Class({
this._lastSeenMouseY = y;
this._resetNotificationLeftTimeout();
- },
+ }
_updateShowingNotification() {
this._notification.acknowledged = true;
@@ -1362,12 +1345,12 @@ var MessageTray = new Lang.Class({
};
this._tween(this._bannerBin, '_notificationState', State.SHOWN, tweenParams);
- },
+ }
_showNotificationCompleted() {
if (this._notification.urgency != Urgency.CRITICAL)
this._updateNotificationTimeout(NOTIFICATION_TIMEOUT * 1000);
- },
+ }
_updateNotificationTimeout(timeout) {
if (this._notificationTimeoutId) {
@@ -1380,7 +1363,7 @@ var MessageTray = new Lang.Class({
this._notificationTimeout.bind(this));
GLib.Source.set_name_by_id(this._notificationTimeoutId, '[gnome-shell] this._notificationTimeout');
}
- },
+ }
_notificationTimeout() {
let [x, y, mods] = global.get_pointer();
@@ -1404,7 +1387,7 @@ var MessageTray = new Lang.Class({
this._lastSeenMouseX = x;
this._lastSeenMouseY = y;
return GLib.SOURCE_REMOVE;
- },
+ }
_hideNotification(animate) {
this._notificationFocusGrabber.ungrabFocus();
@@ -1438,7 +1421,7 @@ var MessageTray = new Lang.Class({
this._notificationState = State.HIDDEN;
this._hideNotificationCompleted();
}
- },
+ }
_hideNotificationCompleted() {
let notification = this._notification;
@@ -1453,14 +1436,14 @@ var MessageTray = new Lang.Class({
this._banner.actor.destroy();
this._banner = null;
this.actor.hide();
- },
+ }
_expandActiveNotification() {
if (!this._banner)
return;
this._expandBanner(false);
- },
+ }
_expandBanner(autoExpanding) {
// Don't animate changes in notifications that are auto-expanding.
@@ -1469,23 +1452,20 @@ var MessageTray = new Lang.Class({
// Don't focus notifications that are auto-expanding.
if (!autoExpanding)
this._ensureBannerFocused();
- },
+ }
_ensureBannerFocused() {
this._notificationFocusGrabber.grabFocus();
}
-});
+};
Signals.addSignalMethods(MessageTray.prototype);
-var SystemNotificationSource = new Lang.Class({
- Name: 'SystemNotificationSource',
- Extends: Source,
-
- _init() {
- this.parent(_("System Information"), 'dialog-information-symbolic');
- },
+var SystemNotificationSource = class SystemNotificationSource extends Source {
+ constructor() {
+ super(_("System Information"), 'dialog-information-symbolic');
+ }
open() {
this.destroy();
}
-});
+};
diff --git a/js/ui/modalDialog.js b/js/ui/modalDialog.js
index aff894fd5..d6ebcb5f3 100644
--- a/js/ui/modalDialog.js
+++ b/js/ui/modalDialog.js
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Pango = imports.gi.Pango;
const St = imports.gi.St;
@@ -31,10 +30,8 @@ var State = {
FADED_OUT: 4
};
-var ModalDialog = new Lang.Class({
- Name: 'ModalDialog',
-
- _init(params) {
+var ModalDialog = class {
+ constructor(params) {
params = Params.parse(params, { shellReactive: false,
styleClass: null,
actionMode: Shell.ActionMode.SYSTEM_MODAL,
@@ -87,30 +84,30 @@ var ModalDialog = new Lang.Class({
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
this._savedKeyFocus = null;
- },
+ }
destroy() {
this._group.destroy();
- },
+ }
clearButtons() {
this.dialogLayout.clearButtons();
- },
+ }
setButtons(buttons) {
this.clearButtons();
for (let buttonInfo of buttons)
this.addButton(buttonInfo);
- },
+ }
addButton(buttonInfo) {
return this.dialogLayout.addButton(buttonInfo);
- },
+ }
_onGroupDestroy() {
this.emit('destroy');
- },
+ }
_fadeOpen(onPrimary) {
if (onPrimary)
@@ -134,7 +131,7 @@ var ModalDialog = new Lang.Class({
this.emit('opened');
}
});
- },
+ }
setInitialKeyFocus(actor) {
if (this._initialKeyFocusDestroyId)
@@ -146,7 +143,7 @@ var ModalDialog = new Lang.Class({
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
});
- },
+ }
open(timestamp, onPrimary) {
if (this.state == State.OPENED || this.state == State.OPENING)
@@ -157,7 +154,7 @@ var ModalDialog = new Lang.Class({
this._fadeOpen(onPrimary);
return true;
- },
+ }
_closeComplete() {
this.state = State.CLOSED;
@@ -166,7 +163,7 @@ var ModalDialog = new Lang.Class({
if (this._destroyOnClose)
this.destroy();
- },
+ }
close(timestamp) {
if (this.state == State.CLOSED || this.state == State.CLOSING)
@@ -185,7 +182,7 @@ var ModalDialog = new Lang.Class({
})
else
this._closeComplete();
- },
+ }
// Drop modal status without closing the dialog; this makes the
// dialog insensitive as well, so it needs to be followed shortly
@@ -205,7 +202,7 @@ var ModalDialog = new Lang.Class({
if (!this._shellReactive)
this._eventBlocker.raise_top();
- },
+ }
pushModal(timestamp) {
if (this._hasModal)
@@ -229,7 +226,7 @@ var ModalDialog = new Lang.Class({
if (!this._shellReactive)
this._eventBlocker.lower_bottom();
return true;
- },
+ }
// This method is like close, but fades the dialog out much slower,
// and leaves the lightbox in place. Once in the faded out state,
@@ -259,5 +256,5 @@ var ModalDialog = new Lang.Class({
}
});
}
-});
+};
Signals.addSignalMethods(ModalDialog.prototype);
diff --git a/js/ui/mpris.js b/js/ui/mpris.js
index 3b5521265..4968b4e7a 100644
--- a/js/ui/mpris.js
+++ b/js/ui/mpris.js
@@ -1,5 +1,4 @@
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Signals = imports.signals;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -21,15 +20,12 @@ const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface);
const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.';
-var MediaMessage = new Lang.Class({
- Name: 'MediaMessage',
- Extends: MessageList.Message,
+var MediaMessage = class MediaMessage extends MessageList.Message {
+ constructor(player) {
+ super('', '');
- _init(player) {
this._player = player;
- this.parent('', '');
-
this._icon = new St.Icon({ style_class: 'media-message-cover-icon' });
this.setIcon(this._icon);
@@ -51,16 +47,16 @@ var MediaMessage = new Lang.Class({
this._player.connect('changed', this._update.bind(this));
this._player.connect('closed', this.close.bind(this));
this._update();
- },
+ }
_onClicked() {
this._player.raise();
Main.panel.closeCalendar();
- },
+ }
_updateNavButton(button, sensitive) {
button.reactive = sensitive;
- },
+ }
_update() {
this.setTitle(this._player.trackArtists.join(', '));
@@ -83,12 +79,10 @@ var MediaMessage = new Lang.Class({
this._updateNavButton(this._prevButton, this._player.canGoPrevious);
this._updateNavButton(this._nextButton, this._player.canGoNext);
}
-});
+};
-var MprisPlayer = new Lang.Class({
- Name: 'MprisPlayer',
-
- _init(busName) {
+var MprisPlayer = class MprisPlayer {
+ constructor(busName) {
this._mprisProxy = new MprisProxy(Gio.DBus.session, busName,
'/org/mpris/MediaPlayer2',
this._onMprisProxyReady.bind(this));
@@ -100,43 +94,43 @@ var MprisPlayer = new Lang.Class({
this._trackArtists = [];
this._trackTitle = '';
this._trackCoverUrl = '';
- },
+ }
get status() {
return this._playerProxy.PlaybackStatus;
- },
+ }
get trackArtists() {
return this._trackArtists;
- },
+ }
get trackTitle() {
return this._trackTitle;
- },
+ }
get trackCoverUrl() {
return this._trackCoverUrl;
- },
+ }
playPause() {
this._playerProxy.PlayPauseRemote();
- },
+ }
get canGoNext() {
return this._playerProxy.CanGoNext;
- },
+ }
next() {
this._playerProxy.NextRemote();
- },
+ }
get canGoPrevious() {
return this._playerProxy.CanGoPrevious;
- },
+ }
previous() {
this._playerProxy.PreviousRemote();
- },
+ }
raise() {
// The remote Raise() method may run into focus stealing prevention,
@@ -151,7 +145,7 @@ var MprisPlayer = new Lang.Class({
app.activate();
else if (this._mprisProxy.CanRaise)
this._mprisProxy.RaiseRemote();
- },
+ }
_close() {
this._mprisProxy.disconnect(this._ownerNotifyId);
@@ -161,7 +155,7 @@ var MprisPlayer = new Lang.Class({
this._playerProxy = null;
this.emit('closed');
- },
+ }
_onMprisProxyReady() {
this._ownerNotifyId = this._mprisProxy.connect('notify::g-name-owner',
@@ -169,13 +163,13 @@ var MprisPlayer = new Lang.Class({
if (!this._mprisProxy.g_name_owner)
this._close();
});
- },
+ }
_onPlayerProxyReady() {
this._propsChangedId = this._playerProxy.connect('g-properties-changed',
this._updateState.bind(this));
this._updateState();
- },
+ }
_updateState() {
let metadata = {};
@@ -197,15 +191,12 @@ var MprisPlayer = new Lang.Class({
this._close();
}
}
-});
+};
Signals.addSignalMethods(MprisPlayer.prototype);
-var MediaSection = new Lang.Class({
- Name: 'MediaSection',
- Extends: MessageList.MessageListSection,
-
- _init() {
- this.parent();
+var MediaSection = class MediaSection extends MessageList.MessageListSection {
+ constructor() {
+ super();
this._players = new Map();
@@ -213,11 +204,11 @@ var MediaSection = new Lang.Class({
'org.freedesktop.DBus',
'/org/freedesktop/DBus',
this._onProxyReady.bind(this));
- },
+ }
_shouldShow() {
return !this.empty && Calendar.isToday(this._date);
- },
+ }
_addPlayer(busName) {
if (this._players.get(busName))
@@ -234,7 +225,7 @@ var MediaSection = new Lang.Class({
this.addMessage(message, true);
});
this._players.set(busName, player);
- },
+ }
_onProxyReady() {
this._proxy.ListNamesRemote(([names]) => {
@@ -247,7 +238,7 @@ var MediaSection = new Lang.Class({
});
this._proxy.connectSignal('NameOwnerChanged',
this._onNameOwnerChanged.bind(this));
- },
+ }
_onNameOwnerChanged(proxy, sender, [name, oldOwner, newOwner]) {
if (!name.startsWith(MPRIS_PLAYER_PREFIX))
@@ -256,4 +247,4 @@ var MediaSection = new Lang.Class({
if (newOwner && !oldOwner)
this._addPlayer(name);
}
-});
+};
diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js
index bb8185c03..0a456f039 100644
--- a/js/ui/notificationDaemon.js
+++ b/js/ui/notificationDaemon.js
@@ -5,7 +5,6 @@ const GdkPixbuf = imports.gi.GdkPixbuf;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Mainloop = imports.mainloop;
const St = imports.gi.St;
@@ -51,10 +50,8 @@ const rewriteRules = {
]
};
-var FdoNotificationDaemon = new Lang.Class({
- Name: 'FdoNotificationDaemon',
-
- _init() {
+var FdoNotificationDaemon = class FdoNotificationDaemon {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(FdoNotificationsIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications');
@@ -69,7 +66,7 @@ var FdoNotificationDaemon = new Lang.Class({
this._onFocusAppChanged.bind(this));
Main.overview.connect('hidden',
this._onFocusAppChanged.bind(this));
- },
+ }
_imageForNotificationData(hints) {
if (hints['image-data']) {
@@ -81,7 +78,7 @@ var FdoNotificationDaemon = new Lang.Class({
return this._iconForNotificationData(hints['image-path']);
}
return null;
- },
+ }
_fallbackIconForNotificationData(hints) {
let stockIcon;
@@ -95,7 +92,7 @@ var FdoNotificationDaemon = new Lang.Class({
break;
}
return new Gio.ThemedIcon({ name: stockIcon });
- },
+ }
_iconForNotificationData(icon) {
if (icon) {
@@ -107,7 +104,7 @@ var FdoNotificationDaemon = new Lang.Class({
return new Gio.ThemedIcon({ name: icon });
}
return null;
- },
+ }
_lookupSource(title, pid) {
for (let i = 0; i < this._sources.length; i++) {
@@ -116,7 +113,7 @@ var FdoNotificationDaemon = new Lang.Class({
return source;
}
return null;
- },
+ }
// Returns the source associated with ndata.notification if it is set.
// If the existing or requested source is associated with a tray icon
@@ -158,7 +155,7 @@ var FdoNotificationDaemon = new Lang.Class({
Main.messageTray.add(source);
return source;
- },
+ }
NotifyAsync(params, invocation) {
let [appName, replacesId, icon, summary, body, actions, hints, timeout] = params;
@@ -266,7 +263,7 @@ var FdoNotificationDaemon = new Lang.Class({
});
return invocation.return_value(GLib.Variant.new('(u)', [id]));
- },
+ }
_notifyForSource(source, ndata) {
let [id, icon, summary, body, actions, hints, notification] =
@@ -357,7 +354,7 @@ var FdoNotificationDaemon = new Lang.Class({
let sourceGIcon = source.useNotificationIcon ? gicon : null;
source.processNotification(notification, sourceGIcon);
- },
+ }
CloseNotification(id) {
let ndata = this._notifications[id];
@@ -366,7 +363,7 @@ var FdoNotificationDaemon = new Lang.Class({
ndata.notification.destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED);
delete this._notifications[id];
}
- },
+ }
GetCapabilities() {
return [
@@ -381,7 +378,7 @@ var FdoNotificationDaemon = new Lang.Class({
'persistence',
'sound',
];
- },
+ }
GetServerInformation() {
return [
@@ -390,7 +387,7 @@ var FdoNotificationDaemon = new Lang.Class({
Config.PACKAGE_VERSION,
'1.2'
];
- },
+ }
_onFocusAppChanged() {
let tracker = Shell.WindowTracker.get_default();
@@ -404,31 +401,27 @@ var FdoNotificationDaemon = new Lang.Class({
return;
}
}
- },
+ }
_emitNotificationClosed(id, reason) {
this._dbusImpl.emit_signal('NotificationClosed',
GLib.Variant.new('(uu)', [id, reason]));
- },
+ }
_emitActionInvoked(id, action) {
this._dbusImpl.emit_signal('ActionInvoked',
GLib.Variant.new('(us)', [id, action]));
}
-});
+};
-var FdoNotificationDaemonSource = new Lang.Class({
- Name: 'FdoNotificationDaemonSource',
- Extends: MessageTray.Source,
+var FdoNotificationDaemonSource =
+class FdoNotificationDaemonSource extends MessageTray.Source {
+ constructor(title, pid, sender, appId) {
+ super(title);
- _init(title, pid, sender, appId) {
- // Need to set the app before chaining up, so
- // methods called from the parent constructor can find it
this.pid = pid;
this.app = this._getApp(appId);
- this.parent(title);
-
this.initialTitle = title;
if (this.app)
@@ -443,7 +436,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
this._onNameVanished.bind(this));
else
this._nameWatcherId = 0;
- },
+ }
_createPolicy() {
if (this.app && this.app.get_app_info()) {
@@ -452,7 +445,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
} else {
return new MessageTray.NotificationGenericPolicy();
}
- },
+ }
_onNameVanished() {
// Destroy the notification source when its sender is removed from DBus.
@@ -462,7 +455,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
// so allow the code path that handles the tray icon being removed to handle that case.
if (this.app)
this.destroy();
- },
+ }
processNotification(notification, gicon) {
if (gicon)
@@ -474,7 +467,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
this.pushNotification(notification);
else
this.notify(notification);
- },
+ }
_getApp(appId) {
let app;
@@ -490,7 +483,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
}
return null;
- },
+ }
setTitle(title) {
// Do nothing if .app is set, we don't want to override the
@@ -499,13 +492,13 @@ var FdoNotificationDaemonSource = new Lang.Class({
if (this.app)
return;
- this.parent(title);
- },
+ super.setTitle(title);
+ }
open() {
this.openApp();
this.destroyNonResidentNotifications();
- },
+ }
openApp() {
if (this.app == null)
@@ -514,7 +507,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
this.app.activate();
Main.overview.hide();
Main.panel.closeCalendar();
- },
+ }
destroy() {
if (this._nameWatcherId) {
@@ -522,8 +515,8 @@ var FdoNotificationDaemonSource = new Lang.Class({
this._nameWatcherId = 0;
}
- this.parent();
- },
+ super.destroy();
+ }
createIcon(size) {
if (this.app) {
@@ -535,7 +528,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
return null;
}
}
-});
+};
const PRIORITY_URGENCY_MAP = {
low: MessageTray.Urgency.LOW,
@@ -544,12 +537,10 @@ const PRIORITY_URGENCY_MAP = {
urgent: MessageTray.Urgency.CRITICAL
};
-var GtkNotificationDaemonNotification = new Lang.Class({
- Name: 'GtkNotificationDaemonNotification',
- Extends: MessageTray.Notification,
-
- _init(source, notification) {
- this.parent(source);
+var GtkNotificationDaemonNotification =
+class GtkNotificationDaemonNotification extends MessageTray.Notification {
+ constructor(source, notification) {
+ super(source);
this._serialized = GLib.Variant.new('a{sv}', notification);
let { "title": title,
@@ -586,7 +577,7 @@ var GtkNotificationDaemonNotification = new Lang.Class({
this.update(title.unpack(), body ? body.unpack() : null,
{ gicon: gicon ? Gio.icon_deserialize(gicon) : null,
datetime : time ? GLib.DateTime.new_from_unix_local(time.unpack()) : null });
- },
+ }
_activateAction(namespacedActionId, target) {
if (namespacedActionId) {
@@ -597,22 +588,22 @@ var GtkNotificationDaemonNotification = new Lang.Class({
} else {
this.source.open();
}
- },
+ }
_onButtonClicked(button) {
let { 'action': action, 'target': actionTarget } = button;
this._activateAction(action.unpack(), actionTarget);
- },
+ }
activate() {
this._activateAction(this._defaultAction, this._defaultActionTarget);
- this.parent();
- },
+ super.activate();
+ }
serialize() {
return this._serialized;
- },
-});
+ }
+};
const FdoApplicationIface = loadInterfaceXML('org.freedesktop.Application');
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
@@ -628,41 +619,42 @@ function getPlatformData() {
function InvalidAppError() {}
-var GtkNotificationDaemonAppSource = new Lang.Class({
- Name: 'GtkNotificationDaemonAppSource',
- Extends: MessageTray.Source,
+var GtkNotificationDaemonAppSource =
+class GtkNotificationDaemonAppSource extends MessageTray.Source {
+ constructor(appId) {
+ let objectPath = objectPathFromAppId(appId);
+ if (!GLib.Variant.is_object_path(objectPath))
+ throw new InvalidAppError();
+
+ let app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
+ if (!app)
+ throw new InvalidAppError();
+
+ super(app.get_name());
- _init(appId) {
this._appId = appId;
- this._objectPath = objectPathFromAppId(appId);
- if (!GLib.Variant.is_object_path(this._objectPath))
- throw new InvalidAppError();
-
- this._app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
- if (!this._app)
- throw new InvalidAppError();
+ this._app = app;
+ this._objectPath = objectPath;
this._notifications = {};
this._notificationPending = false;
-
- this.parent(this._app.get_name());
- },
+ }
createIcon(size) {
return this._app.create_icon_texture(size);
- },
+ }
_createPolicy() {
return new MessageTray.NotificationApplicationPolicy(this._appId);
- },
+ }
_createApp(callback) {
return new FdoApplicationProxy(Gio.DBus.session, this._appId, this._objectPath, callback);
- },
+ }
_createNotification(params) {
return new GtkNotificationDaemonNotification(this, params);
- },
+ }
activateAction(actionId, target) {
this._createApp((app, error) => {
@@ -673,7 +665,7 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
});
Main.overview.hide();
Main.panel.closeCalendar();
- },
+ }
open() {
this._createApp((app, error) => {
@@ -684,7 +676,7 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
});
Main.overview.hide();
Main.panel.closeCalendar();
- },
+ }
addNotification(notificationId, notificationParams, showBanner) {
this._notificationPending = true;
@@ -704,18 +696,18 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
this.pushNotification(notification);
this._notificationPending = false;
- },
+ }
destroy(reason) {
if (this._notificationPending)
return;
- this.parent(reason);
- },
+ super.destroy(reason);
+ }
removeNotification(notificationId) {
if (this._notifications[notificationId])
this._notifications[notificationId].destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED);
- },
+ }
serialize() {
let notifications = [];
@@ -724,15 +716,13 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
notifications.push([notificationId, notification.serialize()]);
}
return [this._appId, notifications];
- },
-});
+ }
+};
const GtkNotificationsIface = loadInterfaceXML('org.gtk.Notifications');
-var GtkNotificationDaemon = new Lang.Class({
- Name: 'GtkNotificationDaemon',
-
- _init() {
+var GtkNotificationDaemon = class GtkNotificationDaemon {
+ constructor() {
this._sources = {};
this._loadNotifications();
@@ -741,7 +731,7 @@ var GtkNotificationDaemon = new Lang.Class({
this._dbusImpl.export(Gio.DBus.session, '/org/gtk/Notifications');
Gio.DBus.session.own_name('org.gtk.Notifications', Gio.BusNameOwnerFlags.REPLACE, null, null);
- },
+ }
_ensureAppSource(appId) {
if (this._sources[appId])
@@ -757,7 +747,7 @@ var GtkNotificationDaemon = new Lang.Class({
Main.messageTray.add(source);
this._sources[appId] = source;
return source;
- },
+ }
_loadNotifications() {
this._isLoading = true;
@@ -785,7 +775,7 @@ var GtkNotificationDaemon = new Lang.Class({
}
this._isLoading = false;
- },
+ }
_saveNotifications() {
if (this._isLoading)
@@ -798,7 +788,7 @@ var GtkNotificationDaemon = new Lang.Class({
}
global.set_persistent_state('notifications', new GLib.Variant('a(sa(sv))', sources));
- },
+ }
AddNotificationAsync(params, invocation) {
let [appId, notificationId, notification] = params;
@@ -820,7 +810,7 @@ var GtkNotificationDaemon = new Lang.Class({
source.addNotification(notificationId, notification, true);
invocation.return_value(null);
- },
+ }
RemoveNotificationAsync(params, invocation) {
let [appId, notificationId] = params;
@@ -829,14 +819,12 @@ var GtkNotificationDaemon = new Lang.Class({
source.removeNotification(notificationId);
invocation.return_value(null);
- },
-});
+ }
+};
-var NotificationDaemon = new Lang.Class({
- Name: 'NotificationDaemon',
-
- _init() {
+var NotificationDaemon = class NotificationDaemon {
+ constructor() {
this._fdoNotificationDaemon = new FdoNotificationDaemon();
this._gtkNotificationDaemon = new GtkNotificationDaemon();
- },
-});
+ }
+};
diff --git a/js/ui/osdMonitorLabeler.js b/js/ui/osdMonitorLabeler.js
index 9abd6ec83..cdb6e7627 100644
--- a/js/ui/osdMonitorLabeler.js
+++ b/js/ui/osdMonitorLabeler.js
@@ -4,17 +4,14 @@ const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const St = imports.gi.St;
-const Lang = imports.lang;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
const Meta = imports.gi.Meta;
var FADE_TIME = 0.1;
-var OsdMonitorLabel = new Lang.Class({
- Name: 'OsdMonitorLabel',
-
- _init(monitor, label) {
+var OsdMonitorLabel = class {
+ constructor(monitor, label) {
this._actor = new St.Widget({ x_expand: true,
y_expand: true });
@@ -33,7 +30,7 @@ var OsdMonitorLabel = new Lang.Class({
this._position();
Meta.disable_unredirect_for_display(global.display);
- },
+ }
_position() {
let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitor);
@@ -44,18 +41,16 @@ var OsdMonitorLabel = new Lang.Class({
this._box.x = workArea.x;
this._box.y = workArea.y;
- },
+ }
destroy() {
this._actor.destroy();
Meta.enable_unredirect_for_display(global.display);
}
-});
+};
-var OsdMonitorLabeler = new Lang.Class({
- Name: 'OsdMonitorLabeler',
-
- _init() {
+var OsdMonitorLabeler = class {
+ constructor() {
this._monitorManager = Meta.MonitorManager.get();
this._client = null;
this._clientWatchId = 0;
@@ -64,7 +59,7 @@ var OsdMonitorLabeler = new Lang.Class({
Main.layoutManager.connect('monitors-changed',
this._reset.bind(this));
this._reset();
- },
+ }
_reset() {
for (let i in this._osdLabels)
@@ -74,7 +69,7 @@ var OsdMonitorLabeler = new Lang.Class({
let monitors = Main.layoutManager.monitors;
for (let i in monitors)
this._monitorLabels.set(monitors[i].index, []);
- },
+ }
_trackClient(client) {
if (this._client)
@@ -86,7 +81,7 @@ var OsdMonitorLabeler = new Lang.Class({
this.hide(name);
});
return true;
- },
+ }
_untrackClient(client) {
if (!this._client || this._client != client)
@@ -96,7 +91,7 @@ var OsdMonitorLabeler = new Lang.Class({
this._clientWatchId = 0;
this._client = null;
return true;
- },
+ }
show(client, params) {
if (!this._trackClient(client))
@@ -118,7 +113,7 @@ var OsdMonitorLabeler = new Lang.Class({
labels.sort();
this._osdLabels.push(new OsdMonitorLabel(monitor, labels.join(' ')));
}
- },
+ }
show2(client, params) {
if (!this._trackClient(client))
@@ -137,7 +132,7 @@ var OsdMonitorLabeler = new Lang.Class({
labels.sort();
this._osdLabels.push(new OsdMonitorLabel(monitor, labels.join(' ')));
}
- },
+ }
hide(client) {
if (!this._untrackClient(client))
@@ -145,4 +140,4 @@ var OsdMonitorLabeler = new Lang.Class({
this._reset();
}
-});
+};
diff --git a/js/ui/osdWindow.js b/js/ui/osdWindow.js
index d7077a063..557fe1d4b 100644
--- a/js/ui/osdWindow.js
+++ b/js/ui/osdWindow.js
@@ -16,44 +16,38 @@ var HIDE_TIMEOUT = 1500;
var FADE_TIME = 0.1;
var LEVEL_ANIMATION_TIME = 0.1;
-var LevelBar = new Lang.Class({
- Name: 'LevelBar',
- Extends: BarLevel.BarLevel,
+var LevelBar = class extends BarLevel.BarLevel {
+ constructor() {
+ super(0, { styleClass: 'level' });
- _init() {
this._level = 0;
this._maxLevel = 100;
- let params = {
- styleClass: 'level',
- }
- this.parent(this._level, params);
-
this.actor.accessible_name = _("Volume");
this.actor.connect('notify::width', () => { this.level = this.level; });
- },
+ }
get level() {
return this._level;
- },
+ }
set level(value) {
this._level = Math.max(0, Math.min(value, this._maxLevel));
this.setValue(this._level / 100);
- },
+ }
get maxLevel() {
return this._maxLevel;
- },
+ }
set maxLevel(value) {
this._maxLevel = Math.max(100, value);
this.setMaximumValue(this._maxLevel / 100);
}
-});
+};
var OsdWindowConstraint = new Lang.Class({
Name: 'OsdWindowConstraint',
@@ -87,10 +81,8 @@ var OsdWindowConstraint = new Lang.Class({
}
});
-var OsdWindow = new Lang.Class({
- Name: 'OsdWindow',
-
- _init(monitorIndex) {
+var OsdWindow = class {
+ constructor(monitorIndex) {
this.actor = new St.Widget({ x_expand: true,
y_expand: true,
x_align: Clutter.ActorAlign.CENTER,
@@ -129,7 +121,7 @@ var OsdWindow = new Lang.Class({
this._relayout.bind(this));
this._relayout();
Main.uiGroup.add_child(this.actor);
- },
+ }
_onDestroy() {
if (this._monitorsChangedId)
@@ -140,17 +132,17 @@ var OsdWindow = new Lang.Class({
if (this._scaleChangedId)
themeContext.disconnect(this._scaleChangedId);
this._scaleChangedId = 0;
- },
+ }
setIcon(icon) {
this._icon.gicon = icon;
- },
+ }
setLabel(label) {
this._label.visible = (label != undefined);
if (label)
this._label.text = label;
- },
+ }
setLevel(level) {
this._level.actor.visible = (level != undefined);
@@ -163,13 +155,13 @@ var OsdWindow = new Lang.Class({
else
this._level.level = level;
}
- },
+ }
setMaxLevel(maxLevel) {
if (maxLevel === undefined)
maxLevel = 100;
this._level.maxLevel = maxLevel;
- },
+ }
show() {
if (!this._icon.gicon)
@@ -192,7 +184,7 @@ var OsdWindow = new Lang.Class({
this._hideTimeoutId = Mainloop.timeout_add(HIDE_TIMEOUT,
this._hide.bind(this));
GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide');
- },
+ }
cancel() {
if (!this._hideTimeoutId)
@@ -200,7 +192,7 @@ var OsdWindow = new Lang.Class({
Mainloop.source_remove(this._hideTimeoutId);
this._hide();
- },
+ }
_hide() {
this._hideTimeoutId = 0;
@@ -214,14 +206,14 @@ var OsdWindow = new Lang.Class({
}
});
return GLib.SOURCE_REMOVE;
- },
+ }
_reset() {
this.actor.hide();
this.setLabel(null);
this.setMaxLevel(null);
this.setLevel(null);
- },
+ }
_relayout() {
/* assume 110x110 on a 640x480 display and scale from there */
@@ -239,17 +231,15 @@ var OsdWindow = new Lang.Class({
this._box.translation_y = Math.round(monitor.height / 4);
this._boxConstraint.minSize = popupSize;
}
-});
+};
-var OsdWindowManager = new Lang.Class({
- Name: 'OsdWindowManager',
-
- _init() {
+var OsdWindowManager = class {
+ constructor() {
this._osdWindows = [];
Main.layoutManager.connect('monitors-changed',
this._monitorsChanged.bind(this));
this._monitorsChanged();
- },
+ }
_monitorsChanged() {
for (let i = 0; i < Main.layoutManager.monitors.length; i++) {
@@ -263,7 +253,7 @@ var OsdWindowManager = new Lang.Class({
}
this._osdWindows.length = Main.layoutManager.monitors.length;
- },
+ }
_showOsdWindow(monitorIndex, icon, label, level, maxLevel) {
this._osdWindows[monitorIndex].setIcon(icon);
@@ -271,7 +261,7 @@ var OsdWindowManager = new Lang.Class({
this._osdWindows[monitorIndex].setMaxLevel(maxLevel);
this._osdWindows[monitorIndex].setLevel(level);
this._osdWindows[monitorIndex].show();
- },
+ }
show(monitorIndex, icon, label, level, maxLevel) {
if (monitorIndex != -1) {
@@ -285,10 +275,10 @@ var OsdWindowManager = new Lang.Class({
for (let i = 0; i < this._osdWindows.length; i++)
this._showOsdWindow(i, icon, label, level, maxLevel);
}
- },
+ }
hideAll() {
for (let i = 0; i < this._osdWindows.length; i++)
this._osdWindows[i].cancel();
}
-});
+};
diff --git a/js/ui/overview.js b/js/ui/overview.js
index 35f5927a0..602e190a7 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -6,7 +6,6 @@ const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
-const Lang = imports.lang;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
const Gdk = imports.gi.Gdk;
@@ -35,13 +34,11 @@ var DND_WINDOW_SWITCH_TIMEOUT = 750;
var OVERVIEW_ACTIVATION_TIMEOUT = 0.5;
-var ShellInfo = new Lang.Class({
- Name: 'ShellInfo',
-
- _init() {
+var ShellInfo = class {
+ constructor() {
this._source = null;
this._undoCallback = null;
- },
+ }
_onUndoClicked() {
if (this._undoCallback)
@@ -50,7 +47,7 @@ var ShellInfo = new Lang.Class({
if (this._source)
this._source.destroy();
- },
+ }
setMessage(text, options) {
options = Params.parse(options, { undoCallback: null,
@@ -84,18 +81,16 @@ var ShellInfo = new Lang.Class({
this._source.notify(notification);
}
-});
+};
-var Overview = new Lang.Class({
- Name: 'Overview',
-
- _init() {
+var Overview = class {
+ constructor() {
this._overviewCreated = false;
this._initCalled = false;
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
this._sessionUpdated();
- },
+ }
_createOverview() {
if (this._overviewCreated)
@@ -167,7 +162,7 @@ var Overview = new Lang.Class({
if (this._initCalled)
this.init();
- },
+ }
_updateBackgrounds() {
for (let i = 0; i < this._bgManagers.length; i++)
@@ -181,7 +176,7 @@ var Overview = new Lang.Class({
vignette: true });
this._bgManagers.push(bgManager);
}
- },
+ }
_unshadeBackgrounds() {
let backgrounds = this._backgroundGroup.get_children();
@@ -193,7 +188,7 @@ var Overview = new Lang.Class({
transition: 'easeOutQuad'
});
}
- },
+ }
_shadeBackgrounds() {
let backgrounds = this._backgroundGroup.get_children();
@@ -205,12 +200,12 @@ var Overview = new Lang.Class({
transition: 'easeOutQuad'
});
}
- },
+ }
_sessionUpdated() {
this.isDummy = !Main.sessionMode.hasOverview;
this._createOverview();
- },
+ }
// The members we construct that are implemented in JS might
// want to access the overview as Main.overview to connect
@@ -259,15 +254,15 @@ var Overview = new Lang.Class({
Main.layoutManager.connect('monitors-changed', this._relayout.bind(this));
this._relayout();
- },
+ }
addSearchProvider(provider) {
this.viewSelector.addSearchProvider(provider);
- },
+ }
removeSearchProvider(provider) {
this.viewSelector.removeSearchProvider(provider);
- },
+ }
//
// options:
@@ -279,7 +274,7 @@ var Overview = new Lang.Class({
return;
this._shellInfo.setMessage(text, options);
- },
+ }
_onDragBegin() {
this._inXdndDrag = true;
@@ -288,7 +283,7 @@ var Overview = new Lang.Class({
// Remember the workspace we started from
let workspaceManager = global.workspace_manager;
this._lastActiveWorkspaceIndex = workspaceManager.get_active_workspace_index();
- },
+ }
_onDragEnd(time) {
this._inXdndDrag = false;
@@ -305,7 +300,7 @@ var Overview = new Lang.Class({
this._lastHoveredWindow = null;
DND.removeDragMonitor(this._dragMonitor);
this.endItemDrag();
- },
+ }
_resetWindowSwitchTimeout() {
if (this._windowSwitchTimeoutId != 0) {
@@ -313,7 +308,7 @@ var Overview = new Lang.Class({
this._windowSwitchTimeoutId = 0;
this._needsFakePointerEvent = false;
}
- },
+ }
_fakePointerEvent() {
let display = Gdk.Display.get_default();
@@ -322,7 +317,7 @@ var Overview = new Lang.Class({
let [gdkScreen, pointerX, pointerY] = pointer.get_position();
pointer.warp(gdkScreen, pointerX, pointerY);
- },
+ }
_onDragMotion(dragEvent) {
let targetIsWindow = dragEvent.targetActor &&
@@ -356,19 +351,19 @@ var Overview = new Lang.Class({
}
return DND.DragMotionResult.CONTINUE;
- },
+ }
_onScrollEvent(actor, event) {
this.emit('scroll-event', event);
return Clutter.EVENT_PROPAGATE;
- },
+ }
addAction(action) {
if (this.isDummy)
return;
this._backgroundGroup.add_action(action);
- },
+ }
_getDesktopClone() {
let windows = global.get_window_actors().filter(
@@ -384,7 +379,7 @@ var Overview = new Lang.Class({
clone.destroy();
});
return clone;
- },
+ }
_relayout() {
// To avoid updating the position and size of the workspaces
@@ -399,7 +394,7 @@ var Overview = new Lang.Class({
this._coverPane.set_size(global.screen_width, global.screen_height);
this._updateBackgrounds();
- },
+ }
_onRestacked() {
let stack = global.get_window_actors();
@@ -411,44 +406,44 @@ var Overview = new Lang.Class({
}
this.emit('windows-restacked', stackIndices);
- },
+ }
beginItemDrag(source) {
this.emit('item-drag-begin');
this._inItemDrag = true;
- },
+ }
cancelledItemDrag(source) {
this.emit('item-drag-cancelled');
- },
+ }
endItemDrag(source) {
if (!this._inItemDrag)
return;
this.emit('item-drag-end');
this._inItemDrag = false;
- },
+ }
beginWindowDrag(window) {
this.emit('window-drag-begin', window);
this._inWindowDrag = true;
- },
+ }
cancelledWindowDrag(window) {
this.emit('window-drag-cancelled', window);
- },
+ }
endWindowDrag(window) {
if (!this._inWindowDrag)
return;
this.emit('window-drag-end', window);
this._inWindowDrag = false;
- },
+ }
focusSearch() {
this.show();
this._searchEntry.grab_key_focus();
- },
+ }
fadeInDesktop() {
this._desktopFade.opacity = 0;
@@ -457,7 +452,7 @@ var Overview = new Lang.Class({
{ opacity: 255,
time: ANIMATION_TIME,
transition: 'easeOutQuad' });
- },
+ }
fadeOutDesktop() {
if (!this._desktopFade.get_n_children()) {
@@ -475,7 +470,7 @@ var Overview = new Lang.Class({
time: ANIMATION_TIME,
transition: 'easeOutQuad'
});
- },
+ }
// Checks if the Activities button is currently sensitive to
// clicks. The first call to this function within the
@@ -492,7 +487,7 @@ var Overview = new Lang.Class({
GLib.get_monotonic_time() / GLib.USEC_PER_SEC - this._activationTime > OVERVIEW_ACTIVATION_TIMEOUT)
return true;
return false;
- },
+ }
_syncGrab() {
// We delay grab changes during animation so that when removing the
@@ -521,7 +516,7 @@ var Overview = new Lang.Class({
}
}
return true;
- },
+ }
// show:
//
@@ -538,7 +533,7 @@ var Overview = new Lang.Class({
Main.layoutManager.showOverview();
this._animateVisible();
- },
+ }
_animateVisible() {
@@ -566,7 +561,7 @@ var Overview = new Lang.Class({
this._coverPane.raise_top();
this._coverPane.show();
this.emit('showing');
- },
+ }
_showDone() {
this.animationInProgress = false;
@@ -580,7 +575,7 @@ var Overview = new Lang.Class({
this._syncGrab();
global.sync_pointer();
- },
+ }
// hide:
//
@@ -606,8 +601,7 @@ var Overview = new Lang.Class({
this._animateNotVisible();
this._syncGrab();
- },
-
+ }
_animateNotVisible() {
if (!this.visible || this.animationInProgress)
@@ -631,7 +625,7 @@ var Overview = new Lang.Class({
this._coverPane.raise_top();
this._coverPane.show();
this.emit('hiding');
- },
+ }
_hideDone() {
// Re-enable unredirection
@@ -658,7 +652,7 @@ var Overview = new Lang.Class({
this._fakePointerEvent();
this._needsFakePointerEvent = false;
}
- },
+ }
toggle() {
if (this.isDummy)
@@ -668,10 +662,10 @@ var Overview = new Lang.Class({
this.hide();
else
this.show();
- },
+ }
getShowAppsButton() {
return this._dash.showAppsButton;
}
-});
+};
Signals.addSignalMethods(Overview.prototype);
diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js
index 6dd4ae032..d57c27ac2 100644
--- a/js/ui/overviewControls.js
+++ b/js/ui/overviewControls.js
@@ -104,10 +104,8 @@ var SlideLayout = new Lang.Class({
},
});
-var SlidingControl = new Lang.Class({
- Name: 'SlidingControl',
-
- _init(params) {
+var SlidingControl = class {
+ constructor(params) {
params = Params.parse(params, { slideDirection: SlideDirection.LEFT });
this._visible = true;
@@ -128,23 +126,23 @@ var SlidingControl = new Lang.Class({
Main.overview.connect('window-drag-begin', this._onWindowDragBegin.bind(this));
Main.overview.connect('window-drag-cancelled', this._onWindowDragEnd.bind(this));
Main.overview.connect('window-drag-end', this._onWindowDragEnd.bind(this));
- },
+ }
_getSlide() {
throw new Error('getSlide() must be overridden');
- },
+ }
_updateSlide() {
Tweener.addTween(this.layout, { slideX: this._getSlide(),
time: SIDE_CONTROLS_ANIMATION_TIME,
transition: 'easeOutQuad' });
- },
+ }
getVisibleWidth() {
let child = this.actor.get_first_child();
let [, , natWidth, ] = child.get_preferred_size();
return natWidth;
- },
+ }
_getTranslation() {
let child = this.actor.get_first_child();
@@ -155,7 +153,7 @@ var SlidingControl = new Lang.Class({
return - visibleWidth;
else
return visibleWidth;
- },
+ }
_updateTranslation() {
let translationStart = 0;
@@ -176,57 +174,57 @@ var SlidingControl = new Lang.Class({
Tweener.addTween(this.layout, { translationX: translationEnd,
time: SIDE_CONTROLS_ANIMATION_TIME,
transition: 'easeOutQuad' });
- },
+ }
_onOverviewHiding() {
// We need to explicitly slideOut since showing pages
// doesn't imply sliding out, instead, hiding the overview does.
this.slideOut();
- },
+ }
_onWindowDragBegin() {
this._onDragBegin();
- },
+ }
_onWindowDragEnd() {
this._onDragEnd();
- },
+ }
_onDragBegin() {
this._inDrag = true;
this._updateTranslation();
this._updateSlide();
- },
+ }
_onDragEnd() {
this._inDrag = false;
this._updateSlide();
- },
+ }
fadeIn() {
Tweener.addTween(this.actor, { opacity: 255,
time: SIDE_CONTROLS_ANIMATION_TIME / 2,
transition: 'easeInQuad'
});
- },
+ }
fadeHalf() {
Tweener.addTween(this.actor, { opacity: 128,
time: SIDE_CONTROLS_ANIMATION_TIME / 2,
transition: 'easeOutQuad'
});
- },
+ }
slideIn() {
this._visible = true;
// we will update slideX and the translation from pageEmpty
- },
+ }
slideOut() {
this._visible = false;
this._updateTranslation();
// we will update slideX from pageEmpty
- },
+ }
pageEmpty() {
// When pageEmpty is received, there's no visible view in the
@@ -236,14 +234,11 @@ var SlidingControl = new Lang.Class({
this.layout.slideX = this._getSlide();
this._updateTranslation();
}
-});
+};
-var ThumbnailsSlider = new Lang.Class({
- Name: 'ThumbnailsSlider',
- Extends: SlidingControl,
-
- _init(thumbnailsBox) {
- this.parent({ slideDirection: SlideDirection.RIGHT });
+var ThumbnailsSlider = class extends SlidingControl {
+ constructor(thumbnailsBox) {
+ super({ slideDirection: SlideDirection.RIGHT });
this._thumbnailsBox = thumbnailsBox;
@@ -259,7 +254,7 @@ var ThumbnailsSlider = new Lang.Class({
this._updateSlide.bind(this));
this.actor.connect('notify::hover', this._updateSlide.bind(this));
this._thumbnailsBox.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
- },
+ }
_getAlwaysZoomOut() {
// Always show the pager on hover, during a drag, or if workspaces are
@@ -287,17 +282,17 @@ var ThumbnailsSlider = new Lang.Class({
}
return alwaysZoomOut;
- },
+ }
getNonExpandedWidth() {
let child = this.actor.get_first_child();
return child.get_theme_node().get_length('visible-width');
- },
+ }
_onDragEnd() {
this.actor.sync_hover();
- this.parent();
- },
+ super._onDragEnd();
+ }
_getSlide() {
if (!this._visible)
@@ -312,23 +307,20 @@ var ThumbnailsSlider = new Lang.Class({
let expandedWidth = child.get_preferred_width(preferredHeight)[1];
return this.getNonExpandedWidth() / expandedWidth;
- },
+ }
getVisibleWidth() {
let alwaysZoomOut = this._getAlwaysZoomOut();
if (alwaysZoomOut)
- return this.parent();
+ return super.getVisibleWidth();
else
return this.getNonExpandedWidth();
}
-});
+};
-var DashSlider = new Lang.Class({
- Name: 'DashSlider',
- Extends: SlidingControl,
-
- _init(dash) {
- this.parent({ slideDirection: SlideDirection.LEFT });
+var DashSlider = class extends SlidingControl {
+ constructor(dash) {
+ super({ slideDirection: SlideDirection.LEFT });
this._dash = dash;
@@ -344,23 +336,23 @@ var DashSlider = new Lang.Class({
this.actor.add_actor(this._dash.actor);
this._dash.connect('icon-size-changed', this._updateSlide.bind(this));
- },
+ }
_getSlide() {
if (this._visible || this._inDrag)
return 1;
else
return 0;
- },
+ }
_onWindowDragBegin() {
this.fadeHalf();
- },
+ }
_onWindowDragEnd() {
this.fadeIn();
}
-});
+};
var DashSpacer = new Lang.Class({
Name: 'DashSpacer',
@@ -411,10 +403,8 @@ var ControlsLayout = new Lang.Class({
}
});
-var ControlsManager = new Lang.Class({
- Name: 'ControlsManager',
-
- _init(searchEntry) {
+var ControlsManager = class {
+ constructor(searchEntry) {
this.dash = new Dash.Dash();
this._dashSlider = new DashSlider(this.dash);
this._dashSpacer = new DashSpacer();
@@ -457,7 +447,7 @@ var ControlsManager = new Lang.Class({
Main.overview.connect('item-drag-cancelled', () => {
this.viewSelector.fadeIn();
});
- },
+ }
_updateWorkspacesGeometry() {
let [x, y] = this.actor.get_transformed_position();
@@ -477,7 +467,7 @@ var ControlsManager = new Lang.Class({
geometry.x += thumbnailsWidth;
this.viewSelector.setWorkspacesFullGeometry(geometry);
- },
+ }
_setVisibility() {
// Ignore the case when we're leaving the overview, since
@@ -502,7 +492,7 @@ var ControlsManager = new Lang.Class({
this._thumbnailsSlider.slideIn();
else
this._thumbnailsSlider.slideOut();
- },
+ }
_updateSpacerVisibility() {
if (Main.overview.animationInProgress && !Main.overview.visibleTarget)
@@ -510,7 +500,7 @@ var ControlsManager = new Lang.Class({
let activePage = this.viewSelector.getActivePage();
this._dashSpacer.visible = (activePage == ViewSelector.ViewPage.WINDOWS);
- },
+ }
_onPageEmpty() {
this._dashSlider.pageEmpty();
@@ -518,4 +508,4 @@ var ControlsManager = new Lang.Class({
this._updateSpacerVisibility();
}
-});
+};
diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js
index 48219026c..79b3eeb79 100644
--- a/js/ui/padOsd.js
+++ b/js/ui/padOsd.js
@@ -32,10 +32,8 @@ const CCW = 1;
const UP = 0;
const DOWN = 1;
-var PadChooser = new Lang.Class({
- Name: 'PadChooser',
-
- _init(device, groupDevices) {
+var PadChooser = class {
+ constructor(device, groupDevices) {
this.actor = new St.Button({ style_class: 'pad-chooser-button',
toggle_mode: true,
x_fill: false,
@@ -62,7 +60,7 @@ var PadChooser = new Lang.Class({
this._padChooserMenu.close(true);
}
});
- },
+ }
_ensureMenu(devices) {
this._padChooserMenu = new PopupMenu.PopupMenu(this.actor, 0.5, St.Side.TOP);
@@ -81,33 +79,31 @@ var PadChooser = new Lang.Class({
this.emit('pad-selected', device);
});
}
- },
+ }
_onDestroy() {
this._padChooserMenu.destroy();
- },
+ }
update(devices) {
if (this._padChooserMenu)
this._padChooserMenu.actor.destroy();
this.actor.set_checked(false);
this._ensureMenu(devices);
- },
+ }
destroy() {
this.actor.destroy();
- },
-});
+ }
+};
Signals.addSignalMethods(PadChooser.prototype);
-var KeybindingEntry = new Lang.Class({
- Name: 'KeybindingEntry',
-
- _init() {
+var KeybindingEntry = class {
+ constructor() {
this.actor = new St.Entry({ hint_text: _("New shortcut…"),
style: 'width: 10em' });
this.actor.connect('captured-event', this._onCapturedEvent.bind(this));
- },
+ }
_onCapturedEvent(actor, event) {
if (event.type() != Clutter.EventType.KEY_PRESS)
@@ -121,13 +117,11 @@ var KeybindingEntry = new Lang.Class({
this.emit('keybinding-edited', str);
return Clutter.EVENT_STOP;
}
-});
+};
Signals.addSignalMethods(KeybindingEntry.prototype);
-var ActionComboBox = new Lang.Class({
- Name: 'ActionComboBox',
-
- _init() {
+var ActionComboBox = class {
+ constructor() {
this.actor = new St.Button({ style_class: 'button' });
this.actor.connect('clicked', this._onButtonClicked.bind(this));
this.actor.set_toggle_mode(true);
@@ -175,43 +169,41 @@ var ActionComboBox = new Lang.Class({
}
this.setAction(GDesktopEnums.PadButtonAction.NONE);
- },
+ }
_onActionSelected(action) {
this.setAction(action);
this.popdown();
this.emit('action-selected', action);
- },
+ }
setAction(action) {
this._label.set_text(this._actionLabels.get(action));
- },
+ }
popup() {
this._editMenu.open(true);
- },
+ }
popdown() {
this._editMenu.close(true);
- },
+ }
_onButtonClicked() {
if (this.actor.get_checked())
this.popup();
else
this.popdown();
- },
+ }
setButtonActionsActive(active) {
this._buttonItems.forEach(item => { item.setSensitive(active); });
}
-});
+};
Signals.addSignalMethods(ActionComboBox.prototype);
-var ActionEditor = new Lang.Class({
- Name: 'ActionEditor',
-
- _init() {
+var ActionEditor = class {
+ constructor() {
let boxLayout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.HORIZONTAL,
spacing: 12 });
@@ -230,7 +222,7 @@ var ActionEditor = new Lang.Class({
x_expand: false});
this._doneButton.connect('clicked', this._onEditingDone.bind(this));
this.actor.add_actor(this._doneButton);
- },
+ }
_updateKeybindingEntryState() {
if (this._currentAction == GDesktopEnums.PadButtonAction.KEYBINDING) {
@@ -240,7 +232,7 @@ var ActionEditor = new Lang.Class({
} else {
this._keybindingEdit.actor.hide();
}
- },
+ }
setSettings(settings, action) {
this._buttonSettings = settings;
@@ -252,21 +244,21 @@ var ActionEditor = new Lang.Class({
let isButton = (action == Meta.PadActionType.BUTTON);
this._actionComboBox.setButtonActionsActive(isButton);
- },
+ }
close() {
this._actionComboBox.popdown();
this.actor.hide();
- },
+ }
_onKeybindingEdited(entry, keybinding) {
this._currentKeybinding = keybinding;
- },
+ }
_onActionSelected(menu, action) {
this._currentAction = action;
this._updateKeybindingEntryState();
- },
+ }
_storeSettings() {
if (!this._buttonSettings)
@@ -283,14 +275,14 @@ var ActionEditor = new Lang.Class({
this._buttonSettings.set_string('keybinding', keybinding);
else
this._buttonSettings.reset('keybinding');
- },
+ }
_onEditingDone() {
this._storeSettings();
this.close();
this.emit('done');
}
-});
+};
Signals.addSignalMethods(ActionEditor.prototype);
var PadDiagram = new Lang.Class({
@@ -629,10 +621,8 @@ var PadDiagram = new Lang.Class({
}
});
-var PadOsd = new Lang.Class({
- Name: 'PadOsd',
-
- _init(padDevice, settings, imagePath, editionMode, monitorIndex) {
+var PadOsd = class {
+ constructor(padDevice, settings, imagePath, editionMode, monitorIndex) {
this.padDevice = padDevice;
this._groupPads = [ padDevice ];
this._settings = settings;
@@ -752,7 +742,7 @@ var PadOsd = new Lang.Class({
this._syncEditionMode();
Main.pushModal(this.actor);
- },
+ }
_updatePadChooser() {
if (this._groupPads.length > 1) {
@@ -769,7 +759,7 @@ var PadOsd = new Lang.Class({
this._padChooser.destroy();
this._padChooser = null;
}
- },
+ }
_requestForOtherPad(pad) {
if (pad == this.padDevice ||
@@ -779,13 +769,13 @@ var PadOsd = new Lang.Class({
let editionMode = this._editionMode;
this.destroy();
global.display.request_pad_osd(pad, editionMode);
- },
+ }
_createLabel(type, number, dir) {
let str = global.display.get_pad_action_label(this.padDevice, type, number);
let label = new St.Label({ text: str ? str : _("None") });
this._padDiagram.addLabel(label, type, number, dir);
- },
+ }
_onCapturedEvent(actor, event) {
if (event.type() == Clutter.EventType.PAD_BUTTON_PRESS &&
@@ -830,7 +820,7 @@ var PadOsd = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_syncEditionMode() {
this._editButton.set_reactive(!this._editionMode);
@@ -850,7 +840,7 @@ var PadOsd = new Lang.Class({
}
this._titleLabel.clutter_text.set_markup('' + title + '');
- },
+ }
_isEditedAction(type, number, dir) {
if (!this._editedAction)
@@ -859,7 +849,7 @@ var PadOsd = new Lang.Class({
return (this._editedAction.type == type &&
this._editedAction.number == number &&
this._editedAction.dir == dir);
- },
+ }
_followUpActionEdition(str) {
let { type, dir, number, mode } = this._editedAction;
@@ -876,7 +866,7 @@ var PadOsd = new Lang.Class({
this._startStripActionEdition(number, DOWN, mode);
return true;
- },
+ }
_endActionEdition() {
this._actionEditor.close();
@@ -893,7 +883,7 @@ var PadOsd = new Lang.Class({
}
this._editedActionSettings = null;
- },
+ }
_startActionEdition(key, type, number, dir, mode) {
if (this._isEditedAction(type, number, dir))
@@ -907,25 +897,25 @@ var PadOsd = new Lang.Class({
settingsPath);
this._actionEditor.setSettings(this._editedActionSettings, type);
this._padDiagram.startEdition(type, number, dir);
- },
+ }
_startButtonActionEdition(button) {
let ch = String.fromCharCode('A'.charCodeAt() + button);
let key = 'button' + ch;
this._startActionEdition(key, Meta.PadActionType.BUTTON, button);
- },
+ }
_startRingActionEdition(ring, dir, mode) {
let ch = String.fromCharCode('A'.charCodeAt() + ring);
let key = 'ring%s-%s-mode-%d'.format(ch, dir == CCW ? 'ccw' : 'cw', mode);
this._startActionEdition(key, Meta.PadActionType.RING, ring, dir, mode);
- },
+ }
_startStripActionEdition(strip, dir, mode) {
let ch = String.fromCharCode('A'.charCodeAt() + strip);
let key = 'strip%s-%s-mode-%d'.format(ch, dir == UP ? 'up' : 'down', mode);
this._startActionEdition(key, Meta.PadActionType.STRIP, strip, dir, mode);
- },
+ }
setEditionMode(editionMode) {
if (this._editionMode == editionMode)
@@ -933,11 +923,11 @@ var PadOsd = new Lang.Class({
this._editionMode = editionMode;
this._syncEditionMode();
- },
+ }
destroy() {
this.actor.destroy();
- },
+ }
_onDestroy() {
Main.popModal(this.actor);
@@ -961,19 +951,17 @@ var PadOsd = new Lang.Class({
this.actor = null;
this.emit('closed');
}
-});
+};
Signals.addSignalMethods(PadOsd.prototype);
const PadOsdIface = loadInterfaceXML('org.gnome.Shell.Wacom.PadOsd');
-var PadOsdService = new Lang.Class({
- Name: 'PadOsdService',
-
- _init() {
+var PadOsdService = class {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(PadOsdIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Wacom');
Gio.DBus.session.own_name('org.gnome.Shell.Wacom.PadOsd', Gio.BusNameOwnerFlags.REPLACE, null, null);
- },
+ }
ShowAsync(params, invocation) {
let [deviceNode, editionMode] = params;
@@ -997,5 +985,5 @@ var PadOsdService = new Lang.Class({
global.display.request_pad_osd(padDevice, editionMode);
invocation.return_value(null);
}
-});
+};
Signals.addSignalMethods(PadOsdService.prototype);
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 1c6445a35..13eab5bed 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -488,16 +488,14 @@ var ActivitiesButton = new Lang.Class({
}
});
-var PanelCorner = new Lang.Class({
- Name: 'PanelCorner',
-
- _init(side) {
+var PanelCorner = class {
+ constructor(side) {
this._side = side;
this.actor = new St.DrawingArea({ style_class: 'panel-corner' });
this.actor.connect('style-changed', this._styleChanged.bind(this));
this.actor.connect('repaint', this._repaint.bind(this));
- },
+ }
_findRightmostButton(container) {
if (!container.get_children)
@@ -522,7 +520,7 @@ var PanelCorner = new Lang.Class({
return this._findRightmostButton(children[index]);
return children[index];
- },
+ }
_findLeftmostButton(container) {
if (!container.get_children)
@@ -547,7 +545,7 @@ var PanelCorner = new Lang.Class({
return this._findLeftmostButton(children[index]);
return children[index];
- },
+ }
setStyleParent(box) {
let side = this._side;
@@ -593,7 +591,7 @@ var PanelCorner = new Lang.Class({
// the .panel-button default
button.style = 'transition-duration: 0ms';
}
- },
+ }
_repaint() {
let node = this.actor.get_theme_node();
@@ -641,7 +639,7 @@ var PanelCorner = new Lang.Class({
}
cr.$dispose();
- },
+ }
_styleChanged() {
let node = this.actor.get_theme_node();
@@ -652,7 +650,7 @@ var PanelCorner = new Lang.Class({
this.actor.set_size(cornerRadius, borderWidth + cornerRadius);
this.actor.set_anchor_point(0, borderWidth);
}
-});
+};
var AggregateLayout = new Lang.Class({
Name: 'AggregateLayout',
diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js
index 401419dec..d6c7b10b7 100644
--- a/js/ui/panelMenu.js
+++ b/js/ui/panelMenu.js
@@ -210,19 +210,17 @@ var Button = new Lang.Class({
* of an icon and a menu section, which will be composed into the
* aggregate menu.
*/
-var SystemIndicator = new Lang.Class({
- Name: 'SystemIndicator',
-
- _init() {
+var SystemIndicator = class {
+ constructor() {
this.indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box',
reactive: true });
this.indicators.hide();
this.menu = new PopupMenu.PopupMenuSection();
- },
+ }
_syncIndicatorsVisible() {
this.indicators.visible = this.indicators.get_children().some(a => a.visible);
- },
+ }
_addIndicator() {
let icon = new St.Icon({ style_class: 'system-status-icon' });
@@ -231,5 +229,5 @@ var SystemIndicator = new Lang.Class({
this._syncIndicatorsVisible();
return icon;
}
-});
+};
Signals.addSignalMethods(SystemIndicator.prototype);
diff --git a/js/ui/pointerWatcher.js b/js/ui/pointerWatcher.js
index 3b1fbdb8f..26bb28527 100644
--- a/js/ui/pointerWatcher.js
+++ b/js/ui/pointerWatcher.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const GnomeDesktop = imports.gi.GnomeDesktop;
@@ -22,14 +21,12 @@ function getPointerWatcher() {
return _pointerWatcher;
}
-var PointerWatch = new Lang.Class({
- Name: 'PointerWatch',
-
- _init(watcher, interval, callback) {
+var PointerWatch = class {
+ constructor(watcher, interval, callback) {
this.watcher = watcher;
this.interval = interval;
this.callback = callback;
- },
+ }
// remove:
// remove this watch. This function may safely be called
@@ -37,19 +34,17 @@ var PointerWatch = new Lang.Class({
remove() {
this.watcher._removeWatch(this);
}
-});
+};
-var PointerWatcher = new Lang.Class({
- Name: 'PointerWatcher',
-
- _init() {
+var PointerWatcher = class {
+ constructor() {
this._idleMonitor = Meta.IdleMonitor.get_core();
this._idleMonitor.add_idle_watch(IDLE_TIME, this._onIdleMonitorBecameIdle.bind(this));
this._idle = this._idleMonitor.get_idletime() > IDLE_TIME;
this._watches = [];
this.pointerX = null;
this.pointerY = null;
- },
+ }
// addWatch:
// @interval: hint as to the time resolution needed. When the user is
@@ -68,7 +63,7 @@ var PointerWatcher = new Lang.Class({
this._watches.push(watch);
this._updateTimeout();
return watch;
- },
+ }
_removeWatch(watch) {
for (let i = 0; i < this._watches.length; i++) {
@@ -78,19 +73,19 @@ var PointerWatcher = new Lang.Class({
return;
}
}
- },
+ }
_onIdleMonitorBecameActive(monitor) {
this._idle = false;
this._updatePointer();
this._updateTimeout();
- },
+ }
_onIdleMonitorBecameIdle(monitor) {
this._idle = true;
this._idleMonitor.add_user_active_watch(this._onIdleMonitorBecameActive.bind(this));
this._updateTimeout();
- },
+ }
_updateTimeout() {
if (this._timeoutId) {
@@ -108,12 +103,12 @@ var PointerWatcher = new Lang.Class({
this._timeoutId = Mainloop.timeout_add(minInterval,
this._onTimeout.bind(this));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
- },
+ }
_onTimeout() {
this._updatePointer();
return GLib.SOURCE_CONTINUE;
- },
+ }
_updatePointer() {
let [x, y, mods] = global.get_pointer();
@@ -130,4 +125,4 @@ var PointerWatcher = new Lang.Class({
i++;
}
}
-});
+};
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index b0a919d1b..02ab885d4 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const GObject = imports.gi.GObject;
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
@@ -58,10 +57,8 @@ function arrowIcon(side) {
return arrow;
}
-var PopupBaseMenuItem = new Lang.Class({
- Name: 'PopupBaseMenuItem',
-
- _init(params) {
+var PopupBaseMenuItem = class {
+ constructor(params) {
params = Params.parse (params, { reactive: true,
activate: true,
hover: true,
@@ -103,30 +100,30 @@ var PopupBaseMenuItem = new Lang.Class({
this.actor.connect('key-focus-in', this._onKeyFocusIn.bind(this));
this.actor.connect('key-focus-out', this._onKeyFocusOut.bind(this));
this.actor.connect('destroy', this._onDestroy.bind(this));
- },
+ }
_getTopMenu() {
if (this._parent)
return this._parent._getTopMenu();
else
return this;
- },
+ }
_setParent(parent) {
this._parent = parent;
- },
+ }
_onButtonPressEvent(actor, event) {
// This is the CSS active state
this.actor.add_style_pseudo_class ('active');
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onButtonReleaseEvent(actor, event) {
this.actor.remove_style_pseudo_class ('active');
this.activate(event);
return Clutter.EVENT_STOP;
- },
+ }
_onTouchEvent(actor, event) {
if (event.type() == Clutter.EventType.TOUCH_END) {
@@ -138,7 +135,7 @@ var PopupBaseMenuItem = new Lang.Class({
this.actor.add_style_pseudo_class ('active');
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onKeyPressEvent(actor, event) {
let state = event.get_state();
@@ -158,23 +155,23 @@ var PopupBaseMenuItem = new Lang.Class({
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onKeyFocusIn(actor) {
this.setActive(true);
- },
+ }
_onKeyFocusOut(actor) {
this.setActive(false);
- },
+ }
_onHoverChanged(actor) {
this.setActive(actor.hover);
- },
+ }
activate(event) {
this.emit('activate', event);
- },
+ }
setActive(active) {
let activeChanged = active != this.active;
@@ -195,7 +192,7 @@ var PopupBaseMenuItem = new Lang.Class({
}
this.emit('active-changed', active);
}
- },
+ }
syncSensitive() {
let sensitive = this.getSensitive();
@@ -203,12 +200,12 @@ var PopupBaseMenuItem = new Lang.Class({
this.actor.can_focus = sensitive;
this.emit('sensitive-changed');
return sensitive;
- },
+ }
getSensitive() {
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
return this._activatable && this._sensitive && parentSensitive;
- },
+ }
setSensitive(sensitive) {
if (this._sensitive == sensitive)
@@ -216,15 +213,15 @@ var PopupBaseMenuItem = new Lang.Class({
this._sensitive = sensitive;
this.syncSensitive();
- },
+ }
destroy() {
this.actor.destroy();
- },
+ }
_onDestroy() {
this.emit('destroy');
- },
+ }
setOrnament(ornament) {
if (ornament == this._ornament)
@@ -243,29 +240,23 @@ var PopupBaseMenuItem = new Lang.Class({
this.actor.remove_accessible_state(Atk.StateType.CHECKED);
}
}
-});
+};
Signals.addSignalMethods(PopupBaseMenuItem.prototype);
-var PopupMenuItem = new Lang.Class({
- Name: 'PopupMenuItem',
- Extends: PopupBaseMenuItem,
-
- _init(text, params) {
- this.parent(params);
+var PopupMenuItem = class extends PopupBaseMenuItem {
+ constructor(text, params) {
+ super(params);
this.label = new St.Label({ text: text });
this.actor.add_child(this.label);
this.actor.label_actor = this.label
}
-});
+};
-var PopupSeparatorMenuItem = new Lang.Class({
- Name: 'PopupSeparatorMenuItem',
- Extends: PopupBaseMenuItem,
-
- _init(text) {
- this.parent({ reactive: false,
- can_focus: false});
+var PopupSeparatorMenuItem = class extends PopupBaseMenuItem {
+ constructor(text) {
+ super({ reactive: false,
+ can_focus: false});
this.label = new St.Label({ text: text || '' });
this.actor.add(this.label);
@@ -279,17 +270,15 @@ var PopupSeparatorMenuItem = new Lang.Class({
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add(this._separator, { expand: true });
- },
+ }
_syncVisibility() {
this.label.visible = this.label.text != '';
}
-});
+};
-var Switch = new Lang.Class({
- Name: 'Switch',
-
- _init(state) {
+var Switch = class {
+ constructor(state) {
this.actor = new St.Bin({ style_class: 'toggle-switch',
accessible_role: Atk.Role.CHECK_BOX,
can_focus: true });
@@ -300,7 +289,7 @@ var Switch = new Lang.Class({
// simply result in invisible toggle switches.
this.actor.add_style_class_name(_("toggle-switch-us"));
this.setToggleState(state);
- },
+ }
setToggleState(state) {
if (state)
@@ -308,19 +297,16 @@ var Switch = new Lang.Class({
else
this.actor.remove_style_pseudo_class('checked');
this.state = state;
- },
+ }
toggle() {
this.setToggleState(!this.state);
}
-});
+};
-var PopupSwitchMenuItem = new Lang.Class({
- Name: 'PopupSwitchMenuItem',
- Extends: PopupBaseMenuItem,
-
- _init(text, active, params) {
- this.parent(params);
+var PopupSwitchMenuItem = class extends PopupBaseMenuItem {
+ constructor(text, active, params) {
+ super(params);
this.label = new St.Label({ text: text });
this._switch = new Switch(active);
@@ -338,7 +324,7 @@ var PopupSwitchMenuItem = new Lang.Class({
style_class: 'popup-status-menu-item'
});
this._statusBin.child = this._switch.actor;
- },
+ }
setStatus(text) {
if (text != null) {
@@ -352,7 +338,7 @@ var PopupSwitchMenuItem = new Lang.Class({
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
}
this.checkAccessibleState();
- },
+ }
activate(event) {
if (this._switch.actor.mapped) {
@@ -365,23 +351,23 @@ var PopupSwitchMenuItem = new Lang.Class({
event.get_key_symbol() == Clutter.KEY_space)
return;
- this.parent(event);
- },
+ super.activate(event);
+ }
toggle() {
this._switch.toggle();
this.emit('toggled', this._switch.state);
this.checkAccessibleState();
- },
+ }
get state() {
return this._switch.state;
- },
+ }
setToggleState(state) {
this._switch.setToggleState(state);
this.checkAccessibleState();
- },
+ }
checkAccessibleState() {
switch (this.actor.accessible_role) {
@@ -395,14 +381,11 @@ var PopupSwitchMenuItem = new Lang.Class({
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
}
}
-});
+};
-var PopupImageMenuItem = new Lang.Class({
- Name: 'PopupImageMenuItem',
- Extends: PopupBaseMenuItem,
-
- _init(text, icon, params) {
- this.parent(params);
+var PopupImageMenuItem = class extends PopupBaseMenuItem {
+ constructor(text, icon, params) {
+ super(params);
this._icon = new St.Icon({ style_class: 'popup-menu-icon',
x_align: Clutter.ActorAlign.END });
@@ -412,7 +395,7 @@ var PopupImageMenuItem = new Lang.Class({
this.actor.label_actor = this.label;
this.setIcon(icon);
- },
+ }
setIcon(icon) {
// The 'icon' parameter can be either a Gio.Icon or a string.
@@ -421,13 +404,13 @@ var PopupImageMenuItem = new Lang.Class({
else
this._icon.icon_name = icon;
}
-});
+};
-var PopupMenuBase = new Lang.Class({
- Name: 'PopupMenuBase',
- Abstract: true,
+var PopupMenuBase = class {
+ constructor(sourceActor, styleClass) {
+ if (new.target === PopupMenuBase)
+ throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
- _init(sourceActor, styleClass) {
this.sourceActor = sourceActor;
this._parent = null;
@@ -451,33 +434,33 @@ var PopupMenuBase = new Lang.Class({
this._sensitive = true;
this._sessionUpdatedId = Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
- },
+ }
_getTopMenu() {
if (this._parent)
return this._parent._getTopMenu();
else
return this;
- },
+ }
_setParent(parent) {
this._parent = parent;
- },
+ }
getSensitive() {
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
return this._sensitive && parentSensitive;
- },
+ }
setSensitive(sensitive) {
this._sensitive = sensitive;
this.emit('sensitive-changed');
- },
+ }
_sessionUpdated() {
this._setSettingsVisibility(Main.sessionMode.allowSettings);
this.close();
- },
+ }
addAction(title, callback, icon) {
let menuItem;
@@ -492,7 +475,7 @@ var PopupMenuBase = new Lang.Class({
});
return menuItem;
- },
+ }
addSettingsAction(title, desktopFile) {
let menuItem = this.addAction(title, () => {
@@ -511,14 +494,14 @@ var PopupMenuBase = new Lang.Class({
this._settingsActions[desktopFile] = menuItem;
return menuItem;
- },
+ }
_setSettingsVisibility(visible) {
for (let id in this._settingsActions) {
let item = this._settingsActions[id];
item.actor.visible = visible;
}
- },
+ }
isEmpty() {
let hasVisibleChildren = this.box.get_children().some(child => {
@@ -528,21 +511,21 @@ var PopupMenuBase = new Lang.Class({
});
return !hasVisibleChildren;
- },
+ }
itemActivated(animate) {
if (animate == undefined)
animate = BoxPointer.PopupAnimation.FULL;
this._getTopMenu().close(animate);
- },
+ }
_subMenuActiveChanged(submenu, submenuItem) {
if (this._activeMenuItem && this._activeMenuItem != submenuItem)
this._activeMenuItem.setActive(false);
this._activeMenuItem = submenuItem;
this.emit('active-changed', submenuItem);
- },
+ }
_connectItemSignals(menuItem) {
menuItem._activeChangeId = menuItem.connect('active-changed', (menuItem, active) => {
@@ -590,7 +573,7 @@ var PopupMenuBase = new Lang.Class({
if (menuItem == this._activeMenuItem)
this._activeMenuItem = null;
});
- },
+ }
_updateSeparatorVisibility(menuItem) {
if (menuItem.label.text)
@@ -626,7 +609,7 @@ var PopupMenuBase = new Lang.Class({
}
menuItem.actor.show();
- },
+ }
moveMenuItem(menuItem, position) {
let items = this._getMenuItems();
@@ -644,7 +627,7 @@ var PopupMenuBase = new Lang.Class({
} else {
this.box.set_child_above_sibling(menuItem.actor, null);
}
- },
+ }
addMenuItem(menuItem, position) {
let before_item = null;
@@ -721,13 +704,13 @@ var PopupMenuBase = new Lang.Class({
menuItem._setParent(this);
this.length++;
- },
+ }
_getMenuItems() {
return this.box.get_children().map(a => a._delegate).filter(item => {
return item instanceof PopupBaseMenuItem || item instanceof PopupMenuSection;
});
- },
+ }
get firstMenuItem() {
let items = this._getMenuItems();
@@ -735,11 +718,11 @@ var PopupMenuBase = new Lang.Class({
return items[0];
else
return null;
- },
+ }
get numMenuItems() {
return this._getMenuItems().length;
- },
+ }
removeAll() {
let children = this._getMenuItems();
@@ -747,14 +730,14 @@ var PopupMenuBase = new Lang.Class({
let item = children[i];
item.destroy();
}
- },
+ }
toggle() {
if (this.isOpen)
this.close(BoxPointer.PopupAnimation.FULL);
else
this.open(BoxPointer.PopupAnimation.FULL);
- },
+ }
destroy() {
this.close();
@@ -766,15 +749,12 @@ var PopupMenuBase = new Lang.Class({
Main.sessionMode.disconnect(this._sessionUpdatedId);
this._sessionUpdatedId = 0;
}
-});
+};
Signals.addSignalMethods(PopupMenuBase.prototype);
-var PopupMenu = new Lang.Class({
- Name: 'PopupMenu',
- Extends: PopupMenuBase,
-
- _init(sourceActor, arrowAlignment, arrowSide) {
- this.parent(sourceActor, 'popup-menu-content');
+var PopupMenu = class extends PopupMenuBase {
+ constructor(sourceActor, arrowAlignment, arrowSide) {
+ super(sourceActor, 'popup-menu-content');
this._arrowAlignment = arrowAlignment;
this._arrowSide = arrowSide;
@@ -798,14 +778,14 @@ var PopupMenu = new Lang.Class({
this._onKeyPress.bind(this));
this._openedSubMenu = null;
- },
+ }
_setOpenedSubMenu(submenu) {
if (this._openedSubMenu)
this._openedSubMenu.close(true);
this._openedSubMenu = submenu;
- },
+ }
_onKeyPress(actor, event) {
// Disable toggling the menu by keyboard
@@ -853,16 +833,15 @@ var PopupMenu = new Lang.Class({
return Clutter.EVENT_STOP;
} else
return Clutter.EVENT_PROPAGATE;
- },
-
+ }
setArrowOrigin(origin) {
this._boxPointer.setArrowOrigin(origin);
- },
+ }
setSourceAlignment(alignment) {
this._boxPointer.setSourceAlignment(alignment);
- },
+ }
open(animate) {
if (this.isOpen)
@@ -879,7 +858,7 @@ var PopupMenu = new Lang.Class({
this.actor.raise_top();
this.emit('open-state-changed', true);
- },
+ }
close(animate) {
if (this._activeMenuItem)
@@ -896,43 +875,38 @@ var PopupMenu = new Lang.Class({
this.isOpen = false;
this.emit('open-state-changed', false);
- },
+ }
destroy() {
if (this._keyPressId)
this.sourceActor.disconnect(this._keyPressId);
- this.parent();
+ super.destroy();
}
-});
+};
-var PopupDummyMenu = new Lang.Class({
- Name: 'PopupDummyMenu',
-
- _init(sourceActor) {
+var PopupDummyMenu = class {
+ constructor(sourceActor) {
this.sourceActor = sourceActor;
this.actor = sourceActor;
this.actor._delegate = this;
- },
+ }
getSensitive() {
return true;
- },
+ }
- open() { this.emit('open-state-changed', true); },
- close() { this.emit('open-state-changed', false); },
- toggle() {},
+ open() { this.emit('open-state-changed', true); }
+ close() { this.emit('open-state-changed', false); }
+ toggle() {}
destroy() {
this.emit('destroy');
- },
-});
+ }
+};
Signals.addSignalMethods(PopupDummyMenu.prototype);
-var PopupSubMenu = new Lang.Class({
- Name: 'PopupSubMenu',
- Extends: PopupMenuBase,
-
- _init(sourceActor, sourceArrow) {
- this.parent(sourceActor);
+var PopupSubMenu = class extends PopupMenuBase {
+ constructor(sourceActor, sourceArrow) {
+ super(sourceActor);
this._arrow = sourceArrow;
@@ -948,7 +922,7 @@ var PopupSubMenu = new Lang.Class({
this.actor.clip_to_allocation = true;
this.actor.connect('key-press-event', this._onKeyPressEvent.bind(this));
this.actor.hide();
- },
+ }
_needsScrollbar() {
let topMenu = this._getTopMenu();
@@ -957,11 +931,11 @@ var PopupSubMenu = new Lang.Class({
let topMaxHeight = topThemeNode.get_max_height();
return topMaxHeight >= 0 && topNaturalHeight >= topMaxHeight;
- },
+ }
getSensitive() {
return this._sensitive && this.sourceActor._delegate.getSensitive();
- },
+ }
open(animate) {
if (this.isOpen)
@@ -1017,7 +991,7 @@ var PopupSubMenu = new Lang.Class({
} else {
this._arrow.rotation_angle_z = targetAngle;
}
- },
+ }
close(animate) {
if (!this.isOpen)
@@ -1052,7 +1026,7 @@ var PopupSubMenu = new Lang.Class({
this._arrow.rotation_angle_z = 0;
this.actor.hide();
}
- },
+ }
_onKeyPressEvent(actor, event) {
// Move focus back to parent menu if the user types Left.
@@ -1065,7 +1039,7 @@ var PopupSubMenu = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
}
-});
+};
/**
* PopupMenuSection:
@@ -1075,30 +1049,24 @@ var PopupSubMenu = new Lang.Class({
* can add it to another menu), but is completely transparent
* to the user
*/
-var PopupMenuSection = new Lang.Class({
- Name: 'PopupMenuSection',
- Extends: PopupMenuBase,
-
- _init() {
- this.parent();
+var PopupMenuSection = class extends PopupMenuBase {
+ constructor() {
+ super();
this.actor = this.box;
this.actor._delegate = this;
this.isOpen = true;
- },
+ }
// deliberately ignore any attempt to open() or close(), but emit the
// corresponding signal so children can still pick it up
- open() { this.emit('open-state-changed', true); },
- close() { this.emit('open-state-changed', false); },
-});
+ open() { this.emit('open-state-changed', true); }
+ close() { this.emit('open-state-changed', false); }
+};
-var PopupSubMenuMenuItem = new Lang.Class({
- Name: 'PopupSubMenuMenuItem',
- Extends: PopupBaseMenuItem,
-
- _init(text, wantIcon) {
- this.parent();
+var PopupSubMenuMenuItem = class extends PopupBaseMenuItem {
+ constructor(text, wantIcon) {
+ super();
this.actor.add_style_class_name('popup-submenu-menu-item');
@@ -1128,19 +1096,19 @@ var PopupSubMenuMenuItem = new Lang.Class({
this.menu = new PopupSubMenu(this.actor, this._triangle);
this.menu.connect('open-state-changed', this._subMenuOpenStateChanged.bind(this));
- },
+ }
_setParent(parent) {
- this.parent(parent);
+ super._setParent(parent);
this.menu._setParent(parent);
- },
+ }
syncSensitive() {
- let sensitive = this.parent();
+ let sensitive = super.syncSensitive();
this._triangle.visible = sensitive;
if (!sensitive)
this.menu.close(false);
- },
+ }
_subMenuOpenStateChanged(menu, open) {
if (open) {
@@ -1154,28 +1122,28 @@ var PopupSubMenuMenuItem = new Lang.Class({
this.actor.remove_accessible_state (Atk.StateType.EXPANDED);
this.actor.remove_style_pseudo_class('checked');
}
- },
+ }
destroy() {
this.menu.destroy();
- this.parent();
- },
+ super.destroy();
+ }
setSubmenuShown(open) {
if (open)
this.menu.open(BoxPointer.PopupAnimation.FULL);
else
this.menu.close(BoxPointer.PopupAnimation.FULL);
- },
+ }
_setOpenState(open) {
this.setSubmenuShown(open);
- },
+ }
_getOpenState() {
return this.menu.isOpen;
- },
+ }
_onKeyPressEvent(actor, event) {
let symbol = event.get_key_symbol();
@@ -1189,12 +1157,12 @@ var PopupSubMenuMenuItem = new Lang.Class({
return Clutter.EVENT_STOP;
}
- return this.parent(actor, event);
- },
+ return super._onKeyPressEvent(actor, event);
+ }
activate(event) {
this._setOpenState(true);
- },
+ }
_onButtonReleaseEvent(actor) {
// Since we override the parent, we need to manage what the parent does
@@ -1202,7 +1170,7 @@ var PopupSubMenuMenuItem = new Lang.Class({
this.actor.remove_style_pseudo_class ('active');
this._setOpenState(!this._getOpenState());
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onTouchEvent(actor, event) {
if (event.type() == Clutter.EventType.TOUCH_END) {
@@ -1213,21 +1181,19 @@ var PopupSubMenuMenuItem = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
}
-});
+};
/* Basic implementation of a menu manager.
* Call addMenu to add menus
*/
-var PopupMenuManager = new Lang.Class({
- Name: 'PopupMenuManager',
-
- _init(owner, grabParams) {
+var PopupMenuManager = class {
+ constructor(owner, grabParams) {
grabParams = Params.parse(grabParams,
{ actionMode: Shell.ActionMode.POPUP });
this._owner = owner;
this._grabHelper = new GrabHelper.GrabHelper(owner.actor, grabParams);
this._menus = [];
- },
+ }
addMenu(menu, position) {
if (this._findMenu(menu) > -1)
@@ -1256,7 +1222,7 @@ var PopupMenuManager = new Lang.Class({
this._menus.push(menudata);
else
this._menus.splice(position, 0, menudata);
- },
+ }
removeMenu(menu) {
if (menu == this.activeMenu)
@@ -1278,7 +1244,7 @@ var PopupMenuManager = new Lang.Class({
if (menu.sourceActor)
this._grabHelper.removeActor(menu.sourceActor);
this._menus.splice(position, 1);
- },
+ }
get activeMenu() {
let firstGrab = this._grabHelper.grabStack[0];
@@ -1286,11 +1252,11 @@ var PopupMenuManager = new Lang.Class({
return firstGrab.actor._delegate;
else
return null;
- },
+ }
ignoreRelease() {
return this._grabHelper.ignoreRelease();
- },
+ }
_onMenuOpenState(menu, open) {
if (open) {
@@ -1303,12 +1269,12 @@ var PopupMenuManager = new Lang.Class({
} else {
this._grabHelper.ungrab({ actor: menu.actor });
}
- },
+ }
_changeMenu(newMenu) {
newMenu.open(this.activeMenu ? BoxPointer.PopupAnimation.FADE
: BoxPointer.PopupAnimation.FULL);
- },
+ }
_onMenuSourceEnter(menu) {
if (!this._grabHelper.grabbed)
@@ -1319,11 +1285,11 @@ var PopupMenuManager = new Lang.Class({
this._changeMenu(menu);
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onMenuDestroy(menu) {
this.removeMenu(menu);
- },
+ }
_findMenu(item) {
for (let i = 0; i < this._menus.length; i++) {
@@ -1332,7 +1298,7 @@ var PopupMenuManager = new Lang.Class({
return i;
}
return -1;
- },
+ }
_closeMenu(isUser, menu) {
// If this isn't a user action, we called close()
@@ -1341,4 +1307,4 @@ var PopupMenuManager = new Lang.Class({
if (isUser)
menu.close(BoxPointer.PopupAnimation.FULL);
}
-});
+};
diff --git a/js/ui/remoteMenu.js b/js/ui/remoteMenu.js
index 78a2e2934..0cdcac8c1 100644
--- a/js/ui/remoteMenu.js
+++ b/js/ui/remoteMenu.js
@@ -4,7 +4,6 @@ const Atk = imports.gi.Atk;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const ShellMenu = imports.gi.ShellMenu;
const St = imports.gi.St;
@@ -38,10 +37,8 @@ function _removeItem(menu, position) {
items[position].destroy();
}
-var RemoteMenuSeparatorItemMapper = new Lang.Class({
- Name: 'RemoteMenuSeparatorItemMapper',
-
- _init(trackerItem) {
+var RemoteMenuSeparatorItemMapper = class {
+ constructor(trackerItem) {
this._trackerItem = trackerItem;
this.menuItem = new PopupMenu.PopupSeparatorMenuItem();
this._trackerItem.connect('notify::label', this._updateLabel.bind(this));
@@ -50,36 +47,31 @@ var RemoteMenuSeparatorItemMapper = new Lang.Class({
this.menuItem.connect('destroy', () => {
trackerItem.run_dispose();
});
- },
+ }
_updateLabel() {
this.menuItem.label.text = stripMnemonics(this._trackerItem.label);
- },
-});
+ }
+};
-var RequestSubMenu = new Lang.Class({
- Name: 'RequestSubMenu',
- Extends: PopupMenu.PopupSubMenuMenuItem,
-
- _init() {
- this.parent('');
+var RequestSubMenu = class extends PopupMenu.PopupSubMenuMenuItem {
+ constructor() {
+ super('');
this._requestOpen = false;
- },
+ }
_setOpenState(open) {
this.emit('request-open', open);
this._requestOpen = open;
- },
+ }
_getOpenState() {
return this._requestOpen;
- },
-});
+ }
+};
-var RemoteMenuSubmenuItemMapper = new Lang.Class({
- Name: 'RemoteMenuSubmenuItemMapper',
-
- _init(trackerItem) {
+var RemoteMenuSubmenuItemMapper = class {
+ constructor(trackerItem) {
this._trackerItem = trackerItem;
this.menuItem = new RequestSubMenu();
this._trackerItem.connect('notify::label', this._updateLabel.bind(this));
@@ -100,22 +92,19 @@ var RemoteMenuSubmenuItemMapper = new Lang.Class({
this.menuItem.connect('destroy', () => {
trackerItem.run_dispose();
});
- },
+ }
destroy() {
this._tracker.destroy();
- this.parent();
- },
+ }
_updateLabel() {
this.menuItem.label.text = stripMnemonics(this._trackerItem.label);
- },
-});
+ }
+};
-var RemoteMenuItemMapper = new Lang.Class({
- Name: 'RemoteMenuItemMapper',
-
- _init(trackerItem) {
+var RemoteMenuItemMapper = class {
+ constructor(trackerItem) {
this._trackerItem = trackerItem;
this.menuItem = new PopupMenu.PopupBaseMenuItem();
@@ -146,20 +135,20 @@ var RemoteMenuItemMapper = new Lang.Class({
this.menuItem.connect('destroy', () => {
trackerItem.run_dispose();
});
- },
+ }
_updateIcon() {
this._icon.gicon = this._trackerItem.icon;
this._icon.visible = (this._icon.gicon != null);
- },
+ }
_updateLabel() {
this._label.text = stripMnemonics(this._trackerItem.label);
- },
+ }
_updateSensitivity() {
this.menuItem.setSensitive(this._trackerItem.sensitive);
- },
+ }
_updateDecoration() {
let ornamentForRole = {};
@@ -171,7 +160,7 @@ var RemoteMenuItemMapper = new Lang.Class({
ornament = ornamentForRole[this._trackerItem.role];
this.menuItem.setOrnament(ornament);
- },
+ }
_updateRole() {
let a11yRoles = {};
@@ -183,15 +172,12 @@ var RemoteMenuItemMapper = new Lang.Class({
this.menuItem.actor.accessible_role = a11yRole;
this._updateDecoration();
- },
-});
+ }
+};
-var RemoteMenu = new Lang.Class({
- Name: 'RemoteMenu',
- Extends: PopupMenu.PopupMenu,
-
- _init(sourceActor, model, actionGroup) {
- this.parent(sourceActor, 0.0, St.Side.TOP);
+var RemoteMenu = class extends PopupMenu.PopupMenu {
+ constructor(sourceActor, model, actionGroup) {
+ super(sourceActor, 0.0, St.Side.TOP);
this._model = model;
this._actionGroup = actionGroup;
@@ -200,14 +186,14 @@ var RemoteMenu = new Lang.Class({
null, /* action namespace */
_insertItem.bind(null, this),
_removeItem.bind(null, this));
- },
+ }
get actionGroup() {
return this._actionGroup;
- },
+ }
destroy() {
this._tracker.destroy();
- this.parent();
- },
-});
+ super.destroy();
+ }
+};
diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js
index 3b847af5b..b4e9202df 100644
--- a/js/ui/remoteSearch.js
+++ b/js/ui/remoteSearch.js
@@ -3,7 +3,6 @@
const GdkPixbuf = imports.gi.GdkPixbuf;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
@@ -190,10 +189,8 @@ function loadRemoteSearchProviders(searchSettings, callback) {
callback(loadedProviders);
}
-var RemoteSearchProvider = new Lang.Class({
- Name: 'RemoteSearchProvider',
-
- _init(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
+var RemoteSearchProvider = class {
+ constructor(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
if (!proxyInfo)
proxyInfo = SearchProviderProxyInfo;
@@ -215,7 +212,7 @@ var RemoteSearchProvider = new Lang.Class({
this.id = appInfo.get_id();
this.isRemoteProvider = true;
this.canLaunchSearch = false;
- },
+ }
createIcon(size, meta) {
let gicon = null;
@@ -236,7 +233,7 @@ var RemoteSearchProvider = new Lang.Class({
icon = new St.Icon({ gicon: gicon,
icon_size: size });
return icon;
- },
+ }
filterResults(results, maxNumber) {
if (results.length <= maxNumber)
@@ -246,7 +243,7 @@ var RemoteSearchProvider = new Lang.Class({
let specialResults = results.filter(r => r.startsWith('special:'));
return regularResults.slice(0, maxNumber).concat(specialResults.slice(0, maxNumber));
- },
+ }
_getResultsFinished(results, error, callback) {
if (error) {
@@ -259,7 +256,7 @@ var RemoteSearchProvider = new Lang.Class({
}
callback(results[0]);
- },
+ }
getInitialResultSet(terms, callback, cancellable) {
this.proxy.GetInitialResultSetRemote(terms,
@@ -267,7 +264,7 @@ var RemoteSearchProvider = new Lang.Class({
this._getResultsFinished(results, error, callback);
},
cancellable);
- },
+ }
getSubsearchResultSet(previousResults, newTerms, callback, cancellable) {
this.proxy.GetSubsearchResultSetRemote(previousResults, newTerms,
@@ -275,7 +272,7 @@ var RemoteSearchProvider = new Lang.Class({
this._getResultsFinished(results, error, callback);
},
cancellable);
- },
+ }
_getResultMetasFinished(results, error, callback) {
if (error) {
@@ -302,7 +299,7 @@ var RemoteSearchProvider = new Lang.Class({
clipboardText: metas[i]['clipboardText'] });
}
callback(resultMetas);
- },
+ }
getResultMetas(ids, callback, cancellable) {
this.proxy.GetResultMetasRemote(ids,
@@ -310,11 +307,11 @@ var RemoteSearchProvider = new Lang.Class({
this._getResultMetasFinished(results, error, callback);
},
cancellable);
- },
+ }
activateResult(id) {
this.proxy.ActivateResultRemote(id);
- },
+ }
launchSearch(terms) {
// the provider is not compatible with the new version of the interface, launch
@@ -322,23 +319,20 @@ var RemoteSearchProvider = new Lang.Class({
log('Search provider ' + this.appInfo.get_id() + ' does not implement LaunchSearch');
this.appInfo.launch([], global.create_app_launch_context(0, -1));
}
-});
+};
-var RemoteSearchProvider2 = new Lang.Class({
- Name: 'RemoteSearchProvider2',
- Extends: RemoteSearchProvider,
-
- _init(appInfo, dbusName, dbusPath, autoStart) {
- this.parent(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo);
+var RemoteSearchProvider2 = class extends RemoteSearchProvider {
+ constructor(appInfo, dbusName, dbusPath, autoStart) {
+ super(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo);
this.canLaunchSearch = true;
- },
+ }
activateResult(id, terms) {
this.proxy.ActivateResultRemote(id, terms, global.get_current_time());
- },
+ }
launchSearch(terms) {
this.proxy.LaunchSearchRemote(terms, global.get_current_time());
}
-});
+};
diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js
index 6e8c8a905..4df315d17 100644
--- a/js/ui/runDialog.js
+++ b/js/ui/runDialog.js
@@ -3,7 +3,6 @@
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
@@ -30,13 +29,10 @@ const EXEC_ARG_KEY = 'exec-arg';
var DIALOG_GROW_TIME = 0.1;
-var RunDialog = new Lang.Class({
- Name: 'RunDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init() {
- this.parent({ styleClass: 'run-dialog',
- destroyOnClose: false });
+var RunDialog = class extends ModalDialog.ModalDialog {
+ constructor() {
+ super({ styleClass: 'run-dialog',
+ destroyOnClose: false });
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
this._terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA });
@@ -144,7 +140,7 @@ var RunDialog = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
});
- },
+ }
_getCommandCompletion(text) {
function _getCommon(s1, s2) {
@@ -189,7 +185,7 @@ var RunDialog = new Lang.Class({
let common = results.reduce(_getCommon, null);
return common.substr(text.length);
- },
+ }
_getCompletion(text) {
if (text.indexOf('/') != -1) {
@@ -197,7 +193,7 @@ var RunDialog = new Lang.Class({
} else {
return this._getCommandCompletion(text);
}
- },
+ }
_run(input, inTerminal) {
let command = input;
@@ -248,7 +244,7 @@ var RunDialog = new Lang.Class({
}
}
}
- },
+ }
_showError(message) {
this._commandError = true;
@@ -269,7 +265,7 @@ var RunDialog = new Lang.Class({
}
});
}
- },
+ }
_restart() {
if (Meta.is_wayland_compositor()) {
@@ -279,7 +275,7 @@ var RunDialog = new Lang.Class({
this._shouldFadeOut = false;
this.close();
Meta.restart(_("Restarting…"));
- },
+ }
open() {
this._history.lastItem();
@@ -290,7 +286,7 @@ var RunDialog = new Lang.Class({
if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY))
return;
- this.parent();
- },
-});
+ super.open();
+ }
+};
Signals.addSignalMethods(RunDialog.prototype);
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index 7004c93dd..b0119455a 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -60,10 +60,8 @@ var MANUAL_FADE_TIME = 0.3;
var BACKGROUND_FADE_TIME = 1.0;
var CURTAIN_SLIDE_TIME = 0.3;
-var Clock = new Lang.Class({
- Name: 'ScreenShieldClock',
-
- _init() {
+var Clock = class {
+ constructor() {
this.actor = new St.BoxLayout({ style_class: 'screen-shield-clock',
vertical: true });
@@ -77,7 +75,7 @@ var Clock = new Lang.Class({
this._wallClock.connect('notify::clock', this._updateClock.bind(this));
this._updateClock();
- },
+ }
_updateClock() {
this._time.text = this._wallClock.clock;
@@ -87,18 +85,16 @@ var Clock = new Lang.Class({
long format */
let dateFormat = Shell.util_translate_time_string(N_("%A, %B %d"));
this._date.text = date.toLocaleFormat(dateFormat);
- },
+ }
destroy() {
this.actor.destroy();
this._wallClock.run_dispose();
}
-});
+};
-var NotificationsBox = new Lang.Class({
- Name: 'NotificationsBox',
-
- _init() {
+var NotificationsBox = class {
+ constructor() {
this.actor = new St.BoxLayout({ vertical: true,
name: 'screenShieldNotifications',
style_class: 'screen-shield-notifications-container' });
@@ -118,7 +114,7 @@ var NotificationsBox = new Lang.Class({
this._updateVisibility();
this._sourceAddedId = Main.messageTray.connect('source-added', this._sourceAdded.bind(this));
- },
+ }
destroy() {
if (this._sourceAddedId) {
@@ -132,21 +128,21 @@ var NotificationsBox = new Lang.Class({
}
this.actor.destroy();
- },
+ }
_updateVisibility() {
this._notificationBox.visible =
this._notificationBox.get_children().some(a => a.visible);
this.actor.visible = this._notificationBox.visible;
- },
+ }
_makeNotificationCountText(count, isChat) {
if (isChat)
return ngettext("%d new message", "%d new messages", count).format(count);
else
return ngettext("%d new notification", "%d new notifications", count).format(count);
- },
+ }
_makeNotificationSource(source, box) {
let sourceActor = new MessageTray.SourceActor(source, SUMMARY_ICON_SIZE);
@@ -166,7 +162,7 @@ var NotificationsBox = new Lang.Class({
box.visible = count != 0;
return [title, countLabel];
- },
+ }
_makeNotificationDetailedSource(source, box) {
let sourceActor = new MessageTray.SourceActor(source, SUMMARY_ICON_SIZE);
@@ -204,7 +200,7 @@ var NotificationsBox = new Lang.Class({
box.visible = visible;
return [title, null];
- },
+ }
_showSource(source, obj, box) {
if (obj.detailed) {
@@ -214,7 +210,7 @@ var NotificationsBox = new Lang.Class({
}
box.visible = obj.visible && (source.unseenCount > 0);
- },
+ }
_sourceAdded(tray, source, initial) {
let obj = {
@@ -276,11 +272,11 @@ var NotificationsBox = new Lang.Class({
if (obj.sourceBox.visible)
this.emit('wake-up-screen');
}
- },
+ }
_titleChanged(source, obj) {
obj.titleLabel.text = source.title;
- },
+ }
_countChanged(source, obj) {
if (obj.detailed) {
@@ -300,7 +296,7 @@ var NotificationsBox = new Lang.Class({
this._updateVisibility();
if (obj.sourceBox.visible)
this.emit('wake-up-screen');
- },
+ }
_visibleChanged(source, obj) {
if (obj.visible == source.policy.showInLockScreen)
@@ -312,7 +308,7 @@ var NotificationsBox = new Lang.Class({
this._updateVisibility();
if (obj.sourceBox.visible)
this.emit('wake-up-screen');
- },
+ }
_detailedChanged(source, obj) {
if (obj.detailed == source.policy.detailsInLockScreen)
@@ -323,12 +319,12 @@ var NotificationsBox = new Lang.Class({
obj.sourceBox.destroy_all_children();
obj.titleLabel = obj.countLabel = null;
this._showSource(source, obj, obj.sourceBox);
- },
+ }
_onSourceDestroy(source, obj) {
this._removeSource(source, obj);
this._updateVisibility();
- },
+ }
_removeSource(source, obj) {
obj.sourceBox.destroy();
@@ -340,8 +336,8 @@ var NotificationsBox = new Lang.Class({
source.policy.disconnect(obj.policyChangedId);
this._sources.delete(source);
- },
-});
+ }
+};
Signals.addSignalMethods(NotificationsBox.prototype);
var Arrow = new Lang.Class({
@@ -430,10 +426,8 @@ function clamp(value, min, max) {
* This will ensure that the screen blanks at the right time when it fades out.
* https://bugzilla.gnome.org/show_bug.cgi?id=668703 explains the dependency.
*/
-var ScreenShield = new Lang.Class({
- Name: 'ScreenShield',
-
- _init() {
+var ScreenShield = class {
+ constructor() {
this.actor = Main.layoutManager.screenShieldGroup;
this._lockScreenState = MessageTray.State.HIDDEN;
@@ -573,7 +567,7 @@ var ScreenShield = new Lang.Class({
this._cursorTracker = Meta.CursorTracker.get_for_display(global.display);
this._syncInhibitor();
- },
+ }
_setActive(active) {
let prevIsActive = this._isActive;
@@ -586,7 +580,7 @@ var ScreenShield = new Lang.Class({
this._loginSession.SetLockedHintRemote(active);
this._syncInhibitor();
- },
+ }
_createBackground(monitorIndex) {
let monitor = Main.layoutManager.monitors[monitorIndex];
@@ -604,7 +598,7 @@ var ScreenShield = new Lang.Class({
this._bgManagers.push(bgManager);
this._backgroundGroup.add_child(widget);
- },
+ }
_updateBackgrounds() {
for (let i = 0; i < this._bgManagers.length; i++)
@@ -615,7 +609,7 @@ var ScreenShield = new Lang.Class({
for (let i = 0; i < Main.layoutManager.monitors.length; i++)
this._createBackground(i);
- },
+ }
_liftShield(onPrimary, velocity) {
if (this._isLocked) {
@@ -624,7 +618,7 @@ var ScreenShield = new Lang.Class({
} else {
this.deactivate(true /* animate */);
}
- },
+ }
_maybeCancelDialog() {
if (!this._dialog)
@@ -639,7 +633,7 @@ var ScreenShield = new Lang.Class({
} else {
this._dialog = null;
}
- },
+ }
_becomeModal() {
if (this._isModal)
@@ -654,7 +648,7 @@ var ScreenShield = new Lang.Class({
this._isModal = Main.pushModal(this.actor, { options: Meta.ModalOptions.POINTER_ALREADY_GRABBED,
actionMode: Shell.ActionMode.LOCK_SCREEN });
return this._isModal;
- },
+ }
_onLockScreenKeyPress(actor, event) {
let symbol = event.get_key_symbol();
@@ -684,7 +678,7 @@ var ScreenShield = new Lang.Class({
this._liftShield(true, 0);
return Clutter.EVENT_STOP;
- },
+ }
_onLockScreenScroll(actor, event) {
if (this._lockScreenState != MessageTray.State.SHOWN)
@@ -704,7 +698,7 @@ var ScreenShield = new Lang.Class({
}
return Clutter.EVENT_STOP;
- },
+ }
_syncInhibitor() {
let lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY);
@@ -723,7 +717,7 @@ var ScreenShield = new Lang.Class({
this._inhibitor.close(null);
this._inhibitor = null;
}
- },
+ }
_prepareForSleep(loginManager, aboutToSuspend) {
if (aboutToSuspend) {
@@ -732,7 +726,7 @@ var ScreenShield = new Lang.Class({
} else {
this._wakeUpScreen();
}
- },
+ }
_animateArrows() {
let arrows = this._arrowContainer.get_children();
@@ -754,7 +748,7 @@ var ScreenShield = new Lang.Class({
}
return GLib.SOURCE_CONTINUE;
- },
+ }
_onDragBegin() {
Tweener.removeTweens(this._lockScreenGroup);
@@ -764,7 +758,7 @@ var ScreenShield = new Lang.Class({
this._ensureUnlockDialog(false, false);
return true;
- },
+ }
_onDragMotion() {
let [origX, origY] = this._dragAction.get_press_coords(0);
@@ -776,7 +770,7 @@ var ScreenShield = new Lang.Class({
this._lockScreenGroup.y = newY;
return true;
- },
+ }
_onDragEnd(action, actor, eventX, eventY, modifiers) {
if (this._lockScreenState != MessageTray.State.HIDING)
@@ -804,7 +798,7 @@ var ScreenShield = new Lang.Class({
this._maybeCancelDialog();
}
- },
+ }
_onStatusChanged(status) {
if (status != GnomeSession.PresenceStatus.IDLE)
@@ -855,7 +849,7 @@ var ScreenShield = new Lang.Class({
}
this._activateFade(this._longLightbox, STANDARD_FADE_TIME);
- },
+ }
_activateFade(lightbox, time) {
Main.uiGroup.set_child_above_sibling(lightbox.actor, null);
@@ -863,7 +857,7 @@ var ScreenShield = new Lang.Class({
if (this._becameActiveId == 0)
this._becameActiveId = this.idleMonitor.add_user_active_watch(this._onUserBecameActive.bind(this));
- },
+ }
_onUserBecameActive() {
// This function gets called here when the user becomes active
@@ -893,15 +887,15 @@ var ScreenShield = new Lang.Class({
} else {
this.deactivate(false);
}
- },
+ }
_onLongLightboxShown() {
this.activate(false);
- },
+ }
_onShortLightboxShown() {
this._completeLockScreenShown();
- },
+ }
showDialog() {
if (!this._becomeModal()) {
@@ -915,7 +909,7 @@ var ScreenShield = new Lang.Class({
this._isLocked = true;
if (this._ensureUnlockDialog(true, true))
this._hideLockScreen(false, 0);
- },
+ }
_hideLockScreenComplete() {
if (Main.sessionMode.currentMode == 'lock-screen')
@@ -928,7 +922,7 @@ var ScreenShield = new Lang.Class({
this._dialog.actor.grab_key_focus();
this._dialog.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
}
- },
+ }
_hideLockScreen(animate, velocity) {
if (this._lockScreenState == MessageTray.State.HIDDEN)
@@ -961,7 +955,7 @@ var ScreenShield = new Lang.Class({
}
this._cursorTracker.set_pointer_visible(true);
- },
+ }
_ensureUnlockDialog(onPrimary, allowCancel) {
if (!this._dialog) {
@@ -989,12 +983,12 @@ var ScreenShield = new Lang.Class({
this._dialog.allowCancel = allowCancel;
return true;
- },
+ }
_onUnlockFailed() {
this._resetLockScreen({ animateLockScreen: true,
fadeToBlack: false });
- },
+ }
_resetLockScreen(params) {
// Don't reset the lock screen unless it is completely hidden
@@ -1036,7 +1030,7 @@ var ScreenShield = new Lang.Class({
if (Main.sessionMode.currentMode != 'lock-screen')
Main.sessionMode.pushMode('lock-screen');
- },
+ }
_startArrowAnimation() {
this._arrowActiveWatchId = 0;
@@ -1050,7 +1044,7 @@ var ScreenShield = new Lang.Class({
if (!this._arrowWatchId)
this._arrowWatchId = this.idleMonitor.add_idle_watch(ARROW_IDLE_TIME,
this._pauseArrowAnimation.bind(this));
- },
+ }
_pauseArrowAnimation() {
if (this._arrowAnimationId) {
@@ -1060,7 +1054,7 @@ var ScreenShield = new Lang.Class({
if (!this._arrowActiveWatchId)
this._arrowActiveWatchId = this.idleMonitor.add_user_active_watch(this._startArrowAnimation.bind(this));
- },
+ }
_stopArrowAnimation() {
if (this._arrowAnimationId) {
@@ -1075,7 +1069,7 @@ var ScreenShield = new Lang.Class({
this.idleMonitor.remove_watch(this._arrowWatchId);
this._arrowWatchId = 0;
}
- },
+ }
_checkArrowAnimation() {
let idleTime = this.idleMonitor.get_idletime();
@@ -1084,7 +1078,7 @@ var ScreenShield = new Lang.Class({
this._startArrowAnimation();
else
this._pauseArrowAnimation();
- },
+ }
_lockScreenShown(params) {
if (this._dialog && !this._isGreeter) {
@@ -1122,12 +1116,12 @@ var ScreenShield = new Lang.Class({
this._completeLockScreenShown();
}
- },
+ }
_completeLockScreenShown() {
this._setActive(true);
this.emit('lock-screen-shown');
- },
+ }
// Some of the actors in the lock screen are heavy in
// resources, so we only create them when needed
@@ -1154,12 +1148,12 @@ var ScreenShield = new Lang.Class({
expand: true });
this._hasLockScreen = true;
- },
+ }
_wakeUpScreen() {
this._onUserBecameActive();
this.emit('wake-up-screen');
- },
+ }
_clearLockScreen() {
this._clock.destroy();
@@ -1176,26 +1170,26 @@ var ScreenShield = new Lang.Class({
this._lockScreenContentsBox.destroy();
this._hasLockScreen = false;
- },
+ }
get locked() {
return this._isLocked;
- },
+ }
get active() {
return this._isActive;
- },
+ }
get activationTime() {
return this._activationTime;
- },
+ }
deactivate(animate) {
if (this._dialog)
this._dialog.finish(() => { this._continueDeactivate(animate); });
else
this._continueDeactivate(animate);
- },
+ }
_continueDeactivate(animate) {
this._hideLockScreen(animate, 0);
@@ -1237,7 +1231,7 @@ var ScreenShield = new Lang.Class({
onComplete: this._completeDeactivate.bind(this),
onCompleteScope: this
});
- },
+ }
_completeDeactivate() {
if (this._dialog) {
@@ -1264,7 +1258,7 @@ var ScreenShield = new Lang.Class({
this._isLocked = false;
this.emit('locked-changed');
global.set_runtime_state(LOCKED_STATE_STR, null);
- },
+ }
activate(animate) {
if (this._activationTime == 0)
@@ -1296,7 +1290,7 @@ var ScreenShield = new Lang.Class({
// blank during the animation.
// This is not a problem for the idle fade case, because we
// activate without animation in that case.
- },
+ }
lock(animate) {
if (this._lockSettings.get_boolean(DISABLE_LOCK_KEY)) {
@@ -1328,7 +1322,7 @@ var ScreenShield = new Lang.Class({
this.activate(animate);
this.emit('locked-changed');
- },
+ }
// If the previous shell crashed, and gnome-session restarted us, then re-lock
lockIfWasLocked() {
@@ -1341,5 +1335,5 @@ var ScreenShield = new Lang.Class({
this.lock(false);
});
}
-});
+};
Signals.addSignalMethods(ScreenShield.prototype);
diff --git a/js/ui/screencast.js b/js/ui/screencast.js
index e57b0ef7d..2d99c711a 100644
--- a/js/ui/screencast.js
+++ b/js/ui/screencast.js
@@ -2,7 +2,6 @@
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -12,10 +11,8 @@ const { loadInterfaceXML } = imports.misc.fileUtils;
const ScreencastIface = loadInterfaceXML('org.gnome.Shell.Screencast');
-var ScreencastService = new Lang.Class({
- Name: 'ScreencastService',
-
- _init() {
+var ScreencastService = class {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreencastIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screencast');
@@ -26,11 +23,11 @@ var ScreencastService = new Lang.Class({
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
- },
+ }
get isRecording() {
return this._recorders.size > 0;
- },
+ }
_ensureRecorderForSender(sender) {
let recorder = this._recorders.get(sender);
@@ -44,7 +41,7 @@ var ScreencastService = new Lang.Class({
this.emit('updated');
}
return recorder;
- },
+ }
_sessionUpdated() {
if (Main.sessionMode.allowScreencast)
@@ -52,11 +49,11 @@ var ScreencastService = new Lang.Class({
for (let sender of this._recorders.keys())
this._stopRecordingForSender(sender);
- },
+ }
_onNameVanished(connection, name) {
this._stopRecordingForSender(name);
- },
+ }
_stopRecordingForSender(sender) {
let recorder = this._recorders.get(sender);
@@ -69,7 +66,7 @@ var ScreencastService = new Lang.Class({
this.emit('updated');
return true;
- },
+ }
_applyOptionalParameters(recorder, options) {
for (let option in options)
@@ -81,7 +78,7 @@ var ScreencastService = new Lang.Class({
recorder.set_framerate(options['framerate']);
if ('draw-cursor' in options)
recorder.set_draw_cursor(options['draw-cursor']);
- },
+ }
ScreencastAsync(params, invocation) {
let returnValue = [false, ''];
@@ -105,7 +102,7 @@ var ScreencastService = new Lang.Class({
}
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
- },
+ }
ScreencastAreaAsync(params, invocation) {
let returnValue = [false, ''];
@@ -141,11 +138,11 @@ var ScreencastService = new Lang.Class({
}
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
- },
+ }
StopScreencastAsync(params, invocation) {
let success = this._stopRecordingForSender(invocation.get_sender());
invocation.return_value(GLib.Variant.new('(b)', [success]));
}
-});
+};
Signals.addSignalMethods(ScreencastService.prototype);
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
index edfac1dd9..81534acae 100644
--- a/js/ui/screenshot.js
+++ b/js/ui/screenshot.js
@@ -5,7 +5,6 @@ const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -20,10 +19,8 @@ const { loadInterfaceXML } = imports.misc.fileUtils;
const ScreenshotIface = loadInterfaceXML('org.gnome.Shell.Screenshot');
-var ScreenshotService = new Lang.Class({
- Name: 'ScreenshotService',
-
- _init() {
+var ScreenshotService = class {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenshotIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screenshot');
@@ -32,7 +29,7 @@ var ScreenshotService = new Lang.Class({
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
- },
+ }
_createScreenshot(invocation, needsDisk=true) {
let lockedDown = false;
@@ -53,11 +50,11 @@ var ScreenshotService = new Lang.Class({
this._screenShooter.set(sender, shooter);
return shooter;
- },
+ }
_onNameVanished(connection, name) {
this._removeShooterForSender(name);
- },
+ }
_removeShooterForSender(sender) {
let shooter = this._screenShooter.get(sender);
@@ -66,14 +63,14 @@ var ScreenshotService = new Lang.Class({
Gio.bus_unwatch_name(shooter._watchNameId);
this._screenShooter.delete(sender);
- },
+ }
_checkArea(x, y, width, height) {
return x >= 0 && y >= 0 &&
width > 0 && height > 0 &&
x + width <= global.screen_width &&
y + height <= global.screen_height;
- },
+ }
_onScreenshotComplete(result, area, filenameUsed, flash, invocation) {
if (result) {
@@ -89,7 +86,7 @@ var ScreenshotService = new Lang.Class({
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
invocation.return_value(retval);
- },
+ }
_scaleArea(x, y, width, height) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
@@ -98,7 +95,7 @@ var ScreenshotService = new Lang.Class({
width *= scaleFactor;
height *= scaleFactor;
return [x, y, width, height];
- },
+ }
_unscaleArea(x, y, width, height) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
@@ -107,7 +104,7 @@ var ScreenshotService = new Lang.Class({
width /= scaleFactor;
height /= scaleFactor;
return [x, y, width, height];
- },
+ }
ScreenshotAreaAsync(params, invocation) {
let [x, y, width, height, flash, filename, callback] = params;
@@ -132,7 +129,7 @@ var ScreenshotService = new Lang.Class({
invocation.return_gerror (e);
}
});
- },
+ }
ScreenshotWindowAsync(params, invocation) {
let [include_frame, include_cursor, flash, filename] = params;
@@ -150,7 +147,7 @@ var ScreenshotService = new Lang.Class({
invocation.return_gerror (e);
}
});
- },
+ }
ScreenshotAsync(params, invocation) {
let [include_cursor, flash, filename] = params;
@@ -168,7 +165,7 @@ var ScreenshotService = new Lang.Class({
invocation.return_gerror (e);
}
});
- },
+ }
SelectAreaAsync(params, invocation) {
let selectArea = new SelectArea();
@@ -184,7 +181,7 @@ var ScreenshotService = new Lang.Class({
"Operation was cancelled");
}
});
- },
+ }
FlashAreaAsync(params, invocation) {
let [x, y, width, height] = params;
@@ -198,7 +195,7 @@ var ScreenshotService = new Lang.Class({
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
flashspot.fire();
invocation.return_value(null);
- },
+ }
PickColorAsync(params, invocation) {
let pickPixel = new PickPixel();
@@ -227,12 +224,10 @@ var ScreenshotService = new Lang.Class({
}
});
}
-});
+};
-var SelectArea = new Lang.Class({
- Name: 'SelectArea',
-
- _init() {
+var SelectArea = class {
+ constructor() {
this._startX = -1;
this._startY = -1;
this._lastX = 0;
@@ -265,7 +260,7 @@ var SelectArea = new Lang.Class({
border_width: 1,
border_color: this._border });
this._group.add_actor(this._rubberband);
- },
+ }
show() {
if (!this._grabHelper.grab({ actor: this._group,
@@ -275,7 +270,7 @@ var SelectArea = new Lang.Class({
global.display.set_cursor(Meta.Cursor.CROSSHAIR);
Main.uiGroup.set_child_above_sibling(this._group, null);
this._group.visible = true;
- },
+ }
_initRubberbandColors() {
function colorFromRGBA(rgba) {
@@ -294,14 +289,14 @@ var SelectArea = new Lang.Class({
this._background = colorFromRGBA(context.get_background_color(Gtk.StateFlags.NORMAL));
this._border = colorFromRGBA(context.get_border_color(Gtk.StateFlags.NORMAL));
- },
+ }
_getGeometry() {
return { x: Math.min(this._startX, this._lastX),
y: Math.min(this._startY, this._lastY),
width: Math.abs(this._startX - this._lastX) + 1,
height: Math.abs(this._startY - this._lastY) + 1 };
- },
+ }
_onMotionEvent(actor, event) {
if (this._startX == -1 || this._startY == -1)
@@ -316,7 +311,7 @@ var SelectArea = new Lang.Class({
this._rubberband.set_size(geometry.width, geometry.height);
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onButtonPress(actor, event) {
[this._startX, this._startY] = event.get_coords();
@@ -325,7 +320,7 @@ var SelectArea = new Lang.Class({
this._rubberband.set_position(this._startX, this._startY);
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onButtonRelease(actor, event) {
this._result = this._getGeometry();
@@ -338,7 +333,7 @@ var SelectArea = new Lang.Class({
}
});
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onUngrab() {
global.display.set_cursor(Meta.Cursor.DEFAULT);
@@ -349,13 +344,11 @@ var SelectArea = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
}
-});
+};
Signals.addSignalMethods(SelectArea.prototype);
-var PickPixel = new Lang.Class({
- Name: 'PickPixel',
-
- _init() {
+var PickPixel = class {
+ constructor() {
this._result = null;
this._group = new St.Widget({ visible: false,
@@ -370,7 +363,7 @@ var PickPixel = new Lang.Class({
let constraint = new Clutter.BindConstraint({ source: global.stage,
coordinate: Clutter.BindCoordinate.ALL });
this._group.add_constraint(constraint);
- },
+ }
show() {
if (!this._grabHelper.grab({ actor: this._group,
@@ -380,13 +373,13 @@ var PickPixel = new Lang.Class({
global.display.set_cursor(Meta.Cursor.CROSSHAIR);
Main.uiGroup.set_child_above_sibling(this._group, null);
this._group.visible = true;
- },
+ }
_onButtonRelease(actor, event) {
this._result = event.get_coords();
this._grabHelper.ungrab();
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onUngrab() {
global.display.set_cursor(Meta.Cursor.DEFAULT);
@@ -397,23 +390,20 @@ var PickPixel = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
}
-});
+};
Signals.addSignalMethods(PickPixel.prototype);
var FLASHSPOT_ANIMATION_OUT_TIME = 0.5; // seconds
-var Flashspot = new Lang.Class({
- Name: 'Flashspot',
- Extends: Lightbox.Lightbox,
-
- _init(area) {
- this.parent(Main.uiGroup, { inhibitEvents: true,
- width: area.width,
- height: area.height });
+var Flashspot = class extends Lightbox.Lightbox {
+ constructor(area) {
+ super(Main.uiGroup, { inhibitEvents: true,
+ width: area.width,
+ height: area.height });
this.actor.style_class = 'flashspot';
this.actor.set_position(area.x, area.y);
- },
+ }
fire(doneCallback) {
this.actor.show();
@@ -429,4 +419,4 @@ var Flashspot = new Lang.Class({
}
});
}
-});
+};
diff --git a/js/ui/search.js b/js/ui/search.js
index 16bd8cf20..a3ddf537a 100644
--- a/js/ui/search.js
+++ b/js/ui/search.js
@@ -44,10 +44,8 @@ var MaxWidthBin = new Lang.Class({
}
});
-var SearchResult = new Lang.Class({
- Name: 'SearchResult',
-
- _init(provider, metaInfo, resultsView) {
+var SearchResult = class {
+ constructor(provider, metaInfo, resultsView) {
this.provider = provider;
this.metaInfo = metaInfo;
this._resultsView = resultsView;
@@ -60,22 +58,18 @@ var SearchResult = new Lang.Class({
this.actor._delegate = this;
this.actor.connect('clicked', this.activate.bind(this));
- },
+ }
activate() {
this.emit('activate', this.metaInfo.id);
}
-});
+};
Signals.addSignalMethods(SearchResult.prototype);
-var ListSearchResult = new Lang.Class({
- Name: 'ListSearchResult',
- Extends: SearchResult,
+var ListSearchResult = class extends SearchResult {
- ICON_SIZE: 24,
-
- _init(provider, metaInfo, resultsView) {
- this.parent(provider, metaInfo, resultsView);
+ constructor(provider, metaInfo, resultsView) {
+ super(provider, metaInfo, resultsView);
this.actor.style_class = 'list-search-result';
this.actor.x_fill = true;
@@ -122,26 +116,27 @@ var ListSearchResult = new Lang.Class({
}
this.actor.connect('destroy', this._onDestroy.bind(this));
- },
+ }
+
+ get ICON_SIZE() {
+ return 24;
+ }
_highlightTerms() {
let markup = this._resultsView.highlightTerms(this.metaInfo['description'].split('\n')[0]);
this._descriptionLabel.clutter_text.set_markup(markup);
- },
+ }
_onDestroy() {
if (this._termsChangedId)
this._resultsView.disconnect(this._termsChangedId);
this._termsChangedId = 0;
}
-});
+};
-var GridSearchResult = new Lang.Class({
- Name: 'GridSearchResult',
- Extends: SearchResult,
-
- _init(provider, metaInfo, resultsView) {
- this.parent(provider, metaInfo, resultsView);
+var GridSearchResult = class extends SearchResult {
+ constructor(provider, metaInfo, resultsView) {
+ super(provider, metaInfo, resultsView);
this.actor.style_class = 'grid-search-result';
@@ -151,12 +146,10 @@ var GridSearchResult = new Lang.Class({
this.actor.set_child(content);
this.actor.label_actor = this.icon.label;
}
-});
+};
-var SearchResultsBase = new Lang.Class({
- Name: 'SearchResultsBase',
-
- _init(provider, resultsView) {
+var SearchResultsBase = class {
+ constructor(provider, resultsView) {
this.provider = provider;
this._resultsView = resultsView;
@@ -177,19 +170,19 @@ var SearchResultsBase = new Lang.Class({
this._clipboard = St.Clipboard.get_default();
this._cancellable = new Gio.Cancellable();
- },
+ }
destroy() {
this.actor.destroy();
this._terms = [];
- },
+ }
_createResultDisplay(meta) {
if (this.provider.createResultObject)
return this.provider.createResultObject(meta, this._resultsView);
return null;
- },
+ }
clear() {
this._cancellable.cancel();
@@ -198,21 +191,21 @@ var SearchResultsBase = new Lang.Class({
this._resultDisplays = {};
this._clearResultDisplay();
this.actor.hide();
- },
+ }
_keyFocusIn(actor) {
this.emit('key-focus-in', actor);
- },
+ }
_activateResult(result, id) {
this.provider.activateResult(id, this._terms);
if (result.metaInfo.clipboardText)
this._clipboard.set_text(St.ClipboardType.CLIPBOARD, result.metaInfo.clipboardText);
Main.overview.toggle();
- },
+ }
_setMoreCount(count) {
- },
+ }
_ensureResultActors(results, callback) {
let metasNeeded = results.filter(
@@ -254,7 +247,7 @@ var SearchResultsBase = new Lang.Class({
callback(true);
}, this._cancellable);
}
- },
+ }
updateSearch(providerResults, terms, callback) {
this._terms = terms;
@@ -288,14 +281,11 @@ var SearchResultsBase = new Lang.Class({
});
}
}
-});
+};
-var ListSearchResults = new Lang.Class({
- Name: 'ListSearchResults',
- Extends: SearchResultsBase,
-
- _init(provider, resultsView) {
- this.parent(provider, resultsView);
+var ListSearchResults = class extends SearchResultsBase {
+ constructor(provider, resultsView) {
+ super(provider, resultsView);
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
this.providerInfo = new ProviderInfo(provider);
@@ -316,28 +306,28 @@ var ListSearchResults = new Lang.Class({
this._container.add(this._content, { expand: true });
this._resultDisplayBin.set_child(this._container);
- },
+ }
_setMoreCount(count) {
this.providerInfo.setMoreCount(count);
- },
+ }
_getMaxDisplayedResults() {
return MAX_LIST_SEARCH_RESULTS_ROWS;
- },
+ }
_clearResultDisplay() {
this._content.remove_all_children();
- },
+ }
_createResultDisplay(meta) {
- return this.parent(meta, this._resultsView) ||
+ return super._createResultDisplay(meta, this._resultsView) ||
new ListSearchResult(this.provider, meta, this._resultsView);
- },
+ }
_addItem(display) {
this._content.add_actor(display.actor);
- },
+ }
getFirstResult() {
if (this._content.get_n_children() > 0)
@@ -345,15 +335,12 @@ var ListSearchResults = new Lang.Class({
else
return null;
}
-});
+};
Signals.addSignalMethods(ListSearchResults.prototype);
-var GridSearchResults = new Lang.Class({
- Name: 'GridSearchResults',
- Extends: SearchResultsBase,
-
- _init(provider, resultsView) {
- this.parent(provider, resultsView);
+var GridSearchResults = class extends SearchResultsBase {
+ constructor(provider, resultsView) {
+ super(provider, resultsView);
// We need to use the parent container to know how much results we can show.
// None of the actors in this class can be used for that, since the main actor
// goes hidden when no results are displayed, and then it lost its allocation.
@@ -368,26 +355,26 @@ var GridSearchResults = new Lang.Class({
this._bin.set_child(this._grid);
this._resultDisplayBin.set_child(this._bin);
- },
+ }
_getMaxDisplayedResults() {
let parentThemeNode = this._parentContainer.get_theme_node();
let availableWidth = parentThemeNode.adjust_for_width(this._parentContainer.width);
return this._grid.columnsForWidth(availableWidth) * this._grid.getRowLimit();
- },
+ }
_clearResultDisplay() {
this._grid.removeAll();
- },
+ }
_createResultDisplay(meta) {
- return this.parent(meta, this._resultsView) ||
+ return super._createResultDisplay(meta, this._resultsView) ||
new GridSearchResult(this.provider, meta, this._resultsView);
- },
+ }
_addItem(display) {
this._grid.addItem(display);
- },
+ }
getFirstResult() {
if (this._grid.visibleItemsCount() > 0)
@@ -395,13 +382,11 @@ var GridSearchResults = new Lang.Class({
else
return null;
}
-});
+};
Signals.addSignalMethods(GridSearchResults.prototype);
-var SearchResults = new Lang.Class({
- Name: 'SearchResults',
-
- _init() {
+var SearchResults = class {
+ constructor() {
this.actor = new St.BoxLayout({ name: 'searchResults',
vertical: true });
@@ -459,7 +444,7 @@ var SearchResults = new Lang.Class({
this._registerProvider(new AppDisplay.AppSearchProvider());
this._reloadRemoteProviders();
- },
+ }
_reloadRemoteProviders() {
let remoteProviders = this._providers.filter(p => p.isRemoteProvider);
@@ -470,13 +455,13 @@ var SearchResults = new Lang.Class({
RemoteSearch.loadRemoteSearchProviders(this._searchSettings, providers => {
providers.forEach(this._registerProvider.bind(this));
});
- },
+ }
_registerProvider(provider) {
provider.searchInProgress = false;
this._providers.push(provider);
this._ensureProviderDisplay(provider);
- },
+ }
_unregisterProvider(provider) {
let index = this._providers.indexOf(provider);
@@ -484,19 +469,19 @@ var SearchResults = new Lang.Class({
if (provider.display)
provider.display.destroy();
- },
+ }
_gotResults(results, provider) {
this._results[provider.id] = results;
this._updateResults(provider, results);
- },
+ }
_clearSearchTimeout() {
if (this._searchTimeoutId > 0) {
GLib.source_remove(this._searchTimeoutId);
this._searchTimeoutId = 0;
}
- },
+ }
_reset() {
this._terms = [];
@@ -507,7 +492,7 @@ var SearchResults = new Lang.Class({
this._startingSearch = false;
this._updateSearchProgress();
- },
+ }
_doSearch() {
this._startingSearch = false;
@@ -537,13 +522,13 @@ var SearchResults = new Lang.Class({
this._updateSearchProgress();
this._clearSearchTimeout();
- },
+ }
_onSearchTimeout() {
this._searchTimeoutId = 0;
this._doSearch();
return GLib.SOURCE_REMOVE;
- },
+ }
setTerms(terms) {
// Check for the case of making a duplicate previous search before
@@ -580,18 +565,18 @@ var SearchResults = new Lang.Class({
this._highlightRegex = new RegExp(`(${escapedTerms.join('|')})`, 'gi');
this.emit('terms-changed');
- },
+ }
_onPan(action) {
let [dist, dx, dy] = action.get_motion_delta(0);
let adjustment = this._scrollView.vscroll.adjustment;
adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
return false;
- },
+ }
_keyFocusIn(provider, actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
- },
+ }
_ensureProviderDisplay(provider) {
if (provider.display)
@@ -607,13 +592,13 @@ var SearchResults = new Lang.Class({
providerDisplay.actor.hide();
this._content.add(providerDisplay.actor);
provider.display = providerDisplay;
- },
+ }
_clearDisplay() {
this._providers.forEach(provider => {
provider.display.clear();
});
- },
+ }
_maybeSetInitialSelection() {
let newDefaultResult = null;
@@ -639,14 +624,14 @@ var SearchResults = new Lang.Class({
this._defaultResult = newDefaultResult;
}
- },
+ }
get searchInProgress() {
if (this._startingSearch)
return true;
return this._providers.some(p => p.searchInProgress);
- },
+ }
_updateSearchProgress() {
let haveResults = this._providers.some(provider => {
@@ -664,7 +649,7 @@ var SearchResults = new Lang.Class({
this._statusText.set_text(_("No results."));
}
}
- },
+ }
_updateResults(provider, results) {
let terms = this._terms;
@@ -676,7 +661,7 @@ var SearchResults = new Lang.Class({
this._maybeSetInitialSelection();
this._updateSearchProgress();
});
- },
+ }
activateDefault() {
// If we have a search queued up, force the search now.
@@ -685,12 +670,12 @@ var SearchResults = new Lang.Class({
if (this._defaultResult)
this._defaultResult.activate();
- },
+ }
highlightDefault(highlight) {
this._highlightDefault = highlight;
this._setSelected(this._defaultResult, highlight);
- },
+ }
popupMenuDefault() {
// If we have a search queued up, force the search now.
@@ -699,7 +684,7 @@ var SearchResults = new Lang.Class({
if (this._defaultResult)
this._defaultResult.actor.popup_menu();
- },
+ }
navigateFocus(direction) {
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
@@ -713,7 +698,7 @@ var SearchResults = new Lang.Class({
let from = this._defaultResult ? this._defaultResult.actor : null;
this.actor.navigate_focus(from, direction, false);
- },
+ }
_setSelected(result, selected) {
if (!result)
@@ -725,7 +710,7 @@ var SearchResults = new Lang.Class({
} else {
result.actor.remove_style_pseudo_class('selected');
}
- },
+ }
highlightTerms(description) {
if (!description)
@@ -736,7 +721,7 @@ var SearchResults = new Lang.Class({
return description.replace(this._highlightRegex, '$1');
}
-});
+};
Signals.addSignalMethods(SearchResults.prototype);
var ProviderInfo = new Lang.Class({
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
index e22176415..5a4e20418 100644
--- a/js/ui/sessionMode.js
+++ b/js/ui/sessionMode.js
@@ -2,7 +2,6 @@
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
@@ -151,40 +150,38 @@ function listModes() {
Mainloop.run('listModes');
}
-var SessionMode = new Lang.Class({
- Name: 'SessionMode',
-
- _init() {
+var SessionMode = class {
+ constructor() {
_loadModes();
let isPrimary = (_modes[global.session_mode] &&
_modes[global.session_mode].isPrimary);
let mode = isPrimary ? global.session_mode : 'user';
this._modeStack = [mode];
this._sync();
- },
+ }
pushMode(mode) {
this._modeStack.push(mode);
this._sync();
- },
+ }
popMode(mode) {
if (this.currentMode != mode || this._modeStack.length === 1)
throw new Error("Invalid SessionMode.popMode");
this._modeStack.pop();
this._sync();
- },
+ }
switchMode(to) {
if (this.currentMode == to)
return;
this._modeStack[this._modeStack.length - 1] = to;
this._sync();
- },
+ }
get currentMode() {
return this._modeStack[this._modeStack.length - 1];
- },
+ }
_sync() {
let params = _modes[this.currentMode];
@@ -205,5 +202,5 @@ var SessionMode = new Lang.Class({
this.emit('updated');
}
-});
+};
Signals.addSignalMethods(SessionMode.prototype);
diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js
index a200a1bdd..5d1b04698 100644
--- a/js/ui/shellDBus.js
+++ b/js/ui/shellDBus.js
@@ -19,10 +19,8 @@ const { loadInterfaceXML } = imports.misc.fileUtils;
const GnomeShellIface = loadInterfaceXML('org.gnome.Shell');
const ScreenSaverIface = loadInterfaceXML('org.gnome.ScreenSaver');
-var GnomeShell = new Lang.Class({
- Name: 'GnomeShellDBus',
-
- _init() {
+var GnomeShell = class {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell');
@@ -42,7 +40,7 @@ var GnomeShell = new Lang.Class({
this._checkOverviewVisibleChanged.bind(this));
Main.overview.connect('hidden',
this._checkOverviewVisibleChanged.bind(this));
- },
+ }
/**
* Eval:
@@ -75,11 +73,11 @@ var GnomeShell = new Lang.Class({
success = false;
}
return [success, returnValue];
- },
+ }
FocusSearch() {
Main.overview.focusSearch();
- },
+ }
ShowOSD(params) {
for (let param in params)
@@ -99,23 +97,23 @@ var GnomeShell = new Lang.Class({
icon = Gio.Icon.new_for_string(serializedIcon);
Main.osdWindowManager.show(monitorIndex, icon, label, level, maxLevel);
- },
+ }
FocusApp(id) {
this.ShowApplications();
Main.overview.viewSelector.appDisplay.selectApp(id);
- },
+ }
ShowApplications() {
Main.overview.viewSelector.showApps();
- },
+ }
GrabAcceleratorAsync(params, invocation) {
let [accel, flags] = params;
let sender = invocation.get_sender();
let bindingAction = this._grabAcceleratorForSender(accel, flags, sender);
return invocation.return_value(GLib.Variant.new('(u)', [bindingAction]));
- },
+ }
GrabAcceleratorsAsync(params, invocation) {
let [accels] = params;
@@ -126,7 +124,7 @@ var GnomeShell = new Lang.Class({
bindingActions.push(this._grabAcceleratorForSender(accel, flags, sender));
}
return invocation.return_value(GLib.Variant.new('(au)', [bindingActions]));
- },
+ }
UngrabAcceleratorAsync(params, invocation) {
let [action] = params;
@@ -138,7 +136,7 @@ var GnomeShell = new Lang.Class({
if (ungrabSucceeded)
this._grabbedAccelerators.delete(action);
return invocation.return_value(GLib.Variant.new('(b)', [ungrabSucceeded]));
- },
+ }
_emitAcceleratorActivated(action, deviceid, timestamp) {
let destination = this._grabbedAccelerators.get(action);
@@ -155,7 +153,7 @@ var GnomeShell = new Lang.Class({
info ? info.name : null,
'AcceleratorActivated',
GLib.Variant.new('(ua{sv})', [action, params]));
- },
+ }
_grabAcceleratorForSender(accelerator, flags, sender) {
let bindingAction = global.display.grab_accelerator(accelerator);
@@ -174,13 +172,13 @@ var GnomeShell = new Lang.Class({
}
return bindingAction;
- },
+ }
_ungrabAccelerator(action) {
let ungrabSucceeded = global.display.ungrab_accelerator(action);
if (ungrabSucceeded)
this._grabbedAccelerators.delete(action);
- },
+ }
_onGrabberBusNameVanished(connection, name) {
let grabs = this._grabbedAccelerators.entries();
@@ -190,61 +188,61 @@ var GnomeShell = new Lang.Class({
}
Gio.bus_unwatch_name(this._grabbers.get(name));
this._grabbers.delete(name);
- },
+ }
ShowMonitorLabelsAsync(params, invocation) {
let sender = invocation.get_sender();
let [dict] = params;
Main.osdMonitorLabeler.show(sender, dict);
- },
+ }
ShowMonitorLabels2Async(params, invocation) {
let sender = invocation.get_sender();
let [dict] = params;
Main.osdMonitorLabeler.show2(sender, dict);
- },
+ }
HideMonitorLabelsAsync(params, invocation) {
let sender = invocation.get_sender();
Main.osdMonitorLabeler.hide(sender);
- },
-
-
- Mode: global.session_mode,
+ }
_checkOverviewVisibleChanged() {
if (Main.overview.visible !== this._cachedOverviewVisible) {
this._cachedOverviewVisible = Main.overview.visible;
this._dbusImpl.emit_property_changed('OverviewActive', new GLib.Variant('b', this._cachedOverviewVisible));
}
- },
+ }
+
+ get Mode() {
+ return global.session_mode;
+ }
get OverviewActive() {
return this._cachedOverviewVisible;
- },
+ }
set OverviewActive(visible) {
if (visible)
Main.overview.show();
else
Main.overview.hide();
- },
+ }
- ShellVersion: Config.PACKAGE_VERSION
-});
+ get ShellVersion() {
+ return Config.PACKAGE_VERSION;
+ }
+};
const GnomeShellExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions');
-var GnomeShellExtensions = new Lang.Class({
- Name: 'GnomeShellExtensionsDBus',
-
- _init() {
+var GnomeShellExtensions = class {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellExtensionsIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell');
ExtensionSystem.connect('extension-state-changed',
this._extensionStateChanged.bind(this));
- },
-
+ }
ListExtensions() {
let out = {};
@@ -253,7 +251,7 @@ var GnomeShellExtensions = new Lang.Class({
out[uuid] = dbusObj;
}
return out;
- },
+ }
GetExtensionInfo(uuid) {
let extension = ExtensionUtils.extensions[uuid];
@@ -291,7 +289,7 @@ var GnomeShellExtensions = new Lang.Class({
}
return out;
- },
+ }
GetExtensionErrors(uuid) {
let extension = ExtensionUtils.extensions[uuid];
@@ -302,15 +300,15 @@ var GnomeShellExtensions = new Lang.Class({
return [];
return extension.errors;
- },
+ }
InstallRemoteExtensionAsync([uuid], invocation) {
return ExtensionDownloader.installExtension(uuid, invocation);
- },
+ }
UninstallExtension(uuid) {
return ExtensionDownloader.uninstallExtension(uuid);
- },
+ }
LaunchExtensionPrefs(uuid) {
let appSys = Shell.AppSystem.get_default();
@@ -319,7 +317,7 @@ var GnomeShellExtensions = new Lang.Class({
let timestamp = global.display.get_current_time_roundtrip();
info.launch_uris(['extension:///' + uuid],
global.create_app_launch_context(timestamp, -1));
- },
+ }
ReloadExtension(uuid) {
let extension = ExtensionUtils.extensions[uuid];
@@ -327,26 +325,24 @@ var GnomeShellExtensions = new Lang.Class({
return;
ExtensionSystem.reloadExtension(extension);
- },
+ }
CheckForUpdates() {
ExtensionDownloader.checkForUpdates();
- },
+ }
- ShellVersion: Config.PACKAGE_VERSION,
+ get ShellVersion() {
+ return Config.PACKAGE_VERSION;
+ }
_extensionStateChanged(_, newState) {
this._dbusImpl.emit_signal('ExtensionStatusChanged',
GLib.Variant.new('(sis)', [newState.uuid, newState.state, newState.error]));
}
-});
-
-var ScreenSaverDBus = new Lang.Class({
- Name: 'ScreenSaverDBus',
-
- _init(screenShield) {
- this.parent();
+};
+var ScreenSaverDBus = class {
+ constructor(screenShield) {
this._screenShield = screenShield;
screenShield.connect('active-changed', shield => {
this._dbusImpl.emit_signal('ActiveChanged', GLib.Variant.new('(b)', [shield.active]));
@@ -359,7 +355,7 @@ var ScreenSaverDBus = new Lang.Class({
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/ScreenSaver');
Gio.DBus.session.own_name('org.gnome.ScreenSaver', Gio.BusNameOwnerFlags.REPLACE, null, null);
- },
+ }
LockAsync(parameters, invocation) {
let tmpId = this._screenShield.connect('lock-screen-shown', () => {
@@ -369,18 +365,18 @@ var ScreenSaverDBus = new Lang.Class({
});
this._screenShield.lock(true);
- },
+ }
SetActive(active) {
if (active)
this._screenShield.activate(true);
else
this._screenShield.deactivate(false);
- },
+ }
GetActive() {
return this._screenShield.active;
- },
+ }
GetActiveTime() {
let started = this._screenShield.activationTime;
@@ -388,5 +384,5 @@ var ScreenSaverDBus = new Lang.Class({
return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
else
return 0;
- },
-});
+ }
+};
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
index 9db5136e6..642762fe2 100644
--- a/js/ui/shellEntry.js
+++ b/js/ui/shellEntry.js
@@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const St = imports.gi.St;
const BoxPointer = imports.ui.boxpointer;
@@ -10,12 +9,9 @@ const Main = imports.ui.main;
const Params = imports.misc.params;
const PopupMenu = imports.ui.popupMenu;
-var EntryMenu = new Lang.Class({
- Name: 'ShellEntryMenu',
- Extends: PopupMenu.PopupMenu,
-
- _init(entry) {
- this.parent(entry, 0, St.Side.TOP);
+var EntryMenu = class extends PopupMenu.PopupMenu {
+ constructor(entry) {
+ super(entry, 0, St.Side.TOP);
this._entry = entry;
this._clipboard = St.Clipboard.get_default();
@@ -36,18 +32,18 @@ var EntryMenu = new Lang.Class({
Main.uiGroup.add_actor(this.actor);
this.actor.hide();
- },
+ }
_makePasswordItem() {
let item = new PopupMenu.PopupMenuItem('');
item.connect('activate', this._onPasswordActivated.bind(this));
this.addMenuItem(item);
this._passwordItem = item;
- },
+ }
get isPassword() {
return this._passwordItem != null;
- },
+ }
set isPassword(v) {
if (v == this.isPassword)
@@ -61,7 +57,7 @@ var EntryMenu = new Lang.Class({
this._passwordItem = null;
this._entry.input_purpose = Clutter.InputContentPurpose.NORMAL;
}
- },
+ }
open(animate) {
this._updatePasteItem();
@@ -69,26 +65,26 @@ var EntryMenu = new Lang.Class({
if (this._passwordItem)
this._updatePasswordItem();
- this.parent(animate);
+ super.open(animate);
this._entry.add_style_pseudo_class('focus');
let direction = Gtk.DirectionType.TAB_FORWARD;
if (!this.actor.navigate_focus(null, direction, false))
this.actor.grab_key_focus();
- },
+ }
_updateCopyItem() {
let selection = this._entry.clutter_text.get_selection();
this._copyItem.setSensitive(!this._entry.clutter_text.password_char &&
selection && selection != '');
- },
+ }
_updatePasteItem() {
this._clipboard.get_text(St.ClipboardType.CLIPBOARD,
(clipboard, text) => {
this._pasteItem.setSensitive(text && text != '');
});
- },
+ }
_updatePasswordItem() {
let textHidden = (this._entry.clutter_text.password_char);
@@ -96,12 +92,12 @@ var EntryMenu = new Lang.Class({
this._passwordItem.label.set_text(_("Show Text"));
else
this._passwordItem.label.set_text(_("Hide Text"));
- },
+ }
_onCopyActivated() {
let selection = this._entry.clutter_text.get_selection();
this._clipboard.set_text(St.ClipboardType.CLIPBOARD, selection);
- },
+ }
_onPasteActivated() {
this._clipboard.get_text(St.ClipboardType.CLIPBOARD,
@@ -112,13 +108,13 @@ var EntryMenu = new Lang.Class({
let pos = this._entry.clutter_text.get_cursor_position();
this._entry.clutter_text.insert_text(text, pos);
});
- },
+ }
_onPasswordActivated() {
let visible = !!(this._entry.clutter_text.password_char);
this._entry.clutter_text.set_password_char(visible ? '' : '\u25cf');
}
-});
+};
function _setMenuAlignment(entry, stageX) {
let [success, entryX, entryY] = entry.transform_stage_point(stageX, 0);
diff --git a/js/ui/shellMountOperation.js b/js/ui/shellMountOperation.js
index 4b03490d5..a49e75a8d 100644
--- a/js/ui/shellMountOperation.js
+++ b/js/ui/shellMountOperation.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
const Signals = imports.signals;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
@@ -62,10 +61,8 @@ function _createIcon(gicon) {
/* -------------------------------------------------------- */
-var ListItem = new Lang.Class({
- Name: 'ListItem',
-
- _init(app) {
+var ListItem = class {
+ constructor(app) {
this._app = app;
let layout = new St.BoxLayout({ vertical: false});
@@ -90,19 +87,17 @@ var ListItem = new Lang.Class({
layout.add(labelBin);
this.actor.connect('clicked', this._onClicked.bind(this));
- },
+ }
_onClicked() {
this.emit('activate');
this._app.activate();
}
-});
+};
Signals.addSignalMethods(ListItem.prototype);
-var ShellMountOperation = new Lang.Class({
- Name: 'ShellMountOperation',
-
- _init(source, params) {
+var ShellMountOperation = class {
+ constructor(source, params) {
params = Params.parse(params, { existingDialog: null });
this._dialog = null;
@@ -124,7 +119,7 @@ var ShellMountOperation = new Lang.Class({
this._onShowUnmountProgress.bind(this));
this._gicon = source.get_icon();
- },
+ }
_closeExistingDialog() {
if (!this._existingDialog)
@@ -132,7 +127,7 @@ var ShellMountOperation = new Lang.Class({
this._existingDialog.close();
this._existingDialog = null;
- },
+ }
_onAskQuestion(op, message, choices) {
this._closeExistingDialog();
@@ -148,7 +143,7 @@ var ShellMountOperation = new Lang.Class({
this._dialog.update(message, choices);
this._dialog.open();
- },
+ }
_onAskPassword(op, message, defaultUser, defaultDomain, flags) {
if (this._existingDialog) {
@@ -173,7 +168,7 @@ var ShellMountOperation = new Lang.Class({
}
});
this._dialog.open();
- },
+ }
close(op) {
this._closeExistingDialog();
@@ -188,7 +183,7 @@ var ShellMountOperation = new Lang.Class({
this._notifier.done();
this._notifier = null;
}
- },
+ }
_onShowProcesses2(op) {
this._closeExistingDialog();
@@ -216,7 +211,7 @@ var ShellMountOperation = new Lang.Class({
}
this._processesDialog.update(message, processes, choices);
- },
+ }
_onShowUnmountProgress(op, message, timeLeft, bytesLeft) {
if (!this._notifier)
@@ -226,7 +221,7 @@ var ShellMountOperation = new Lang.Class({
this._notifier.done(message);
else
this._notifier.show(message);
- },
+ }
borrowDialog() {
if (this._dialogId != 0) {
@@ -236,18 +231,15 @@ var ShellMountOperation = new Lang.Class({
return this._dialog;
}
-});
+};
-var ShellUnmountNotifier = new Lang.Class({
- Name: 'ShellUnmountNotifier',
- Extends: MessageTray.Source,
-
- _init() {
- this.parent('', 'media-removable');
+var ShellUnmountNotifier = class extends MessageTray.Source {
+ constructor() {
+ super('', 'media-removable');
this._notification = null;
Main.messageTray.add(this);
- },
+ }
show(message) {
let [header, text] = message.split('\n', 2);
@@ -261,7 +253,7 @@ var ShellUnmountNotifier = new Lang.Class({
}
this.notify(this._notification);
- },
+ }
done(message) {
if (this._notification) {
@@ -276,35 +268,29 @@ var ShellUnmountNotifier = new Lang.Class({
this.notify(notification);
}
}
-});
+};
-var ShellMountQuestionDialog = new Lang.Class({
- Name: 'ShellMountQuestionDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(icon) {
- this.parent({ styleClass: 'mount-dialog' });
+var ShellMountQuestionDialog = class extends ModalDialog.ModalDialog {
+ constructor(icon) {
+ super({ styleClass: 'mount-dialog' });
this._content = new Dialog.MessageDialogContent({ icon });
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
- },
+ }
update(message, choices) {
_setLabelsForMessage(this._content, message);
_setButtonsForChoices(this, choices);
}
-});
+};
Signals.addSignalMethods(ShellMountQuestionDialog.prototype);
-var ShellMountPasswordDialog = new Lang.Class({
- Name: 'ShellMountPasswordDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(message, icon, flags) {
+var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
+ constructor(message, icon, flags) {
let strings = message.split('\n');
let title = strings.shift() || null;
let body = strings.shift() || null;
- this.parent({ styleClass: 'prompt-dialog' });
+ super({ styleClass: 'prompt-dialog' });
let content = new Dialog.MessageDialogContent({ icon, title, body });
this.contentLayout.add_actor(content);
@@ -352,20 +338,20 @@ var ShellMountPasswordDialog = new Lang.Class({
}];
this.setButtons(buttons);
- },
+ }
reaskPassword() {
this._passwordEntry.set_text('');
this._errorMessageLabel.show();
- },
+ }
_onCancelButton() {
this.emit('response', -1, '', false);
- },
+ }
_onUnlockButton() {
this._onEntryActivate();
- },
+ }
_onEntryActivate() {
global.settings.set_boolean(REMEMBER_MOUNT_PASSWORD_KEY,
@@ -375,14 +361,11 @@ var ShellMountPasswordDialog = new Lang.Class({
this._rememberChoice &&
this._rememberChoice.actor.checked);
}
-});
+};
-var ShellProcessesDialog = new Lang.Class({
- Name: 'ShellProcessesDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(icon) {
- this.parent({ styleClass: 'mount-dialog' });
+var ShellProcessesDialog = class extends ModalDialog.ModalDialog {
+ constructor(icon) {
+ super({ styleClass: 'mount-dialog' });
this._content = new Dialog.MessageDialogContent({ icon });
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
@@ -407,7 +390,7 @@ var ShellProcessesDialog = new Lang.Class({
if (this._applicationList.get_n_children() == 0)
scrollView.hide();
});
- },
+ }
_setAppsForPids(pids) {
// remove all the items
@@ -428,14 +411,14 @@ var ShellProcessesDialog = new Lang.Class({
this.emit('response', -1);
});
});
- },
+ }
update(message, processes, choices) {
this._setAppsForPids(processes);
_setLabelsForMessage(this._content, message);
_setButtonsForChoices(this, choices);
}
-});
+};
Signals.addSignalMethods(ShellProcessesDialog.prototype);
const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler');
@@ -447,10 +430,8 @@ var ShellMountOperationType = {
SHOW_PROCESSES: 3
};
-var GnomeShellMountOpHandler = new Lang.Class({
- Name: 'GnomeShellMountOpHandler',
-
- _init() {
+var GnomeShellMountOpHandler = class {
+ constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellMountOpIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gtk/MountOperationHandler');
Gio.bus_own_name_on_connection(Gio.DBus.session, 'org.gtk.MountOperationHandler',
@@ -460,13 +441,13 @@ var GnomeShellMountOpHandler = new Lang.Class({
this._volumeMonitor = Gio.VolumeMonitor.get();
this._ensureEmptyRequest();
- },
+ }
_ensureEmptyRequest() {
this._currentId = null;
this._currentInvocation = null;
this._currentType = ShellMountOperationType.NONE;
- },
+ }
_clearCurrentRequest(response, details) {
if (this._currentInvocation) {
@@ -475,7 +456,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
}
this._ensureEmptyRequest();
- },
+ }
_setCurrentRequest(invocation, id, type) {
let oldId = this._currentId;
@@ -492,20 +473,20 @@ var GnomeShellMountOpHandler = new Lang.Class({
return true;
return false;
- },
+ }
_closeDialog() {
if (this._dialog) {
this._dialog.close();
this._dialog = null;
}
- },
+ }
_createGIcon(iconName) {
let realIconName = iconName ? iconName : 'drive-harddisk';
return new Gio.ThemedIcon({ name: realIconName,
use_default_fallbacks: true });
- },
+ }
/**
* AskPassword:
@@ -557,7 +538,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
this._clearCurrentRequest(response, details);
});
this._dialog.open();
- },
+ }
/**
* AskQuestion:
@@ -595,7 +576,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
this._dialog.update(message, choices);
this._dialog.open();
- },
+ }
/**
* ShowProcesses:
@@ -643,7 +624,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
this._dialog.update(message, applicationPids, choices);
this._dialog.open();
- },
+ }
/**
* Close:
@@ -655,4 +636,4 @@ var GnomeShellMountOpHandler = new Lang.Class({
this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {});
this._closeDialog();
}
-});
+};
diff --git a/js/ui/slider.js b/js/ui/slider.js
index 65ff8ca8a..bef95e16f 100644
--- a/js/ui/slider.js
+++ b/js/ui/slider.js
@@ -3,7 +3,6 @@
const Atk = imports.gi.Atk;
const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
const St = imports.gi.St;
const Signals = imports.signals;
@@ -11,18 +10,15 @@ const BarLevel = imports.ui.barLevel;
var SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
-var Slider = new Lang.Class({
- Name: "Slider",
- Extends: BarLevel.BarLevel,
-
- _init(value) {
+var Slider = class extends BarLevel.BarLevel {
+ constructor(value) {
let params = {
styleClass: 'slider',
canFocus: true,
reactive: true,
accessibleRole: Atk.Role.SLIDER,
}
- this.parent(value, params)
+ super(value, params)
this.actor.connect('button-press-event', this._startDragging.bind(this));
this.actor.connect('touch-event', this._touchDragging.bind(this));
@@ -33,10 +29,10 @@ var Slider = new Lang.Class({
this._dragging = false;
this._customAccessible.connect('get-minimum-increment', this._getMinimumIncrement.bind(this));
- },
+ }
_barLevelRepaint(area) {
- this.parent(area);
+ super._barLevelRepaint(area);
// Add handle
let cr = area.get_context();
@@ -64,11 +60,11 @@ var Slider = new Lang.Class({
cr.stroke();
}
cr.$dispose();
- },
+ }
_startDragging(actor, event) {
return this.startDragging(event);
- },
+ }
startDragging(event) {
if (this._dragging)
@@ -100,7 +96,7 @@ var Slider = new Lang.Class({
[absX, absY] = event.get_coords();
this._moveHandle(absX, absY);
return Clutter.EVENT_STOP;
- },
+ }
_endDragging() {
if (this._dragging) {
@@ -121,7 +117,7 @@ var Slider = new Lang.Class({
this.emit('drag-end');
}
return Clutter.EVENT_STOP;
- },
+ }
_touchDragging(actor, event) {
let device = event.get_device();
@@ -139,7 +135,7 @@ var Slider = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
scroll(event) {
let direction = event.get_scroll_direction();
@@ -164,18 +160,18 @@ var Slider = new Lang.Class({
this.actor.queue_repaint();
this.emit('value-changed', this._value);
return Clutter.EVENT_STOP;
- },
+ }
_onScrollEvent(actor, event) {
return this.scroll(event);
- },
+ }
_motionEvent(actor, event) {
let absX, absY;
[absX, absY] = event.get_coords();
this._moveHandle(absX, absY);
return Clutter.EVENT_STOP;
- },
+ }
onKeyPressEvent(actor, event) {
let key = event.get_key_symbol();
@@ -189,7 +185,7 @@ var Slider = new Lang.Class({
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_moveHandle(absX, absY) {
let relX, relY, sliderX, sliderY;
@@ -210,11 +206,10 @@ var Slider = new Lang.Class({
this._value = newvalue * this._maxValue;
this.actor.queue_repaint();
this.emit('value-changed', this._value);
- },
+ }
_getMinimumIncrement(actor) {
return 0.1;
- },
-});
-
+ }
+};
Signals.addSignalMethods(Slider.prototype);
diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
index 69347ba38..f41be7250 100644
--- a/js/ui/status/bluetooth.js
+++ b/js/ui/status/bluetooth.js
@@ -2,7 +2,6 @@
const Gio = imports.gi.Gio;
const GnomeBluetooth = imports.gi.GnomeBluetooth;
-const Lang = imports.lang;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
@@ -18,12 +17,9 @@ const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface
const HAD_BLUETOOTH_DEVICES_SETUP = 'had-bluetooth-devices-setup';
-var Indicator = new Lang.Class({
- Name: 'BTIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._indicator = this._addIndicator();
this._indicator.icon_name = 'bluetooth-active-symbolic';
@@ -59,7 +55,7 @@ var Indicator = new Lang.Class({
this._model.connect('row-inserted', this._sync.bind(this));
Main.sessionMode.connect('updated', this._sync.bind(this));
this._sync();
- },
+ }
_getDefaultAdapter() {
let [ret, iter] = this._model.get_iter_first();
@@ -73,7 +69,7 @@ var Indicator = new Lang.Class({
ret = this._model.iter_next(iter);
}
return null;
- },
+ }
// nDevices is the number of devices setup for the current default
// adapter if one exists and is powered. If unpowered or unavailable,
@@ -111,7 +107,7 @@ var Indicator = new Lang.Class({
}
return [ nDevices, nConnectedDevices];
- },
+ }
_sync() {
let [ nDevices, nConnectedDevices ] = this._getNDevices();
@@ -136,5 +132,5 @@ var Indicator = new Lang.Class({
this._item.label.text = _("On");
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _("Turn On") : _("Turn Off");
- },
-});
+ }
+};
diff --git a/js/ui/status/brightness.js b/js/ui/status/brightness.js
index a1fb976d8..e45cf67c5 100644
--- a/js/ui/status/brightness.js
+++ b/js/ui/status/brightness.js
@@ -1,6 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Gio = imports.gi.Gio;
const St = imports.gi.St;
@@ -16,12 +15,9 @@ const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
const BrightnessInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Power.Screen');
const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface);
-var Indicator = new Lang.Class({
- Name: 'BrightnessIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent('display-brightness-symbolic');
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super('display-brightness-symbolic');
this._proxy = new BrightnessProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
(proxy, error) => {
if (error) {
@@ -51,17 +47,17 @@ var Indicator = new Lang.Class({
return this._slider.onKeyPressEvent(actor, event);
});
- },
+ }
_sliderChanged(slider, value) {
let percent = value * 100;
this._proxy.Brightness = percent;
- },
+ }
_sync() {
let visible = this._proxy.Brightness >= 0;
this._item.actor.visible = visible;
if (visible)
this._slider.setValue(this._proxy.Brightness / 100.0);
- },
-});
+ }
+};
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index ef2a6049b..81646a481 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -22,12 +22,9 @@ const Util = imports.misc.util;
const INPUT_SOURCE_TYPE_XKB = 'xkb';
const INPUT_SOURCE_TYPE_IBUS = 'ibus';
-var LayoutMenuItem = new Lang.Class({
- Name: 'LayoutMenuItem',
- Extends: PopupMenu.PopupBaseMenuItem,
-
- _init(displayName, shortName) {
- this.parent();
+var LayoutMenuItem = class extends PopupMenu.PopupBaseMenuItem {
+ constructor(displayName, shortName) {
+ super();
this.label = new St.Label({ text: displayName });
this.indicator = new St.Label({ text: shortName });
@@ -35,12 +32,10 @@ var LayoutMenuItem = new Lang.Class({
this.actor.add(this.indicator);
this.actor.label_actor = this.label;
}
-});
+};
-var InputSource = new Lang.Class({
- Name: 'InputSource',
-
- _init(type, id, displayName, shortName, index) {
+var InputSource = class {
+ constructor(type, id, displayName, shortName, index) {
this.type = type;
this.id = id;
this.displayName = displayName;
@@ -50,20 +45,20 @@ var InputSource = new Lang.Class({
this.properties = null;
this.xkbId = this._getXkbId();
- },
+ }
get shortName() {
return this._shortName;
- },
+ }
set shortName(v) {
this._shortName = v;
this.emit('changed');
- },
+ }
activate(interactive) {
this.emit('activate', !!interactive);
- },
+ }
_getXkbId() {
let engineDesc = IBusManager.getIBusManager().getEngineDesc(this.id);
@@ -75,7 +70,7 @@ var InputSource = new Lang.Class({
else
return engineDesc.layout;
}
-});
+};
Signals.addSignalMethods(InputSource.prototype);
var InputSourcePopup = new Lang.Class({
@@ -139,54 +134,55 @@ var InputSourceSwitcher = new Lang.Class({
}
});
-var InputSourceSettings = new Lang.Class({
- Name: 'InputSourceSettings',
- Abstract: true,
+var InputSourceSettings = class {
+ constructor() {
+ if (new.target === InputSourceSettings)
+ throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
+ }
_emitInputSourcesChanged() {
this.emit('input-sources-changed');
- },
+ }
_emitKeyboardOptionsChanged() {
this.emit('keyboard-options-changed');
- },
+ }
_emitPerWindowChanged() {
this.emit('per-window-changed');
- },
+ }
get inputSources() {
return [];
- },
+ }
get mruSources() {
return [];
- },
+ }
set mruSources(sourcesList) {
// do nothing
- },
+ }
get keyboardOptions() {
return [];
- },
+ }
get perWindow() {
return false;
}
-});
+};
Signals.addSignalMethods(InputSourceSettings.prototype);
-var InputSourceSystemSettings = new Lang.Class({
- Name: 'InputSourceSystemSettings',
- Extends: InputSourceSettings,
+var InputSourceSystemSettings = class extends InputSourceSettings {
+ constructor() {
+ super();
- _BUS_NAME: 'org.freedesktop.locale1',
- _BUS_PATH: '/org/freedesktop/locale1',
- _BUS_IFACE: 'org.freedesktop.locale1',
- _BUS_PROPS_IFACE: 'org.freedesktop.DBus.Properties',
+ this._BUS_NAME = 'org.freedesktop.locale1';
+ this._BUS_PATH = '/org/freedesktop/locale1';
+ this._BUS_IFACE = 'org.freedesktop.locale1';
+ this._BUS_PROPS_IFACE = 'org.freedesktop.DBus.Properties';
- _init() {
this._layouts = '';
this._variants = '';
this._options = '';
@@ -200,7 +196,7 @@ var InputSourceSystemSettings = new Lang.Class({
null,
Gio.DBusSignalFlags.NONE,
this._reload.bind(this));
- },
+ }
_reload() {
Gio.DBus.system.call(this._BUS_NAME,
@@ -232,7 +228,7 @@ var InputSourceSystemSettings = new Lang.Class({
this._emitKeyboardOptionsChanged();
}
});
- },
+ }
get inputSources() {
let sourcesList = [];
@@ -246,29 +242,28 @@ var InputSourceSystemSettings = new Lang.Class({
sourcesList.push({ type: INPUT_SOURCE_TYPE_XKB, id: id });
}
return sourcesList;
- },
+ }
get keyboardOptions() {
return this._options.split(',');
}
-});
+};
-var InputSourceSessionSettings = new Lang.Class({
- Name: 'InputSourceSessionSettings',
- Extends: InputSourceSettings,
+var InputSourceSessionSettings = class extends InputSourceSettings {
+ constructor() {
+ super();
- _DESKTOP_INPUT_SOURCES_SCHEMA: 'org.gnome.desktop.input-sources',
- _KEY_INPUT_SOURCES: 'sources',
- _KEY_MRU_SOURCES: 'mru-sources',
- _KEY_KEYBOARD_OPTIONS: 'xkb-options',
- _KEY_PER_WINDOW: 'per-window',
+ this._DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources';
+ this._KEY_INPUT_SOURCES = 'sources';
+ this._KEY_MRU_SOURCES = 'mru-sources';
+ this._KEY_KEYBOARD_OPTIONS = 'xkb-options';
+ this._KEY_PER_WINDOW = 'per-window';
- _init() {
this._settings = new Gio.Settings({ schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA });
this._settings.connect('changed::' + this._KEY_INPUT_SOURCES, this._emitInputSourcesChanged.bind(this));
this._settings.connect('changed::' + this._KEY_KEYBOARD_OPTIONS, this._emitKeyboardOptionsChanged.bind(this));
this._settings.connect('changed::' + this._KEY_PER_WINDOW, this._emitPerWindowChanged.bind(this));
- },
+ }
_getSourcesList(key) {
let sourcesList = [];
@@ -280,34 +275,32 @@ var InputSourceSessionSettings = new Lang.Class({
sourcesList.push({ type: type, id: id });
}
return sourcesList;
- },
+ }
get inputSources() {
return this._getSourcesList(this._KEY_INPUT_SOURCES);
- },
+ }
get mruSources() {
return this._getSourcesList(this._KEY_MRU_SOURCES);
- },
+ }
set mruSources(sourcesList) {
let sources = GLib.Variant.new('a(ss)', sourcesList);
this._settings.set_value(this._KEY_MRU_SOURCES, sources);
- },
+ }
get keyboardOptions() {
return this._settings.get_strv(this._KEY_KEYBOARD_OPTIONS);
- },
+ }
get perWindow() {
return this._settings.get_boolean(this._KEY_PER_WINDOW);
}
-});
+};
-var InputSourceManager = new Lang.Class({
- Name: 'InputSourceManager',
-
- _init() {
+var InputSourceManager = class {
+ constructor() {
// All valid input sources currently in the gsettings
// KEY_INPUT_SOURCES list indexed by their index there
this._inputSources = {};
@@ -361,14 +354,14 @@ var InputSourceManager = new Lang.Class({
this._sourcesPerWindowChanged();
this._disableIBus = false;
this._reloading = false;
- },
+ }
reload() {
this._reloading = true;
this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions);
this._inputSourcesChanged();
this._reloading = false;
- },
+ }
_ibusReadyCallback(im, ready) {
if (this._ibusReady == ready)
@@ -377,7 +370,7 @@ var InputSourceManager = new Lang.Class({
this._ibusReady = ready;
this._mruSources = [];
this._inputSourcesChanged();
- },
+ }
_modifiersSwitcher() {
let sourceIndexes = Object.keys(this._inputSources);
@@ -399,7 +392,7 @@ var InputSourceManager = new Lang.Class({
is.activate(true);
return true;
- },
+ }
_switchInputSource(display, window, binding) {
if (this._mruSources.length < 2)
@@ -418,12 +411,12 @@ var InputSourceManager = new Lang.Class({
let popup = new InputSourcePopup(this._mruSources, this._keybindingAction, this._keybindingActionBackward);
if (!popup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
popup.fadeAndDestroy();
- },
+ }
_keyboardOptionsChanged() {
this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions);
this._keyboardManager.reapply();
- },
+ }
_updateMruSettings() {
// If IBus is not ready we don't have a full picture of all
@@ -442,7 +435,7 @@ var InputSourceManager = new Lang.Class({
}
this._settings.mruSources = sourcesList;
- },
+ }
_currentInputSourceChanged(newSource) {
let oldSource;
@@ -458,7 +451,7 @@ var InputSourceManager = new Lang.Class({
}
this._changePerWindowSource();
- },
+ }
activateInputSource(is, interactive) {
// The focus changes during holdKeyboard/releaseKeyboard may trick
@@ -492,7 +485,7 @@ var InputSourceManager = new Lang.Class({
if (interactive)
this._updateMruSettings();
- },
+ }
_updateMruSources() {
let sourcesList = [];
@@ -537,7 +530,7 @@ var InputSourceManager = new Lang.Class({
}
}
this._mruSources = mruSources.concat(sourcesList);
- },
+ }
_inputSourcesChanged() {
let sources = this._settings.inputSources;
@@ -622,7 +615,7 @@ var InputSourceManager = new Lang.Class({
// All ibus engines are preloaded here to reduce the launching time
// when users switch the input sources.
this._ibusManager.preloadEngines(Object.keys(this._ibusSources));
- },
+ }
_makeEngineShortName(engineDesc) {
let symbol = engineDesc.get_symbol();
@@ -634,7 +627,7 @@ var InputSourceManager = new Lang.Class({
return langCode.toLowerCase();
return String.fromCharCode(0x2328); // keyboard glyph
- },
+ }
_ibusPropertiesRegistered(im, engineName, props) {
let source = this._ibusSources[engineName];
@@ -645,7 +638,7 @@ var InputSourceManager = new Lang.Class({
if (source == this._currentSource)
this.emit('current-source-changed', null);
- },
+ }
_ibusPropertyUpdated(im, engineName, prop) {
let source = this._ibusSources[engineName];
@@ -655,7 +648,7 @@ var InputSourceManager = new Lang.Class({
if (this._updateSubProperty(source.properties, prop) &&
source == this._currentSource)
this.emit('current-source-changed', null);
- },
+ }
_updateSubProperty(props, prop) {
if (!props)
@@ -672,7 +665,7 @@ var InputSourceManager = new Lang.Class({
}
}
return false;
- },
+ }
_ibusSetContentType(im, purpose, hints) {
if (purpose == IBus.InputPurpose.PASSWORD) {
@@ -689,7 +682,7 @@ var InputSourceManager = new Lang.Class({
this._disableIBus = false;
}
this.reload();
- },
+ }
_getNewInputSource(current) {
let sourceIndexes = Object.keys(this._inputSources);
@@ -706,14 +699,14 @@ var InputSourceManager = new Lang.Class({
}
return this._inputSources[sourceIndexes[0]];
- },
+ }
_getCurrentWindow() {
if (Main.overview.visible)
return Main.overview;
else
return global.display.focus_window;
- },
+ }
_setPerWindowInputSource() {
let window = this._getCurrentWindow();
@@ -727,7 +720,7 @@ var InputSourceManager = new Lang.Class({
if (window._currentSource)
window._currentSource.activate(false);
- },
+ }
_sourcesPerWindowChanged() {
this._sourcesPerWindow = this._settings.perWindow;
@@ -755,7 +748,7 @@ var InputSourceManager = new Lang.Class({
delete Main.overview._inputSources;
delete Main.overview._currentSource;
}
- },
+ }
_changePerWindowSource() {
if (!this._sourcesPerWindow)
@@ -767,16 +760,16 @@ var InputSourceManager = new Lang.Class({
window._inputSources = this._inputSources;
window._currentSource = this._currentSource;
- },
+ }
get currentSource() {
return this._currentSource;
- },
+ }
get inputSources() {
return this._inputSources;
- },
-});
+ }
+};
Signals.addSignalMethods(InputSourceManager.prototype);
let _inputSourceManager = null;
diff --git a/js/ui/status/location.js b/js/ui/status/location.js
index ed4863eca..9b623f072 100644
--- a/js/ui/status/location.js
+++ b/js/ui/status/location.js
@@ -3,7 +3,6 @@
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Dialog = imports.ui.dialog;
const Main = imports.ui.main;
@@ -47,12 +46,9 @@ const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface);
var AgentIface = loadInterfaceXML('org.freedesktop.GeoClue2.Agent');
-var Indicator = new Lang.Class({
- Name: 'LocationIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._settings = new Gio.Settings({ schema_id: LOCATION_SCHEMA });
this._settings.connect('changed::' + ENABLED,
@@ -85,11 +81,11 @@ var Indicator = new Lang.Class({
this._onMaxAccuracyLevelChanged();
this._connectToGeoclue();
this._connectToPermissionStore();
- },
+ }
get MaxAccuracyLevel() {
return this._getMaxAccuracyLevel();
- },
+ }
AuthorizeAppAsync(params, invocation) {
let [desktopId, reqAccuracyLevel] = params;
@@ -104,7 +100,7 @@ var Indicator = new Lang.Class({
invocation.return_value(GLib.Variant.new('(bu)',
[ret, accuracyLevel]));
});
- },
+ }
_syncIndicator() {
if (this._managerProxy == null) {
@@ -116,7 +112,7 @@ var Indicator = new Lang.Class({
this._indicator.visible = this._managerProxy.InUse;
this._item.actor.visible = this._indicator.visible;
this._updateMenuLabels();
- },
+ }
_connectToGeoclue() {
if (this._managerProxy != null || this._connecting)
@@ -128,7 +124,7 @@ var Indicator = new Lang.Class({
'/org/freedesktop/GeoClue2/Manager',
this._onManagerProxyReady.bind(this));
return true;
- },
+ }
_onManagerProxyReady(proxy, error) {
if (error != null) {
@@ -144,7 +140,7 @@ var Indicator = new Lang.Class({
this._syncIndicator();
this._managerProxy.AddAgentRemote('gnome-shell', this._onAgentRegistered.bind(this));
- },
+ }
_onAgentRegistered(result, error) {
this._connecting = false;
@@ -152,7 +148,7 @@ var Indicator = new Lang.Class({
if (error != null)
log(error.message);
- },
+ }
_onGeoclueVanished() {
if (this._propertiesChangedId) {
@@ -162,17 +158,17 @@ var Indicator = new Lang.Class({
this._managerProxy = null;
this._syncIndicator();
- },
+ }
_onOnOffAction() {
let enabled = this._settings.get_boolean(ENABLED);
this._settings.set_boolean(ENABLED, !enabled);
- },
+ }
_onSessionUpdated() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
- },
+ }
_updateMenuLabels() {
if (this._settings.get_boolean(ENABLED)) {
@@ -183,7 +179,7 @@ var Indicator = new Lang.Class({
this._item.label.text = _("Location Disabled");
this._onOffAction.label.text = _("Enable");
}
- },
+ }
_onMaxAccuracyLevelChanged() {
this._updateMenuLabels();
@@ -192,7 +188,7 @@ var Indicator = new Lang.Class({
// before we emit the notify for this property change.
if (!this._connectToGeoclue())
this._notifyMaxAccuracyLevel();
- },
+ }
_getMaxAccuracyLevel() {
if (this._settings.get_boolean(ENABLED)) {
@@ -203,23 +199,23 @@ var Indicator = new Lang.Class({
} else {
return GeoclueAccuracyLevel.NONE;
}
- },
+ }
_notifyMaxAccuracyLevel() {
let variant = new GLib.Variant('u', this._getMaxAccuracyLevel());
this._agent.emit_property_changed('MaxAccuracyLevel', variant);
- },
+ }
_onGeocluePropsChanged(proxy, properties) {
let unpacked = properties.deep_unpack();
if ("InUse" in unpacked)
this._syncIndicator();
- },
+ }
_connectToPermissionStore() {
this._permStoreProxy = null;
new PermissionStore.PermissionStore(this._onPermStoreProxyReady.bind(this));
- },
+ }
_onPermStoreProxyReady(proxy, error) {
if (error != null) {
@@ -228,20 +224,15 @@ var Indicator = new Lang.Class({
}
this._permStoreProxy = proxy;
- },
-});
+ }
+};
function clamp(value, min, max) {
return Math.max(min, Math.min(max, value));
}
-var AppAuthorizer = new Lang.Class({
- Name: 'LocationAppAuthorizer',
-
- _init(desktopId,
- reqAccuracyLevel,
- permStoreProxy,
- maxAccuracyLevel) {
+var AppAuthorizer = class {
+ constructor(desktopId, reqAccuracyLevel, permStoreProxy, maxAccuracyLevel) {
this.desktopId = desktopId;
this.reqAccuracyLevel = reqAccuracyLevel;
this._permStoreProxy = permStoreProxy;
@@ -249,7 +240,7 @@ var AppAuthorizer = new Lang.Class({
this._permissions = {};
this._accuracyLevel = GeoclueAccuracyLevel.NONE;
- },
+ }
authorize(onAuthDone) {
this._onAuthDone = onAuthDone;
@@ -265,7 +256,7 @@ var AppAuthorizer = new Lang.Class({
this._permStoreProxy.LookupRemote(APP_PERMISSIONS_TABLE,
APP_PERMISSIONS_ID,
this._onPermLookupDone.bind(this));
- },
+ }
_onPermLookupDone(result, error) {
if (error != null) {
@@ -298,7 +289,7 @@ var AppAuthorizer = new Lang.Class({
GeoclueAccuracyLevel.NONE;
this._completeAuth();
}
- },
+ }
_userAuthorizeApp() {
let name = this._app.get_name();
@@ -306,7 +297,7 @@ var AppAuthorizer = new Lang.Class({
let reason = appInfo.get_locale_string("X-Geoclue-Reason");
this._showAppAuthDialog(name, reason);
- },
+ }
_showAppAuthDialog(name, reason) {
this._dialog = new GeolocationDialog(name,
@@ -320,7 +311,7 @@ var AppAuthorizer = new Lang.Class({
});
this._dialog.open();
- },
+ }
_completeAuth() {
if (this._accuracyLevel != GeoclueAccuracyLevel.NONE) {
@@ -331,7 +322,7 @@ var AppAuthorizer = new Lang.Class({
this._saveToPermissionStore();
this._onAuthDone(this._accuracyLevel);
- },
+ }
_saveToPermissionStore() {
if (this._permStoreProxy == null)
@@ -352,15 +343,12 @@ var AppAuthorizer = new Lang.Class({
if (error != null)
log(error.message);
});
- },
-});
+ }
+};
-var GeolocationDialog = new Lang.Class({
- Name: 'GeolocationDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(name, subtitle, reqAccuracyLevel) {
- this.parent({ styleClass: 'geolocation-dialog' });
+var GeolocationDialog = class extends ModalDialog.ModalDialog {
+ constructor(name, subtitle, reqAccuracyLevel) {
+ super({ styleClass: 'geolocation-dialog' });
this.reqAccuracyLevel = reqAccuracyLevel;
let icon = new Gio.ThemedIcon({ name: 'find-location-symbolic' });
@@ -380,16 +368,16 @@ var GeolocationDialog = new Lang.Class({
action: this._onGrantClicked.bind(this) });
this.setInitialKeyFocus(button);
- },
+ }
_onGrantClicked() {
this.emit('response', this.reqAccuracyLevel);
this.close();
- },
+ }
_onDenyClicked() {
this.emit('response', GeoclueAccuracyLevel.NONE);
this.close();
}
-});
+};
Signals.addSignalMethods(GeolocationDialog.prototype);
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index 92a00301b..a2388bd8b 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -4,7 +4,6 @@ const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const NM = imports.gi.NM;
const Signals = imports.signals;
@@ -83,10 +82,8 @@ function ensureActiveConnectionProps(active, client) {
}
}
-var NMConnectionItem = new Lang.Class({
- Name: 'NMConnectionItem',
-
- _init(section, connection) {
+var NMConnectionItem = class {
+ constructor(section, connection) {
this._section = section;
this._connection = connection;
this._activeConnection = null;
@@ -94,7 +91,7 @@ var NMConnectionItem = new Lang.Class({
this._buildUI();
this._sync();
- },
+ }
_buildUI() {
this.labelItem = new PopupMenu.PopupMenuItem('');
@@ -102,12 +99,12 @@ var NMConnectionItem = new Lang.Class({
this.radioItem = new PopupMenu.PopupMenuItem(this._connection.get_id(), false);
this.radioItem.connect('activate', this._activate.bind(this));
- },
+ }
destroy() {
this.labelItem.destroy();
this.radioItem.destroy();
- },
+ }
updateForConnection(connection) {
// connection should always be the same object
@@ -120,25 +117,25 @@ var NMConnectionItem = new Lang.Class({
this.radioItem.label.text = connection.get_id();
this._sync();
this.emit('name-changed');
- },
+ }
getName() {
return this._connection.get_id();
- },
+ }
isActive() {
if (this._activeConnection == null)
return false;
return this._activeConnection.state <= NM.ActiveConnectionState.ACTIVATED;
- },
+ }
_sync() {
let isActive = this.isActive();
this.labelItem.label.text = isActive ? _("Turn Off") : this._section.getConnectLabel();
this.radioItem.setOrnament(isActive ? PopupMenu.Ornament.DOT : PopupMenu.Ornament.NONE);
this.emit('icon-changed');
- },
+ }
_toggle() {
if (this._activeConnection == null)
@@ -147,18 +144,18 @@ var NMConnectionItem = new Lang.Class({
this._section.deactivateConnection(this._activeConnection);
this._sync();
- },
+ }
_activate() {
if (this._activeConnection == null)
this._section.activateConnection(this._connection);
this._sync();
- },
+ }
_connectionStateChanged(ac, newstate, reason) {
this._sync();
- },
+ }
setActiveConnection(activeConnection) {
if (this._activeConnectionChangedId > 0) {
@@ -173,15 +170,15 @@ var NMConnectionItem = new Lang.Class({
this._connectionStateChanged.bind(this));
this._sync();
- },
-});
+ }
+};
Signals.addSignalMethods(NMConnectionItem.prototype);
-var NMConnectionSection = new Lang.Class({
- Name: 'NMConnectionSection',
- Abstract: true,
+var NMConnectionSection = class {
+ constructor(client) {
+ if (new.target === NMConnectionSection)
+ throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
- _init(client) {
this._client = client;
this._connectionItems = new Map();
@@ -195,7 +192,7 @@ var NMConnectionSection = new Lang.Class({
this.item.menu.addMenuItem(this._radioSection);
this._notifyConnectivityId = this._client.connect('notify::connectivity', this._iconChanged.bind(this));
- },
+ }
destroy() {
if (this._notifyConnectivityId != 0) {
@@ -204,12 +201,12 @@ var NMConnectionSection = new Lang.Class({
}
this.item.destroy();
- },
+ }
_iconChanged() {
this._sync();
this.emit('icon-changed');
- },
+ }
_sync() {
let nItems = this._connectionItems.size;
@@ -219,27 +216,27 @@ var NMConnectionSection = new Lang.Class({
this.item.label.text = this._getStatus();
this.item.icon.icon_name = this._getMenuIcon();
- },
+ }
_getMenuIcon() {
return this.getIndicatorIcon();
- },
+ }
getConnectLabel() {
return _("Connect");
- },
+ }
_connectionValid(connection) {
return true;
- },
+ }
_connectionSortFunction(one, two) {
return GLib.utf8_collate(one.get_id(), two.get_id());
- },
+ }
_makeConnectionItem(connection) {
return new NMConnectionItem(this, connection);
- },
+ }
checkConnection(connection) {
if (!this._connectionValid(connection))
@@ -259,7 +256,7 @@ var NMConnectionSection = new Lang.Class({
this._updateForConnection(item, connection);
else
this._addConnection(connection);
- },
+ }
_updateForConnection(item, connection) {
let pos = this._connections.indexOf(connection);
@@ -270,7 +267,7 @@ var NMConnectionSection = new Lang.Class({
this._radioSection.moveMenuItem(item.radioItem, pos);
item.updateForConnection(connection);
- },
+ }
_addConnection(connection) {
let item = this._makeConnectionItem(connection);
@@ -288,7 +285,7 @@ var NMConnectionSection = new Lang.Class({
this._radioSection.addMenuItem(item.radioItem, pos);
this._connectionItems.set(connection.get_uuid(), item);
this._sync();
- },
+ }
removeConnection(connection) {
let uuid = connection.get_uuid();
@@ -303,17 +300,16 @@ var NMConnectionSection = new Lang.Class({
this._connections.splice(pos, 1);
this._sync();
- },
-});
+ }
+};
Signals.addSignalMethods(NMConnectionSection.prototype);
-var NMConnectionDevice = new Lang.Class({
- Name: 'NMConnectionDevice',
- Extends: NMConnectionSection,
- Abstract: true,
+var NMConnectionDevice = class extends NMConnectionSection {
+ constructor(client, device) {
+ if (new.target === NMConnectionDevice)
+ throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
- _init(client, device) {
- this.parent(client);
+ super(client);
this._device = device;
this._description = '';
@@ -322,19 +318,19 @@ var NMConnectionDevice = new Lang.Class({
this._stateChangedId = this._device.connect('state-changed', this._deviceStateChanged.bind(this));
this._activeConnectionChangedId = this._device.connect('notify::active-connection', this._activeConnectionChanged.bind(this));
- },
+ }
_canReachInternet() {
if (this._client.primary_connection != this._device.active_connection)
return true;
return this._client.connectivity == NM.ConnectivityState.FULL;
- },
+ }
_autoConnect() {
let connection = new NM.SimpleConnection();
this._client.add_and_activate_connection_async(connection, this._device, null, null, null);
- },
+ }
destroy() {
if (this._stateChangedId) {
@@ -346,8 +342,8 @@ var NMConnectionDevice = new Lang.Class({
this._activeConnectionChangedId = 0;
}
- this.parent();
- },
+ super.destroy();
+ }
_activeConnectionChanged() {
if (this._activeConnection) {
@@ -357,7 +353,7 @@ var NMConnectionDevice = new Lang.Class({
}
this._sync();
- },
+ }
_deviceStateChanged(device, newstate, oldstate, reason) {
if (newstate == oldstate) {
@@ -374,28 +370,28 @@ var NMConnectionDevice = new Lang.Class({
}
this._sync();
- },
+ }
_connectionValid(connection) {
return this._device.connection_valid(connection);
- },
+ }
activateConnection(connection) {
this._client.activate_connection_async(connection, this._device, null, null, null);
- },
+ }
deactivateConnection(activeConnection) {
this._device.disconnect(null);
- },
+ }
setDeviceDescription(desc) {
this._description = desc;
this._sync();
- },
+ }
_getDescription() {
return this._description;
- },
+ }
_sync() {
let nItems = this._connectionItems.size;
@@ -414,8 +410,8 @@ var NMConnectionDevice = new Lang.Class({
}
}
- this.parent();
- },
+ super._sync();
+ }
_getStatus() {
if (!this._device)
@@ -465,31 +461,31 @@ var NMConnectionDevice = new Lang.Class({
log('Device state invalid, is %d'.format(this._device.state));
return 'invalid';
}
- },
-});
+ }
+};
-var NMDeviceWired = new Lang.Class({
- Name: 'NMDeviceWired',
- Extends: NMConnectionDevice,
- category: NMConnectionCategory.WIRED,
-
- _init(client, device) {
- this.parent(client, device);
+var NMDeviceWired = class extends NMConnectionDevice {
+ constructor(client, device) {
+ super(client, device);
this.item.menu.addSettingsAction(_("Wired Settings"), 'gnome-network-panel.desktop');
- },
+ }
+
+ get category() {
+ return NMConnectionCategory.WIRED;
+ }
_hasCarrier() {
if (this._device instanceof NM.DeviceEthernet)
return this._device.carrier;
else
return true;
- },
+ }
_sync() {
this.item.actor.visible = this._hasCarrier();
- this.parent();
- },
+ super._sync();
+ }
getIndicatorIcon() {
if (this._device.active_connection) {
@@ -508,15 +504,11 @@ var NMDeviceWired = new Lang.Class({
} else
return 'network-wired-disconnected-symbolic';
}
-});
+};
-var NMDeviceModem = new Lang.Class({
- Name: 'NMDeviceModem',
- Extends: NMConnectionDevice,
- category: NMConnectionCategory.WWAN,
-
- _init(client, device) {
- this.parent(client, device);
+var NMDeviceModem = class extends NMConnectionDevice {
+ constructor(client, device) {
+ super(client, device);
this.item.menu.addSettingsAction(_("Mobile Broadband Settings"), 'gnome-network-panel.desktop');
@@ -538,12 +530,16 @@ var NMDeviceModem = new Lang.Class({
this._iconChanged();
});
}
- },
+ }
+
+ get category() {
+ return NMConnectionCategory.WWAN;
+ }
_autoConnect() {
Util.spawn(['gnome-control-center', 'network',
'connect-3g', this._device.get_path()]);
- },
+ }
destroy() {
if (this._operatorNameId) {
@@ -555,8 +551,8 @@ var NMDeviceModem = new Lang.Class({
this._signalQualityId = 0;
}
- this.parent();
- },
+ super.destroy();
+ }
_getStatus() {
if (!this._client.wwan_hardware_enabled)
@@ -570,8 +566,8 @@ var NMDeviceModem = new Lang.Class({
this._mobileDevice && this._mobileDevice.operator_name)
return this._mobileDevice.operator_name;
else
- return this.parent();
- },
+ return super._getStatus();
+ }
getIndicatorIcon() {
if (this._device.active_connection) {
@@ -582,31 +578,31 @@ var NMDeviceModem = new Lang.Class({
} else {
return 'network-cellular-signal-none-symbolic';
}
- },
+ }
_getSignalIcon() {
return 'network-cellular-signal-' + signalToIcon(this._mobileDevice.signal_quality) + '-symbolic';
- },
-});
+ }
+};
-var NMDeviceBluetooth = new Lang.Class({
- Name: 'NMDeviceBluetooth',
- Extends: NMConnectionDevice,
- category: NMConnectionCategory.WWAN,
-
- _init(client, device) {
- this.parent(client, device);
+var NMDeviceBluetooth = class extends NMConnectionDevice {
+ constructor(client, device) {
+ super(client, device);
this.item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-network-panel.desktop');
- },
+ }
+
+ get category() {
+ return NMConnectionCategory.WWAN;
+ }
_getDescription() {
return this._device.name;
- },
+ }
getConnectLabel() {
return _("Connect to Internet");
- },
+ }
getIndicatorIcon() {
if (this._device.active_connection) {
@@ -621,12 +617,10 @@ var NMDeviceBluetooth = new Lang.Class({
return 'network-cellular-signal-none-symbolic';
}
}
-});
+};
-var NMWirelessDialogItem = new Lang.Class({
- Name: 'NMWirelessDialogItem',
-
- _init(network) {
+var NMWirelessDialogItem = class {
+ constructor(network) {
this._network = network;
this._ap = network.accessPoints[0];
@@ -660,20 +654,20 @@ var NMWirelessDialogItem = new Lang.Class({
this._icons.add_actor(this._signalIcon);
this._sync();
- },
+ }
_sync() {
this._signalIcon.icon_name = this._getSignalIcon();
- },
+ }
updateBestAP(ap) {
this._ap = ap;
this._sync();
- },
+ }
setActive(isActive) {
this._selectedIcon.opacity = isActive ? 255 : 0;
- },
+ }
_getSignalIcon() {
if (this._ap.mode == NM80211Mode.ADHOC)
@@ -681,15 +675,12 @@ var NMWirelessDialogItem = new Lang.Class({
else
return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
}
-});
+};
Signals.addSignalMethods(NMWirelessDialogItem.prototype);
-var NMWirelessDialog = new Lang.Class({
- Name: 'NMWirelessDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(client, device) {
- this.parent({ styleClass: 'nm-dialog' });
+var NMWirelessDialog = class extends ModalDialog.ModalDialog {
+ constructor(client, device) {
+ super({ styleClass: 'nm-dialog' });
this._client = client;
this._device = device;
@@ -735,7 +726,7 @@ var NMWirelessDialog = new Lang.Class({
Main.sessionMode.disconnect(id);
this.close();
});
- },
+ }
destroy() {
if (this._apAddedId) {
@@ -764,13 +755,13 @@ var NMWirelessDialog = new Lang.Class({
this._scanTimeoutId = 0;
}
- this.parent();
- },
+ super.destroy();
+ }
_onScanTimeout() {
this._device.request_scan_async(null, null);
return GLib.SOURCE_CONTINUE;
- },
+ }
_activeApChanged() {
if (this._activeNetwork)
@@ -786,13 +777,13 @@ var NMWirelessDialog = new Lang.Class({
if (this._activeNetwork)
this._activeNetwork.item.setActive(true);
this._updateSensitivity();
- },
+ }
_updateSensitivity() {
let connectSensitive = this._client.wireless_enabled && this._selectedNetwork && (this._selectedNetwork != this._activeNetwork);
this._connectButton.reactive = connectSensitive;
this._connectButton.can_focus = connectSensitive;
- },
+ }
_syncView() {
if (this._rfkill.airplaneMode) {
@@ -827,7 +818,7 @@ var NMWirelessDialog = new Lang.Class({
this._noNetworksSpinner.play();
else
this._noNetworksSpinner.stop();
- },
+ }
_buildLayout() {
let headline = new St.BoxLayout({ style_class: 'nm-dialog-header-hbox' });
@@ -906,7 +897,7 @@ var NMWirelessDialog = new Lang.Class({
this._connectButton = this.addButton({ action: this._connect.bind(this),
label: _("Connect"),
key: Clutter.Return });
- },
+ }
_connect() {
let network = this._selectedNetwork;
@@ -928,7 +919,7 @@ var NMWirelessDialog = new Lang.Class({
}
this.close();
- },
+ }
_notifySsidCb(accessPoint) {
if (accessPoint.get_ssid() != null) {
@@ -936,7 +927,7 @@ var NMWirelessDialog = new Lang.Class({
accessPoint._notifySsidId = 0;
this._accessPointAdded(this._device, accessPoint);
}
- },
+ }
_getApSecurityType(accessPoint) {
if (accessPoint._secType)
@@ -967,7 +958,7 @@ var NMWirelessDialog = new Lang.Class({
// cache the found value to avoid checking flags all the time
accessPoint._secType = type;
return type;
- },
+ }
_networkSortFunction(one, two) {
let oneHasConnection = one.connections.length != 0;
@@ -1008,7 +999,7 @@ var NMWirelessDialog = new Lang.Class({
// sort alphabetically
return GLib.utf8_collate(one.ssidText, two.ssidText);
- },
+ }
_networkCompare(network, accessPoint) {
if (!network.ssid.equal (accessPoint.get_ssid()))
@@ -1019,7 +1010,7 @@ var NMWirelessDialog = new Lang.Class({
return false;
return true;
- },
+ }
_findExistingNetwork(accessPoint) {
for (let i = 0; i < this._networks.length; i++) {
@@ -1031,7 +1022,7 @@ var NMWirelessDialog = new Lang.Class({
}
return null;
- },
+ }
_findNetwork(accessPoint) {
if (accessPoint.get_ssid() == null)
@@ -1042,7 +1033,7 @@ var NMWirelessDialog = new Lang.Class({
return i;
}
return -1;
- },
+ }
_checkConnections(network, accessPoint) {
this._connections.forEach(connection => {
@@ -1051,7 +1042,7 @@ var NMWirelessDialog = new Lang.Class({
network.connections.push(connection);
}
});
- },
+ }
_accessPointAdded(device, accessPoint) {
if (accessPoint.get_ssid() == null) {
@@ -1095,7 +1086,7 @@ var NMWirelessDialog = new Lang.Class({
}
this._syncView();
- },
+ }
_accessPointRemoved(device, accessPoint) {
let res = this._findExistingNetwork(accessPoint);
@@ -1117,7 +1108,7 @@ var NMWirelessDialog = new Lang.Class({
}
this._syncView();
- },
+ }
_resortItems() {
let adjustment = this._scrollView.vscroll.adjustment;
@@ -1129,7 +1120,7 @@ var NMWirelessDialog = new Lang.Class({
});
adjustment.value = scrollValue;
- },
+ }
_selectNetwork(network) {
if (this._selectedNetwork)
@@ -1140,7 +1131,7 @@ var NMWirelessDialog = new Lang.Class({
if (this._selectedNetwork)
this._selectedNetwork.item.actor.add_style_pseudo_class('selected');
- },
+ }
_createNetworkItem(network) {
network.item = new NMWirelessDialogItem(network);
@@ -1154,14 +1145,11 @@ var NMWirelessDialog = new Lang.Class({
if (keyFocus && keyFocus.contains(network.item.actor))
this._itemBox.grab_key_focus();
});
- },
-});
+ }
+};
-var NMDeviceWireless = new Lang.Class({
- Name: 'NMDeviceWireless',
- category: NMConnectionCategory.WIRELESS,
-
- _init(client, device) {
+var NMDeviceWireless = class {
+ constructor(client, device) {
this._client = client;
this._device = device;
@@ -1183,12 +1171,16 @@ var NMDeviceWireless = new Lang.Class({
this._notifyConnectivityId = this._client.connect('notify::connectivity', this._iconChanged.bind(this));
this._sync();
- },
+ }
+
+ get category() {
+ return NMConnectionCategory.WIRELESS;
+ }
_iconChanged() {
this._sync();
this.emit('icon-changed');
- },
+ }
destroy() {
if (this._activeApChangedId) {
@@ -1221,7 +1213,7 @@ var NMDeviceWireless = new Lang.Class({
}
this.item.destroy();
- },
+ }
_deviceStateChanged(device, newstate, oldstate, reason) {
if (newstate == oldstate) {
@@ -1238,26 +1230,26 @@ var NMDeviceWireless = new Lang.Class({
}
this._sync();
- },
+ }
_toggleWifi() {
this._client.wireless_enabled = !this._client.wireless_enabled;
- },
+ }
_showDialog() {
this._dialog = new NMWirelessDialog(this._client, this._device);
this._dialog.connect('closed', this._dialogClosed.bind(this));
this._dialog.open();
- },
+ }
_dialogClosed() {
this._dialog.destroy();
this._dialog = null;
- },
+ }
_strengthChanged() {
this._iconChanged();
- },
+ }
_activeApChanged() {
if (this._activeAccessPoint) {
@@ -1273,7 +1265,7 @@ var NMDeviceWireless = new Lang.Class({
}
this._sync();
- },
+ }
_sync() {
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
@@ -1281,12 +1273,12 @@ var NMDeviceWireless = new Lang.Class({
this.item.icon.icon_name = this._getMenuIcon();
this.item.label.text = this._getStatus();
- },
+ }
setDeviceDescription(desc) {
this._description = desc;
this._sync();
- },
+ }
_getStatus() {
let ap = this._device.active_access_point;
@@ -1311,21 +1303,21 @@ var NMDeviceWireless = new Lang.Class({
return _("%s Not Connected").format(this._description);
else
return '';
- },
+ }
_getMenuIcon() {
if (this._device.active_connection)
return this.getIndicatorIcon();
else
return 'network-wireless-signal-none-symbolic';
- },
+ }
_canReachInternet() {
if (this._client.primary_connection != this._device.active_connection)
return true;
return this._client.connectivity == NM.ConnectivityState.FULL;
- },
+ }
_isHotSpotMaster() {
if (!this._device.active_connection)
@@ -1340,7 +1332,7 @@ var NMDeviceWireless = new Lang.Class({
return false;
return ip4config.get_method() == NM.SETTING_IP4_CONFIG_METHOD_SHARED;
- },
+ }
getIndicatorIcon() {
if (this._device.state < NM.DeviceState.PREPARE)
@@ -1366,20 +1358,17 @@ var NMDeviceWireless = new Lang.Class({
return 'network-wireless-signal-' + signalToIcon(ap.strength) + '-symbolic';
else
return 'network-wireless-no-route-symbolic';
- },
-});
+ }
+};
Signals.addSignalMethods(NMDeviceWireless.prototype);
-var NMVpnConnectionItem = new Lang.Class({
- Name: 'NMVpnConnectionItem',
- Extends: NMConnectionItem,
-
+var NMVpnConnectionItem = class extends NMConnectionItem {
isActive() {
if (this._activeConnection == null)
return false;
return this._activeConnection.vpn_state != NM.VpnConnectionState.DISCONNECTED;
- },
+ }
_buildUI() {
this.labelItem = new PopupMenu.PopupMenuItem('');
@@ -1387,7 +1376,7 @@ var NMVpnConnectionItem = new Lang.Class({
this.radioItem = new PopupMenu.PopupSwitchMenuItem(this._connection.get_id(), false);
this.radioItem.connect('toggled', this._toggle.bind(this));
- },
+ }
_sync() {
let isActive = this.isActive();
@@ -1395,7 +1384,7 @@ var NMVpnConnectionItem = new Lang.Class({
this.radioItem.setToggleState(isActive);
this.radioItem.setStatus(this._getStatus());
this.emit('icon-changed');
- },
+ }
_getStatus() {
if (this._activeConnection == null)
@@ -1417,7 +1406,7 @@ var NMVpnConnectionItem = new Lang.Class({
default:
return 'invalid';
}
- },
+ }
_connectionStateChanged(ac, newstate, reason) {
if (newstate == NM.VpnConnectionState.FAILED &&
@@ -1429,8 +1418,8 @@ var NMVpnConnectionItem = new Lang.Class({
}
this.emit('icon-changed');
- this.parent();
- },
+ super._connectionStateChanged();
+ }
setActiveConnection(activeConnection) {
if (this._activeConnectionChangedId > 0) {
@@ -1445,7 +1434,7 @@ var NMVpnConnectionItem = new Lang.Class({
this._connectionStateChanged.bind(this));
this._sync();
- },
+ }
getIndicatorIcon() {
if (this._activeConnection) {
@@ -1456,32 +1445,32 @@ var NMVpnConnectionItem = new Lang.Class({
} else {
return '';
}
- },
-});
+ }
+};
-var NMVpnSection = new Lang.Class({
- Name: 'NMVpnSection',
- Extends: NMConnectionSection,
- category: NMConnectionCategory.VPN,
-
- _init(client) {
- this.parent(client);
+var NMVpnSection = class extends NMConnectionSection {
+ constructor(client) {
+ super(client);
this.item.menu.addSettingsAction(_("VPN Settings"), 'gnome-network-panel.desktop');
this._sync();
- },
+ }
_sync() {
let nItems = this._connectionItems.size;
this.item.actor.visible = (nItems > 0);
- this.parent();
- },
+ super._sync();
+ }
+
+ get category() {
+ return NMConnectionCategory.VPN;
+ }
_getDescription() {
return _("VPN");
- },
+ }
_getStatus() {
let values = this._connectionItems.values();
@@ -1491,19 +1480,19 @@ var NMVpnSection = new Lang.Class({
}
return _("VPN Off");
- },
+ }
_getMenuIcon() {
return this.getIndicatorIcon() || 'network-vpn-symbolic';
- },
+ }
activateConnection(connection) {
this._client.activate_connection_async(connection, null, null, null, null);
- },
+ }
deactivateConnection(activeConnection) {
this._client.deactivate_connection(activeConnection, null);
- },
+ }
setActiveConnections(vpnConnections) {
let connections = this._connectionItems.values();
@@ -1516,11 +1505,11 @@ var NMVpnSection = new Lang.Class({
item.setActiveConnection(a);
}
});
- },
+ }
_makeConnectionItem(connection) {
return new NMVpnConnectionItem(this, connection);
- },
+ }
getIndicatorIcon() {
let items = this._connectionItems.values();
@@ -1530,16 +1519,13 @@ var NMVpnSection = new Lang.Class({
return icon;
}
return '';
- },
-});
+ }
+};
Signals.addSignalMethods(NMVpnSection.prototype);
-var DeviceCategory = new Lang.Class({
- Name: 'DeviceCategory',
- Extends: PopupMenu.PopupMenuSection,
-
- _init(category) {
- this.parent();
+var DeviceCategory = class extends PopupMenu.PopupMenuSection {
+ constructor(category) {
+ super();
this._category = category;
@@ -1558,7 +1544,7 @@ var DeviceCategory = new Lang.Class({
'gnome-network-panel.desktop');
this._summaryItem.actor.hide();
- },
+ }
_sync() {
let nDevices = this.section.box.get_children().reduce(
@@ -1567,7 +1553,7 @@ var DeviceCategory = new Lang.Class({
let shouldSummarize = nDevices > MAX_DEVICE_ITEMS;
this._summaryItem.actor.visible = shouldSummarize;
this.section.actor.visible = !shouldSummarize;
- },
+ }
_getSummaryIcon() {
switch(this._category) {
@@ -1578,7 +1564,7 @@ var DeviceCategory = new Lang.Class({
return 'network-wireless-symbolic';
}
return '';
- },
+ }
_getSummaryLabel(nDevices) {
switch(this._category) {
@@ -1597,14 +1583,11 @@ var DeviceCategory = new Lang.Class({
}
return '';
}
-});
+};
-var NMApplet = new Lang.Class({
- Name: 'NMApplet',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var NMApplet = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._primaryIndicator = this._addIndicator();
this._vpnIndicator = this._addIndicator();
@@ -1626,7 +1609,7 @@ var NMApplet = new Lang.Class({
this._ctypes[NM.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
NM.Client.new_async(null, this._clientGot.bind(this));
- },
+ }
_clientGot(obj, result) {
this._client = NM.Client.new_finish(result);
@@ -1677,12 +1660,12 @@ var NMApplet = new Lang.Class({
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
this._sessionUpdated();
- },
+ }
_sessionUpdated() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
- },
+ }
_ensureSource() {
if (!this._source) {
@@ -1693,7 +1676,7 @@ var NMApplet = new Lang.Class({
this._source.connect('destroy', () => { this._source = null; });
Main.messageTray.add(this._source);
}
- },
+ }
_readDevices() {
let devices = this._client.get_devices() || [ ];
@@ -1701,7 +1684,7 @@ var NMApplet = new Lang.Class({
this._deviceAdded(this._client, devices[i], true);
}
this._syncDeviceNames();
- },
+ }
_notify(iconName, title, text, urgency) {
if (this._notification)
@@ -1717,7 +1700,7 @@ var NMApplet = new Lang.Class({
this._notification = null;
});
this._source.notify(this._notification);
- },
+ }
_onActivationFailed(device, reason) {
// XXX: nm-applet has no special text depending on reason
@@ -1726,7 +1709,7 @@ var NMApplet = new Lang.Class({
_("Connection failed"),
_("Activation of network connection failed"),
MessageTray.Urgency.HIGH);
- },
+ }
_syncDeviceNames() {
let names = NM.Device.disambiguate_names(this._nmDevices);
@@ -1736,7 +1719,7 @@ var NMApplet = new Lang.Class({
if (device._delegate)
device._delegate.setDeviceDescription(description);
}
- },
+ }
_deviceAdded(client, device, skipSyncDeviceNames) {
if (device._delegate) {
@@ -1760,7 +1743,7 @@ var NMApplet = new Lang.Class({
});
}
}
- },
+ }
_addDeviceWrapper(wrapper) {
wrapper._activationFailedId = wrapper.connect('activation-failed',
@@ -1771,7 +1754,7 @@ var NMApplet = new Lang.Class({
let devices = this._devices[wrapper.category].devices;
devices.push(wrapper);
- },
+ }
_deviceRemoved(client, device) {
let pos = this._nmDevices.indexOf(device);
@@ -1787,7 +1770,7 @@ var NMApplet = new Lang.Class({
}
this._removeDeviceWrapper(wrapper);
- },
+ }
_removeDeviceWrapper(wrapper) {
wrapper.disconnect(wrapper._activationFailedId);
@@ -1796,7 +1779,7 @@ var NMApplet = new Lang.Class({
let devices = this._devices[wrapper.category].devices;
let pos = devices.indexOf(wrapper);
devices.splice(pos, 1);
- },
+ }
_getMainConnection() {
let connection;
@@ -1814,7 +1797,7 @@ var NMApplet = new Lang.Class({
}
return null;
- },
+ }
_syncMainConnection() {
if (this._mainConnectionIconChangedId > 0) {
@@ -1838,7 +1821,7 @@ var NMApplet = new Lang.Class({
this._updateIcon();
this._syncConnectivity();
- },
+ }
_syncVpnConnections() {
let activeConnections = this._client.get_active_connections() || [];
@@ -1851,12 +1834,12 @@ var NMApplet = new Lang.Class({
this._vpnSection.setActiveConnections(vpnConnections);
this._updateIcon();
- },
+ }
_mainConnectionStateChanged() {
if (this._mainConnection.state == NM.ActiveConnectionState.ACTIVATED && this._notification)
this._notification.destroy();
- },
+ }
_ignoreConnection(connection) {
let setting = connection.get_setting_connection();
@@ -1868,7 +1851,7 @@ var NMApplet = new Lang.Class({
return true;
return false;
- },
+ }
_addConnection(connection) {
if (this._ignoreConnection(connection))
@@ -1882,16 +1865,16 @@ var NMApplet = new Lang.Class({
this._updateConnection(connection);
this._connections.push(connection);
- },
+ }
_readConnections() {
let connections = this._client.get_connections();
connections.forEach(this._addConnection.bind(this));
- },
+ }
_connectionAdded(client, connection) {
this._addConnection(connection);
- },
+ }
_connectionRemoved(client, connection) {
let pos = this._connections.indexOf(connection);
@@ -1915,7 +1898,7 @@ var NMApplet = new Lang.Class({
connection.disconnect(connection._updatedId);
connection._updatedId = 0;
- },
+ }
_updateConnection(connection) {
let connectionSettings = connection.get_setting_by_name(NM.SETTING_CONNECTION_SETTING_NAME);
@@ -1936,7 +1919,7 @@ var NMApplet = new Lang.Class({
wrapper.checkConnection(connection);
});
}
- },
+ }
_syncNMState() {
this.indicators.visible = this._client.nm_running;
@@ -1944,7 +1927,7 @@ var NMApplet = new Lang.Class({
this._updateIcon();
this._syncConnectivity();
- },
+ }
_flushConnectivityQueue() {
if (this._portalHelperProxy) {
@@ -1953,7 +1936,7 @@ var NMApplet = new Lang.Class({
}
this._connectivityQueue = [];
- },
+ }
_closeConnectivityCheck(path) {
let index = this._connectivityQueue.indexOf(path);
@@ -1964,7 +1947,7 @@ var NMApplet = new Lang.Class({
this._connectivityQueue.splice(index, 1);
}
- },
+ }
_portalHelperDone(proxy, emitter, parameters) {
let [path, result] = parameters;
@@ -1988,7 +1971,7 @@ var NMApplet = new Lang.Class({
} else {
log('Invalid result from portal helper: ' + result);
}
- },
+ }
_syncConnectivity() {
if (this._mainConnection == null ||
@@ -2033,7 +2016,7 @@ var NMApplet = new Lang.Class({
}
this._connectivityQueue.push(path);
- },
+ }
_updateIcon() {
if (!this._client.networking_enabled) {
@@ -2059,4 +2042,4 @@ var NMApplet = new Lang.Class({
this._vpnIndicator.icon_name = this._vpnSection.getIndicatorIcon();
this._vpnIndicator.visible = (this._vpnIndicator.icon_name != '');
}
-});
+};
diff --git a/js/ui/status/nightLight.js b/js/ui/status/nightLight.js
index d4a2fef93..353db92c3 100644
--- a/js/ui/status/nightLight.js
+++ b/js/ui/status/nightLight.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
@@ -15,12 +14,9 @@ const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color';
const ColorInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Color');
const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface);
-var Indicator = new Lang.Class({
- Name: 'NightLightIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._indicator = this._addIndicator();
this._indicator.icon_name = 'night-light-symbolic';
@@ -50,12 +46,12 @@ var Indicator = new Lang.Class({
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
this._sessionUpdated();
this._sync();
- },
+ }
_sessionUpdated() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
- },
+ }
_sync() {
let visible = this._proxy.NightLightActive;
@@ -67,4 +63,4 @@ var Indicator = new Lang.Class({
: _("Disable Until Tomorrow");
this._item.actor.visible = this._indicator.visible = visible;
}
-});
+};
diff --git a/js/ui/status/power.js b/js/ui/status/power.js
index 4a6ce2c24..6ffd24e04 100644
--- a/js/ui/status/power.js
+++ b/js/ui/status/power.js
@@ -3,7 +3,6 @@
const Gio = imports.gi.Gio;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
-const Lang = imports.lang;
const UPower = imports.gi.UPowerGlib;
const Main = imports.ui.main;
@@ -20,12 +19,9 @@ const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface)
const SHOW_BATTERY_PERCENTAGE = 'show-battery-percentage';
-var Indicator = new Lang.Class({
- Name: 'PowerIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
this._desktopSettings.connect('changed::' + SHOW_BATTERY_PERCENTAGE,
@@ -54,12 +50,12 @@ var Indicator = new Lang.Class({
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
this._sessionUpdated();
- },
+ }
_sessionUpdated() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
- },
+ }
_getStatus() {
let seconds = 0;
@@ -97,7 +93,7 @@ var Indicator = new Lang.Class({
}
return null;
- },
+ }
_sync() {
// Do we have batteries or a UPS?
@@ -128,5 +124,5 @@ var Indicator = new Lang.Class({
// The status label
this._item.label.text = this._getStatus();
- },
-});
+ }
+};
diff --git a/js/ui/status/remoteAccess.js b/js/ui/status/remoteAccess.js
index db94d130d..ab0b55f28 100644
--- a/js/ui/status/remoteAccess.js
+++ b/js/ui/status/remoteAccess.js
@@ -1,17 +1,13 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
-var RemoteAccessApplet = new Lang.Class({
- Name: 'RemoteAccessApplet',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var RemoteAccessApplet = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
let backend = Meta.get_backend();
let controller = backend.get_remote_access_controller();
@@ -33,7 +29,7 @@ var RemoteAccessApplet = new Lang.Class({
controller.connect('new-handle', (controller, handle) => {
this._onNewHandle(handle);
});
- },
+ }
_ensureControls() {
if (this._indicator)
@@ -52,7 +48,7 @@ var RemoteAccessApplet = new Lang.Class({
});
this._item.icon.icon_name = 'screen-shared-symbolic';
this.menu.addMenuItem(this._item);
- },
+ }
_sync() {
if (this._handles.size == 0) {
@@ -62,12 +58,12 @@ var RemoteAccessApplet = new Lang.Class({
this._indicator.visible = true;
this._item.actor.visible = true;
}
- },
+ }
_onStopped(handle) {
this._handles.delete(handle);
this._sync();
- },
+ }
_onNewHandle(handle) {
this._handles.add(handle);
@@ -77,5 +73,5 @@ var RemoteAccessApplet = new Lang.Class({
this._ensureControls();
this._sync();
}
- },
-});
+ }
+};
diff --git a/js/ui/status/rfkill.js b/js/ui/status/rfkill.js
index 8022fb94b..e818e8788 100644
--- a/js/ui/status/rfkill.js
+++ b/js/ui/status/rfkill.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
-const Lang = imports.lang;
const Signals = imports.signals;
const Main = imports.ui.main;
@@ -16,10 +15,8 @@ const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
const RfkillManagerInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Rfkill');
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
-var RfkillManager = new Lang.Class({
- Name: 'RfkillManager',
-
- _init() {
+var RfkillManager = class {
+ constructor() {
this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
(proxy, error) => {
if (error) {
@@ -30,28 +27,28 @@ var RfkillManager = new Lang.Class({
this._changed.bind(this));
this._changed();
});
- },
+ }
get airplaneMode() {
return this._proxy.AirplaneMode;
- },
+ }
set airplaneMode(v) {
this._proxy.AirplaneMode = v;
- },
+ }
get hwAirplaneMode() {
return this._proxy.HardwareAirplaneMode;
- },
+ }
get shouldShowAirplaneMode() {
return this._proxy.ShouldShowAirplaneMode;
- },
+ }
_changed() {
this.emit('airplane-mode-changed');
}
-});
+};
Signals.addSignalMethods(RfkillManager.prototype);
var _manager;
@@ -63,12 +60,9 @@ function getRfkillManager() {
return _manager;
}
-var Indicator = new Lang.Class({
- Name: 'RfkillIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._manager = getRfkillManager();
this._manager.connect('airplane-mode-changed', this._sync.bind(this));
@@ -90,12 +84,12 @@ var Indicator = new Lang.Class({
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
this._sessionUpdated();
- },
+ }
_sessionUpdated() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
- },
+ }
_sync() {
let airplaneMode = this._manager.airplaneMode;
@@ -110,5 +104,5 @@ var Indicator = new Lang.Class({
this._offItem.label.text = _("Use hardware switch to turn off");
else
this._offItem.label.text = _("Turn Off");
- },
-});
+ }
+};
diff --git a/js/ui/status/screencast.js b/js/ui/status/screencast.js
index a084f1a96..4f147e0ea 100644
--- a/js/ui/status/screencast.js
+++ b/js/ui/status/screencast.js
@@ -1,16 +1,11 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
-
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
-var Indicator = new Lang.Class({
- Name: 'ScreencastIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._indicator = this._addIndicator();
this._indicator.icon_name = 'media-record-symbolic';
@@ -18,9 +13,9 @@ var Indicator = new Lang.Class({
this._sync();
Main.screencastService.connect('updated', this._sync.bind(this));
- },
+ }
_sync() {
this._indicator.visible = Main.screencastService.isRecording;
- },
-});
+ }
+};
diff --git a/js/ui/status/system.js b/js/ui/status/system.js
index 41bcacd94..bbbc44ea1 100644
--- a/js/ui/status/system.js
+++ b/js/ui/status/system.js
@@ -4,7 +4,6 @@ const AccountsService = imports.gi.AccountsService;
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const GObject = imports.gi.GObject;
@@ -16,10 +15,8 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
-var AltSwitcher = new Lang.Class({
- Name: 'AltSwitcher',
-
- _init(standard, alternate) {
+var AltSwitcher = class {
+ constructor(standard, alternate) {
this._standard = standard;
this._standard.connect('notify::visible', this._sync.bind(this));
if (this._standard instanceof St.Button)
@@ -42,7 +39,7 @@ var AltSwitcher = new Lang.Class({
this.actor = new St.Bin();
this.actor.connect('destroy', this._onDestroy.bind(this));
this.actor.connect('notify::mapped', () => { this._flipped = false; });
- },
+ }
_sync() {
let childToShow = null;
@@ -83,14 +80,14 @@ var AltSwitcher = new Lang.Class({
}
this.actor.show();
- },
+ }
_onDestroy() {
if (this._capturedEventId > 0) {
global.stage.disconnect(this._capturedEventId);
this._capturedEventId = 0;
}
- },
+ }
_onCapturedEvent(actor, event) {
let type = event.type();
@@ -101,7 +98,7 @@ var AltSwitcher = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onLongPress(action, actor, state) {
if (state == Clutter.LongPressState.QUERY ||
@@ -112,14 +109,11 @@ var AltSwitcher = new Lang.Class({
this._sync();
return true;
}
-});
+};
-var Indicator = new Lang.Class({
- Name: 'SystemIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
let userManager = AccountsService.UserManager.get_default();
this._user = userManager.get_user(GLib.get_user_name());
@@ -146,7 +140,7 @@ var Indicator = new Lang.Class({
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
this._sessionUpdated();
- },
+ }
_updateActionsVisibility() {
let visible = (this._settingsAction.visible ||
@@ -155,18 +149,18 @@ var Indicator = new Lang.Class({
this._altSwitcher.actor.visible);
this._actionsItem.actor.visible = visible;
- },
+ }
_sessionUpdated() {
this._settingsAction.visible = Main.sessionMode.allowSettings;
- },
+ }
_updateMultiUser() {
let hasSwitchUser = this._loginScreenItem.actor.visible;
let hasLogout = this._logoutItem.actor.visible;
this._switchUserSubMenu.actor.visible = hasSwitchUser || hasLogout;
- },
+ }
_updateSwitchUserSubMenu() {
this._switchUserSubMenu.label.text = this._user.get_real_name();
@@ -199,7 +193,7 @@ var Indicator = new Lang.Class({
this._switchUserSubMenu.icon.add_style_class_name('default-icon');
this._switchUserSubMenu.icon.remove_style_class_name('user-icon');
}
- },
+ }
_createActionButton(iconName, accessibleName) {
let icon = new St.Button({ reactive: true,
@@ -209,7 +203,7 @@ var Indicator = new Lang.Class({
style_class: 'system-menu-action' });
icon.child = new St.Icon({ icon_name: iconName });
return icon;
- },
+ }
_createSubMenu() {
let bindFlags = GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE;
@@ -340,11 +334,11 @@ var Indicator = new Lang.Class({
() => { this._updateActionsVisibility(); });
this._altSwitcher.actor.connect('notify::visible',
() => { this._updateActionsVisibility(); });
- },
+ }
_onSettingsClicked() {
this.menu.itemActivated();
Main.overview.hide();
this._settingsApp.activate();
}
-});
+};
diff --git a/js/ui/status/thunderbolt.js b/js/ui/status/thunderbolt.js
index 1f873c166..8362b5d73 100644
--- a/js/ui/status/thunderbolt.js
+++ b/js/ui/status/thunderbolt.js
@@ -4,7 +4,6 @@
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const Lang = imports.lang;
const Polkit = imports.gi.Polkit;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
@@ -52,11 +51,8 @@ const BOLT_DBUS_CLIENT_IFACE = 'org.freedesktop.bolt1.Manager';
const BOLT_DBUS_NAME = 'org.freedesktop.bolt';
const BOLT_DBUS_PATH = '/org/freedesktop/bolt';
-var Client = new Lang.Class({
- Name: 'BoltClient',
-
- _init() {
-
+var Client = class {
+ constructor() {
this._proxy = null;
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(BoltClientInterface);
Gio.DBusProxy.new(Gio.DBus.system,
@@ -69,7 +65,7 @@ var Client = new Lang.Class({
this._onProxyReady.bind(this));
this.probing = false;
- },
+ }
_onProxyReady(o, res) {
try {
@@ -85,7 +81,7 @@ var Client = new Lang.Class({
if (this.probing)
this.emit('probing-changed', this.probing);
- },
+ }
_onPropertiesChanged(proxy, properties) {
let unpacked = properties.deep_unpack();
@@ -94,7 +90,7 @@ var Client = new Lang.Class({
this.probing = this._proxy.Probing;
this.emit('probing-changed', this.probing);
- },
+ }
_onDeviceAdded(proxy, emitter, params) {
let [path] = params;
@@ -102,7 +98,7 @@ var Client = new Lang.Class({
BOLT_DBUS_NAME,
path);
this.emit('device-added', device);
- },
+ }
/* public methods */
close() {
@@ -112,7 +108,7 @@ var Client = new Lang.Class({
this._proxy.disconnectSignal(this._deviceAddedId);
this._proxy.disconnect(this._propsChangedId);
this._proxy = null;
- },
+ }
enrollDevice(id, policy, callback) {
this._proxy.EnrollDeviceRemote(id, policy, AuthCtrl.NONE,
@@ -129,34 +125,29 @@ var Client = new Lang.Class({
path);
callback(device, null);
});
- },
+ }
get authMode () {
return this._proxy.AuthMode;
}
-
-});
-
+};
Signals.addSignalMethods(Client.prototype);
/* helper class to automatically authorize new devices */
-var AuthRobot = new Lang.Class({
- Name: 'BoltAuthRobot',
-
- _init(client) {
-
+var AuthRobot = class {
+ constructor(client) {
this._client = client;
this._devicesToEnroll = [];
this._enrolling = false;
this._client.connect('device-added', this._onDeviceAdded.bind(this));
- },
+ }
close() {
this.disconnectAll();
this._client = null;
- },
+ }
/* the "device-added" signal will be emitted by boltd for every
* device that is not currently stored in the database. We are
@@ -184,7 +175,7 @@ var AuthRobot = new Lang.Class({
* of the list */
this._devicesToEnroll.push(dev);
this._enrollDevices();
- },
+ }
/* The enrollment queue:
* - new devices will be added to the end of the array.
@@ -199,7 +190,7 @@ var AuthRobot = new Lang.Class({
this._enrolling = true;
GLib.idle_add(GLib.PRIORITY_DEFAULT,
this._enrollDevicesIdle.bind(this));
- },
+ }
_onEnrollDone(device, error) {
if (error)
@@ -214,7 +205,7 @@ var AuthRobot = new Lang.Class({
if (this._enrolling)
GLib.idle_add(GLib.PRIORITY_DEFAULT,
this._enrollDevicesIdle.bind(this));
- },
+ }
_enrollDevicesIdle() {
let devices = this._devicesToEnroll;
@@ -228,19 +219,14 @@ var AuthRobot = new Lang.Class({
this._onEnrollDone.bind(this));
return GLib.SOURCE_REMOVE;
}
-
-});
-
+};
Signals.addSignalMethods(AuthRobot.prototype);
/* eof client.js */
-var Indicator = new Lang.Class({
- Name: 'ThunderboltIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._indicator = this._addIndicator();
this._indicator.icon_name = 'thunderbolt-symbolic';
@@ -266,12 +252,12 @@ var Indicator = new Lang.Class({
log('Failed to get PolKit permission: %s'.format(e.toString()));
}
});
- },
+ }
_onDestroy() {
this._robot.close();
this._client.close();
- },
+ }
_ensureSource() {
if (!this._source) {
@@ -283,7 +269,7 @@ var Indicator = new Lang.Class({
}
return this._source;
- },
+ }
_notify(title, body) {
if (this._notification)
@@ -302,14 +288,13 @@ var Indicator = new Lang.Class({
app.activate();
});
this._source.notify(this._notification);
- },
+ }
/* Session callbacks */
_sync() {
let active = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this._indicator.visible = active && this._client.probing;
- },
-
+ }
/* Bolt.Client callbacks */
_onProbing(cli, probing) {
@@ -319,8 +304,7 @@ var Indicator = new Lang.Class({
this._indicator.icon_name = 'thunderbolt-symbolic';
this._sync();
- },
-
+ }
/* AuthRobot callbacks */
_onEnrollDevice(obj, device, policy) {
@@ -346,12 +330,11 @@ var Indicator = new Lang.Class({
const body = _("New device has been detected and needs to be authorized by an administrator.");
this._notify(title, body);
}
- },
+ }
_onEnrollFailed(obj, device, error) {
const title = _("Thunderbolt authorization error");
const body = _("Could not authorize the Thunderbolt device: %s".format(error.message));
this._notify(title, body);
}
-
-});
+};
diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js
index 019030570..365ec4123 100644
--- a/js/ui/status/volume.js
+++ b/js/ui/status/volume.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
const Gio = imports.gi.Gio;
const Gvc = imports.gi.Gvc;
const St = imports.gi.St;
@@ -29,10 +28,8 @@ function getMixerControl() {
return _mixerControl;
}
-var StreamSlider = new Lang.Class({
- Name: 'StreamSlider',
-
- _init(control) {
+var StreamSlider = class {
+ constructor(control) {
this._control = control;
this.item = new PopupMenu.PopupBaseMenuItem({ activate: false });
@@ -58,11 +55,11 @@ var StreamSlider = new Lang.Class({
this._stream = null;
this._volumeCancellable = null;
- },
+ }
get stream() {
return this._stream;
- },
+ }
set stream(stream) {
if (this._stream) {
@@ -79,37 +76,37 @@ var StreamSlider = new Lang.Class({
}
this._updateVisibility();
- },
+ }
_disconnectStream(stream) {
stream.disconnect(this._mutedChangedId);
this._mutedChangedId = 0;
stream.disconnect(this._volumeChangedId);
this._volumeChangedId = 0;
- },
+ }
_connectStream(stream) {
this._mutedChangedId = stream.connect('notify::is-muted', this._updateVolume.bind(this));
this._volumeChangedId = stream.connect('notify::volume', this._updateVolume.bind(this));
- },
+ }
_shouldBeVisible() {
return this._stream != null;
- },
+ }
_updateVisibility() {
let visible = this._shouldBeVisible();
this.item.actor.visible = visible;
- },
+ }
scroll(event) {
return this._slider.scroll(event);
- },
+ }
setValue(value) {
// piggy-back off of sliderChanged
this._slider.setValue(value);
- },
+ }
_sliderChanged(slider, value, property) {
if (!this._stream)
@@ -127,7 +124,7 @@ var StreamSlider = new Lang.Class({
this._stream.change_is_muted(false);
}
this._stream.push_volume();
- },
+ }
_notifyVolumeChange() {
if (this._volumeCancellable)
@@ -138,13 +135,13 @@ var StreamSlider = new Lang.Class({
player.play_from_theme('audio-volume-change',
_("Volume changed"),
this._volumeCancellable);
- },
+ }
_updateVolume() {
let muted = this._stream.is_muted;
this._slider.setValue(muted ? 0 : (this._stream.volume / this._control.get_vol_max_norm()));
this.emit('stream-updated');
- },
+ }
_amplifySettingsChanged() {
this._allowAmplified = this._soundSettings.get_boolean(ALLOW_AMPLIFIED_VOLUME_KEY);
@@ -156,7 +153,7 @@ var StreamSlider = new Lang.Class({
if (this._stream)
this._updateVolume();
- },
+ }
getIcon() {
if (!this._stream)
@@ -180,14 +177,14 @@ var StreamSlider = new Lang.Class({
n = 4;
}
return icons[n];
- },
+ }
getLevel() {
if (!this._stream)
return null;
return 100 * this._stream.volume / this._control.get_vol_max_norm();
- },
+ }
getMaxLevel() {
let maxVolume = this._control.get_vol_max_norm();
@@ -196,23 +193,20 @@ var StreamSlider = new Lang.Class({
return 100 * maxVolume / this._control.get_vol_max_norm();
}
-});
+};
Signals.addSignalMethods(StreamSlider.prototype);
-var OutputStreamSlider = new Lang.Class({
- Name: 'OutputStreamSlider',
- Extends: StreamSlider,
-
- _init(control) {
- this.parent(control);
+var OutputStreamSlider = class extends StreamSlider {
+ constructor(control) {
+ super(control);
this._slider.actor.accessible_name = _("Volume");
- },
+ }
_connectStream(stream) {
- this.parent(stream);
+ super._connectStream(stream);
this._portChangedId = stream.connect('notify::port', this._portChanged.bind(this));
this._portChanged();
- },
+ }
_findHeadphones(sink) {
// This only works for external headphones (e.g. bluetooth)
@@ -227,19 +221,19 @@ var OutputStreamSlider = new Lang.Class({
return sink.get_port().port.indexOf('headphone') >= 0;
return false;
- },
+ }
_disconnectStream(stream) {
- this.parent(stream);
+ super._disconnectStream(stream);
stream.disconnect(this._portChangedId);
this._portChangedId = 0;
- },
+ }
_updateSliderIcon() {
this._icon.icon_name = (this._hasHeadphones ?
'audio-headphones-symbolic' :
'audio-speakers-symbolic');
- },
+ }
_portChanged() {
let hasHeadphones = this._findHeadphones(this._stream);
@@ -248,24 +242,21 @@ var OutputStreamSlider = new Lang.Class({
this._updateSliderIcon();
}
}
-});
+};
-var InputStreamSlider = new Lang.Class({
- Name: 'InputStreamSlider',
- Extends: StreamSlider,
-
- _init(control) {
- this.parent(control);
+var InputStreamSlider = class extends StreamSlider {
+ constructor(control) {
+ super(control);
this._slider.actor.accessible_name = _("Microphone");
this._control.connect('stream-added', this._maybeShowInput.bind(this));
this._control.connect('stream-removed', this._maybeShowInput.bind(this));
this._icon.icon_name = 'audio-input-microphone-symbolic';
- },
+ }
_connectStream(stream) {
- this.parent(stream);
+ super._connectStream(stream);
this._maybeShowInput();
- },
+ }
_maybeShowInput() {
// only show input widgets if any application is recording audio
@@ -286,19 +277,16 @@ var InputStreamSlider = new Lang.Class({
this._showInput = showInput;
this._updateVisibility();
- },
+ }
_shouldBeVisible() {
- return this.parent() && this._showInput;
+ return super._shouldBeVisible() && this._showInput;
}
-});
+};
-var VolumeMenu = new Lang.Class({
- Name: 'VolumeMenu',
- Extends: PopupMenu.PopupMenuSection,
-
- _init(control) {
- this.parent();
+var VolumeMenu = class extends PopupMenu.PopupMenuSection {
+ constructor(control) {
+ super();
this.hasHeadphones = false;
@@ -319,11 +307,11 @@ var VolumeMenu = new Lang.Class({
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._onControlStateChanged();
- },
+ }
scroll(event) {
return this._output.scroll(event);
- },
+ }
_onControlStateChanged() {
if (this._control.get_state() == Gvc.MixerControlState.READY) {
@@ -332,35 +320,32 @@ var VolumeMenu = new Lang.Class({
} else {
this.emit('icon-changed');
}
- },
+ }
_readOutput() {
this._output.stream = this._control.get_default_sink();
- },
+ }
_readInput() {
this._input.stream = this._control.get_default_source();
- },
+ }
getIcon() {
return this._output.getIcon();
- },
+ }
getLevel() {
return this._output.getLevel();
- },
+ }
getMaxLevel() {
return this._output.getMaxLevel();
}
-});
+};
-var Indicator = new Lang.Class({
- Name: 'VolumeIndicator',
- Extends: PanelMenu.SystemIndicator,
-
- _init() {
- this.parent();
+var Indicator = class extends PanelMenu.SystemIndicator {
+ constructor() {
+ super();
this._primaryIndicator = this._addIndicator();
@@ -380,7 +365,7 @@ var Indicator = new Lang.Class({
this.menu.addMenuItem(this._volumeMenu);
this.indicators.connect('scroll-event', this._onScrollEvent.bind(this));
- },
+ }
_onScrollEvent(actor, event) {
let result = this._volumeMenu.scroll(event);
@@ -393,4 +378,4 @@ var Indicator = new Lang.Class({
Main.osdWindowManager.show(-1, gicon, null, level, maxLevel);
return result;
}
-});
+};
diff --git a/js/ui/tweener.js b/js/ui/tweener.js
index 1a85e2fb1..6c9869c47 100644
--- a/js/ui/tweener.js
+++ b/js/ui/tweener.js
@@ -3,7 +3,6 @@
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -162,12 +161,8 @@ function registerSpecialPropertySplitter(name, splitFunction, parameters) {
// time updates; even better is to pay attention to the vertical
// vblank and sync to that when possible.)
//
-var ClutterFrameTicker = new Lang.Class({
- Name: 'ClutterFrameTicker',
-
- FRAME_RATE : 60,
-
- _init() {
+var ClutterFrameTicker = class {
+ constructor() {
// We don't have a finite duration; tweener will tell us to stop
// when we need to stop, so use 1000 seconds as "infinity", and
// set the timeline to loop. Doing this means we have to track
@@ -189,7 +184,11 @@ var ClutterFrameTicker = new Lang.Class({
perf_log.define_event("tweener.framePrepareDone",
"Finished preparing frame",
"");
- },
+ }
+
+ get FRAME_RATE() {
+ return 60;
+ }
_onNewFrame(frame) {
// If there is a lot of setup to start the animation, then
@@ -206,18 +205,18 @@ var ClutterFrameTicker = new Lang.Class({
perf_log.event("tweener.framePrepareStart");
this.emit('prepare-frame');
perf_log.event("tweener.framePrepareDone");
- },
+ }
getTime() {
return this._currentTime;
- },
+ }
start() {
if (St.get_slow_down_factor() > 0)
Tweener.setTimeScale(1 / St.get_slow_down_factor());
this._timeline.start();
global.begin_work();
- },
+ }
stop() {
this._timeline.stop();
@@ -225,6 +224,5 @@ var ClutterFrameTicker = new Lang.Class({
this._currentTime = -1;
global.end_work();
}
-});
-
+};
Signals.addSignalMethods(ClutterFrameTicker.prototype);
diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
index 1adaf417e..cf48cd1f1 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -8,7 +8,6 @@ const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GnomeDesktop = imports.gi.GnomeDesktop;
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
const Shell = imports.gi.Shell;
@@ -28,10 +27,8 @@ const LoginDialog = imports.gdm.loginDialog;
// The timeout before going back automatically to the lock screen (in seconds)
const IDLE_TIMEOUT = 2 * 60;
-var UnlockDialog = new Lang.Class({
- Name: 'UnlockDialog',
-
- _init(parentActor) {
+var UnlockDialog = class {
+ constructor(parentActor) {
this.actor = new St.Widget({ accessible_role: Atk.Role.WINDOW,
style_class: 'login-dialog',
layout_manager: new Clutter.BoxLayout(),
@@ -85,7 +82,7 @@ var UnlockDialog = new Lang.Class({
this._idleMonitor = Meta.IdleMonitor.get_core();
this._idleWatchId = this._idleMonitor.add_idle_watch(IDLE_TIMEOUT * 1000, this._escape.bind(this));
- },
+ }
_updateSensitivity(sensitive) {
this._authPrompt.updateSensitivity(sensitive);
@@ -94,11 +91,11 @@ var UnlockDialog = new Lang.Class({
this._otherUserButton.reactive = sensitive;
this._otherUserButton.can_focus = sensitive;
}
- },
+ }
_fail() {
this.emit('failed');
- },
+ }
_onReset(authPrompt, beginRequest) {
let userName;
@@ -110,18 +107,18 @@ var UnlockDialog = new Lang.Class({
}
this._authPrompt.begin({ userName: userName });
- },
+ }
_escape() {
if (this.allowCancel)
this._authPrompt.cancel();
- },
+ }
_otherUserClicked(button, event) {
Gdm.goto_login_session_sync(null);
this._authPrompt.cancel();
- },
+ }
destroy() {
this.popModal();
@@ -131,21 +128,21 @@ var UnlockDialog = new Lang.Class({
this._idleMonitor.remove_watch(this._idleWatchId);
this._idleWatchId = 0;
}
- },
+ }
cancel() {
this._authPrompt.cancel();
this.destroy();
- },
+ }
addCharacter(unichar) {
this._authPrompt.addCharacter(unichar);
- },
+ }
finish(onComplete) {
this._authPrompt.finish(onComplete);
- },
+ }
open(timestamp) {
this.actor.show();
@@ -160,7 +157,7 @@ var UnlockDialog = new Lang.Class({
this._isModal = true;
return true;
- },
+ }
popModal(timestamp) {
if (this._isModal) {
@@ -168,5 +165,5 @@ var UnlockDialog = new Lang.Class({
this._isModal = false;
}
}
-});
+};
Signals.addSignalMethods(UnlockDialog.prototype);
diff --git a/js/ui/userWidget.js b/js/ui/userWidget.js
index 4e1ce25e9..9730b73af 100644
--- a/js/ui/userWidget.js
+++ b/js/ui/userWidget.js
@@ -19,10 +19,8 @@ var AVATAR_ICON_SIZE = 64;
// Copyright (C) 2004-2005 James M. Cape .
// Copyright (C) 2008,2009 Red Hat, Inc.
-var Avatar = new Lang.Class({
- Name: 'Avatar',
-
- _init(user, params) {
+var Avatar = class {
+ constructor(user, params) {
this._user = user;
params = Params.parse(params, { reactive: false,
iconSize: AVATAR_ICON_SIZE,
@@ -39,12 +37,12 @@ var Avatar = new Lang.Class({
// Monitor the scaling factor to make sure we recreate the avatar when needed.
let themeContext = St.ThemeContext.get_for_stage(global.stage);
themeContext.connect('notify::scale-factor', this.update.bind(this));
- },
+ }
setSensitive(sensitive) {
this.actor.can_focus = sensitive;
this.actor.reactive = sensitive;
- },
+ }
update() {
let iconFile = this._user.get_icon_file();
@@ -64,7 +62,7 @@ var Avatar = new Lang.Class({
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this.actor.set_size(this._iconSize * scaleFactor, this._iconSize * scaleFactor);
}
-});
+};
var UserWidgetLabel = new Lang.Class({
Name: 'UserWidgetLabel',
@@ -151,10 +149,8 @@ var UserWidgetLabel = new Lang.Class({
},
});
-var UserWidget = new Lang.Class({
- Name: 'UserWidget',
-
- _init(user) {
+var UserWidget = class {
+ constructor(user) {
this._user = user;
this.actor = new St.BoxLayout({ style_class: 'user-widget',
@@ -173,7 +169,7 @@ var UserWidget = new Lang.Class({
this._userLoadedId = this._user.connect('notify::is-loaded', this._updateUser.bind(this));
this._userChangedId = this._user.connect('changed', this._updateUser.bind(this));
this._updateUser();
- },
+ }
_onDestroy() {
if (this._userLoadedId != 0) {
@@ -185,9 +181,9 @@ var UserWidget = new Lang.Class({
this._user.disconnect(this._userChangedId);
this._userChangedId = 0;
}
- },
+ }
_updateUser() {
this._avatar.update();
}
-});
+};
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
index 6a235eccd..8cd5454b3 100644
--- a/js/ui/viewSelector.js
+++ b/js/ui/viewSelector.js
@@ -53,12 +53,10 @@ function getTermsForSearchString(searchString) {
return terms;
}
-var TouchpadShowOverviewAction = new Lang.Class({
- Name: 'TouchpadShowOverviewAction',
-
- _init(actor) {
+var TouchpadShowOverviewAction = class {
+ constructor(actor) {
actor.connect('captured-event', this._handleEvent.bind(this));
- },
+ }
_handleEvent(actor, event) {
if (event.type() != Clutter.EventType.TOUCHPAD_PINCH)
@@ -72,7 +70,7 @@ var TouchpadShowOverviewAction = new Lang.Class({
return Clutter.EVENT_STOP;
}
-});
+};
Signals.addSignalMethods(TouchpadShowOverviewAction.prototype);
var ShowOverviewAction = new Lang.Class({
@@ -138,10 +136,8 @@ var ShowOverviewAction = new Lang.Class({
}
});
-var ViewSelector = new Lang.Class({
- Name: 'ViewSelector',
-
- _init(searchEntry, showAppsButton) {
+var ViewSelector = class {
+ constructor(searchEntry, showAppsButton) {
this.actor = new Shell.Stack({ name: 'viewSelector' });
this._showAppsButton = showAppsButton;
@@ -263,22 +259,22 @@ var ViewSelector = new Lang.Class({
gesture = new TouchpadShowOverviewAction(global.stage);
gesture.connect('activated', this._pinchGestureActivated.bind(this));
- },
+ }
_pinchGestureActivated(action, scale) {
if (scale < PINCH_GESTURE_THRESHOLD)
Main.overview.show();
- },
+ }
_toggleAppsPage() {
this._showAppsButton.checked = !this._showAppsButton.checked;
Main.overview.show();
- },
+ }
showApps() {
this._showAppsButton.checked = true;
Main.overview.show();
- },
+ }
show() {
this.reset();
@@ -291,7 +287,7 @@ var ViewSelector = new Lang.Class({
if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows())
Main.overview.fadeOutDesktop();
- },
+ }
animateFromOverview() {
// Make sure workspace page is fully visible to allow
@@ -304,16 +300,16 @@ var ViewSelector = new Lang.Class({
if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows())
Main.overview.fadeInDesktop();
- },
+ }
setWorkspacesFullGeometry(geom) {
this._workspacesDisplay.setWorkspacesFullGeometry(geom);
- },
+ }
hide() {
this.reset();
this._workspacesDisplay.hide();
- },
+ }
_addPage(actor, name, a11yIcon, params) {
params = Params.parse(params, { a11yFocus: null });
@@ -335,7 +331,7 @@ var ViewSelector = new Lang.Class({
page.hide();
this.actor.add_actor(page);
return page;
- },
+ }
_fadePageIn() {
Tweener.addTween(this._activePage,
@@ -343,7 +339,7 @@ var ViewSelector = new Lang.Class({
time: OverviewControls.SIDE_CONTROLS_ANIMATION_TIME,
transition: 'easeOutQuad'
});
- },
+ }
_fadePageOut(page) {
let oldPage = page;
@@ -355,7 +351,7 @@ var ViewSelector = new Lang.Class({
this._animateIn(oldPage);
}
});
- },
+ }
_animateIn(oldPage) {
if (oldPage)
@@ -372,7 +368,7 @@ var ViewSelector = new Lang.Class({
} else {
this._fadePageIn();
}
- },
+ }
_animateOut(page) {
let oldPage = page;
@@ -385,7 +381,7 @@ var ViewSelector = new Lang.Class({
} else {
this._fadePageOut(page);
}
- },
+ }
_showPage(page) {
if (!Main.overview.visible)
@@ -402,17 +398,17 @@ var ViewSelector = new Lang.Class({
this._animateOut(oldPage)
else
this._animateIn();
- },
+ }
_a11yFocusPage(page) {
this._showAppsButton.checked = page == this._appsPage;
page.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
- },
+ }
_onShowAppsButtonToggled() {
this._showPage(this._showAppsButton.checked ?
this._appsPage : this._workspacesPage);
- },
+ }
_onStageKeyPress(actor, event) {
// Ignore events while anything but the overview has
@@ -443,7 +439,7 @@ var ViewSelector = new Lang.Class({
}
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_searchCancelled() {
this._showPage(this._showAppsButton.checked ? this._appsPage
@@ -457,7 +453,7 @@ var ViewSelector = new Lang.Class({
// (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */
if (this._text.text != '')
this.reset();
- },
+ }
reset() {
// Don't drop the key focus on Clutter's side if anything but the
@@ -470,7 +466,7 @@ var ViewSelector = new Lang.Class({
this._text.set_cursor_visible(true);
this._text.set_selection(0, 0);
- },
+ }
_onStageKeyFocusChanged() {
let focus = global.stage.get_key_focus();
@@ -483,7 +479,7 @@ var ViewSelector = new Lang.Class({
this._entry.add_style_pseudo_class('focus');
else
this._entry.remove_style_pseudo_class('focus');
- },
+ }
_onMapped() {
if (this._entry.mapped) {
@@ -498,7 +494,7 @@ var ViewSelector = new Lang.Class({
global.stage.disconnect(this._capturedEventId);
this._capturedEventId = 0;
}
- },
+ }
_shouldTriggerSearch(symbol) {
if (symbol == Clutter.Multi_key)
@@ -515,7 +511,7 @@ var ViewSelector = new Lang.Class({
return true;
return false;
- },
+ }
startSearch(event) {
global.stage.set_key_focus(this._text);
@@ -523,12 +519,12 @@ var ViewSelector = new Lang.Class({
let synthEvent = event.copy();
synthEvent.set_source(this._text);
this._text.event(synthEvent, false);
- },
+ }
// the entry does not show the hint
_isActivated() {
return this._text.text == this._entry.get_text();
- },
+ }
_onTextChanged(se, prop) {
let terms = getTermsForSearchString(this._entry.get_text());
@@ -553,7 +549,7 @@ var ViewSelector = new Lang.Class({
this._entry.set_secondary_icon(null);
this._searchCancelled();
}
- },
+ }
_onKeyPress(entry, event) {
let symbol = event.get_key_symbol();
@@ -592,7 +588,7 @@ var ViewSelector = new Lang.Class({
}
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
_onCapturedEvent(actor, event) {
if (event.type() == Clutter.EventType.BUTTON_PRESS) {
@@ -609,7 +605,7 @@ var ViewSelector = new Lang.Class({
}
return Clutter.EVENT_PROPAGATE;
- },
+ }
getActivePage() {
if (this._activePage == this._workspacesPage)
@@ -618,7 +614,7 @@ var ViewSelector = new Lang.Class({
return ViewPage.APPS;
else
return ViewPage.SEARCH;
- },
+ }
fadeIn() {
let actor = this._activePage;
@@ -626,7 +622,7 @@ var ViewSelector = new Lang.Class({
time: OverviewControls.SIDE_CONTROLS_ANIMATION_TIME / 2,
transition: 'easeInQuad'
});
- },
+ }
fadeHalf() {
let actor = this._activePage;
@@ -635,5 +631,5 @@ var ViewSelector = new Lang.Class({
transition: 'easeOutQuad'
});
}
-});
+};
Signals.addSignalMethods(ViewSelector.prototype);
diff --git a/js/ui/windowAttentionHandler.js b/js/ui/windowAttentionHandler.js
index 3e53f60b5..27b342b00 100644
--- a/js/ui/windowAttentionHandler.js
+++ b/js/ui/windowAttentionHandler.js
@@ -1,27 +1,24 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
-var WindowAttentionHandler = new Lang.Class({
- Name: 'WindowAttentionHandler',
-
- _init() {
+var WindowAttentionHandler = class {
+ constructor() {
this._tracker = Shell.WindowTracker.get_default();
this._windowDemandsAttentionId = global.display.connect('window-demands-attention',
this._onWindowDemandsAttention.bind(this));
this._windowMarkedUrgentId = global.display.connect('window-marked-urgent',
this._onWindowDemandsAttention.bind(this));
- },
+ }
_getTitleAndBanner(app, window) {
let title = app.get_name();
let banner = _("“%s” is ready").format(window.get_title());
return [title, banner]
- },
+ }
_onWindowDemandsAttention(display, window) {
// We don't want to show the notification when the window is already focused,
@@ -54,18 +51,15 @@ var WindowAttentionHandler = new Lang.Class({
notification.update(title, banner);
}));
}
-});
+};
-var Source = new Lang.Class({
- Name: 'WindowAttentionSource',
- Extends: MessageTray.Source,
+var Source = class WindowAttentionSource extends MessageTray.Source {
+ constructor(app, window) {
+ super(app.get_name());
- _init(app, window) {
this._window = window;
this._app = app;
- this.parent(app.get_name());
-
this.signalIDs = [];
this.signalIDs.push(this._window.connect('notify::demands-attention',
this._sync.bind(this)));
@@ -77,20 +71,20 @@ var Source = new Lang.Class({
() => { this.destroy(); }));
this.connect('destroy', this._onDestroy.bind(this));
- },
+ }
_sync() {
if (this._window.demands_attention || this._window.urgent)
return;
this.destroy();
- },
+ }
_onDestroy() {
for(let i = 0; i < this.signalIDs.length; i++) {
this._window.disconnect(this.signalIDs[i]);
}
this.signalIDs = [];
- },
+ }
_createPolicy() {
if (this._app && this._app.get_app_info()) {
@@ -99,14 +93,14 @@ var Source = new Lang.Class({
} else {
return new MessageTray.NotificationGenericPolicy();
}
- },
+ }
createIcon(size) {
return this._app.create_icon_texture(size);
- },
+ }
open() {
Main.activateWindow(this._window);
this.destroy();
}
-});
+};
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index a8b4f8e69..8527e08e4 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -47,12 +47,9 @@ const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
const GsdWacomIface = loadInterfaceXML('org.gnome.SettingsDaemon.Wacom');
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
-var DisplayChangeDialog = new Lang.Class({
- Name: 'DisplayChangeDialog',
- Extends: ModalDialog.ModalDialog,
-
- _init(wm) {
- this.parent({ styleClass: 'prompt-dialog' });
+var DisplayChangeDialog = class extends ModalDialog.ModalDialog {
+ constructor(wm) {
+ super({ styleClass: 'prompt-dialog' });
this._wm = wm;
@@ -81,7 +78,7 @@ var DisplayChangeDialog = new Lang.Class({
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, this._tick.bind(this));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
- },
+ }
close(timestamp) {
if (this._timeoutId > 0) {
@@ -89,14 +86,14 @@ var DisplayChangeDialog = new Lang.Class({
this._timeoutId = 0;
}
- this.parent(timestamp);
- },
+ super.close(timestamp);
+ }
_formatCountDown() {
let fmt = ngettext("Settings changes will revert in %d second",
"Settings changes will revert in %d seconds");
return fmt.format(this._countDown);
- },
+ }
_tick() {
this._countDown--;
@@ -110,50 +107,48 @@ var DisplayChangeDialog = new Lang.Class({
this._content.body = this._formatCountDown();
return GLib.SOURCE_CONTINUE;
- },
+ }
_onFailure() {
this._wm.complete_display_change(false);
this.close();
- },
+ }
_onSuccess() {
this._wm.complete_display_change(true);
this.close();
- },
-});
+ }
+};
-var WindowDimmer = new Lang.Class({
- Name: 'WindowDimmer',
-
- _init(actor) {
+var WindowDimmer = class {
+ constructor(actor) {
this._brightnessEffect = new Clutter.BrightnessContrastEffect();
actor.add_effect(this._brightnessEffect);
this.actor = actor;
this._enabled = true;
this._dimFactor = 0.0;
this._syncEnabled();
- },
+ }
_syncEnabled() {
this._brightnessEffect.enabled = (this._enabled && this._dimFactor > 0);
- },
+ }
setEnabled(enabled) {
this._enabled = enabled;
this._syncEnabled();
- },
+ }
set dimFactor(factor) {
this._dimFactor = factor;
this._brightnessEffect.set_brightness(factor * DIM_BRIGHTNESS);
this._syncEnabled();
- },
+ }
get dimFactor() {
return this._dimFactor;
}
-});
+};
function getWindowDimmer(actor) {
let enabled = Meta.prefs_get_attach_modal_dialogs();
@@ -177,10 +172,8 @@ function getWindowDimmer(actor) {
*/
var LAST_WINDOW_GRACE_TIME = 1000;
-var WorkspaceTracker = new Lang.Class({
- Name: 'WorkspaceTracker',
-
- _init(wm) {
+var WorkspaceTracker = class {
+ constructor(wm) {
this._wm = wm;
this._workspaces = [];
@@ -208,15 +201,15 @@ var WorkspaceTracker = new Lang.Class({
this._workspaceSettings.connect('changed::dynamic-workspaces', this._queueCheckWorkspaces.bind(this));
this._nWorkspacesChanged();
- },
+ }
blockUpdates() {
this._pauseWorkspaceCheck = true;
- },
+ }
unblockUpdates() {
this._pauseWorkspaceCheck = false;
- },
+ }
_checkWorkspaces() {
let workspaceManager = global.workspace_manager;
@@ -283,7 +276,7 @@ var WorkspaceTracker = new Lang.Class({
this._checkWorkspacesId = 0;
return false;
- },
+ }
keepWorkspaceAlive(workspace, duration) {
if (workspace._keepAliveId)
@@ -295,7 +288,7 @@ var WorkspaceTracker = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(workspace._keepAliveId, '[gnome-shell] this._queueCheckWorkspaces');
- },
+ }
_windowRemoved(workspace, window) {
workspace._lastRemovedWindow = window;
@@ -308,33 +301,33 @@ var WorkspaceTracker = new Lang.Class({
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] this._queueCheckWorkspaces');
- },
+ }
_windowLeftMonitor(metaDisplay, monitorIndex, metaWin) {
// If the window left the primary monitor, that
// might make that workspace empty
if (monitorIndex == Main.layoutManager.primaryIndex)
this._queueCheckWorkspaces();
- },
+ }
_windowEnteredMonitor(metaDisplay, monitorIndex, metaWin) {
// If the window entered the primary monitor, that
// might make that workspace non-empty
if (monitorIndex == Main.layoutManager.primaryIndex)
this._queueCheckWorkspaces();
- },
+ }
_windowsRestacked() {
// Figure out where the pointer is in case we lost track of
// it during a grab. (In particular, if a trayicon popup menu
// is dismissed, see if we need to close the message tray.)
global.sync_pointer();
- },
+ }
_queueCheckWorkspaces() {
if (this._checkWorkspacesId == 0)
this._checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, this._checkWorkspaces.bind(this));
- },
+ }
_nWorkspacesChanged() {
let workspaceManager = global.workspace_manager;
@@ -382,18 +375,16 @@ var WorkspaceTracker = new Lang.Class({
return false;
}
-});
+};
-var TilePreview = new Lang.Class({
- Name: 'TilePreview',
-
- _init() {
+var TilePreview = class {
+ constructor() {
this.actor = new St.Widget();
global.window_group.add_actor(this.actor);
this._reset();
this._showing = false;
- },
+ }
show(window, tileRect, monitorIndex) {
let windowActor = window.get_compositor_private();
@@ -437,7 +428,7 @@ var TilePreview = new Lang.Class({
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad'
});
- },
+ }
hide() {
if (!this._showing)
@@ -450,13 +441,13 @@ var TilePreview = new Lang.Class({
transition: 'easeOutQuad',
onComplete: this._reset.bind(this)
});
- },
+ }
_reset() {
this.actor.hide();
this._rect = null;
this._monitorIndex = -1;
- },
+ }
_updateStyle(monitor) {
let styles = ['tile-preview'];
@@ -469,17 +460,15 @@ var TilePreview = new Lang.Class({
this.actor.style_class = styles.join(' ');
}
-});
+};
-var TouchpadWorkspaceSwitchAction = new Lang.Class({
- Name: 'TouchpadWorkspaceSwitchAction',
-
- _init(actor) {
+var TouchpadWorkspaceSwitchAction = class {
+ constructor(actor) {
this._dx = 0;
this._dy = 0;
actor.connect('captured-event', this._handleEvent.bind(this));
this._touchpadSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.peripherals.touchpad'});
- },
+ }
_checkActivated() {
let dir;
@@ -497,7 +486,7 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
this.emit('activated', dir);
return true;
- },
+ }
_handleEvent(actor, event) {
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
@@ -533,7 +522,7 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
return Clutter.EVENT_STOP;
}
-});
+};
Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
var WorkspaceSwitchAction = new Lang.Class({
@@ -667,10 +656,8 @@ var AppSwitchAction = new Lang.Class({
}
});
-var ResizePopup = new Lang.Class({
- Name: 'ResizePopup',
-
- _init() {
+var ResizePopup = class {
+ constructor() {
this._widget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._label = new St.Label({ style_class: 'resize-popup',
x_align: Clutter.ActorAlign.CENTER,
@@ -678,7 +665,7 @@ var ResizePopup = new Lang.Class({
x_expand: true, y_expand: true });
this._widget.add_child(this._label);
Main.uiGroup.add_actor(this._widget);
- },
+ }
set(rect, displayW, displayH) {
/* Translators: This represents the size of a window. The first number is
@@ -688,18 +675,16 @@ var ResizePopup = new Lang.Class({
this._widget.set_position(rect.x, rect.y);
this._widget.set_size(rect.width, rect.height);
- },
+ }
destroy() {
this._widget.destroy();
this._widget = null;
- },
-});
+ }
+};
-var WindowManager = new Lang.Class({
- Name: 'WindowManager',
-
- _init() {
+var WindowManager = class {
+ constructor() {
this._shellwm = global.window_manager;
this._minimizing = [];
@@ -1036,14 +1021,14 @@ var WindowManager = new Lang.Class({
currentWindow.unmake_fullscreen();
});
global.stage.add_action(gesture);
- },
+ }
_showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) {
this._currentPadOsd = new PadOsd.PadOsd(device, settings, imagePath, editionMode, monitorIndex);
this._currentPadOsd.connect('closed', () => { this._currentPadOsd = null });
return this._currentPadOsd.actor;
- },
+ }
_switchWorkspaceMotion(action, xRel, yRel) {
let workspaceManager = global.workspace_manager;
@@ -1062,7 +1047,7 @@ var WindowManager = new Lang.Class({
xRel = 0;
this._switchData.container.set_position(xRel, yRel);
- },
+ }
_switchWorkspaceCancel() {
if (!this._switchData || this._switchData.inProgress)
@@ -1078,7 +1063,7 @@ var WindowManager = new Lang.Class({
onCompleteScope: this,
onCompleteParams: [switchData],
});
- },
+ }
_actionSwitchWorkspace(action, direction) {
let workspaceManager = global.workspace_manager;
@@ -1091,7 +1076,7 @@ var WindowManager = new Lang.Class({
this._switchData.gestureActivated = true;
this.actionMoveWorkspace(newWs);
}
- },
+ }
_lookupIndex(windows, metaWindow) {
for (let i = 0; i < windows.length; i++) {
@@ -1100,7 +1085,7 @@ var WindowManager = new Lang.Class({
}
}
return -1;
- },
+ }
_switchApp() {
let windows = global.get_window_actors().filter(actor => {
@@ -1129,7 +1114,7 @@ var WindowManager = new Lang.Class({
}
Main.activateWindow(nextWindow);
- },
+ }
insertWorkspace(pos) {
let workspaceManager = global.workspace_manager;
@@ -1168,44 +1153,43 @@ var WindowManager = new Lang.Class({
newWs.activate(global.get_current_time());
this._blockAnimations = false;
}
- },
-
+ }
keepWorkspaceAlive(workspace, duration) {
if (!this._workspaceTracker)
return;
this._workspaceTracker.keepWorkspaceAlive(workspace, duration);
- },
+ }
skipNextEffect(actor) {
this._skippedActors.push(actor);
- },
+ }
setCustomKeybindingHandler(name, modes, handler) {
if (Meta.keybindings_set_custom_handler(name, handler))
this.allowKeybinding(name, modes);
- },
+ }
addKeybinding(name, settings, flags, modes, handler) {
let action = global.display.add_keybinding(name, settings, flags, handler);
if (action != Meta.KeyBindingAction.NONE)
this.allowKeybinding(name, modes);
return action;
- },
+ }
removeKeybinding(name) {
if (global.display.remove_keybinding(name))
this.allowKeybinding(name, Shell.ActionMode.NONE);
- },
+ }
allowKeybinding(name, modes) {
this._allowedKeybindings[name] = modes;
- },
+ }
_shouldAnimate() {
return !(Main.overview.visible || this._blockAnimations);
- },
+ }
_shouldAnimateActor(actor, types) {
if (this._removeEffect(this._skippedActors, actor))
@@ -1219,7 +1203,7 @@ var WindowManager = new Lang.Class({
let type = actor.meta_window.get_window_type();
return types.indexOf(type) >= 0;
- },
+ }
_removeEffect(list, actor) {
let idx = list.indexOf(actor);
@@ -1228,7 +1212,7 @@ var WindowManager = new Lang.Class({
return true;
}
return false;
- },
+ }
_minimizeWindow(shellwm, actor) {
let types = [Meta.WindowType.NORMAL,
@@ -1292,7 +1276,7 @@ var WindowManager = new Lang.Class({
onOverwriteParams: [shellwm, actor]
});
}
- },
+ }
_minimizeWindowDone(shellwm, actor) {
if (this._removeEffect(this._minimizing, actor)) {
@@ -1303,13 +1287,13 @@ var WindowManager = new Lang.Class({
shellwm.completed_minimize(actor);
}
- },
+ }
_minimizeWindowOverwritten(shellwm, actor) {
if (this._removeEffect(this._minimizing, actor)) {
shellwm.completed_minimize(actor);
}
- },
+ }
_unminimizeWindow(shellwm, actor) {
let types = [Meta.WindowType.NORMAL,
@@ -1374,7 +1358,7 @@ var WindowManager = new Lang.Class({
onOverwriteParams: [shellwm, actor]
});
}
- },
+ }
_unminimizeWindowDone(shellwm, actor) {
if (this._removeEffect(this._unminimizing, actor)) {
@@ -1385,13 +1369,13 @@ var WindowManager = new Lang.Class({
shellwm.completed_unminimize(actor);
}
- },
+ }
_unminimizeWindowOverwritten(shellwm, actor) {
if (this._removeEffect(this._unminimizing, actor)) {
shellwm.completed_unminimize(actor);
}
- },
+ }
_sizeChangeWindow(shellwm, actor, whichChange, oldFrameRect, oldBufferRect) {
let types = [Meta.WindowType.NORMAL];
@@ -1404,7 +1388,7 @@ var WindowManager = new Lang.Class({
this._prepareAnimationInfo(shellwm, actor, oldFrameRect, whichChange);
else
shellwm.completed_size_change(actor);
- },
+ }
_prepareAnimationInfo(shellwm, actor, oldFrameRect, change) {
// Position a clone of the window on top of the old position,
@@ -1421,7 +1405,7 @@ var WindowManager = new Lang.Class({
actor.__animationInfo = { clone: actorClone,
oldRect: oldFrameRect };
- },
+ }
_sizeChangedWindow(shellwm, actor) {
if (!actor.__animationInfo)
@@ -1476,7 +1460,7 @@ var WindowManager = new Lang.Class({
// It's important that we don't wait until the animation is completed to
// do this, otherwise our scale will be applied to the old texture size.
shellwm.completed_size_change(actor);
- },
+ }
_clearAnimationInfo(actor) {
if (actor.__animationInfo) {
@@ -1485,7 +1469,7 @@ var WindowManager = new Lang.Class({
return true;
}
return false;
- },
+ }
_sizeChangeWindowDone(shellwm, actor) {
if (this._removeEffect(this._resizing, actor)) {
@@ -1496,12 +1480,12 @@ var WindowManager = new Lang.Class({
actor.translation_y = 0;
this._clearAnimationInfo(actor);
}
- },
+ }
_sizeChangeWindowOverwritten(shellwm, actor) {
if (this._removeEffect(this._resizing, actor))
this._clearAnimationInfo(actor);
- },
+ }
_hasAttachedDialogs(window, ignoreWindow) {
var count = 0;
@@ -1515,7 +1499,7 @@ var WindowManager = new Lang.Class({
return true;
});
return count != 0;
- },
+ }
_checkDimming(window, ignoreWindow) {
let shouldDim = this._hasAttachedDialogs(window, ignoreWindow);
@@ -1530,7 +1514,7 @@ var WindowManager = new Lang.Class({
this._dimmedWindows.filter(win => win != window);
this._undimWindow(window);
}
- },
+ }
_dimWindow(window) {
let actor = window.get_compositor_private();
@@ -1547,7 +1531,7 @@ var WindowManager = new Lang.Class({
});
else
dimmer.dimFactor = 1.0;
- },
+ }
_undimWindow(window) {
let actor = window.get_compositor_private();
@@ -1563,7 +1547,7 @@ var WindowManager = new Lang.Class({
transition: 'linear' });
else
dimmer.dimFactor = 0.0;
- },
+ }
_mapWindow(shellwm, actor) {
actor._windowType = actor.meta_window.get_window_type();
@@ -1647,7 +1631,7 @@ var WindowManager = new Lang.Class({
shellwm.completed_map(actor);
return;
}
- },
+ }
_mapWindowDone(shellwm, actor) {
if (this._removeEffect(this._mapping, actor)) {
@@ -1660,13 +1644,13 @@ var WindowManager = new Lang.Class({
actor.translation_x = 0;
shellwm.completed_map(actor);
}
- },
+ }
_mapWindowOverwrite(shellwm, actor) {
if (this._removeEffect(this._mapping, actor)) {
shellwm.completed_map(actor);
}
- },
+ }
_destroyWindow(shellwm, actor) {
let window = actor.meta_window;
@@ -1738,7 +1722,7 @@ var WindowManager = new Lang.Class({
shellwm.completed_destroy(actor);
return;
}
- },
+ }
_destroyWindowDone(shellwm, actor) {
if (this._removeEffect(this._destroying, actor)) {
@@ -1749,7 +1733,7 @@ var WindowManager = new Lang.Class({
}
shellwm.completed_destroy(actor);
}
- },
+ }
_filterKeybinding(shellwm, binding) {
if (Main.actionMode == Shell.ActionMode.NONE)
@@ -1764,7 +1748,7 @@ var WindowManager = new Lang.Class({
return false;
return !(this._allowedKeybindings[binding.get_name()] & Main.actionMode);
- },
+ }
_syncStacking() {
if (this._switchData == null)
@@ -1793,7 +1777,7 @@ var WindowManager = new Lang.Class({
}
}
}
- },
+ }
_getPositionForDirection(direction) {
let xDest = 0, yDest = 0;
@@ -1817,7 +1801,7 @@ var WindowManager = new Lang.Class({
xDest = global.screen_width;
return [xDest, yDest];
- },
+ }
_prepareWorkspaceSwitch(from, to, direction) {
if (this._switchData)
@@ -1914,7 +1898,7 @@ var WindowManager = new Lang.Class({
switchData.windows.splice(switchData.windows.indexOf(w), 1);
});
}
- },
+ }
_finishWorkspaceSwitch(switchData) {
this._switchData = null;
@@ -1934,7 +1918,7 @@ var WindowManager = new Lang.Class({
switchData.movingWindowBin.destroy();
this._movingWindow = null;
- },
+ }
_switchWorkspace(shellwm, from, to, direction) {
if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) {
@@ -1967,28 +1951,28 @@ var WindowManager = new Lang.Class({
onCompleteScope: this,
onCompleteParams: [shellwm]
});
- },
+ }
_switchWorkspaceDone(shellwm) {
this._finishWorkspaceSwitch(this._switchData);
shellwm.completed_switch_workspace();
- },
+ }
_showTilePreview(shellwm, window, tileRect, monitorIndex) {
if (!this._tilePreview)
this._tilePreview = new TilePreview();
this._tilePreview.show(window, tileRect, monitorIndex);
- },
+ }
_hideTilePreview(shellwm) {
if (!this._tilePreview)
return;
this._tilePreview.hide();
- },
+ }
_showWindowMenu(shellwm, window, menu, rect) {
this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
- },
+ }
_startSwitcher(display, window, binding) {
let constructor = null;
@@ -2027,19 +2011,19 @@ var WindowManager = new Lang.Class({
if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
tabPopup.destroy();
- },
+ }
_startA11ySwitcher(display, window, binding) {
Main.ctrlAltTabManager.popup(binding.is_reversed(), binding.get_name(), binding.get_mask());
- },
+ }
_toggleAppMenu(display, window, event, binding) {
Main.panel.toggleAppMenu();
- },
+ }
_toggleCalendar(display, window, event, binding) {
Main.panel.toggleCalendar();
- },
+ }
_toggleTweens() {
this._tweensPaused = !this._tweensPaused;
@@ -2048,7 +2032,7 @@ var WindowManager = new Lang.Class({
OrigTweener.pauseAllTweens();
else
OrigTweener.resumeAllTweens();
- },
+ }
_showWorkspaceSwitcher(display, window, binding) {
let workspaceManager = display.get_workspace_manager();
@@ -2117,7 +2101,7 @@ var WindowManager = new Lang.Class({
}
this._workspaceSwitcherPopup.display(direction, newWs.index());
}
- },
+ }
actionMoveWorkspace(workspace) {
if (!Main.sessionMode.hasWorkspaces)
@@ -2128,7 +2112,7 @@ var WindowManager = new Lang.Class({
if (activeWorkspace != workspace)
workspace.activate(global.get_current_time());
- },
+ }
actionMoveWindow(window, workspace) {
if (!Main.sessionMode.hasWorkspaces)
@@ -2147,20 +2131,20 @@ var WindowManager = new Lang.Class({
global.display.clear_mouse_mode();
workspace.activate_with_focus (window, global.get_current_time());
}
- },
+ }
_confirmDisplayChange() {
let dialog = new DisplayChangeDialog(this._shellwm);
dialog.open();
- },
+ }
_createCloseDialog(shellwm, window) {
return new CloseDialog.CloseDialog(window);
- },
+ }
_createInhibitShortcutsDialog(shellwm, window) {
return new InhibitShortcutsDialog.InhibitShortcutsDialog(window);
- },
+ }
_showResizePopup(display, show, rect, displayW, displayH) {
if (show) {
@@ -2174,5 +2158,5 @@ var WindowManager = new Lang.Class({
this._resizePopup = null;
}
}
- },
-});
+ }
+};
diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js
index 11d4f17b6..939ba15d2 100644
--- a/js/ui/windowMenu.js
+++ b/js/ui/windowMenu.js
@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
const Gtk = imports.gi.Gtk;
-const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
@@ -11,12 +10,9 @@ const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const RemoteMenu = imports.ui.remoteMenu;
-var WindowMenu = new Lang.Class({
- Name: 'WindowMenu',
- Extends: PopupMenu.PopupMenu,
-
- _init(window, sourceActor) {
- this.parent(sourceActor, 0, St.Side.TOP);
+var WindowMenu = class extends PopupMenu.PopupMenu {
+ constructor(window, sourceActor) {
+ super(sourceActor, 0, St.Side.TOP);
this.actor.add_style_class_name('window-menu');
@@ -24,7 +20,7 @@ var WindowMenu = new Lang.Class({
this.actor.hide();
this._buildMenu(window);
- },
+ }
_buildMenu(window) {
let type = window.get_window_type();
@@ -177,16 +173,13 @@ var WindowMenu = new Lang.Class({
if (!window.can_close())
item.setSensitive(false);
}
-});
+};
-var AppMenu = new Lang.Class({
- Name: 'AppMenu',
- Extends: RemoteMenu.RemoteMenu,
-
- _init(window, sourceActor) {
+var AppMenu = class extends RemoteMenu.RemoteMenu {
+ constructor(window, sourceActor) {
let app = Shell.WindowTracker.get_default().get_window_app(window);
- this.parent(sourceActor, app.menu, app.action_group);
+ super(sourceActor, app.menu, app.action_group);
this.actor.add_style_class_name('fallback-app-menu');
let variant = window.get_gtk_theme_variant();
@@ -196,12 +189,10 @@ var AppMenu = new Lang.Class({
Main.layoutManager.uiGroup.add_actor(this.actor);
this.actor.hide();
}
-});
+};
-var WindowMenuManager = new Lang.Class({
- Name: 'WindowMenuManager',
-
- _init() {
+var WindowMenuManager = class {
+ constructor() {
this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor });
this._sourceActor = new St.Widget({ reactive: true, visible: false });
@@ -209,7 +200,7 @@ var WindowMenuManager = new Lang.Class({
this._manager.activeMenu.toggle();
});
Main.uiGroup.add_actor(this._sourceActor);
- },
+ }
showWindowMenuForWindow(window, type, rect) {
let menuType = (type == Meta.WindowMenuType.WM) ? WindowMenu : AppMenu;
@@ -239,4 +230,4 @@ var WindowMenuManager = new Lang.Class({
window.disconnect(destroyId);
});
}
-});
+};
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index baa8a4380..d002cd008 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -102,10 +102,8 @@ var WindowCloneLayout = new Lang.Class({
}
});
-var WindowClone = new Lang.Class({
- Name: 'WindowClone',
-
- _init(realWindow, workspace) {
+var WindowClone = class {
+ constructor(realWindow, workspace) {
this.realWindow = realWindow;
this.metaWindow = realWindow.meta_window;
this.metaWindow._delegate = this;
@@ -180,18 +178,18 @@ var WindowClone = new Lang.Class({
this._selected = false;
this._closeRequested = false;
- },
+ }
set slot(slot) {
this._slot = slot;
- },
+ }
get slot() {
if (this.inDrag)
return this._dragSlot;
else
return this._slot;
- },
+ }
deleteAll() {
// Delete all windows, starting from the bottom-most (most-modal) one
@@ -205,7 +203,7 @@ var WindowClone = new Lang.Class({
this.metaWindow.delete(global.get_current_time());
this._closeRequested = true;
- },
+ }
addDialog(win) {
let parent = win.get_transient_for();
@@ -222,11 +220,11 @@ var WindowClone = new Lang.Class({
// assume it's a close confirmation and leave the overview
if (this._closeRequested)
this._activate();
- },
+ }
hasAttachedDialogs() {
return this.actor.get_n_children() > 1;
- },
+ }
_doAddAttachedDialog(metaWin, realWin) {
let clone = new Clutter.Clone({ source: realWin });
@@ -240,7 +238,7 @@ var WindowClone = new Lang.Class({
this._onMetaWindowSizeChanged();
});
this.actor.add_child(clone);
- },
+ }
_updateAttachedDialogs() {
let iter = win => {
@@ -256,23 +254,23 @@ var WindowClone = new Lang.Class({
return true;
};
this.metaWindow.foreach_transient(iter);
- },
+ }
get boundingBox() {
return this._boundingBox;
- },
+ }
get width() {
return this._boundingBox.width;
- },
+ }
get height() {
return this._boundingBox.height;
- },
+ }
getOriginalPosition() {
return [this._boundingBox.x, this._boundingBox.y];
- },
+ }
_computeBoundingBox() {
let rect = this.metaWindow.get_frame_rect();
@@ -291,7 +289,7 @@ var WindowClone = new Lang.Class({
// Convert from a MetaRectangle to a native JS object
this._boundingBox = { x: rect.x, y: rect.y, width: rect.width, height: rect.height };
this.actor.layout_manager.boundingBox = rect;
- },
+ }
// Find the actor just below us, respecting reparenting done
// by DND code
@@ -307,7 +305,7 @@ var WindowClone = new Lang.Class({
} else {
return this._stackAbove;
}
- },
+ }
setStackAbove(actor) {
this._stackAbove = actor;
@@ -320,11 +318,11 @@ var WindowClone = new Lang.Class({
this.actor.lower_bottom();
else
this.actor.raise(actualAbove);
- },
+ }
destroy() {
this.actor.destroy();
- },
+ }
_disconnectSignals() {
this.actor.get_children().forEach(child => {
@@ -338,12 +336,12 @@ var WindowClone = new Lang.Class({
realWindow.meta_window.disconnect(child._posChangedId);
realWindow.disconnect(child._destroyId);
});
- },
+ }
_onMetaWindowSizeChanged() {
this._computeBoundingBox();
this.emit('size-changed');
- },
+ }
_onDestroy() {
this._disconnectSignals();
@@ -357,12 +355,12 @@ var WindowClone = new Lang.Class({
}
this.disconnectAll();
- },
+ }
_activate() {
this._selected = true;
this.emit('selected', global.get_current_time());
- },
+ }
_onKeyPress(actor, event) {
let symbol = event.get_key_symbol();
@@ -373,11 +371,11 @@ var WindowClone = new Lang.Class({
}
return false;
- },
+ }
_onClicked(action, actor) {
this._activate();
- },
+ }
_onLongPress(action, actor, state) {
// Take advantage of the Clutter policy to consider
@@ -400,7 +398,7 @@ var WindowClone = new Lang.Class({
this.emit('show-chrome');
}
return true;
- },
+ }
_onDragBegin(draggable, time) {
this._dragSlot = this._slot;
@@ -408,19 +406,19 @@ var WindowClone = new Lang.Class({
this.dragOrigScale = this.actor.scale_x;
this.inDrag = true;
this.emit('drag-begin');
- },
+ }
handleDragOver(source, actor, x, y, time) {
return this._workspace.handleDragOver(source, actor, x, y, time);
- },
+ }
acceptDrop(source, actor, x, y, time) {
this._workspace.acceptDrop(source, actor, x, y, time);
- },
+ }
_onDragCancelled(draggable, time) {
this.emit('drag-cancelled');
- },
+ }
_onDragEnd(draggable, time, snapback) {
this.inDrag = false;
@@ -438,7 +436,7 @@ var WindowClone = new Lang.Class({
this.emit('drag-end');
}
-});
+};
Signals.addSignalMethods(WindowClone.prototype);
@@ -447,10 +445,8 @@ Signals.addSignalMethods(WindowClone.prototype);
* @parentActor: The actor which will be the parent of all overlay items
* such as app icon and window caption
*/
-var WindowOverlay = new Lang.Class({
- Name: 'WindowOverlay',
-
- _init(windowClone, parentActor) {
+var WindowOverlay = class {
+ constructor(windowClone, parentActor) {
let metaWindow = windowClone.metaWindow;
this._windowClone = windowClone;
@@ -505,37 +501,37 @@ var WindowOverlay = new Lang.Class({
// the signal will be emitted normally when we are added
if (parentActor.get_stage())
this._onStyleChanged();
- },
+ }
hide() {
this._hidden = true;
this.hideCloseButton();
- },
+ }
show() {
this._hidden = false;
if (this._windowClone.actor['has-pointer'])
this._animateVisible();
- },
+ }
chromeHeights() {
return [Math.max(this.borderSize, this.closeButton.height - this.closeButton._overlap),
(this.title.height - this.borderSize) / 2];
- },
+ }
chromeWidths() {
return [this.borderSize,
Math.max(this.borderSize, this.closeButton.width - this.closeButton._overlap)];
- },
+ }
setMaxChromeWidth(max) {
if (this._maxTitleWidth == max)
return;
this._maxTitleWidth = max;
- },
+ }
relayout(animate) {
let button = this.closeButton;
@@ -598,7 +594,7 @@ var WindowOverlay = new Lang.Class({
this.border.set_position(borderX, borderY);
this.border.set_size(borderWidth, borderHeight);
}
- },
+ }
_getCaption() {
let metaWindow = this._windowClone.metaWindow;
@@ -608,7 +604,7 @@ var WindowOverlay = new Lang.Class({
let tracker = Shell.WindowTracker.get_default();
let app = tracker.get_window_app(metaWindow);
return app.get_name();
- },
+ }
_animateOverlayActor(actor, x, y, width, height) {
let params = { x: x,
@@ -621,12 +617,12 @@ var WindowOverlay = new Lang.Class({
params.height = height;
Tweener.addTween(actor, params);
- },
+ }
_windowCanClose() {
return this._windowClone.metaWindow.can_close() &&
!this._windowClone.hasAttachedDialogs();
- },
+ }
_onDestroy() {
if (this._idleToggleCloseId > 0) {
@@ -637,7 +633,7 @@ var WindowOverlay = new Lang.Class({
this.title.destroy();
this.closeButton.destroy();
this.border.destroy();
- },
+ }
_animateVisible() {
this._parentActor.raise_top();
@@ -654,7 +650,7 @@ var WindowOverlay = new Lang.Class({
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeOutQuad' });
});
- },
+ }
_animateInvisible() {
[this.closeButton, this.border, this.title].forEach(a => {
@@ -664,7 +660,7 @@ var WindowOverlay = new Lang.Class({
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeInQuad' });
});
- },
+ }
_onShowChrome() {
// We might get enter events on the clone while the overlay is
@@ -676,14 +672,14 @@ var WindowOverlay = new Lang.Class({
this._animateVisible();
this.emit('show-close-button');
- },
+ }
_onHideChrome() {
if (this._idleToggleCloseId == 0) {
this._idleToggleCloseId = Mainloop.timeout_add(750, this._idleToggleCloseButton.bind(this));
GLib.Source.set_name_by_id(this._idleToggleCloseId, '[gnome-shell] this._idleToggleCloseButton');
}
- },
+ }
_idleToggleCloseButton() {
this._idleToggleCloseId = 0;
@@ -693,7 +689,7 @@ var WindowOverlay = new Lang.Class({
this._animateInvisible();
return GLib.SOURCE_REMOVE;
- },
+ }
hideCloseButton() {
if (this._idleToggleCloseId > 0) {
@@ -703,7 +699,7 @@ var WindowOverlay = new Lang.Class({
this.closeButton.hide();
this.border.hide();
this.title.hide();
- },
+ }
_onStyleChanged() {
let closeNode = this.closeButton.get_theme_node();
@@ -714,7 +710,7 @@ var WindowOverlay = new Lang.Class({
this._parentActor.queue_relayout();
}
-});
+};
Signals.addSignalMethods(WindowOverlay.prototype);
var WindowPositionFlags = {
@@ -797,15 +793,15 @@ var WindowPositionFlags = {
// each window's "cell" area to be the same, but we shrink the thumbnail
// and center it horizontally, and align it to the bottom vertically.
-var LayoutStrategy = new Lang.Class({
- Name: 'LayoutStrategy',
- Abstract: true,
+var LayoutStrategy = class {
+ constructor(monitor, rowSpacing, columnSpacing) {
+ if (new.target === LayoutStrategy)
+ throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
- _init(monitor, rowSpacing, columnSpacing) {
this._monitor = monitor;
this._rowSpacing = rowSpacing;
this._columnSpacing = columnSpacing;
- },
+ }
_newRow() {
// Row properties:
@@ -823,7 +819,7 @@ var LayoutStrategy = new Lang.Class({
width: 0, height: 0,
fullWidth: 0, fullHeight: 0,
windows: [] };
- },
+ }
// Computes and returns an individual scaling factor for @window,
// to be applied in addition to the overal layout scale.
@@ -841,7 +837,7 @@ var LayoutStrategy = new Lang.Class({
// Map from [0, 1] to [1.5, 1]
return _interpolate(1.5, 1, ratio);
- },
+ }
// Compute the size of each row, by assigning to the properties
// row.width, row.height, row.fullWidth, row.fullHeight, and
@@ -849,7 +845,7 @@ var LayoutStrategy = new Lang.Class({
// intended to be called by subclasses.
_computeRowSizes(layout) {
throw new Error('_computeRowSizes not implemented');
- },
+ }
// Compute strategy-specific window slots for each window in
// @windows, given the @layout. The strategy may also use @layout
@@ -862,7 +858,7 @@ var LayoutStrategy = new Lang.Class({
// * rows - A list of rows, which should be instantiated by _newRow.
computeLayout(windows, layout) {
throw new Error('computeLayout not implemented');
- },
+ }
// Given @layout, compute the overall scale and space of the layout.
// The scale is the individual, non-fancy scale of each window, and
@@ -895,7 +891,7 @@ var LayoutStrategy = new Lang.Class({
layout.scale = scale;
layout.space = space;
- },
+ }
computeWindowSlots(layout, area) {
this._computeRowSizes(layout);
@@ -971,12 +967,9 @@ var LayoutStrategy = new Lang.Class({
}
return slots;
}
-});
-
-var UnalignedLayoutStrategy = new Lang.Class({
- Name: 'UnalignedLayoutStrategy',
- Extends: LayoutStrategy,
+};
+var UnalignedLayoutStrategy = class extends LayoutStrategy {
_computeRowSizes(layout) {
let { rows: rows, scale: scale } = layout;
for (let i = 0; i < rows.length; i++) {
@@ -984,7 +977,7 @@ var UnalignedLayoutStrategy = new Lang.Class({
row.width = row.fullWidth * scale + (row.windows.length - 1) * this._columnSpacing;
row.height = row.fullHeight * scale;
}
- },
+ }
_keepSameRow(row, window, width, idealRowWidth) {
if (row.fullWidth + width <= idealRowWidth)
@@ -997,12 +990,12 @@ var UnalignedLayoutStrategy = new Lang.Class({
return true;
return false;
- },
+ }
_sortRow(row) {
// Sort windows horizontally to minimize travel distance
row.windows.sort((a, b) => a.realWindow.x - b.realWindow.x);
- },
+ }
computeLayout(windows, layout) {
let numRows = layout.numRows;
@@ -1055,7 +1048,7 @@ var UnalignedLayoutStrategy = new Lang.Class({
layout.gridWidth = maxRow.fullWidth;
layout.gridHeight = gridHeight;
}
-});
+};
function padArea(area, padding) {
return {
@@ -1098,10 +1091,8 @@ const WorkspaceActor = new Lang.Class({
/**
* @metaWorkspace: a #Meta.Workspace, or null
*/
-var Workspace = new Lang.Class({
- Name: 'Workspace',
-
- _init(metaWorkspace, monitorIndex) {
+var Workspace = class {
+ constructor(metaWorkspace, monitorIndex) {
// When dragging a window, we use this slot for reserve space.
this._reservedSlot = null;
this._reservedSlotWindow = null;
@@ -1174,7 +1165,7 @@ var Workspace = new Lang.Class({
if (this.actor.mapped)
this._syncActualGeometry();
});
- },
+ }
setFullGeometry(geom) {
if (rectEqual(this._fullGeometry, geom))
@@ -1184,7 +1175,7 @@ var Workspace = new Lang.Class({
if (this.actor.mapped)
this._recalculateWindowPositions(WindowPositionFlags.NONE);
- },
+ }
setActualGeometry(geom) {
if (rectEqual(this._actualGeometry, geom))
@@ -1195,7 +1186,7 @@ var Workspace = new Lang.Class({
if (this.actor.mapped)
this._syncActualGeometry();
- },
+ }
_syncActualGeometry() {
if (this._actualGeometryLater || !this._actualGeometryDirty)
@@ -1216,7 +1207,7 @@ var Workspace = new Lang.Class({
return false;
});
- },
+ }
_lookupIndex(metaWindow) {
for (let i = 0; i < this._windows.length; i++) {
@@ -1225,15 +1216,15 @@ var Workspace = new Lang.Class({
}
}
return -1;
- },
+ }
containsMetaWindow(metaWindow) {
return this._lookupIndex(metaWindow) >= 0;
- },
+ }
isEmpty() {
return this._windows.length == 0;
- },
+ }
setReservedSlot(metaWindow) {
if (this._reservedSlotWindow == metaWindow)
@@ -1248,7 +1239,7 @@ var Workspace = new Lang.Class({
}
this._recalculateWindowPositions(WindowPositionFlags.ANIMATE);
- },
+ }
_recalculateWindowPositions(flags) {
this._positionWindowsFlags |= flags;
@@ -1262,7 +1253,7 @@ var Workspace = new Lang.Class({
this._positionWindowsId = 0;
return false;
});
- },
+ }
_realRecalculateWindowPositions(flags) {
if (this._repositionWindowsId > 0) {
@@ -1283,7 +1274,7 @@ var Workspace = new Lang.Class({
this._currentLayout = this._computeLayout(clones);
this._updateWindowPositions(flags);
- },
+ }
_updateWindowPositions(flags) {
if (this._currentLayout == null) {
@@ -1378,7 +1369,7 @@ var Workspace = new Lang.Class({
this._showWindowOverlay(clone, overlay);
}
}
- },
+ }
syncStacking(stackIndices) {
let clones = this._windows.slice();
@@ -1398,7 +1389,7 @@ var Workspace = new Lang.Class({
clone.setStackAbove(previousClone.actor);
}
}
- },
+ }
_animateClone(clone, overlay, x, y, scale) {
Tweener.addTween(clone.actor,
@@ -1414,7 +1405,7 @@ var Workspace = new Lang.Class({
});
clone.overlay.relayout(true);
- },
+ }
_showWindowOverlay(clone, overlay) {
if (clone.inDrag)
@@ -1422,7 +1413,7 @@ var Workspace = new Lang.Class({
if (overlay && overlay._hidden)
overlay.show();
- },
+ }
_delayedWindowRepositioning() {
let [x, y, mask] = global.get_pointer();
@@ -1447,7 +1438,7 @@ var Workspace = new Lang.Class({
this._recalculateWindowPositions(WindowPositionFlags.ANIMATE);
this._repositionWindowsId = 0;
return GLib.SOURCE_REMOVE;
- },
+ }
_doRemoveWindow(metaWin) {
let win = metaWin.get_compositor_private();
@@ -1493,7 +1484,7 @@ var Workspace = new Lang.Class({
this._repositionWindowsId = Mainloop.timeout_add(750,
this._delayedWindowRepositioning.bind(this));
GLib.Source.set_name_by_id(this._repositionWindowsId, '[gnome-shell] this._delayedWindowRepositioning');
- },
+ }
_doAddWindow(metaWin) {
if (this.leavingOverview)
@@ -1556,27 +1547,27 @@ var Workspace = new Lang.Class({
this._currentLayout = null;
this._recalculateWindowPositions(WindowPositionFlags.ANIMATE);
- },
+ }
_windowAdded(metaWorkspace, metaWin) {
this._doAddWindow(metaWin);
- },
+ }
_windowRemoved(metaWorkspace, metaWin) {
this._doRemoveWindow(metaWin);
- },
+ }
_windowEnteredMonitor(metaDisplay, monitorIndex, metaWin) {
if (monitorIndex == this.monitorIndex) {
this._doAddWindow(metaWin);
}
- },
+ }
_windowLeftMonitor(metaDisplay, monitorIndex, metaWin) {
if (monitorIndex == this.monitorIndex) {
this._doRemoveWindow(metaWin);
}
- },
+ }
// check for maximized windows on the workspace
hasMaximizedWindows() {
@@ -1588,7 +1579,7 @@ var Workspace = new Lang.Class({
return true;
}
return false;
- },
+ }
fadeToOverview() {
// We don't want to reposition windows while animating in this way.
@@ -1637,7 +1628,7 @@ var Workspace = new Lang.Class({
this._fadeWindow(i, time, 0);
}
}
- },
+ }
fadeFromOverview() {
this.leavingOverview = true;
@@ -1695,7 +1686,7 @@ var Workspace = new Lang.Class({
this._fadeWindow(i, time, 255);
}
}
- },
+ }
_fadeWindow(index, time, opacity) {
let clone = this._windows[index];
@@ -1719,12 +1710,12 @@ var Workspace = new Lang.Class({
// The window is hidden
clone.actor.opacity = 0;
}
- },
+ }
zoomToOverview() {
// Position and scale the windows.
this._recalculateWindowPositions(WindowPositionFlags.ANIMATE | WindowPositionFlags.INITIAL);
- },
+ }
zoomFromOverview() {
let workspaceManager = global.workspace_manager;
@@ -1749,7 +1740,7 @@ var Workspace = new Lang.Class({
// Position and scale the windows.
for (let i = 0; i < this._windows.length; i++)
this._zoomWindowFromOverview(i);
- },
+ }
_zoomWindowFromOverview(index) {
let clone = this._windows[index];
@@ -1779,11 +1770,11 @@ var Workspace = new Lang.Class({
transition: 'easeOutQuad'
});
}
- },
+ }
destroy() {
this.actor.destroy();
- },
+ }
_onDestroy(actor) {
if (this._overviewHiddenId) {
@@ -1815,29 +1806,29 @@ var Workspace = new Lang.Class({
}
this._windows = [];
- },
+ }
// Sets this.leavingOverview flag to false.
_doneLeavingOverview() {
this.leavingOverview = false;
- },
+ }
_doneShowingOverview() {
this._animatingWindowsFade = false;
this._recalculateWindowPositions(WindowPositionFlags.INITIAL);
- },
+ }
// Tests if @actor belongs to this workspaces and monitor
_isMyWindow(actor) {
let win = actor.meta_window;
return (this.metaWorkspace == null || win.located_on_workspace(this.metaWorkspace)) &&
(win.get_monitor() == this.monitorIndex);
- },
+ }
// Tests if @win should be shown in the Overview
_isOverviewWindow(win) {
return !win.get_meta_window().skip_taskbar;
- },
+ }
// Create a clone of a (non-desktop) window and add it to the window list
_addWindowClone(win, positioned) {
@@ -1884,7 +1875,7 @@ var Workspace = new Lang.Class({
this._windowOverlays.push(overlay);
return [clone, overlay];
- },
+ }
_removeWindowClone(metaWin) {
// find the position of the window in our list
@@ -1895,7 +1886,7 @@ var Workspace = new Lang.Class({
this._windowOverlays.splice(index, 1);
return this._windows.splice(index, 1).pop();
- },
+ }
_onShowOverlayClose(windowOverlay) {
for (let i = 0; i < this._windowOverlays.length; i++) {
@@ -1904,7 +1895,7 @@ var Workspace = new Lang.Class({
continue;
overlay.hideCloseButton();
}
- },
+ }
_isBetterLayout(oldLayout, newLayout) {
if (oldLayout.scale === undefined)
@@ -1926,7 +1917,7 @@ var Workspace = new Lang.Class({
// Lose -- worse scale and space
return false;
}
- },
+ }
_getBestLayout(windows, area, rowSpacing, columnSpacing) {
// We look for the largest scale that allows us to fit the
@@ -1956,7 +1947,7 @@ var Workspace = new Lang.Class({
}
return lastLayout;
- },
+ }
_getSpacingAndPadding() {
let node = this.actor.get_theme_node();
@@ -1985,20 +1976,20 @@ var Workspace = new Lang.Class({
padding.right += rightBorder;
return [rowSpacing, columnSpacing, padding];
- },
+ }
_computeLayout(windows) {
let [rowSpacing, columnSpacing, padding] = this._getSpacingAndPadding();
let area = padArea(this._fullGeometry, padding);
return this._getBestLayout(windows, area, rowSpacing, columnSpacing);
- },
+ }
_onCloneSelected(clone, time) {
let wsIndex = undefined;
if (this.metaWorkspace)
wsIndex = this.metaWorkspace.index();
Main.activateWindow(clone.metaWindow, time, wsIndex);
- },
+ }
// Draggable target interface
handleDragOver(source, actor, x, y, time) {
@@ -2008,7 +1999,7 @@ var Workspace = new Lang.Class({
return DND.DragMotionResult.COPY_DROP;
return DND.DragMotionResult.CONTINUE;
- },
+ }
acceptDrop(source, actor, x, y, time) {
if (source.realWindow) {
@@ -2044,6 +2035,5 @@ var Workspace = new Lang.Class({
return false;
}
-});
-
+};
Signals.addSignalMethods(Workspace.prototype);
diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js
index ac187bbe3..386a29fe0 100644
--- a/js/ui/workspaceThumbnail.js
+++ b/js/ui/workspaceThumbnail.js
@@ -54,10 +54,8 @@ var PrimaryActorLayout = new Lang.Class({
},
});
-var WindowClone = new Lang.Class({
- Name: 'WindowClone',
-
- _init(realWindow) {
+var WindowClone = class {
+ constructor(realWindow) {
this.clone = new Clutter.Clone({ source: realWindow });
/* Can't use a Shell.GenericContainer because of DND and reparenting... */
@@ -108,7 +106,7 @@ var WindowClone = new Lang.Class({
return true;
};
this.metaWindow.foreach_transient(iter);
- },
+ }
// Find the actor just below us, respecting reparenting done
// by DND code
@@ -124,7 +122,7 @@ var WindowClone = new Lang.Class({
} else {
return this._stackAbove;
}
- },
+ }
setStackAbove(actor) {
this._stackAbove = actor;
@@ -139,15 +137,15 @@ var WindowClone = new Lang.Class({
this.actor.lower_bottom();
else
this.actor.raise(actualAbove);
- },
+ }
destroy() {
this.actor.destroy();
- },
+ }
addAttachedDialog(win) {
this._doAddAttachedDialog(win, win.get_compositor_private());
- },
+ }
_doAddAttachedDialog(metaDialog, realDialog) {
let clone = new Clutter.Clone({ source: realDialog });
@@ -160,7 +158,7 @@ var WindowClone = new Lang.Class({
clone.destroy();
});
this.actor.add_child(clone);
- },
+ }
_updateDialogPosition(realDialog, cloneDialog) {
let metaDialog = realDialog.meta_window;
@@ -168,11 +166,11 @@ var WindowClone = new Lang.Class({
let rect = this.metaWindow.get_frame_rect();
cloneDialog.set_position(dialogRect.x - rect.x, dialogRect.y - rect.y);
- },
+ }
_onPositionChanged() {
this.actor.set_position(this.realWindow.x, this.realWindow.y);
- },
+ }
_disconnectSignals() {
this.actor.get_children().forEach(child => {
@@ -181,7 +179,7 @@ var WindowClone = new Lang.Class({
realWindow.disconnect(child._updateId);
realWindow.disconnect(child._destroyId);
});
- },
+ }
_onDestroy() {
this._disconnectSignals();
@@ -194,13 +192,13 @@ var WindowClone = new Lang.Class({
}
this.disconnectAll();
- },
+ }
_onButtonRelease(actor, event) {
this.emit('selected', event.get_time());
return Clutter.EVENT_STOP;
- },
+ }
_onTouchEvent(actor, event) {
if (event.type() != Clutter.EventType.TOUCH_END ||
@@ -209,16 +207,16 @@ var WindowClone = new Lang.Class({
this.emit('selected', event.get_time());
return Clutter.EVENT_STOP;
- },
+ }
_onDragBegin(draggable, time) {
this.inDrag = true;
this.emit('drag-begin');
- },
+ }
_onDragCancelled(draggable, time) {
this.emit('drag-cancelled');
- },
+ }
_onDragEnd(draggable, time, snapback) {
this.inDrag = false;
@@ -236,7 +234,7 @@ var WindowClone = new Lang.Class({
this.emit('drag-end');
}
-});
+};
Signals.addSignalMethods(WindowClone.prototype);
@@ -254,10 +252,8 @@ var ThumbnailState = {
/**
* @metaWorkspace: a #Meta.Workspace
*/
-var WorkspaceThumbnail = new Lang.Class({
- Name: 'WorkspaceThumbnail',
-
- _init(metaWorkspace) {
+var WorkspaceThumbnail = class {
+ constructor(metaWorkspace) {
this.metaWorkspace = metaWorkspace;
this.monitorIndex = Main.layoutManager.primaryIndex;
@@ -311,18 +307,18 @@ var WorkspaceThumbnail = new Lang.Class({
this.state = ThumbnailState.NORMAL;
this._slidePosition = 0; // Fully slid in
this._collapseFraction = 0; // Not collapsed
- },
+ }
_createBackground() {
this._bgManager = new Background.BackgroundManager({ monitorIndex: Main.layoutManager.primaryIndex,
container: this._contents,
vignette: false });
- },
+ }
setPorthole(x, y, width, height) {
this.actor.set_size(width, height);
this._contents.set_position(-x, -y);
- },
+ }
_lookupIndex(metaWindow) {
for (let i = 0; i < this._windows.length; i++) {
@@ -331,7 +327,7 @@ var WorkspaceThumbnail = new Lang.Class({
}
}
return -1;
- },
+ }
syncStacking(stackIndices) {
this._windows.sort((a, b) => {
@@ -350,31 +346,31 @@ var WorkspaceThumbnail = new Lang.Class({
clone.setStackAbove(previousClone.actor);
}
}
- },
+ }
set slidePosition(slidePosition) {
this._slidePosition = slidePosition;
this.actor.queue_relayout();
- },
+ }
get slidePosition() {
return this._slidePosition;
- },
+ }
set collapseFraction(collapseFraction) {
this._collapseFraction = collapseFraction;
this.actor.queue_relayout();
- },
+ }
get collapseFraction() {
return this._collapseFraction;
- },
+ }
_doRemoveWindow(metaWin) {
let clone = this._removeWindowClone(metaWin);
if (clone)
clone.destroy();
- },
+ }
_doAddWindow(metaWin) {
if (this._removed)
@@ -428,11 +424,11 @@ var WorkspaceThumbnail = new Lang.Class({
let clone = this._windows[idx];
clone.addAttachedDialog(metaWin);
}
- },
+ }
_windowAdded(metaWorkspace, metaWin) {
this._doAddWindow(metaWin);
- },
+ }
_windowRemoved(metaWorkspace, metaWin) {
let index = this._allWindows.indexOf(metaWin);
@@ -443,31 +439,31 @@ var WorkspaceThumbnail = new Lang.Class({
}
this._doRemoveWindow(metaWin);
- },
+ }
_windowEnteredMonitor(metaDisplay, monitorIndex, metaWin) {
if (monitorIndex == this.monitorIndex) {
this._doAddWindow(metaWin);
}
- },
+ }
_windowLeftMonitor(metaDisplay, monitorIndex, metaWin) {
if (monitorIndex == this.monitorIndex) {
this._doRemoveWindow(metaWin);
}
- },
+ }
_updateMinimized(metaWin) {
if (metaWin.minimized)
this._doRemoveWindow(metaWin);
else
this._doAddWindow(metaWin);
- },
+ }
destroy() {
if (this.actor)
this.actor.destroy();
- },
+ }
workspaceRemoved() {
if (this._removed)
@@ -482,7 +478,7 @@ var WorkspaceThumbnail = new Lang.Class({
for (let i = 0; i < this._allWindows.length; i++)
this._allWindows[i].disconnect(this._minimizedChangedIds[i]);
- },
+ }
_onDestroy(actor) {
this.workspaceRemoved();
@@ -494,20 +490,20 @@ var WorkspaceThumbnail = new Lang.Class({
this._windows = [];
this.actor = null;
- },
+ }
// Tests if @actor belongs to this workspace and monitor
_isMyWindow(actor) {
let win = actor.meta_window;
return win.located_on_workspace(this.metaWorkspace) &&
(win.get_monitor() == this.monitorIndex);
- },
+ }
// Tests if @win should be shown in the Overview
_isOverviewWindow(win) {
return !win.get_meta_window().skip_taskbar &&
win.get_meta_window().showing_on_its_workspace();
- },
+ }
// Create a clone of a (non-desktop) window and add it to the window list
_addWindowClone(win) {
@@ -538,7 +534,7 @@ var WorkspaceThumbnail = new Lang.Class({
this._windows.push(clone);
return clone;
- },
+ }
_removeWindowClone(metaWin) {
// find the position of the window in our list
@@ -548,7 +544,7 @@ var WorkspaceThumbnail = new Lang.Class({
return null;
return this._windows.splice(index, 1).pop();
- },
+ }
activate(time) {
if (this.state > ThumbnailState.NORMAL)
@@ -561,7 +557,7 @@ var WorkspaceThumbnail = new Lang.Class({
Main.overview.hide();
else
this.metaWorkspace.activate(time);
- },
+ }
// Draggable target interface used only by ThumbnailsBox
handleDragOverInternal(source, time) {
@@ -579,7 +575,7 @@ var WorkspaceThumbnail = new Lang.Class({
return DND.DragMotionResult.COPY_DROP;
return DND.DragMotionResult.CONTINUE;
- },
+ }
acceptDropInternal(source, time) {
if (this.state > ThumbnailState.NORMAL)
@@ -608,8 +604,7 @@ var WorkspaceThumbnail = new Lang.Class({
return false;
}
-});
-
+};
Signals.addSignalMethods(WorkspaceThumbnail.prototype);
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 47993e393..228c3f81b 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -26,10 +26,8 @@ var AnimationType = {
const MUTTER_SCHEMA = 'org.gnome.mutter';
-var WorkspacesViewBase = new Lang.Class({
- Name: 'WorkspacesViewBase',
-
- _init(monitorIndex) {
+var WorkspacesViewBase = class {
+ constructor(monitorIndex) {
this.actor = new St.Widget({ style_class: 'workspaces-view',
reactive: true });
this.actor.connect('destroy', this._onDestroy.bind(this));
@@ -46,7 +44,7 @@ var WorkspacesViewBase = new Lang.Class({
this._inDrag = false;
this._windowDragBeginId = Main.overview.connect('window-drag-begin', this._dragBegin.bind(this));
this._windowDragEndId = Main.overview.connect('window-drag-end', this._dragEnd.bind(this));
- },
+ }
_onDestroy() {
this._dragEnd();
@@ -59,41 +57,38 @@ var WorkspacesViewBase = new Lang.Class({
Main.overview.disconnect(this._windowDragEndId);
this._windowDragEndId = 0;
}
- },
+ }
_dragBegin(overview, window) {
this._inDrag = true;
this._setReservedSlot(window);
- },
+ }
_dragEnd() {
this._inDrag = false;
this._setReservedSlot(null);
- },
+ }
destroy() {
this.actor.destroy();
- },
+ }
setFullGeometry(geom) {
this._fullGeometry = geom;
this._syncFullGeometry();
- },
+ }
setActualGeometry(geom) {
this._actualGeometry = geom;
this._syncActualGeometry();
- },
-});
+ }
+};
-var WorkspacesView = new Lang.Class({
- Name: 'WorkspacesView',
- Extends: WorkspacesViewBase,
-
- _init(monitorIndex) {
+var WorkspacesView = class extends WorkspacesViewBase {
+ constructor(monitorIndex) {
let workspaceManager = global.workspace_manager;
- this.parent(monitorIndex);
+ super(monitorIndex);
this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling
@@ -124,28 +119,28 @@ var WorkspacesView = new Lang.Class({
this._switchWorkspaceNotifyId =
global.window_manager.connect('switch-workspace',
this._activeWorkspaceChanged.bind(this));
- },
+ }
_setReservedSlot(window) {
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setReservedSlot(window);
- },
+ }
_syncFullGeometry() {
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setFullGeometry(this._fullGeometry);
- },
+ }
_syncActualGeometry() {
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setActualGeometry(this._actualGeometry);
- },
+ }
getActiveWorkspace() {
let workspaceManager = global.workspace_manager;
let active = workspaceManager.get_active_workspace_index();
return this._workspaces[active];
- },
+ }
animateToOverview(animationType) {
for (let w = 0; w < this._workspaces.length; w++) {
@@ -155,7 +150,7 @@ var WorkspacesView = new Lang.Class({
this._workspaces[w].fadeToOverview();
}
this._updateWorkspaceActors(false);
- },
+ }
animateFromOverview(animationType) {
this.actor.remove_clip();
@@ -166,12 +161,12 @@ var WorkspacesView = new Lang.Class({
else
this._workspaces[w].fadeFromOverview();
}
- },
+ }
syncStacking(stackIndices) {
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].syncStacking(stackIndices);
- },
+ }
_scrollToActive() {
let workspaceManager = global.workspace_manager;
@@ -179,7 +174,7 @@ var WorkspacesView = new Lang.Class({
this._updateWorkspaceActors(true);
this._updateScrollAdjustment(active);
- },
+ }
// Update workspace actors parameters
// @showAnimation: iff %true, transition between states
@@ -218,7 +213,7 @@ var WorkspacesView = new Lang.Class({
this._updateVisibility();
}
}
- },
+ }
_updateVisibility() {
let workspaceManager = global.workspace_manager;
@@ -235,7 +230,7 @@ var WorkspacesView = new Lang.Class({
workspace.actor.visible = (w == active);
}
}
- },
+ }
_updateScrollAdjustment(index) {
if (this._scrolling)
@@ -251,7 +246,7 @@ var WorkspacesView = new Lang.Class({
this._animatingScroll = false;
}
});
- },
+ }
_updateWorkspaces() {
let workspaceManager = global.workspace_manager;
@@ -284,28 +279,28 @@ var WorkspacesView = new Lang.Class({
}
if (this._actualGeometry)
this._syncActualGeometry();
- },
+ }
_activeWorkspaceChanged(wm, from, to, direction) {
if (this._scrolling)
return;
this._scrollToActive();
- },
+ }
_onDestroy() {
- this.parent();
+ super._onDestroy();
this.scrollAdjustment.run_dispose();
Main.overview.disconnect(this._overviewShownId);
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
let workspaceManager = global.workspace_manager;
workspaceManager.disconnect(this._updateWorkspacesId);
- },
+ }
startSwipeScroll() {
this._scrolling = true;
- },
+ }
endSwipeScroll() {
this._scrolling = false;
@@ -313,7 +308,7 @@ var WorkspacesView = new Lang.Class({
// Make sure title captions etc are shown as necessary
this._scrollToActive();
this._updateVisibility();
- },
+ }
// sync the workspaces' positions to the value of the scroll adjustment
// and change the active workspace if appropriate
@@ -356,59 +351,57 @@ var WorkspacesView = new Lang.Class({
this._workspaces[i].actor.visible = Math.abs(i - adj.value) <= 1;
this._workspaces[i].actor.y += dy;
}
- },
-});
+ }
+};
Signals.addSignalMethods(WorkspacesView.prototype);
-var ExtraWorkspaceView = new Lang.Class({
- Name: 'ExtraWorkspaceView',
- Extends: WorkspacesViewBase,
-
- _init(monitorIndex) {
- this.parent(monitorIndex);
+var ExtraWorkspaceView = class extends WorkspacesViewBase {
+ constructor(monitorIndex) {
+ super(monitorIndex);
this._workspace = new Workspace.Workspace(null, monitorIndex);
this.actor.add_actor(this._workspace.actor);
- },
+ }
_setReservedSlot(window) {
this._workspace.setReservedSlot(window);
- },
+ }
_syncFullGeometry() {
this._workspace.setFullGeometry(this._fullGeometry);
- },
+ }
_syncActualGeometry() {
this._workspace.setActualGeometry(this._actualGeometry);
- },
+ }
getActiveWorkspace() {
return this._workspace;
- },
+ }
animateToOverview(animationType) {
if (animationType == AnimationType.ZOOM)
this._workspace.zoomToOverview();
else
this._workspace.fadeToOverview();
- },
+ }
animateFromOverview(animationType) {
if (animationType == AnimationType.ZOOM)
this._workspace.zoomFromOverview();
else
this._workspace.fadeFromOverview();
- },
+ }
syncStacking(stackIndices) {
this._workspace.syncStacking(stackIndices);
- },
+ }
startSwipeScroll() {
- },
+ }
+
endSwipeScroll() {
- },
-});
+ }
+};
var DelegateFocusNavigator = new Lang.Class({
Name: 'DelegateFocusNavigator',
@@ -419,10 +412,8 @@ var DelegateFocusNavigator = new Lang.Class({
},
});
-var WorkspacesDisplay = new Lang.Class({
- Name: 'WorkspacesDisplay',
-
- _init() {
+var WorkspacesDisplay = class {
+ constructor() {
this.actor = new DelegateFocusNavigator({ clip_to_allocation: true });
this.actor._delegate = this;
this.actor.connect('notify::allocation', this._updateWorkspacesActualGeometry.bind(this));
@@ -486,18 +477,18 @@ var WorkspacesDisplay = new Lang.Class({
this._keyPressEventId = 0;
this._fullGeometry = null;
- },
+ }
_onPan(action) {
let [dist, dx, dy] = action.get_motion_delta(0);
let adjustment = this._scrollAdjustment;
adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
return false;
- },
+ }
navigateFocus(from, direction) {
return this._getPrimaryView().actor.navigate_focus(from, direction, false);
- },
+ }
show(fadeOnPrimary) {
this._updateWorkspacesViews();
@@ -518,7 +509,7 @@ var WorkspacesDisplay = new Lang.Class({
if (this._keyPressEventId == 0)
this._keyPressEventId = global.stage.connect('key-press-event', this._onKeyPressEvent.bind(this));
- },
+ }
animateFromOverview(fadeOnPrimary) {
for (let i = 0; i < this._workspacesViews.length; i++) {
@@ -529,7 +520,7 @@ var WorkspacesDisplay = new Lang.Class({
animationType = AnimationType.ZOOM;
this._workspacesViews[i].animateFromOverview(animationType);
}
- },
+ }
hide() {
if (this._restackedNotifyId > 0){
@@ -547,7 +538,7 @@ var WorkspacesDisplay = new Lang.Class({
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].destroy();
this._workspacesViews = [];
- },
+ }
_workspacesOnlyOnPrimaryChanged() {
this._workspacesOnlyOnPrimary = this._settings.get_boolean('workspaces-only-on-primary');
@@ -556,7 +547,7 @@ var WorkspacesDisplay = new Lang.Class({
return;
this._updateWorkspacesViews();
- },
+ }
_updateWorkspacesViews() {
for (let i = 0; i < this._workspacesViews.length; i++)
@@ -585,7 +576,7 @@ var WorkspacesDisplay = new Lang.Class({
this._updateWorkspacesFullGeometry();
this._updateWorkspacesActualGeometry();
- },
+ }
_scrollValueChanged() {
for (let i = 0; i < this._workspacesViews.length; i++) {
@@ -600,23 +591,23 @@ var WorkspacesDisplay = new Lang.Class({
// values map directly
adjustment.value = this._scrollAdjustment.value;
}
- },
+ }
_getMonitorIndexForEvent(event) {
let [x, y] = event.get_coords();
let rect = new Meta.Rectangle({ x: x, y: y, width: 1, height: 1 });
return global.display.get_monitor_index_for_rect(rect);
- },
+ }
_getPrimaryView() {
if (!this._workspacesViews.length)
return null;
return this._workspacesViews[this._primaryIndex];
- },
+ }
activeWorkspaceHasMaximizedWindows() {
return this._getPrimaryView().getActiveWorkspace().hasMaximizedWindows();
- },
+ }
_parentSet(actor, oldParent) {
if (oldParent && this._notifyOpacityId)
@@ -640,7 +631,7 @@ var WorkspacesDisplay = new Lang.Class({
primaryView.actor.visible = opacity != 0;
});
});
- },
+ }
// This geometry should always be the fullest geometry
// the workspaces switcher can ever be allocated, as if
@@ -648,7 +639,7 @@ var WorkspacesDisplay = new Lang.Class({
setWorkspacesFullGeometry(geom) {
this._fullGeometry = geom;
this._updateWorkspacesFullGeometry();
- },
+ }
_updateWorkspacesFullGeometry() {
if (!this._workspacesViews.length)
@@ -659,7 +650,7 @@ var WorkspacesDisplay = new Lang.Class({
let geometry = (i == this._primaryIndex) ? this._fullGeometry : monitors[i];
this._workspacesViews[i].setFullGeometry(geometry);
}
- },
+ }
_updateWorkspacesActualGeometry() {
if (!this._workspacesViews.length)
@@ -676,12 +667,12 @@ var WorkspacesDisplay = new Lang.Class({
let geometry = (i == this._primaryIndex) ? primaryGeometry : monitors[i];
this._workspacesViews[i].setActualGeometry(geometry);
}
- },
+ }
_onRestacked(overview, stackIndices) {
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].syncStacking(stackIndices);
- },
+ }
_onScrollEvent(actor, event) {
if (!this.actor.mapped)
@@ -706,7 +697,7 @@ var WorkspacesDisplay = new Lang.Class({
}
Main.wm.actionMoveWorkspace(ws);
return Clutter.EVENT_STOP;
- },
+ }
_onKeyPressEvent(actor, event) {
if (!this.actor.mapped)
@@ -727,5 +718,5 @@ var WorkspacesDisplay = new Lang.Class({
Main.wm.actionMoveWorkspace(ws);
return Clutter.EVENT_STOP;
}
-});
+};
Signals.addSignalMethods(WorkspacesDisplay.prototype);
diff --git a/js/ui/xdndHandler.js b/js/ui/xdndHandler.js
index 9fc284c33..af968f42b 100644
--- a/js/ui/xdndHandler.js
+++ b/js/ui/xdndHandler.js
@@ -1,17 +1,14 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
-const Lang = imports.lang;
const Main = imports.ui.main;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const DND = imports.ui.dnd;
-var XdndHandler = new Lang.Class({
- Name: 'XdndHandler',
-
- _init() {
+var XdndHandler = class {
+ constructor() {
// Used to display a clone of the cursor window when the
// window group is hidden (like it happens in the overview)
this._cursorWindowClone = null;
@@ -30,7 +27,7 @@ var XdndHandler = new Lang.Class({
dnd.connect('dnd-leave', this._onLeave.bind(this));
this._windowGroupVisibilityHandlerId = 0;
- },
+ }
// Called when the user cancels the drag (i.e release the button)
_onLeave() {
@@ -44,7 +41,7 @@ var XdndHandler = new Lang.Class({
}
this.emit('drag-end');
- },
+ }
_onEnter() {
this._windowGroupVisibilityHandlerId =
@@ -52,7 +49,7 @@ var XdndHandler = new Lang.Class({
this._onWindowGroupVisibilityChanged.bind(this));
this.emit('drag-begin', global.get_current_time());
- },
+ }
_onWindowGroupVisibilityChanged() {
if (!global.window_group.visible) {
@@ -80,7 +77,7 @@ var XdndHandler = new Lang.Class({
this._cursorWindowClone = null;
}
}
- },
+ }
_onPositionChanged(obj, x, y) {
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
@@ -120,6 +117,5 @@ var XdndHandler = new Lang.Class({
pickedActor = pickedActor.get_parent();
}
}
-});
-
+};
Signals.addSignalMethods(XdndHandler.prototype);