SlideShare a Scribd company logo
SqueakGTK
Gwenael Casaccio
SqueakGTK
• Presentation of GTK+
• GLib
• GDK, Pango, Cairo
• GTK+
• SqueakGTK tools (Omnibrowser, launcher)
• To do
• Conclusions
GTK+
• Open source toolkit (LGPL)
• Created for the GIMP
• Written in C
• Multi platform
GTK+
X11 Win32 (Quartz)
GLib
GDK Pango Cairo
Figure 2.9: The GTK+ stack
All parts of the GTK+ stack are written in C, and hence there is no support for object-orientation
features in the language. GTK+ still boasts itself as an object-oriented toolkit. This is thanks to
GObject, which is a part of GLib.
GObject is an object system which is used extensively by GTK+. It is designed to be easy to be
used by other programming languages, both interpreted and compiled.
GObject supports object inheritance as well as interfaces. Objects can also have named properties.
There also exists a general purpose notification mechanism for objects called signals.
GTK+ Stack
GLib
• Cross platform utility
• Linked list, hash tables, binary trees, ...
• C object model : GObject
• Fundamental types (Float, String, ...)
• Enumeration
GObject
• Single inherited class structure
• Signals
• Independent type system (GType)
• Memory management : reference counting
GDK
• Drawing : pixmaps, drawables, graphic
pattern
• Events : mouse, keyboard, window, ...
• Fonts : metrics
Pango
• Rendering text
• Internationalized
• Different font backends
• Integration with Cairo
Cairo
• Vector graphic-based
• Device-independant API
• 2D
• Several backends (PDF, PostScript, SVG, ...)
• GTK+ integration
Cairo
• Shape rendering
• Alpha blending
• Gradient drawing
• OpenGL acceleration
GTK+
• Now code our first application
GTK+
• First create a window
GTK+
• Now how to add a widget ?
Widgets
Widgets
• ...
Layout
• GtkFixed
Layouts
• GtkVBox
Layouts
• GtkTable
GTK+ Events
• when: anEvent send: aMessage to: anObject
• when: anEvent do: aBloc
inside GTK+
• Each GtkWidget inherit from GPointer
• C pointer store in a ByteArray
• Each Gtk classes call primitives
inside GTK+ events
• Handle events :
• Do we have an event ?
• Handle events
GTK+
• Events
• Active waiting for events (morphs, ...)
• GTK+ events handling
first process :
[self waitForEvents] repeat.
Second process :
[self handleEvents] repeat.
SqueakGTK
• Omnibrowser
• Launcher
• Inspector
• Browser
To do
• Restore the state of the interface
• Write tutorials
• Improve the tools
• Create a desktop
• Support of GObjectInspector
• ...
Conclusion
• Support multiple operating system
• Powerful and flexible user interface
• Stable
• http://code.google.com/p/squeakgtk/

More Related Content

PDF
Introduction to QML
PDF
نگاهی به Gtk3
PDF
Introduction to Google Cloud Platform
PPTX
Cloud Native and CNCF
PDF
GIS on Rails by Oleksandr Kychun
PDF
Web App Prototypes with Google App Engine
PDF
2019 09-13 kubernetes is hard - k8s community days
PDF
Basics of gtk_ilugc
Introduction to QML
نگاهی به Gtk3
Introduction to Google Cloud Platform
Cloud Native and CNCF
GIS on Rails by Oleksandr Kychun
Web App Prototypes with Google App Engine
2019 09-13 kubernetes is hard - k8s community days
Basics of gtk_ilugc

What's hot (20)

PDF
Going Enterprise QGIS and PostGIS
PDF
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)
PDF
Netflix Titus WASP October 2017
PDF
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
PPTX
BDE_SC4_WS3_6_Luigi Selmi - Pilot SC4
PDF
Open GL Programming Training Session I
PDF
Recap NEXT 2017
PDF
Building the QML Run-time
PDF
JS Fest 2019: Comparing Node.js processes and threads for clustering HTTP, TC...
PPTX
JS Fest 2019/Autumn. Виталий Кухар. Сравнение кластеризации HTTP, TCP и UDP н...
PDF
Concourse ci container based ci for the cloud
PDF
Rapid and repeatable geospatial analysis with Python and JavaScript using not...
PDF
Cloud Native Logging / Fluentd Summit Tokyo
PDF
Xwt, a cross-desktop UI library
PDF
Fluentd Intro for OpenShift Commons Briefing
PPTX
Next2019
PDF
Jumbo the Hadoop cluster bootstrapper
PPTX
Google cloud Study Essentials
PDF
Provision GCP resources using Terraform @ GDG Craiova
PDF
Introduction to Terraform and Google Cloud Platform
Going Enterprise QGIS and PostGIS
QGIS UK: QGIS Performance Enhancements (Lutra Consulting)
Netflix Titus WASP October 2017
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
BDE_SC4_WS3_6_Luigi Selmi - Pilot SC4
Open GL Programming Training Session I
Recap NEXT 2017
Building the QML Run-time
JS Fest 2019: Comparing Node.js processes and threads for clustering HTTP, TC...
JS Fest 2019/Autumn. Виталий Кухар. Сравнение кластеризации HTTP, TCP и UDP н...
Concourse ci container based ci for the cloud
Rapid and repeatable geospatial analysis with Python and JavaScript using not...
Cloud Native Logging / Fluentd Summit Tokyo
Xwt, a cross-desktop UI library
Fluentd Intro for OpenShift Commons Briefing
Next2019
Jumbo the Hadoop cluster bootstrapper
Google cloud Study Essentials
Provision GCP resources using Terraform @ GDG Craiova
Introduction to Terraform and Google Cloud Platform
Ad

