Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 89 additions & 82 deletions META6.json
Original file line number Diff line number Diff line change
@@ -1,84 +1,91 @@
{
"name": "GTK::Simple",
"description": "Simple GTK 3 binding using NativeCall",
"version": "0.3.0",
"perl": "6.d",
"authors": [
"Jonathan Worthington",
"Moritz Lenz",
"Timo Paulssen",
"Ahmad M. Zawawi",
"Jonathan Stowe",
"ab5tract",
"momozor",
"Zoffix Znet",
"Nick Logan",
"finanalyst aka Richard Hainsworth"
],
"auth": "zef:finanalyst",
"depends": [],
"test-depends": [
"Test"
],
"provides": {
"GTK::Simple": "lib/GTK/Simple.rakumod",
"GTK::Simple::ActionBar": "lib/GTK/Simple/ActionBar.rakumod",
"GTK::Simple::App": "lib/GTK/Simple/App.rakumod",
"GTK::Simple::Box": "lib/GTK/Simple/Box.rakumod",
"GTK::Simple::Button": "lib/GTK/Simple/Button.rakumod",
"GTK::Simple::Calendar": "lib/GTK/Simple/Calendar.rakumod",
"GTK::Simple::CheckButton": "lib/GTK/Simple/CheckButton.rakumod",
"GTK::Simple::CheckMenuItem": "lib/GTK/Simple/CheckMenuItem.rakumod",
"GTK::Simple::ComboBoxText": "lib/GTK/Simple/ComboBoxText.rakumod",
"GTK::Simple::Common": "lib/GTK/Simple/Common.rakumod",
"GTK::Simple::ConnectionHandler": "lib/GTK/Simple/ConnectionHandler.rakumod",
"GTK::Simple::Container": "lib/GTK/Simple/Container.rakumod",
"GTK::Simple::DrawingArea": "lib/GTK/Simple/DrawingArea.rakumod",
"GTK::Simple::Entry": "lib/GTK/Simple/Entry.rakumod",
"GTK::Simple::FileChooserButton": "lib/GTK/Simple/FileChooserButton.rakumod",
"GTK::Simple::Frame": "lib/GTK/Simple/Frame.rakumod",
"GTK::Simple::GDK": "lib/GTK/Simple/GDK.rakumod",
"GTK::Simple::Grid": "lib/GTK/Simple/Grid.rakumod",
"GTK::Simple::HBox": "lib/GTK/Simple/HBox.rakumod",
"GTK::Simple::Label": "lib/GTK/Simple/Label.rakumod",
"GTK::Simple::LevelBar": "lib/GTK/Simple/LevelBar.rakumod",
"GTK::Simple::LinkButton": "lib/GTK/Simple/LinkButton.rakumod",
"GTK::Simple::ListBox": "lib/GTK/Simple/ListBox.rakumod",
"GTK::Simple::MarkUpLabel": "lib/GTK/Simple/MarkUpLabel.rakumod",
"GTK::Simple::Menu": "lib/GTK/Simple/Menu.rakumod",
"GTK::Simple::MenuBar": "lib/GTK/Simple/MenuBar.rakumod",
"GTK::Simple::MenuItem": "lib/GTK/Simple/MenuItem.rakumod",
"GTK::Simple::MenuToolButton": "lib/GTK/Simple/MenuToolButton.rakumod",
"GTK::Simple::NativeLib": "lib/GTK/Simple/NativeLib.rakumod",
"GTK::Simple::PlacesSidebar": "lib/GTK/Simple/PlacesSidebar.rakumod",
"GTK::Simple::ProgressBar": "lib/GTK/Simple/ProgressBar.rakumod",
"GTK::Simple::PropertyFacade": "lib/GTK/Simple/PropertyFacade.rakumod",
"GTK::Simple::RadioButton": "lib/GTK/Simple/RadioButton.rakumod",
"GTK::Simple::Raw": "lib/GTK/Simple/Raw.rakumod",
"GTK::Simple::Scale": "lib/GTK/Simple/Scale.rakumod",
"GTK::Simple::Scheduler": "lib/GTK/Simple/Scheduler.rakumod",
"GTK::Simple::ScrolledWindow": "lib/GTK/Simple/ScrolledWindow.rakumod",
"GTK::Simple::Separator": "lib/GTK/Simple/Separator.rakumod",
"GTK::Simple::Spinner": "lib/GTK/Simple/Spinner.rakumod",
"GTK::Simple::StatusBar": "lib/GTK/Simple/StatusBar.rakumod",
"GTK::Simple::Switch": "lib/GTK/Simple/Switch.rakumod",
"GTK::Simple::TextView": "lib/GTK/Simple/TextView.rakumod",
"GTK::Simple::ToggleButton": "lib/GTK/Simple/ToggleButton.rakumod",
"GTK::Simple::Toolbar": "lib/GTK/Simple/Toolbar.rakumod",
"GTK::Simple::VBox": "lib/GTK/Simple/VBox.rakumod",
"GTK::Simple::Widget": "lib/GTK/Simple/Widget.rakumod",
"GTK::Simple::Window": "lib/GTK/Simple/Window.rakumod"
},
"resources": [],
"support": {
"bugtracker": "https://github.com/finanalyst/GTK-Simple/issues",
"email": "rnhainsworth@gmail.com",
"source": "https://github.com/finanalyst/GTK-Simple.git"
},
"license": "Artistic-2.0",
"tags": [
"gui"
],
"source-url": "git://github.com/finanalyst/GTK-Simple.git",
"repo-type": "git"
"name": "GTK::Simple",
"description": "Simple GTK 3 binding using NativeCall",
"version": "0.3.2",
"authors": [
"Jonathan Worthington",
"Moritz Lenz",
"Timo Paulssen",
"Ahmad M. Zawawi",
"Jonathan Stowe",
"ab5tract",
"momozor",
"Zoffix Znet",
"Nick Logan",
"finanalyst aka Richard Hainsworth"
],
"auth": "zef:finanalyst",
"depends": {
"by-kernel.name": {
"macos": "MacOS::NativeLib:ver<0.0.5>:auth<zef:lizmat>",
"": ""
}
},
"test-depends": [
"Test"
],
"provides": {
"GTK::Simple": "lib/GTK/Simple.rakumod",
"GTK::Simple::ActionBar": "lib/GTK/Simple/ActionBar.rakumod",
"GTK::Simple::App": "lib/GTK/Simple/App.rakumod",
"GTK::Simple::Box": "lib/GTK/Simple/Box.rakumod",
"GTK::Simple::Button": "lib/GTK/Simple/Button.rakumod",
"GTK::Simple::Calendar": "lib/GTK/Simple/Calendar.rakumod",
"GTK::Simple::CheckButton": "lib/GTK/Simple/CheckButton.rakumod",
"GTK::Simple::CheckMenuItem": "lib/GTK/Simple/CheckMenuItem.rakumod",
"GTK::Simple::ComboBoxText": "lib/GTK/Simple/ComboBoxText.rakumod",
"GTK::Simple::Common": "lib/GTK/Simple/Common.rakumod",
"GTK::Simple::ConnectionHandler": "lib/GTK/Simple/ConnectionHandler.rakumod",
"GTK::Simple::Container": "lib/GTK/Simple/Container.rakumod",
"GTK::Simple::DrawingArea": "lib/GTK/Simple/DrawingArea.rakumod",
"GTK::Simple::Entry": "lib/GTK/Simple/Entry.rakumod",
"GTK::Simple::FileChooserButton": "lib/GTK/Simple/FileChooserButton.rakumod",
"GTK::Simple::Frame": "lib/GTK/Simple/Frame.rakumod",
"GTK::Simple::GDK": "lib/GTK/Simple/GDK.rakumod",
"GTK::Simple::Grid": "lib/GTK/Simple/Grid.rakumod",
"GTK::Simple::HBox": "lib/GTK/Simple/HBox.rakumod",
"GTK::Simple::Image": "lib/GTK/Simple/Image.rakumod",
"GTK::Simple::Label": "lib/GTK/Simple/Label.rakumod",
"GTK::Simple::LevelBar": "lib/GTK/Simple/LevelBar.rakumod",
"GTK::Simple::LinkButton": "lib/GTK/Simple/LinkButton.rakumod",
"GTK::Simple::ListBox": "lib/GTK/Simple/ListBox.rakumod",
"GTK::Simple::MarkUpLabel": "lib/GTK/Simple/MarkUpLabel.rakumod",
"GTK::Simple::Menu": "lib/GTK/Simple/Menu.rakumod",
"GTK::Simple::MenuBar": "lib/GTK/Simple/MenuBar.rakumod",
"GTK::Simple::MenuItem": "lib/GTK/Simple/MenuItem.rakumod",
"GTK::Simple::MenuToolButton": "lib/GTK/Simple/MenuToolButton.rakumod",
"GTK::Simple::NativeLib": "lib/GTK/Simple/NativeLib.rakumod",
"GTK::Simple::PlacesSidebar": "lib/GTK/Simple/PlacesSidebar.rakumod",
"GTK::Simple::ProgressBar": "lib/GTK/Simple/ProgressBar.rakumod",
"GTK::Simple::PropertyFacade": "lib/GTK/Simple/PropertyFacade.rakumod",
"GTK::Simple::RadioButton": "lib/GTK/Simple/RadioButton.rakumod",
"GTK::Simple::Raw": "lib/GTK/Simple/Raw.rakumod",
"GTK::Simple::Scale": "lib/GTK/Simple/Scale.rakumod",
"GTK::Simple::Scheduler": "lib/GTK/Simple/Scheduler.rakumod",
"GTK::Simple::ScrolledWindow": "lib/GTK/Simple/ScrolledWindow.rakumod",
"GTK::Simple::Separator": "lib/GTK/Simple/Separator.rakumod",
"GTK::Simple::Spinner": "lib/GTK/Simple/Spinner.rakumod",
"GTK::Simple::StatusBar": "lib/GTK/Simple/StatusBar.rakumod",
"GTK::Simple::Switch": "lib/GTK/Simple/Switch.rakumod",
"GTK::Simple::TextView": "lib/GTK/Simple/TextView.rakumod",
"GTK::Simple::ToggleButton": "lib/GTK/Simple/ToggleButton.rakumod",
"GTK::Simple::Toolbar": "lib/GTK/Simple/Toolbar.rakumod",
"GTK::Simple::VBox": "lib/GTK/Simple/VBox.rakumod",
"GTK::Simple::Widget": "lib/GTK/Simple/Widget.rakumod",
"GTK::Simple::Window": "lib/GTK/Simple/Window.rakumod",
"GTK::Simple::Distro::Resources": "lib/GTK/Simple/Distro/Resources.rakumod"
},
"resources": [
"camelia-logo.png"
],
"support": {
"email": "rnhainsworth@gmail.com",
"bugtracker": "https://github.com/finanalyst/GTK-Simple/issues",
"source": "https://github.com/finanalyst/GTK-Simple.git"
},
"license": "Artistic-2.0",
"tags": [
"gui"
],
"source-url": "git://github.com/finanalyst/GTK-Simple.git"
}
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Entry | Allows for text to be provided by the user
FileChooserButton | A button that opens a file chooser dialog
Frame | A bin with a decorative frame and optional label
Grid | A table-like container for widgets for window design
Image | An image widget
Label | Adds a line of text
LevelBar | A bar that can used as a level indicator
LinkButton | Create buttons bound to a URL
Expand Down
17 changes: 17 additions & 0 deletions examples/22-image.raku
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
use v6.e.PREVIEW;

