|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 3886 (0xf2e)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
with Bounded_String;
with Easy_Y;
with Message;
with Requester;
with Text_Io;
package body Class_New_Printer is
procedure Open (X, Y : Object.Index; Screen : String) is
use Object;
begin
The_Left := X;
The_Right := Y;
The_Screen := Bounded_String.Value (Screen, 80);
Easy_Y.Put_Title (Window => Unparse_Window,
Title => Bounded_String.Value ("Unparse", 80));
Easy_Y.Put_Left (Window => Unparse_Window, Left => The_Left);
Easy_Y.Put_Right (Window => Unparse_Window, Right => The_Right);
Easy_Y.Put_Width (Window => Unparse_Window, Width => The_Width);
Easy_Y.Put_Height (Window => Unparse_Window, Height => The_Height);
Easy_Y.Open (Display => Bounded_String.Image (The_Screen),
Window => Unparse_Window);
Easy_Y.Put_Font (To => Easy_Y.Small_Font);
Easy_Y.Put_Size (Window => Unparse_Window, Size => 1);
Line_Max := The_Height / 16;
end Open;
procedure Close is
begin
Easy_Y.Close (Window => Unparse_Window);
end Close;
procedure Go_Ahead (Number : in Integer) is
begin
if Number > 0 then
Position := Position + Number;
end if;
end Go_Ahead;
procedure Go_Back (Number : in Integer) is
begin
if Number > 0 then
Position := Position - Number;
end if;
if Position < 0 then
Position := 0;
end if;
end Go_Back;
procedure Put (Str : String) is
use Object;
begin
Bounded_String.Append (The_String, Str);
Easy_Y.Print ((Position * 8), Line_Number * 16, The_String);
end Put;
procedure Put_Blanck is
use Object;
Blanck : String (1 .. Positive (Position)) :=
(1 .. Positive (Position) => ' ');
begin
Bounded_String.Append (Table (Table_Index), Blanck);
end Put_Blanck;
procedure New_Line_2 (Number : Integer := 1) is
use Object;
Blanck : String (1 .. Positive (The_Width / 8)) :=
(1 .. Positive (The_Width / 8) => ' ');
begin
Line_Number := Line_Number + 1;
Bounded_String.Append (Table (Table_Index), Blanck);
Table_Index := Table_Index + 1;
if Line_Number >= Line_Max then
Line_Number := Line_Number - 1;
for Index in 1 .. Line_Max loop
Easy_Y.Print (1, Index * 16,
Table (Table_Index - Line_Max + Index));
end loop;
end if;
end New_Line_2;
procedure New_Line (Number : Integer := 1) is
use Object;
begin
Colum := 0;
Line_Number := Line_Number + 1;
if Line_Number >= Line_Max then
declare
Blanck : String (1 .. Positive (The_Width / 8)) :=
(1 .. Positive (The_Width / 8) => ' ');
Button : Message.Unary;
Result : Object.Index;
Title : Object.Tiny_String;
begin
Message.Put (This_Name => Bounded_String.Value ("Suite", 80),
Into => Button);
Result := Requester.Choice
(The_Left, The_Right + The_Height + 50,
Bounded_String.Image (The_Screen), Button,
Bounded_String.Value
("Cliquer pour avoir la suite", 80));
Message.Free (This => Button);
Line_Number := 1;
Easy_Y.Set_Display (Window => Unparse_Window);
Easy_Y.Close (Window => Unparse_Window);
Easy_Y.Open (Display => Bounded_String.Image (The_Screen),
Window => Unparse_Window);
end;
end if;
end New_Line;
end Class_New_Printer;