gtk example

Former-commit-id: 97181a4b8d
This commit is contained in:
Norayr Chilingarian 2014-01-31 17:08:54 +04:00
parent a4b8164ffc
commit afff10cca3
10 changed files with 730 additions and 0 deletions

View file

@ -0,0 +1,61 @@
(***************************************************************************
Project: HelloWorld
Purpose: A libglade-Hello-World with oo2c
Version: 1.0
Predecessor: -
Changes: -
Target: Linux
Compiler: oo2c
Date: Jan. 2009
Author: Frank Hrebabetzky
-- converted to use with voc by noch
***************************************************************************)
MODULE HelloWorld;
IMPORT
SYSTEM, Args, Out := Console, G, Gdk, Gtk, Glade, handlers;
CONST
(*GUIFILE = "gui.glade";*)
ERRXML = 1; (* xml file problem *)
ERRNOTFOUND = 2; (* widget not found *)
VAR
argc : LONGINT;
argv : Gtk.ArgVector;
xml: Glade.XMLPtr;
drawing: Gtk.WidgetPtr;
GuiFile, name: Glade.CString;
PROCEDURE (*["Hello"]*) Hello* (widget:Gtk.WidgetPtr; data:SYSTEM.PTR);
BEGIN
Out.String("Hello, world!"); Out.Ln;
END Hello;
PROCEDURE (*["Draw"]*) Draw* (widget:Gtk.WidgetPtr;
event:Gdk.EventExposePtr; data:G.pointer): G.boolean;
VAR a: G.int;
BEGIN
a:= widget.allocation.width DIV 2;
Gdk.drawArc (widget.window, widget.style.fgGc[ORD(widget.state)], G.TRUE,
a DIV 2, a DIV 2, a, a, 0, 64*360);
RETURN G.TRUE;
END Draw;
BEGIN
argc:= Args.argc;
argv:= SYSTEM.VAL (Gtk.ArgVector, Args.argv);
Gtk.init (argc, argv);
NEW(GuiFile);
COPY("gui.glade", GuiFile^);
xml:= Glade.xmlNew (GuiFile, NIL, NIL);
ASSERT (SYSTEM.VAL(SYSTEM.PTR, xml)#NIL, ERRXML);
Glade.xmlSignalAutoconnect (xml);
NEW(name); COPY("drawing", name^);
drawing:= Glade.xmlGetWidget (xml, name);
ASSERT (drawing#NIL, ERRNOTFOUND);
Gtk.main;
END HelloWorld.