Skip to content

Commit

Permalink
Merge pull request #46 from azawawi/master
Browse files Browse the repository at this point in the history
Expose more Box API to fine tune layout
  • Loading branch information
azawawi committed Jun 6, 2016
2 parents 4f1bfdd + e17ffa9 commit ea78db1
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 8 deletions.
19 changes: 15 additions & 4 deletions examples/09-toolbar.pl6
Expand Up @@ -4,14 +4,16 @@ use v6;

use lib 'lib';
use GTK::Simple::App;
use GTK::Simple::Toolbar;
use GTK::Simple::Button;
use GTK::Simple::MenuToolButton;
use GTK::Simple::Toolbar;
use GTK::Simple::VBox;

my $app = GTK::Simple::App.new(title => "Toolbar Demo");

my $toolbar = GTK::Simple::Toolbar.new;
$toolbar.add-menu-item(
my $new-toolbar-button = GTK::Simple::MenuToolButton.new(:icon(GTK_STOCK_NEW))
my $new-toolbar-button = GTK::Simple::MenuToolButton.new(:icon(GTK_STOCK_NEW))
);
$toolbar.add-menu-item(
my $open-toolbar-button = GTK::Simple::MenuToolButton.new(:icon(GTK_STOCK_OPEN))
Expand All @@ -24,8 +26,17 @@ $toolbar.add-menu-item(
my $exit-toolbar-button = GTK::Simple::MenuToolButton.new(:icon(GTK_STOCK_QUIT))
);

my $vbox = $toolbar.pack;
$app.set-content( $vbox );
my $toolbar-vbox = $toolbar.pack;
my $bottom-button = GTK::Simple::Button.new(:label("Bottom space")),

$app.set-content(
GTK::Simple::VBox.new(
[
{ :widget($toolbar-vbox), :expand(False) },
$bottom-button
]
)
);

$new-toolbar-button.clicked.tap: {
"New toolbar button clicked".say;
Expand Down
26 changes: 22 additions & 4 deletions lib/GTK/Simple/Box.pm6
Expand Up @@ -4,21 +4,39 @@ use v6;
use GTK::Simple::Raw :box, :DEFAULT;
use GTK::Simple::Common;
use GTK::Simple::Container;
use GTK::Simple::Widget;

unit role GTK::Simple::Box does GTK::Simple::Container;

multi method new(*@packees) {
my $box = self.bless();
$box.pack-start($_) for @packees;

for @packees {
if $_ ~~ Hash {
$box.pack-start(
$_<widget>,
$_<expand> // True,
$_<fill> // True,
$_<padding> // 0
);
} else {
$box.pack-start($_);
}
}

$box
}

method pack-start($widget) {
gtk_box_pack_start(self.WIDGET, $widget.WIDGET, 1, 1, 0);
multi method pack-start(GTK::Simple::Widget:D $widget, Bool $expand, Bool $fill, Int $padding) {
gtk_box_pack_start(self.WIDGET, $widget.WIDGET, $expand, $fill, $padding);
gtk_widget_show($widget.WIDGET);
}

method pack_start($widget) {
multi method pack-start($widget) {
self.pack-start($widget, True, True, 0);
}

multi method pack_start($widget) {
DEPRECATED('pack-start',Any,'0.3.2');
self.pack-start($widget);
}
Expand Down

0 comments on commit ea78db1

Please sign in to comment.