fd50b9a45e
This is *much* nicer than repetitive "imports.gi" lines ... https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/399
134 lines
6.7 KiB
JavaScript
134 lines
6.7 KiB
JavaScript
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
|
|
|
const UI = imports.testcommon.ui;
|
|
|
|
const { Clutter, St } = imports.gi;
|
|
|
|
function test() {
|
|
let stage = new Clutter.Stage({ width: 640, height: 480 });
|
|
UI.init(stage);
|
|
|
|
let vbox = new St.BoxLayout({ width: stage.width,
|
|
height: stage.height,
|
|
style: 'background: #ffee88;' });
|
|
stage.add_actor(vbox);
|
|
|
|
let scroll = new St.ScrollView();
|
|
vbox.add(scroll, { expand: true });
|
|
|
|
let box = new St.BoxLayout({ vertical: true,
|
|
style: 'padding: 10px;'
|
|
+ 'spacing: 20px;' });
|
|
scroll.add_actor(box);
|
|
|
|
box.add(new St.Label({ text: "Hello World",
|
|
style: 'border: 1px solid black; '
|
|
+ 'padding: 5px;' }));
|
|
|
|
box.add(new St.Label({ text: "Hello Round World",
|
|
style: 'border: 3px solid green; '
|
|
+ 'border-radius: 8px; '
|
|
+ 'padding: 5px;' }));
|
|
|
|
box.add(new St.Label({ text: "Hello Background",
|
|
style: 'border: 3px solid green; '
|
|
+ 'border-radius: 8px; '
|
|
+ 'background: white; '
|
|
+ 'padding: 5px;' }));
|
|
|
|
box.add(new St.Label({ text: "Hello Translucent Black Border",
|
|
style: 'border: 3px solid rgba(0, 0, 0, 0.4); '
|
|
+ 'background: white; ' }));
|
|
|
|
box.add(new St.Label({ text: "Hello Translucent Background",
|
|
style: 'background: rgba(255, 255, 255, 0.3);' }));
|
|
|
|
box.add(new St.Label({ text: "Border, Padding, Content: 20px" }));
|
|
|
|
let b1 = new St.BoxLayout({ vertical: true,
|
|
style: 'border: 20px solid black; '
|
|
+ 'background: white; '
|
|
+ 'padding: 20px;' });
|
|
box.add(b1);
|
|
|
|
b1.add(new St.BoxLayout({ width: 20, height: 20,
|
|
style: 'background: black' }));
|
|
|
|
box.add(new St.Label({ text: "Translucent big blue border, with rounding",
|
|
style: 'border: 20px solid rgba(0, 0, 255, 0.2); '
|
|
+ 'border-radius: 10px; '
|
|
+ 'background: white; '
|
|
+ 'padding: 10px;' }));
|
|
|
|
box.add(new St.Label({ text: "Transparent border",
|
|
style: 'border: 20px solid transparent; '
|
|
+ 'background: white; '
|
|
+ 'padding: 10px;' }));
|
|
|
|
box.add(new St.Label({ text: "Border Image",
|
|
style_class: "border-image",
|
|
style: "padding: 10px;" }));
|
|
|
|
box.add(new St.Label({ text: "Border Image with Gradient",
|
|
style_class: 'border-image-with-background-gradient',
|
|
style: "padding: 10px;"
|
|
+ 'background-gradient-direction: vertical;' }));
|
|
|
|
box.add(new St.Label({ text: "Rounded, framed, shadowed gradients" }));
|
|
|
|
let framedGradients = new St.BoxLayout({ vertical: false,
|
|
style: 'padding: 10px; spacing: 12px;' });
|
|
box.add(framedGradients);
|
|
|
|
function addGradientCase(direction, borderWidth, borderRadius, extra) {
|
|
let gradientBox = new St.BoxLayout({ style_class: 'background-gradient',
|
|
style: 'border: ' + borderWidth + 'px solid #8b0000;'
|
|
+ 'border-radius: ' + borderRadius + 'px;'
|
|
+ 'background-gradient-direction: ' + direction + ';'
|
|
+ 'width: 32px;'
|
|
+ 'height: 32px;'
|
|
+ extra });
|
|
framedGradients.add(gradientBox, { x_fill: false, y_fill: false } );
|
|
}
|
|
|
|
addGradientCase ('horizontal', 0, 5, 'box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.5);');
|
|
addGradientCase ('horizontal', 2, 5, 'box-shadow: 0px 2px 0px 0px rgba(0,255,0,0.5);');
|
|
addGradientCase ('horizontal', 5, 2, 'box-shadow: 2px 0px 0px 0px rgba(0,0,255,0.5);');
|
|
addGradientCase ('horizontal', 5, 20, 'box-shadow: 0px 0px 4px 0px rgba(255,0,0,0.5);');
|
|
addGradientCase ('vertical', 0, 5, 'box-shadow: 0px 0px 0px 4px rgba(0,0,0,0.5);');
|
|
addGradientCase ('vertical', 2, 5, 'box-shadow: 0px 0px 4px 4px rgba(0,0,0,0.5);');
|
|
addGradientCase ('vertical', 5, 2, 'box-shadow: -2px -2px 6px 0px rgba(0,0,0,0.5);');
|
|
addGradientCase ('vertical', 5, 20, 'box-shadow: -2px -2px 0px 6px rgba(0,0,0,0.5);');
|
|
|
|
box.add(new St.Label({ text: "Rounded, framed, shadowed images" }));
|
|
|
|
let framedImages = new St.BoxLayout({ vertical: false,
|
|
style: 'padding: 10px; spacing: 6px;' });
|
|
box.add(framedImages);
|
|
|
|
function addBackgroundImageCase(borderWidth, borderRadius, width, height, extra) {
|
|
let imageBox = new St.BoxLayout({ style_class: 'background-image',
|
|
style: 'border: ' + borderWidth + 'px solid #8b8b8b;'
|
|
+ 'border-radius: ' + borderRadius + 'px;'
|
|
+ 'width: ' + width + 'px;'
|
|
+ 'height: ' + height + 'px;'
|
|
+ extra });
|
|
framedImages.add(imageBox, { x_fill: false, y_fill: false } );
|
|
}
|
|
|
|
addBackgroundImageCase (0, 0, 32, 32, 'background-position: 2px 5px');
|
|
addBackgroundImageCase (0, 0, 16, 16, '-st-background-image-shadow: 1px 1px 4px 0px rgba(0,0,0,0.5); background-color: rgba(0,0,0,0)');
|
|
addBackgroundImageCase (0, 5, 32, 32, '-st-background-image-shadow: 0px 0px 0px 0px rgba(0,0,0,0.5);');
|
|
addBackgroundImageCase (2, 5, 32, 32, '-st-background-image-shadow: 0px 2px 0px 0px rgba(0,255,0,0.5);');
|
|
addBackgroundImageCase (5, 2, 32, 32, '-st-background-image-shadow: 2px 0px 0px 0px rgba(0,0,255,0.5);');
|
|
addBackgroundImageCase (5, 20, 32, 32, '-st-background-image-shadow: 0px 0px 4px 0px rgba(255,0,0,0.5);');
|
|
addBackgroundImageCase (0, 5, 48, 48, '-st-background-image-shadow: 0px 0px 0px 4px rgba(0,0,0,0.5);');
|
|
addBackgroundImageCase (5, 5, 48, 48, '-st-background-image-shadow: 0px 0px 4px 4px rgba(0,0,0,0.5);');
|
|
addBackgroundImageCase (0, 5, 64, 64, '-st-background-image-shadow: -2px -2px 6px 0px rgba(0,0,0,0.5);');
|
|
addBackgroundImageCase (5, 5, 64, 64, '-st-background-image-shadow: -2px -2px 0px 6px rgba(0,0,0,0.5);');
|
|
addBackgroundImageCase (0, 5, 32, 32, 'background-position: 2px 5px');
|
|
|
|
UI.main(stage);
|
|
}
|
|
test();
|