DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦5c56656e4⟧ TextFile

    Length: 3886 (0xf2e)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 

TextFile

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;