use lib 'lib';
use GTK::Simple::App;
use GTK::Simple::Image;
use GTK::Simple::VBox;
use GTK::Simple::Distro::Resources;

my $app = GTK::Simple::App.new(:title("Image Demo"), :1024width, :768height);

my $logo-path = $*TMPDIR.add("camelia-logo.png");
$logo-path.spurt: gtk-simple-resources<camelia-logo.png>.slurp(:bin, :close);

$app.set-content:
GTK::Simple::Image.new: :path($logo-path.absolute);

$app.run;
1 change: 1 addition & 0 deletions lib/GTK/Simple.rakumod
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ need GTK::Simple::ScrolledWindow;
need GTK::Simple::Calendar;
need GTK::Simple::ListBox;
need GTK::Simple::CheckMenuItem;
need GTK::Simple::Image;

# Exports above class constructors, ex. level-bar => GTK::Simple::LevelBar.new
my module EXPORT::subs {
Expand Down
7 changes: 7 additions & 0 deletions lib/GTK/Simple/Distro/Resources.rakumod
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
use v6.d;

unit module GTK::Simple::Distro::Resources;

sub term:<gtk-simple-resources>() is export {
%?RESOURCES
}
15 changes: 15 additions & 0 deletions lib/GTK/Simple/Image.rakumod
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
use v6.d;

use GTK::Simple::Raw :image;
use GTK::Simple::GDK;
use GTK::Simple::Common;
use GTK::Simple::Widget;

unit class GTK::Simple::Image does GTK::Simple::Widget;

submethod BUILD(Str :$path, Int :$width = 800, Int :$height = 600) {
# die "Image file '$path' does not exist or could not be accessed" unless $path.IO.e;
# note "Attempting to load image file {$path.IO.absolute} (exists? {$path.IO.e}";
my $pixbuf = gdk_pixbuf_new_from_file_at_size($path.IO.absolute, $width, $height, my GError $err);
$!gtk_widget = gtk_image_new_from_pixbuf($pixbuf);
}
4 changes: 4 additions & 0 deletions lib/GTK/Simple/NativeLib.rakumod
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ sub gtk-lib is export {
try load-pangowin32-lib;
$lib = find-bundled('libgtk-3-0.dll');
} else {
try 'use MacOS::NativeLib <gtk-3>'.EVAL;
$lib = $*VM.platform-library-name('gtk-3'.IO).Str;
}
}
Expand All @@ -57,6 +58,7 @@ sub gdk-lib is export {
try load-pangocairo-lib;
$lib = find-bundled('libgdk-3-0.dll');
} else {
try 'use MacOS::NativeLib <gdk-3>'.EVAL;
$lib = $*VM.platform-library-name('gdk-3'.IO).Str;
}
}
Expand All @@ -70,6 +72,7 @@ sub glib-lib is export {
try load-intl-lib;
$lib = find-bundled('libglib-2.0-0.dll');
} else {
try 'use MacOS::NativeLib <glib-2.0>'.EVAL;
$lib = $*VM.platform-library-name('glib-2.0'.IO).Str;
}
}
Expand All @@ -84,6 +87,7 @@ sub gobject-lib is export {
try load-ffi-lib;
$lib = find-bundled('libgobject-2.0-0.dll');
} else {
try 'use MacOS::NativeLib <gobject-2.0>'.EVAL;
$lib = $*VM.platform-library-name('gobject-2.0'.IO).Str;
}
}
Expand Down
39 changes: 38 additions & 1 deletion lib/GTK/Simple/Raw.rakumod
Original file line number Diff line number Diff line change
Expand Up @@ -1263,4 +1263,41 @@ sub gtk_list_box_row_is_selected(GtkWidget $row)
sub gtk_list_box_row_changed(GtkWidget $row)
is native(&gtk-lib)
is export(:list-box-row)
{ * }
{ * }

