Skip to content

Instantly share code, notes, and snippets.

@rmacqueen
Last active March 19, 2017 16:25
Show Gist options
  • Save rmacqueen/2799077115ef59cbd7e187c2fccd8c73 to your computer and use it in GitHub Desktop.
Save rmacqueen/2799077115ef59cbd7e187c2fccd8c73 to your computer and use it in GitHub Desktop.
Emeus with GtkGrid and nested layout
const Gtk = imports.gi.Gtk;
const Emeus = imports.gi.Emeus;
Gtk.init(null)
let layout1 = new Emeus.ConstraintLayout();
let layout2 = new Emeus.ConstraintLayout();
let grid = new Gtk.Grid();
layout1.add(grid);
grid.add(layout2)
let label2 = new Gtk.Label({
label: "Label 2"
})
let label3 = new Gtk.Label({
label: "Label 3"
})
layout2.add(label3);
layout2.add(label2);
function _add_constraint (props, layout) {
let c = new Emeus.Constraint(props);
layout.add_constraint(c);
}
let constraints1 = [
{
target_object: grid,
target_attribute: Emeus.ConstraintAttribute.RIGHT,
source_attribute: Emeus.ConstraintAttribute.RIGHT,
},
{
target_object: grid,
target_attribute: Emeus.ConstraintAttribute.BOTTOM,
source_attribute: Emeus.ConstraintAttribute.BOTTOM,
},
{
target_object: grid,
target_attribute: Emeus.ConstraintAttribute.HEIGHT,
source_attribute: Emeus.ConstraintAttribute.HEIGHT,
multiplier: 0.5,
},
{
target_object: grid,
target_attribute: Emeus.ConstraintAttribute.WIDTH,
source_attribute: Emeus.ConstraintAttribute.WIDTH,
},
]
let constraints2 = [
{
target_object: label2,
target_attribute: Emeus.ConstraintAttribute.LEFT,
source_attribute: Emeus.ConstraintAttribute.LEFT,
},
{
target_object: label2,
target_attribute: Emeus.ConstraintAttribute.BOTTOM,
source_attribute: Emeus.ConstraintAttribute.BOTTOM,
},
{
target_object: label2,
target_attribute: Emeus.ConstraintAttribute.WIDTH,
source_attribute: Emeus.ConstraintAttribute.WIDTH,
},
{
target_object: label3,
target_attribute: Emeus.ConstraintAttribute.LEFT,
source_attribute: Emeus.ConstraintAttribute.LEFT,
},
{
target_object: label3,
target_attribute: Emeus.ConstraintAttribute.BOTTOM,
source_attribute: Emeus.ConstraintAttribute.TOP,
source_object: label2
},
{
target_object: label3,
target_attribute: Emeus.ConstraintAttribute.WIDTH,
source_attribute: Emeus.ConstraintAttribute.WIDTH,
},
]
constraints1.forEach((props) => _add_constraint(props, layout1))
constraints2.forEach((props) => _add_constraint(props, layout2))
let mwindow = new Gtk.Window({
default_width: 800,
default_height: 600
});
mwindow.add(layout1);
mwindow.show_all();
mwindow.connect('destroy', function() { Gtk.main_quit() });
Gtk.main();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment