1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported WelcomeDialog */
const { Clutter, GObject, Shell, St } = imports.gi;
const Config = imports.misc.config;
const Dialog = imports.ui.dialog;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
var DialogResponse = {
NO_THANKS: 0,
TAKE_TOUR: 1,
};
var WelcomeDialog = GObject.registerClass(
class WelcomeDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'welcome-dialog' });
const appSystem = Shell.AppSystem.get_default();
this._tourAppInfo = appSystem.lookup_app('org.gnome.Tour.desktop');
this._buildLayout();
}
open() {
if (!this._tourAppInfo)
return false;
return super.open();
}
_buildLayout() {
const [majorVersion] = Config.PACKAGE_VERSION.split('.');
const title = _('Welcome to GNOME %s').format(majorVersion);
const description = _('If you want to learn your way around, check out the tour.');
const content = new Dialog.MessageDialogContent({ title, description });
const icon = new St.Widget({ style_class: 'welcome-dialog-image' });
content.insert_child_at_index(icon, 0);
this.contentLayout.add_child(content);
this.addButton({
label: _('No Thanks'),
action: () => this._sendResponse(DialogResponse.NO_THANKS),
key: Clutter.KEY_Escape,
});
this.addButton({
label: _('Take Tour'),
action: () => this._sendResponse(DialogResponse.TAKE_TOUR),
});
}
_sendResponse(response) {
if (response === DialogResponse.TAKE_TOUR) {
this._tourAppInfo.launch(0, -1, Shell.AppLaunchGpu.APP_PREF);
Main.overview.hide();
}
this.close();
}
});
|