Viewers also liked (7)

PPT
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
ODP
Gnome census
PDF
Multimedia in WebKitGTK+ (FOSDEM 2010)
PPTX
Introduce gobject introspection
PDF
LCA2013 : Implementing threaded accelerated compositing in WebKitGtk+
PDF
Gtk development-using-glade-3
PPT
Hibernate architecture
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Gnome census
Multimedia in WebKitGTK+ (FOSDEM 2010)
Introduce gobject introspection
LCA2013 : Implementing threaded accelerated compositing in WebKitGtk+
Gtk development-using-glade-3
Hibernate architecture
Ad

Similar to SqueakGTK (20)

PDF
gtkgst video in your widgets!
PDF
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
PDF
Necessitas - Qt on Android - from FSCONS 2011
PDF
OpenGL Introduction.
ODP
G T K+ 101
PDF
Python and GObject Introspection
PDF
CeedMath & CeedGL, Let's talk 3D...
PPT
Programming with OpenGL
PDF
Extended and embedding: containerd update & project use cases
PDF
Javascript, the GNOME way (JSConf EU 2011)
PDF
helm, the real world
PDF
Javascript in linux desktop (ICOS ver.)
PDF
Network programming with Qt (C++)
PDF
[KubeCon EU 2020] containerd Deep Dive
PPT
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
PDF
A GitOps Kubernetes Native CICD Solution with Argo Events, Workflows, and CD
PDF
The WebKit project
PPTX
Untitled presentation(4)
gtkgst video in your widgets!
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Necessitas - Qt on Android - from FSCONS 2011
OpenGL Introduction.
G T K+ 101
Python and GObject Introspection
CeedMath & CeedGL, Let's talk 3D...
Programming with OpenGL
Extended and embedding: containerd update & project use cases
Javascript, the GNOME way (JSConf EU 2011)
helm, the real world
Javascript in linux desktop (ICOS ver.)
Network programming with Qt (C++)
[KubeCon EU 2020] containerd Deep Dive
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
A GitOps Kubernetes Native CICD Solution with Argo Events, Workflows, and CD
The WebKit project
Untitled presentation(4)

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
PDF
Directing Generative AI for Pharo Documentation
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
PDF
Analysing Python Machine Learning Notebooks with Moose
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
PDF
An Analysis of Inline Method Refactoring
PDF
Identification of unnecessary object allocations using static escape analysis
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
PDF
Encoding for Objects Matters (IWST 2025)
PDF
Challenges of Transpiling Smalltalk to JavaScript
PDF
Immersive experiences: what Pharo users do!
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
Micromaid: A simple Mermaid-like chart generator for Pharo
Directing Generative AI for Pharo Documentation
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
Analysing Python Machine Learning Notebooks with Moose
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
Package-Aware Approach for Repository-Level Code Completion in Pharo
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
An Analysis of Inline Method Refactoring
Identification of unnecessary object allocations using static escape analysis
Control flow-sensitive optimizations In the Druid Meta-Compiler
Clean Blocks (IWST 2025, Gdansk, Poland)
Encoding for Objects Matters (IWST 2025)
Challenges of Transpiling Smalltalk to JavaScript
Immersive experiences: what Pharo users do!
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
Cavrois - an Organic Window Management (ESUG 2025)

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPT
Teaching material agriculture food technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Approach and Philosophy of On baking technology
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Empathic Computing: Creating Shared Understanding
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Big Data Technologies - Introduction.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Teaching material agriculture food technology
Understanding_Digital_Forensics_Presentation.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Approach and Philosophy of On baking technology
Mobile App Security Testing_ A Comprehensive Guide.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Empathic Computing: Creating Shared Understanding
Review of recent advances in non-invasive hemoglobin estimation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Big Data Technologies - Introduction.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Building Integrated photovoltaic BIPV_UPV.pdf
Network Security Unit 5.pdf for BCA BBA.
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf

SqueakGTK