Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pharo-spec/gtk-bindings
Gtk3 bindings for Pharo
https://github.com/pharo-spec/gtk-bindings
gtk3 pharo ui
Last synced: about 1 month ago
JSON representation
Gtk3 bindings for Pharo
- Host: GitHub
- URL: https://github.com/pharo-spec/gtk-bindings
- Owner: pharo-spec
- Created: 2020-10-18T16:09:07.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-28T10:43:57.000Z (about 2 months ago)
- Last Synced: 2024-10-28T14:03:24.220Z (about 2 months ago)
- Topics: gtk3, pharo, ui
- Language: Smalltalk
- Homepage:
- Size: 3.36 MB
- Stars: 3
- Watchers: 12
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Gtk bindings
The Gtk3 bindings for Pharo# How to install
### On Windows
You need Gtk3!
And you need to put it at the same place of the `Pharo.exe` executable.
To simplify the process we created a VM bundled with all the DLL and resources needed to execute GTK+3You can get it from: http://files.pharo.org/vm/pharo-spur64-headless/win/latest-win64-GTK.zip
NOTE: If you are running under cygwin subsystem, remember to `chmod +x *`. Libraries have to be executable!
Then, you can just download a new Pharo 9.0 image:
```
curl https://get.pharo.org/64/90 | bash
```### On macOS:
You need Gtk3 (installed by brew because paths are fixed for now)
```
brew install gtk+3
```And you need the headless VM and a Pharo 9.0 image. You can get them from the zero-conf scripts:
```
curl https://get.pharo.org/64/90+vmHeadlessLatest | bash
```### On Linux
You need to have Gtk3 installed.And you need the headless VM and a Pharo 9.0 image. You can get them from the zero-conf scripts:
```
curl https://get.pharo.org/64/90+vmHeadlessLatest | bash
```## Installing in your image
### On Windows
You need to install it from the command line since you do not have the Playground in the UI:
```
./PharoConsole.exe '.\Pharo.image' eval --save " Metacello new
repository: 'github://pharo-spec/gtk-bindings';
baseline: 'Gtk';
onConflict: [ :e | e useIncoming ];
onUpgrade: [ :e | e useIncoming ];
ignoreImage;
load"
```Then you will need to restart your image to let Gtk3 to take over the event loop.
### On MacOS or Linux
Open your image using `./pharo-ui Pharo.image` and evaluate:
```Smalltalk
Metacello new
repository: 'github://pharo-spec/gtk-bindings';
baseline: 'Gtk';
onConflict: [ :e | e useIncoming ];
onUpgrade: [ :e | e useIncoming ];
ignoreImage;
load
```
After the execution, save the image, and quit.If you open the image using `./pharo-ui Pharo.image`, the image should give the feeling of being significantly slower. This is because the Gtk event loop is running. You can verify this by opening the process browser: you should see a line begining with `(70) GtkRunLoop`.
## A first example
The following code should open a small UI:
```Smalltalk
GEngine ensureRunning.
GtkRunLoop defer: [
GtkWindow new
title: 'Gtk3 Window';
add: (GtkBox newVertical
packStart: (GtkLabel newLabel: 'Hello!');
yourself);
showAll ]
```