class interface LABEL
-- LABEL is a widget to draw (unicode) string.
-- See class TEXT_FIELD if you want to allow the user to edit
-- the string.
creation
make (s: UNICODE_STRING)
-- s is copied, future changes by the caller has no influence.
-- Local copy is accessible as READ ONLY through text
require
s /= Void
feature(s) from STATE
state: INTEGER
-- use values from STATE_CONSTANTS
is_state_normal: BOOLEAN
is_state_active: BOOLEAN
is_state_prelight: BOOLEAN
is_state_selected: BOOLEAN
is_state_insensitive: BOOLEAN
feature(s) from WIDGET
parent: CONTAINER
pos_x: INTEGER
pos_y: INTEGER
x_shrink_allowed: BOOLEAN
x_expand_allowed: BOOLEAN
y_shrink_allowed: BOOLEAN
y_expand_allowed: BOOLEAN
min_width: INTEGER
min_height: INTEGER
std_width: INTEGER
std_height: INTEGER
width: INTEGER
height: INTEGER
valid_width (w: INTEGER): BOOLEAN
valid_height (h: INTEGER): BOOLEAN
area: RECT
root_area: RECT
computing_size: BOOLEAN
set_x_shrink (b: BOOLEAN)
set_x_expand (b: BOOLEAN)
set_y_shrink (b: BOOLEAN)
set_y_expand (b: BOOLEAN)
set_shrink (b: BOOLEAN)
-- change both x and y shrink state
set_expand (b: BOOLEAN)
-- change both x and y expand state
feature(s) from LABEL
font: BASIC_FONT
style: DRAW_STYLE
text: UNICODE_STRING
-- This access to the current text value for this label is READ ONLY.
-- You have to never change this text, the label need it to
-- refresh the screen.
set_min_width (w: INTEGER)
-- Allow to chose the width your label may be shrinked to.
-- Don't forget to set x_shrink_allowed to this label and
-- upper containers.
-- set_text may change this value if needed.
require
w <= std_width
set_min_height (h: INTEGER)
-- Allow to chose the height your label may be shrinked to.
-- Don't forget to set y_shrink_allowed to this label and
-- upper containers.
require
h <= std_height
set_text (s: UNICODE_STRING)
-- Allow to change the label's text.
-- s is copied, future changes by the caller has no influence.
-- Local copy is accessible as READ ONLY through text
require
s /= Void;
private_copy_is_read_only: not text_changed_from_outside(s)
ensure
private_copy_is_read_only: not text_changed_from_outside(text)
set_with_integer (i: INTEGER_64)
-- Set the label's text with value of i (as decimal).
require
private_copy_is_read_only: not text_changed_from_outside(once "")
ensure
private_copy_is_read_only: not text_changed_from_outside(text)
append_integer (i: INTEGER_64)
-- Append the value of i (as decimal) to the label's text.
require
private_copy_is_read_only: not text_changed_from_outside(i.to_unicode_string)
ensure
private_copy_is_read_only: not text_changed_from_outside(text)
set_style (s: DRAW_STYLE)
-- Change the style used to draw the line.
-- NOTE: The screen is not updated. --TODO: change this ?
ensure
style = s
reset_default_style
-- The renderer will be used to draw the line.
-- NOTE: The screen is not updated. --TODO: change this ?
text_changed_from_outside (s: UNICODE_STRING): BOOLEAN
-- This function check that text didn't change.
-- This function has not to be used externally, it's only
-- used for assertion.
-- s is the future value for the text.
invariant
text /= Void;
private_copy_is_read_only: not text_changed_from_outside(text);
width >= min_width or computing_size;
height >= min_height or computing_size;
std_width > 0;
std_height > 0;
(not x_shrink_allowed implies width >= std_width) or computing_size;
(not x_expand_allowed implies width <= std_width) or computing_size;
(not y_shrink_allowed implies height >= std_height) or computing_size;
(not y_expand_allowed implies height <= std_height) or computing_size;
end of LABEL