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 - metrics - download
Index: B T

⟦eb790508c⟧ TextFile

    Length: 2332 (0x91c)
    Types: TextFile
    Names: »B«

Derivation

└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
    └─⟦5cb1d1d7f⟧ »DATA« 
        └─⟦3b1ee7bd8⟧ 
            └─⟦this⟧ 

TextFile

separate (Single_Selection_Electric_Menus)

function Get_User_Selection
            (Menu : Window_Type;
             Definition : Menu_Definition;
             Column_Offset : Natural := 0;
             Line_Offset : Natural := 0;
             Presentation : Layout := Vertical;
             Max_Wait : Duration := Duration'Last) return Element is

    Current_Node : Menu_Definition := Definition;

    Selected_Font : Window_Io.Font := Fonts.Inverse_Bold;

    One_Key : Raw.Key;

begin

    Display (Menu, Definition, Column_Offset, Line_Offset, Presentation);

    Coupler.Start;

    loop
        Window_Io.Position_Cursor
           (Menu, Current_Node.Line, Current_Node.Column);

        select
            Coupler.Read (One_Key);
        or
            delay Max_Wait;
            abort Coupler;
            raise Time_Out;
        end select;

        if (Presentation = Vertical and One_Key = New_Keys.Step_Backward) or
           (Presentation = Horizontal and One_Key = New_Keys.Left) then
            Window_Io.Position_Cursor
               (Menu, Current_Node.Line, Current_Node.Column);
            Window_Io.Overwrite
               (Menu, Line_Image (Current_Node.Elem), Fonts.Normal);

            Current_Node := Current_Node.Previous;

            Window_Io.Position_Cursor
               (Menu, Current_Node.Line, Current_Node.Column);
            Window_Io.Overwrite
               (Menu, Line_Image (Current_Node.Elem), Selected_Font);

        elsif (Presentation = Vertical and One_Key = New_Keys.Step_Forward) or
              (Presentation = Horizontal and One_Key = New_Keys.Right) then

            Window_Io.Position_Cursor
               (Menu, Current_Node.Line, Current_Node.Column);
            Window_Io.Overwrite
               (Menu, Line_Image (Current_Node.Elem), Fonts.Normal);

            Current_Node := Current_Node.Next;

            Window_Io.Position_Cursor
               (Menu, Current_Node.Line, Current_Node.Column);
            Window_Io.Overwrite
               (Menu, Line_Image (Current_Node.Elem), Selected_Font);

        elsif One_Key = New_Keys.User_Interrupt then

            null;

        elsif Is_Select_Key (One_Key) then
            return Current_Node.Elem;
        else
            Window_Io.Bell (Menu);
        end if;
    end loop;

end Get_User_Selection;