-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright 2020 Thomas E. Dickey --
+-- Copyright 1998-2011,2014 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
------------------------------------------------------------------------------
--- Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.21 $
+-- $Date: 2020/02/02 23:34:34 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Ada.Calendar; use Ada.Calendar;
with Terminal_Interface.Curses.Text_IO.Integer_IO;
with Sample.Manifest; use Sample.Manifest;
+pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Integer_IO);
+
-- This package handles the painting of the header line of the screen.
--
package body Sample.Header_Handler is
Columns : Column_Count) return Integer;
pragma Convention (C, Init_Header_Window);
- procedure Internal_Update_Header_Window (Do_Update : in Boolean);
-
+ procedure Internal_Update_Header_Window (Do_Update : Boolean);
-- The initialization must be called before Init_Screen. It steals two
-- lines from the top of the screen.
Rip_Off_Lines (2, Init_Header_Window'Access);
end Init_Header_Handler;
- procedure N_Out (N : in Integer);
+ procedure N_Out (N : Integer);
-- Emit a two digit number and ensure that a leading zero is generated if
-- necessary.
- procedure N_Out (N : in Integer)
+ procedure N_Out (N : Integer)
is
begin
if N < 10 then
-- Paint the header window. The input parameter is a flag indicating
-- whether or not the screen should be updated physically after painting.
- procedure Internal_Update_Header_Window (Do_Update : in Boolean)
+ procedure Internal_Update_Header_Window (Do_Update : Boolean)
is
type Month_Name_Array is
array (Month_Number'First .. Month_Number'Last) of String (1 .. 9);
"November ",
"December ");
- Now : Time := Clock;
- Sec : Integer := Integer (Seconds (Now));
- Hour : Integer := Sec / 3600;
- Minute : Integer := (Sec - Hour * 3600) / 60;
- Mon : Month_Number := Month (Now);
- D : Day_Number := Day (Now);
+ Now : constant Time := Clock;
+ Sec : constant Integer := Integer (Seconds (Now));
+ Hour : constant Integer := Sec / 3600;
+ Minute : constant Integer := (Sec - Hour * 3600) / 60;
+ Mon : constant Month_Number := Month (Now);
+ D : constant Day_Number := Day (Now);
begin
if Header_Window /= Null_Window then
- if Minute /= Display_Min or else Hour /= Display_Hour
- or else Display_Day /= D or else Display_Month /= Mon then
+ if Minute /= Display_Min
+ or else Hour /= Display_Hour
+ or else Display_Day /= D
+ or else Display_Month /= Mon
+ then
Move_Cursor (Header_Window, 0, 0);
N_Out (D); Add (Header_Window, '.');
Add (Header_Window, Month_Names (Mon));
Pos := Columns - Column_Position (Title'Length);
Add (Win, 0, Pos / 2, Title);
-- In this phase we must not allow a physical update, because
- -- ncurses isn´t properly initialized at this point.
+ -- ncurses is not properly initialized at this point.
Internal_Update_Header_Window (False);
return 0;
else