summaryrefslogtreecommitdiffstats
path: root/custom/qa-test-day-welcome.js
diff options
context:
space:
mode:
Diffstat (limited to 'custom/qa-test-day-welcome.js')
-rw-r--r--custom/qa-test-day-welcome.js123
1 files changed, 123 insertions, 0 deletions
diff --git a/custom/qa-test-day-welcome.js b/custom/qa-test-day-welcome.js
new file mode 100644
index 0000000..2f73781
--- /dev/null
+++ b/custom/qa-test-day-welcome.js
@@ -0,0 +1,123 @@
+/* Fedora Test Day welcome screen.
+ *
+ * Based on Fedora LiveCD welcome screen from Cosimo Cecchi:
+ * http://git.fedorahosted.org/cgit/anaconda.git/tree/data/liveinst/gnome?h=f18-branch
+ */
+
+const Gdk = imports.gi.Gdk;
+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 Pango = imports.gi.Pango;
+
+const Gettext = imports.gettext;
+const _ = imports.gettext.gettext;
+
+const LOCALE_DIR = '/usr/share/locale';
+
+let anacondaApp = null;
+
+function makeLabel(label, button) {
+ let widget = new Gtk.Label();
+
+ if (button)
+ widget.set_markup(
+ '<b><span size="x-large">' + label + '</span></b>');
+ else {
+ widget.set_line_wrap(true);
+ widget.set_justify(Gtk.Justification.CENTER);
+ widget.set_margin_top(32);
+ widget.set_margin_bottom(32);
+
+ widget.set_markup(
+ '<span size="large">' + label + '</span>');
+ }
+
+ return widget;
+}
+
+const WelcomeWindow = new Lang.Class({
+ Name: 'WelcomeWindow',
+
+ _init: function(application) {
+ this.window = new Gtk.ApplicationWindow({
+ application: application,
+ type: Gtk.WindowType.TOPLEVEL,
+ default_width: 600,
+ default_height: 550,
+ title: _("Welcome to Fedora Test Day"),
+ window_position: Gtk.WindowPosition.CENTER });
+ this.window.connect('key-press-event', Lang.bind(this,
+ function(w, event) {
+ let key = event.get_keyval()[1];
+
+ if (key == Gdk.KEY_Escape)
+ this.window.destroy();
+
+ return false;
+ }));
+
+ let mainGrid = new Gtk.Grid({
+ orientation: Gtk.Orientation.VERTICAL,
+ row_spacing: 16,
+ vexpand: true,
+ hexpand: true,
+ halign: Gtk.Align.CENTER,
+ valign: Gtk.Align.CENTER });
+ this.window.add(mainGrid);
+
+ let buttonBox = new Gtk.Grid({
+ orientation: Gtk.Orientation.HORIZONTAL,
+ column_spacing: 16,
+ halign: Gtk.Align.CENTER });
+ mainGrid.add(buttonBox);
+
+ let tryContent = new Gtk.Box({
+ orientation: Gtk.Orientation.VERTICAL, spacing: 16 });
+ let firefoxpix = GdkPixbuf.Pixbuf.new_from_file_at_size(
+ '/usr/share/icons/Fedora/256x256/places/start-here.png',256, 256);
+ tryContent.add(new Gtk.Image({ pixbuf: firefoxpix }));
+ tryContent.add(makeLabel(_("Participate in the Test Day"), true));
+ let tryButton = new Gtk.Button({ child: tryContent });
+ buttonBox.add(tryButton);
+
+ this._label = makeLabel(_(
+ "Click the button to open a browser with the current Test Day " +
+ "wiki page containing instructions and an IRC chat to discuss " +
+ "any issues and questions you might have."
+ ), false);
+ mainGrid.add(this._label);
+
+ tryButton.connect('clicked', Lang.bind(this,
+ function() {
+ GLib.spawn_command_line_async('firefox');
+ this.window.destroy();
+ }));
+ }
+});
+
+Gettext.bindtextdomain('anaconda', LOCALE_DIR);
+Gettext.textdomain('anaconda');
+
+GLib.set_prgname('test-day-welcome');
+Gtk.init(null, null);
+Gtk.Settings.get_default().gtk_application_prefer_dark_theme = true;
+
+let application = new Gtk.Application({
+ application_id: 'org.fedoraproject.welcome-screen',
+ flags: Gio.ApplicationFlags.FLAGS_NONE });
+let welcomeWindow = null;
+
+application.connect('startup', Lang.bind(this,
+ function() {
+ welcomeWindow = new WelcomeWindow(application);
+ }));
+application.connect('activate', Lang.bind(this,
+ function() {
+ welcomeWindow.window.show_all();
+ }));
+
+application.run(ARGV);
+