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 - downloadIndex: ┃ B T ┃
Length: 3911 (0xf47) 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; package body Tiny_End is procedure Rectangle (X, Y : Object.Index; Title : Object.Tiny_String) is use Object; begin Easy_Y.Line (X, Y, X + 110, Y); Easy_Y.Line (X + 110, Y, X + 110, Y + 40); Easy_Y.Line (X + 110, Y + 40, X, Y + 40); Easy_Y.Line (X, Y + 40, X, Y); Easy_Y.Line (X + 5, Y + 5, X + 105, Y + 5); Easy_Y.Line (X + 105, Y + 5, X + 105, Y + 35); Easy_Y.Line (X + 105, Y + 35, X + 5, Y + 35); Easy_Y.Line (X + 5, Y + 35, X + 5, Y + 5); Easy_Y.Print (X1 => X + Object.Index (55 - 4 * Bounded_String.Length (Title)), Y1 => Y + 25, The_String => Title); end Rectangle; procedure Push (X, Y : Object.Index; Title : Object.Tiny_String) is use Object; begin Easy_Y.Line (X, Y + 1, X + 110, Y + 1); Easy_Y.Line (X + 109, Y, X + 109, Y + 40); Easy_Y.Line (X + 110, Y + 39, X, Y + 39); Easy_Y.Line (X + 1, Y + 40, X + 1, Y); Easy_Y.Line (X + 5, Y + 5, X, Y); Easy_Y.Line (X + 105, Y + 5, X + 110, Y); Easy_Y.Line (X + 105, Y + 35, X + 110, Y + 40); Easy_Y.Line (X + 5, Y + 35, X, Y + 40); Easy_Y.Print (X1 => X + Object.Index (56 - 4 * Bounded_String.Length (Title)), Y1 => Y + 26, The_String => Title); delay (1.0); end Push; function In_Area (X, Y : Object.Index) return Boolean is use Object; begin if X <= Easy_Y.Get_X_Mouse and then Easy_Y.Get_X_Mouse <= X + 110 and then Y <= Easy_Y.Get_Y_Mouse and then Easy_Y.Get_Y_Mouse <= Y + 40 then return True; else return False; end if; end In_Area; function Choice (X, Y : Object.Index; Screen : String) return E_Choice is Essai : Easy_Y.Window_Type; Str : Object.Tiny_String; begin Bounded_String.Copy (Str, "Fin du programme Tiny_Talk"); Easy_Y.Put_Title (Window => Essai, Title => Str); Easy_Y.Put_Left (Window => Essai, Left => X); Easy_Y.Put_Right (Window => Essai, Right => Y); Easy_Y.Put_Width (Window => Essai, Width => 500); Easy_Y.Put_Height (Window => Essai, Height => 100); Easy_Y.Open (Display => Screen, Window => Essai); Easy_Y.Put_Font (To => Easy_Y.Medium_Font); loop case Easy_Y.Next_Event is when Easy_Y.Update => Bounded_String.Copy (Str, "Fin"); Rectangle (X => 30, Y => 35, Title => Str); Bounded_String.Copy (Str, "Unparse"); Rectangle (X => 195, Y => 35, Title => Str); Bounded_String.Copy (Str, "Recommencer"); Rectangle (X => 360, Y => 35, Title => Str); when Easy_Y.Button_Down => if In_Area (50, 35) then Bounded_String.Copy (Str, "Fin"); Push (X => 30, Y => 35, Title => Str); return E_Choice (Fin); elsif In_Area (200, 35) then Bounded_String.Copy (Str, "Unparse"); Push (X => 195, Y => 35, Title => Str); return E_Choice (Unparse); elsif In_Area (350, 35) then Bounded_String.Copy (Str, "Recommencer"); Push (X => 360, Y => 35, Title => Str); return E_Choice (Recommencer); end if; when Easy_Y.Button_Up => null; when others => null; end case; end loop; end Choice; end Tiny_End;