diff --git a/README.adoc b/README.adoc index 42271a4..355ce99 100644 --- a/README.adoc +++ b/README.adoc @@ -13,29 +13,29 @@ Version 0.1 2017 (c) Stefan Salewski + 2017 -NOTE: This work is partly based on earlier works of _J. Mansour_ and has been supported by _A. Rumpf_ and other _Nim_ and _GTK/Gnome_ developers. -The `combinatorics` module was kindly provided by _R. Behrends_. +NOTE: This work is partly based on earlier works of J. Mansour and has been supported by A. Rumpf and other _Nim_ and _GTK/Gnome_ developers. +The `combinatorics` module was kindly provided by R. Behrends. //icon:thumbs-up[] -This repository contains bindings from the _Nim_ programming language to the _GTK3_ _GUI_ (_Graphical User Interface_) library and related libraries. (With minimal fixes +This repository contains bindings from the Nim programming language to the GTK3 _GUI_ (_Graphical User Interface_) library and related libraries. (With minimal fixes it should also work for upcoming _GTK4_.) https://nim-lang.org/[Nim] is a modern universal programming language. -https://www.gtk.org/[GTK], also known as the _Gimp Tool Kit_ and now sometimes also called _Gnome Tool Kit_, is a _Graphical User Interface_ library. +https://www.gtk.org/[GTK], also known as the _Gimp Tool Kit_ and now sometimes also called _Gnome Tool Kit_, is a Graphical User Interface library. -NOTE: Later we will insert at this location a nice picture of a fancy _Nim GTK3 GUI_. Such a picture is fine to attract users and indeed is a good motivation. -But such pictures are no real evidence for the quality of a _GUI_ toolkit -- the concrete example may look nice, while the toolkit +NOTE: Later we will insert at this location a nice picture of a fancy Nim GTK3 GUI. Such a picture is fine to attract users and indeed is a good motivation. +But such pictures are no real evidence for the quality of a GUI toolkit -- the concrete example may look nice, while the toolkit looks much worse in other environments and offers by far not all that what is needed in real life. -While _GTK_ was initially designed and advertised as cross platform _GUI_ toolkit, it is currently mostly used on _Linux_ and other _Unix_ like operation systems. -Most _Linux_ distributions include it, and some use it for their default desktop environment, often with the _Gnome_ environment or other window managers. -While _GTK2_ applications like _GIMP_ are still used on _Windows_, there seems to exist currently only very few _GTK3_ applications for _Windows_ or _{MAC}_. -When you develop primary _free open source software_ (_FOSS_) for _Linux_ or other _Unix_ like operating systems, then _GTK3_ is a good choice for you. With some -effort you should be even able to port your application to the proprietary _Windows_ or _{MAC}_ operating systems. But when your primary target platforms -are _Windows_ and _{MAC}_ and you desire a real native look and feel there, then you may find better suited ones in the _Nim_ software repository. -Also, when you only need a minimal restricted _GUI_ which is very easy to install on _Windows_ and _{MAC}_, then you may find better suited packages -in the _Nim_ package repository. _Android OS_ is currently not supported by _GTK_ at all. +While GTK was initially designed and advertised as cross platform GUI toolkit, it is currently mostly used on _Linux_ and other _Unix_ like operation systems. +Most Linux distributions include it, and some use it for their default desktop environment, often with the Gnome environment or other window managers. +While GTK2 applications like _GIMP_ are still used on _Windows_, there seems to exist currently only very few GTK3 applications for Windows or {MAC}. +When you develop primary _free open source software_ (_FOSS_) for Linux or other Unix like operating systems, then GTK3 is a good choice for you. With some +effort you should be even able to port your application to the proprietary Windows or {MAC} operating systems. But when your primary target platforms +are Windows and {MAC} and you desire a real native look and feel there, then you may find better suited ones in the Nim software repository. +Also, when you only need a minimal restricted GUI which is very easy to install on Windows and {MAC}, then you may find better suited packages +in the Nim package repository. _Android OS_ is currently not supported by GTK at all. While low level _Nim_ bindings for _GTK3_ are already available since a few years, this one is an attempt to provide real high level bindings with full type safety, full _Garbage Collector_ (_GC_) support and an idiomatic @@ -170,7 +170,7 @@ We start with a minimal traditional old style example, which should be familiar .t0.nim ---- # nim c t0.nim -import gtk +import gintro/gtk proc bye(w: Window) = mainQuit() @@ -204,9 +204,9 @@ differences between the source code displayed here and the sources in examples d ---- # app0.nim -- minimal application style example # nim c app0.nim -import gtk -import gio except Application, newApplication # we want to use GTK application -#from gio import ApplicationFlags, scActivate, run +import gintro/gtk +import gintro/gio except Application, newApplication # we want to use GTK application +#from gintro/gio import ApplicationFlags, scActivate, run proc activate(app: Application) = let window = newApplicationWindow(app) @@ -257,7 +257,7 @@ at https://developer.gnome.org/gnome-devel-demos/. The https://developer.gnome.org/gnome-devel-demos/3.22/c.html.en[C demos] seems to be most actual and complete, and are easy to port to _Nim_. So we start with these, but if you are familiar with the other listed languages, then you can try to port them to _Nim_ as well. -Let us start with https://developer.gnome.org/gnome-devel-demos/3.22/button.c.html.en -- it is +Let us start with https://developer.gnome.org/gnome-devel-demos/3.22/button.c.html.en as it is still short and easy to understand, but shows already some interesting topics. image::NimGTK3Button.png[] @@ -342,8 +342,8 @@ this: .button.nim ---- # nim c button.nim -import gtk, glib -import gio except Application, newApplication +import gintro/[gtk, glib] +import gintro/gio except Application, newApplication proc buttonClicked (button: Button) = button.label = utf8Strreverse(button.label, -1) @@ -415,8 +415,8 @@ happens when you click on the buttons. .connect_args.nim ---- # nim c connect_args.nim -import gtk, glib -import gio except Application, newApplication +import gintro/[gtk, glib] +import gintro/gio except Application, newApplication type O = object