## Image
## These could live in GDK, but then we would need to import the GDK module into this one
class GError is repr('CPointer') is export(:image) {}
class GdkPixbuf is repr('CPointer') is export(:image) {}

sub gdk_pixbuf_new_from_file(Str $file-path, GError $error)
returns GdkPixbuf
is native(&gdk-lib)
is export(:image)
{ * }

sub gdk_pixbuf_new_from_file_at_size(Str $file-path, int32 $width, int32 $height, GError $error)
returns GdkPixbuf
is native(&gdk-lib)
is export(:image)
{ * }


sub gtk_image_new_from_file(Str $file-path)
returns GtkWidget
is native(&gtk-lib)
is export(:image)
{ * }

sub gtk_image_new_from_resource(Str $resource-path)
returns GtkWidget
is native(&gtk-lib)
is export(:image)
{ * }

sub gtk_image_new_from_pixbuf(GdkPixbuf $pixbuf)
returns GtkWidget
is native(&gtk-lib)
is export(:image)
{ * }

Binary file added resources/camelia-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion t/02-export-subs.rakutest
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ if %*ENV<DISPLAY> or $*DISTRO.is-win {
next if skip-test($sub-name);

my $widget;
lives-ok { $widget = ::{$sub-name}(:label("For Button(s)"), :uri("For LinkButton")) },
lives-ok { $widget = ::{$sub-name}(:label("For Button(s)"), :uri("For LinkButton"), :path("/for/image.png")) },
"There is a subroutine in scope called '$sub-name'";
ok $widget ~~ $class, "'$sub-name' returns a { $class.^name } object";
}
Expand Down