sample-text_io_demo.adb [plain text]
with Ada.Numerics.Generic_Elementary_Functions;
with Ada.Numerics.Complex_Types;
use Ada.Numerics.Complex_Types;
with Terminal_Interface.Curses; use Terminal_Interface.Curses;
with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels;
with Terminal_Interface.Curses.Text_IO;
use Terminal_Interface.Curses.Text_IO;
with Terminal_Interface.Curses.Text_IO.Integer_IO;
with Terminal_Interface.Curses.Text_IO.Float_IO;
with Terminal_Interface.Curses.Text_IO.Enumeration_IO;
with Terminal_Interface.Curses.Text_IO.Complex_IO;
with Terminal_Interface.Curses.Text_IO.Fixed_IO;
with Terminal_Interface.Curses.Text_IO.Decimal_IO;
with Terminal_Interface.Curses.Text_IO.Modular_IO;
with Sample.Manifest; use Sample.Manifest;
with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
with Sample.Keyboard_Handler; use Sample.Keyboard_Handler;
with Sample.Explanation; use Sample.Explanation;
package body Sample.Text_IO_Demo is
type Weekday is (Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday);
type Fix is delta 0.1 range 0.0 .. 4.0;
type Dec is delta 0.01 digits 5 range 0.0 .. 4.0;
type Md is mod 5;
package Math is new
Ada.Numerics.Generic_Elementary_Functions (Float);
package Int_IO is new
Terminal_Interface.Curses.Text_IO.Integer_IO (Integer);
use Int_IO;
package Real_IO is new
Terminal_Interface.Curses.Text_IO.Float_IO (Float);
use Real_IO;
package Enum_IO is new
Terminal_Interface.Curses.Text_IO.Enumeration_IO (Weekday);
use Enum_IO;
package C_IO is new
Terminal_Interface.Curses.Text_IO.Complex_IO (Ada.Numerics.Complex_Types);
use C_IO;
package F_IO is new
Terminal_Interface.Curses.Text_IO.Fixed_IO (Fix);
use F_IO;
package D_IO is new
Terminal_Interface.Curses.Text_IO.Decimal_IO (Dec);
use D_IO;
package M_IO is new
Terminal_Interface.Curses.Text_IO.Modular_IO (Md);
use M_IO;
procedure Demo
is
W : Window;
P : Panel := Create (Standard_Window);
K : Real_Key_Code;
Im : Complex := (0.0, 1.0);
Fx : Fix := 3.14;
Dc : Dec := 2.72;
L : Md;
begin
Push_Environment ("TEXTIO");
Default_Labels;
Notepad ("TEXTIO-PAD00");
Set_Echo_Mode (False);
Set_Meta_Mode;
Set_KeyPad_Mode;
W := Sub_Window (Standard_Window, Lines - 2, Columns - 2, 1, 1);
Box;
Refresh_Without_Update;
Set_Meta_Mode (W);
Set_KeyPad_Mode (W);
Immediate_Update_Mode (W, True);
Set_Window (W);
for I in 1 .. 10 loop
Put ("Square root of ");
Put (Item => I, Width => 5);
Put (" is ");
Put (Item => Math.Sqrt (Float (I)), Exp => 0, Aft => 7);
New_Line;
end loop;
for W in Weekday loop
Put (Item => W); Put (' ');
end loop;
New_Line;
L := Md'First;
for I in 1 .. 2 loop
for J in Md'Range loop
Put (L); Put (' ');
L := L + 1;
end loop;
end loop;
New_Line;
Put (Im); New_Line;
Put (Fx); New_Line;
Put (Dc); New_Line;
loop
K := Get_Key;
if K in Special_Key_Code'Range then
case K is
when QUIT_CODE => exit;
when HELP_CODE => Explain_Context;
when EXPLAIN_CODE => Explain ("TEXTIOKEYS");
when others => null;
end case;
end if;
end loop;
Set_Window (Null_Window);
Erase; Refresh_Without_Update;
Delete (P);
Delete (W);
Pop_Environment;
end Demo;
end Sample.Text_IO_Demo;