[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]

General Programming Concepts: Writing and Debugging Programs


Manipulating Soft Labels

Curses provides subroutines for manipulating soft function-key labels. These labels appear at the bottom of the screen and give applications, such as editors, a more user-friendly look. To use soft labels, you must call the slk_init subroutine before calling the initscr or newterm subroutines.

slk_clear Clears soft labels from the screen.
slk_init Initializes soft function key labels.
slk_label Returns the current label.
slk_noutrefresh Refreshs soft labels. This subroutine is functionally equivalent to the wnoutrefresh subroutine.
slk_refresh Refreshs soft labels. This subroutine is functionally equivalent to the refresh subroutine.
slk_restore Restores the soft labels to the screen after a call to the slk_clear subroutine.
slk_set Sets a soft label.
slk_touch Updates soft labels on the next call to the slk_noutrefresh subroutine.

To manage soft labels, curses reduces the size of the stdscr by one line. It reserves this line for use by the soft-label functions. This reservation means that the environment variable LINES is also reduced. Many terminals support built-in soft labels. If built-in soft labels are supported, curses uses them. Otherwise, curses simulates the soft-labels with software.

Because many terminals that support soft labels have 8 labels, curses follows the same standard. A label string is restricted to 8 characters. Curses arranges labels in one of two patterns:  3-2-3 (3 left, 2 center, 3 right) or 4-4 (4 left, 4 right).

To specify a string for a particular label, call the slk_set subroutine. This subroutine also instructs curses as to left-justify, right-justify, or center the string on the label. If you wish to obtain a label name before it was justified by the slk_set subroutine, use the slk_label subroutine. The slk_clear and slk_restore subroutines clear and restore soft labels respectively. Normally, to update soft labels, your program should call the slk_noutrefresh subroutine for each label and then use a single call to the slk_refresh subroutine to perform the actual output. To output all the soft labels on the next call to the slk_noutrefresh subroutine, use the slk_touch subroutine.

Related Information

Chapter 2, The Curses Library

List of Additional Curses Subroutines


[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]