1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234 | -- A program to show all of the Ada_GUI widgets
-- An Ada_GUI demo program
--
-- Copyright (C) 2023 by PragmAda Software Engineering
-- Released under the terms of the BSD 3-Clause license; see https://opensource.org/licenses
--
with Ada.Characters.Latin_1;
with Ada.Strings.Unbounded;
with Ada_GUI;
procedure Show_All is
Audio : Ada_GUI.Widget_ID;
Background : Ada_GUI.Widget_ID;
Visible : Ada_GUI.Widget_ID;
Quit : Ada_GUI.Widget_ID;
Check : Ada_GUI.Widget_ID;
Graphic : Ada_GUI.Widget_ID;
Change : Ada_GUI.Widget_ID;
Password : Ada_GUI.Widget_ID;
Radio : Ada_GUI.Widget_ID;
Selection : Ada_GUI.Widget_ID;
Area : Ada_GUI.Widget_ID;
Box : Ada_GUI.Widget_ID;
Pressed : Ada_GUI.Widget_ID;
Sel_File : Ada_GUI.Widget_ID;
Sel_Yes_No : Ada_GUI.Widget_ID;
Selected : Ada_GUI.Widget_ID;
Progress : Ada_GUI.Widget_ID;
One : Ada_GUI.Widget_ID;
Two : Ada_GUI.Widget_ID;
Three : Ada_GUI.Widget_ID;
Hider : Ada_GUI.Widget_ID;
Curve : Ada_GUI.Widget_ID;
Image : Ada_GUI.Widget_ID;
Event : Ada_GUI.Next_Result_Info;
File_Info : Ada_GUI.Dialogs.File_Result_Info;
Shrink : Boolean := True;
Value : Natural := 0;
Inc : Boolean := True;
use Ada.Strings.Unbounded;
use type Ada_GUI.Event_Kind_ID;
use type Ada_GUI.Widget_ID;
begin -- Show_All
Ada_GUI.Set_Up (Title => "Show All Ada_GUI Widgets");
Ada_GUI.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Light_Blue) );
Audio := Ada_GUI.New_Audio_Player (Source => "glass.ogg");
Audio.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Audio.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Background := Ada_GUI.New_Background_Text (Text => "Background_Text can <br><font color=" & '"' & "Green" & '"' &
">have</font> <b>at</b><i>tri</i><u>butes</u> € " &
Ada.Characters.Latin_1.LC_E_Acute,
Break_Before => True);
Background.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Background.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Visible := Ada_GUI.New_Check_Box (Label => "Visible €", Active => True);
Quit := Ada_GUI.New_Button (Text => "Quit €", Break_Before => True);
Quit.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Quit.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Check := Ada_GUI.New_Check_Box (Label => "<b>Check</b>_Box:", Break_Before => True);
Check.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Check.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Graphic := Ada_GUI.New_Graphic_Area (Width => 100, Height => 100, Break_Before => True);
Graphic.Draw_Rectangle (From_X => 0,
From_Y => 0,
To_X => 99,
To_Y => 99,
Line_Color => (None => True),
Fill_Color => (None => False, Color => Ada_GUI.To_Color (Ada_GUI.Yellow) ) );
Graphic.Draw_Rectangle (From_X => 10,
From_Y => 10,
To_X => 90,
To_Y => 90,
Fill_Color => (None => False, Color => Ada_GUI.To_Color (Ada_GUI.White) ) );
Graphic.Draw_Line (From_X => 0, From_Y => 0, To_X => 100, To_Y => 100, Width => 2, Style => Ada_GUI.Dashed);
Graphic.Draw_Line (From_X => 0, From_Y => 100, To_X => 100, To_Y => 0, Width => 2, Color => Ada_GUI.To_Color (Ada_GUI.Green) );
Graphic.Set_Pixel (X => 75, Y => 25, Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Graphic.Set_Pixel (X => 76, Y => 25, Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Graphic.Set_Pixel (X => 75, Y => 26, Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Graphic.Set_Pixel (X => 76, Y => 26, Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Graphic.Draw_Text (X => 10,
Y => 75,
Text => "Texty",
Line_Color => (None => False, Color => Ada_GUI.To_Color (Ada_GUI.Yellow) ),
Fill_Color => (None => False, Color => Ada_GUI.To_Color (Ada_GUI.Blue) ) );
Graphic.Draw_Line (From_X => 0, From_Y => 75, To_X => 100, To_Y => 75, Style => Ada_GUI.Dotted);
Change := Ada_GUI.New_Button (Text => "Change size");
Password := Ada_GUI.New_Password_Box (Break_Before => True, Label => "<i>Password</i>_Box:");
Password.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Password.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Radio := Ada_GUI.New_Radio_Buttons (Label => (To_Unbounded_String ("Yes"),
To_Unbounded_String ("No"),
To_Unbounded_String ("Maybe") ),
Break_Before => True);
Radio.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Radio.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Selection := Ada_GUI.New_Selection_List (Text => (To_Unbounded_String ("Yes"),
To_Unbounded_String ("No"),
To_Unbounded_String ("Maybe") ),
Break_Before => True);
Selection.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Selection.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Selection.Set_Text_Alignment (Alignment => Ada_GUI.Right);
Area := Ada_GUI.New_Text_Area (Text => "Some text" & Ada.Characters.Latin_1.LF & "Another line", Break_Before => True);
Area.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Area.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Box := Ada_GUI.New_Text_Box (Break_Before => True, Label => "Text_Box:", Placeholder => "Placeholder");
Box.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Yellow) );
Box.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Red) );
Pressed := Ada_GUI.New_Text_Area (Break_Before => True);
Pressed.Set_Background_Color (Color => Ada_GUI.To_Color (Ada_GUI.Light_Green) );
Pressed.Set_Foreground_Color (Color => Ada_GUI.To_Color (Ada_GUI.Dark_Blue) );
Sel_File := Ada_GUI.New_Button (Text => "Select File", Break_Before => True);
Sel_Yes_No := Ada_GUI.New_Button (Text => "Yes/No");
Selected := Ada_GUI.New_Text_Box (Break_Before => True, Label => "Selected:");
Selected.Set_Read_Only;
Progress := Ada_GUI.New_Progress_Bar (Break_Before => True);
One := Ada_GUI.New_Button (Text => "One", Break_Before => True);
Two := Ada_GUI.New_Button (Text => "Two");
Three := Ada_GUI.New_Button (Text => "Three");
Hider := Ada_GUI.New_Radio_Buttons (Label => (To_Unbounded_String ("Normal"),
To_Unbounded_String ("Invisible"),
To_Unbounded_String ("Hidden") ),
Break_Before => True,
Orientation => Ada_GUI.Horizontal);
Curve := Ada_GUI.New_Graphic_Area (Width => 100, Height => 100, Break_Before => True);
Curve.Draw_Rectangle (From_X => 0,
From_Y => 0,
To_X => 99,
To_Y => 99,
Line_Color => (None => True),
Fill_Color => (None => False, Color => Ada_GUI.To_Color (Ada_GUI.Light_Blue) ) );
Plot_Graph : declare
Plot : constant Ada_GUI.Plotting.Plot_Info :=
Ada_GUI.Plotting.New_Plot (ID => Curve, X_Min => -2.5, X_Max => 2.5, Y_Min => -0.5, Y_Max => 4.5);
Prev_X : Float := -2.5;
Prev_Y : Float := Prev_X ** 2;
X : Float;
Y : Float;
begin -- Plot_Graph
Plot.Draw_Axes (Interval => 2.0, Length => 5);
Draw_Lines : loop
exit Draw_Lines when Prev_X > 2.5;
X := Prev_X + 0.5;
Y := X ** 2;
Plot.Draw_Line (From_X => Prev_X,
From_Y => Prev_Y,
To_X => X,
To_Y => Y,
Color => Ada_GUI.To_Color (Ada_GUI.Red),
Style => Ada_GUI.Dot_Dash);
Prev_X := X;
Prev_Y := Y;
end loop Draw_Lines;
end Plot_Graph;
Image := Ada_GUI.New_Image (Source => "rgb.jpg", Description => "Your image here", Break_Before => True);
Wait_To_Quit : loop
Event := Ada_GUI.Next_Event (Timeout => 0.1);
if Event.Timed_Out then
Value := Value + (if Inc then 1 else -1);
Progress.Set_Value (Value => Value);
if (Inc and Value = 100) or (not Inc and Value = 0) then
Inc := not Inc;
end if;
else
exit Wait_To_Quit when Event.Event.Kind = Ada_GUI.Window_Closed;
if Event.Event.Kind = Ada_GUI.Key_Press then
Handle_Invalid : declare
Text : constant String := Pressed.Text;
begin -- Handle_Invalid
Pressed.Set_Text
(Text => Text (1 .. Text'Last - 1) & Character'Val (Wide_Character'Pos (Event.Event.Key.Key_Char) ) & " €");
exception -- Handle_Invalid
when others => -- Key_Char not in Character
Pressed.Set_Text (Text => Pressed.Text & " ?");
end Handle_Invalid;
else
exit Wait_To_Quit when Event.Event.ID = Quit;
if Event.Event.ID = Visible then
Background.Set_Visibility (Visible => Visible.Active);
if Visible.Active then
Background.Set_Text (Text => "New contents can also <b>have</b> attributes €");
Visible.Set_Label (Text => "<b>Visi</b>ble €");
Radio.Set_Label (Index => 3, Text => "<i>Don't</i> know");
Quit.Set_Text (Text => "<b>Depart</b> €");
end if;
elsif Event.Event.ID = Sel_File then
File_Info := Ada_GUI.Dialogs.Selected_File;
Selected.Set_Text (Text => (if File_Info.Picked then To_String (File_Info.Value) else "") );
elsif Event.Event.ID = Sel_Yes_No then
Selected.Set_Text
(Text => Ada_GUI.Dialogs.Yes_Or_No (Title => "Yes/No Dialog", Text => "Do you want 'Yes' to appear?") );
elsif Event.Event.ID = Hider then
case Positive'(Hider.Active) is
when 1 => -- Normal
Two.Set_Hidden (Hidden => False);
Two.Set_Visibility (Visible => True);
when 2 => --Invisible
Two.Set_Hidden (Hidden => False);
Two.Set_Visibility (Visible => False);
when 3 => -- Hidden
Two.Set_Hidden (Hidden => True);
Two.Set_Visibility (Visible => False);
when others =>
raise Program_Error with "Invalid Hider button index";
end case;
elsif Event.Event.ID = Change then
if Shrink then
Graphic.Set_Size (Width => Graphic.Width / 2, Height => Graphic.Height / 2);
else
Graphic.Set_Size (Width => 2 * Graphic.Width, Height => 2 * Graphic.Height);
end if;
Shrink := not Shrink;
else
null;
end if;
end if;
end if;
end loop Wait_To_Quit;
Ada_GUI.End_GUI;
end Show_All;
|