Testgtk source code
This code is part of testgtk, a demo application packaged with GtkAda. Testgtk demonstrates the various widgets of GtkAda
-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for the Gimp Toolkit --
-- --
-- Copyright (C) 1998-1999 --
-- Emmanuel Briot, Joel Brobecker and Arnaud Charlet --
-- --
-- This library is free software; you can redistribute it and/or --
-- modify it under the terms of the GNU General Public --
-- License as published by the Free Software Foundation; either --
-- version 2 of the License, or (at your option) any later version. --
-- --
-- This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --
-- General Public License for more details. --
-- --
-- You should have received a copy of the GNU General Public --
-- License along with this library; if not, write to the --
-- Free Software Foundation, Inc., 59 Temple Place - Suite 330, --
-- Boston, MA 02111-1307, USA. --
-- --
--
--
--
--
--
--
--
-----------------------------------------------------------------------
with Glib;
use Glib;
with Gtk.Box;
use Gtk.Box;
with Gtk.Button;
use Gtk.Button;
with Gtk.Button_Box;
use Gtk.Button_Box;
with Gtk.Enums;
use Gtk.Enums;
with Gtk.Frame;
use Gtk.Frame;
with Gtk.Hbutton_Box;
use Gtk.Hbutton_Box;
with Gtk.Vbutton_Box;
use Gtk.Vbutton_Box;
with Gtk;
use Gtk;
package body Create_Button_Box
is
function Create_Bbox (Horizontal :
in Boolean;
Title :
in String;
Spacing :
in Gint;
Child_W :
in Gint;
Child_H :
in Gint;
Layout :
in Gtk_Button_Box_Style)
return Gtk_Frame;
-- Create one of the sample button box
----------
-- Help --
----------
function Help
return String
is
begin
return "This demo demonstrates the possible @bLayout@B that can be used"
& "
with a @bGtk_Button_Box@B widget." & ASCII.LF
& "A @bGtk_Button_Box@B
is a special kind
of @bGtk_Box@B, homogeneous,"
& " which can organize its children according to a special layout."
& ASCII.LF
& "All the boxes here are created exactly the same way,
and only the"
& " layout differs.";
end Help;
-----------------
-- Create_Bbox --
-----------------
function Create_Bbox (Horizontal :
in Boolean;
Title :
in String;
Spacing :
in Gint;
Child_W :
in Gint;
Child_H :
in Gint;
Layout :
in Gtk_Button_Box_Style)
return Gtk_Frame
is
Bbox : Gtk_Button_Box;
Button : Gtk_Button;
Frame : Gtk_Frame;
begin
Gtk_New (Frame, Label => Title);
if Horizontal
then
declare
B : Gtk_Hbutton_Box;
begin
Gtk_New (B);
Bbox := Gtk_Button_Box (B);
end;
else
declare
B : Gtk_Vbutton_Box;
begin
Gtk_New (B);
Bbox := Gtk_Button_Box (B);
end;
end if;
Set_Border_Width (Bbox, Border_Width => 5);
Add (Frame, Bbox);
Set_Layout (Bbox, Layout);
Set_Spacing (Bbox, Spacing);
Set_Child_Size (Bbox, Child_W, Child_H);
Gtk_New (Button, Label => "OK");
Add (Bbox, Button);
Gtk_New (Button, Label => "Cancel");
Add (Bbox, Button);
Gtk_New (Button, Label => "Help");
Add (Bbox, Button);
return Frame;
end Create_Bbox;
---------
-- Run --
---------
procedure Run (Frame :
access Gtk.Frame.Gtk_Frame_Record'Class)
is
Vbox : Gtk_Box;
Hbox : Gtk_Box;
Main_Vbox : Gtk_Box;
Frame_Horz : Gtk_Frame;
Frame_Vert : Gtk_Frame;
begin
Set_Label (Frame, "Button Box");
Gtk_New_Vbox (Main_Vbox, Homogeneous => False, Spacing => 0);
Add (Frame, Main_Vbox);
Gtk_New (Frame_Horz, "Horizontal Button Boxes");
Pack_Start (Main_Vbox,
Child => Frame_Horz,
Expand => True,
Fill => True,
Padding => 10);
Gtk_New_Vbox (Vbox, Homogeneous => False, Spacing => 0);
Set_Border_Width (Vbox, Border_Width => 10);
Add (Frame_Horz, Vbox);
Pack_Start
(Vbox, Create_Bbox (True, "Spread", 40, 85, 20, Buttonbox_Spread),
True, True, 0);
Pack_Start
(Vbox, Create_Bbox (True, "Edge", 40, 85, 20, Buttonbox_Edge),
True, True, 5);
Pack_Start
(Vbox, Create_Bbox (True, "Start", 40, 85, 20, Buttonbox_Start),
True, True, 5);
Pack_Start
(Vbox, Create_Bbox (True, "End", 40, 85, 20, Buttonbox_End),
True, True, 5);
Gtk_New (Frame_Vert, "Vertical Button Boxes");
Pack_Start (Main_Vbox,
Frame_Vert,
Expand => True,
Fill => True,
Padding => 10);
Gtk_New_Hbox (Hbox, Homogeneous => False, Spacing => 0);
Set_Border_Width (Hbox, Border_Width => 10);
Add (Frame_Vert, Hbox);
Pack_Start
(Hbox, Create_Bbox (False, "Spread", 30, 85, 20, Buttonbox_Spread),
True, True, 0);
Pack_Start
(Hbox, Create_Bbox (False, "Edge", 30, 85, 20, Buttonbox_Edge),
True, True, 5);
Pack_Start
(Hbox, Create_Bbox (False, "Start", 30, 85, 20, Buttonbox_Start),
True, True, 5);
Pack_Start
(Hbox, Create_Bbox (False, "End", 30, 85, 20, Buttonbox_End),
True, True, 5);
Show_All (Main_Vbox);
end Run;
end Create_Button_Box;