Scale - выбор числа.

Данный виджет позволяет осуществлять выбор числа в заданном диапазоне. Есть возможность задать шаг и минимальное с максимальным значения. Scale работает с типом int для float можно использовать FScale (так же как и Scale только вместо значений типа int будут float).

Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось. В остальных функциях в качестве scale нужно передавать ссылку на созданный виджет.
CDKSCALE *newCDKScale (CDKSCREEN *cdkscreen, int xpos, int ypos, char *title, char *label, chtype fieldAttribute, int fieldWidth, int currentValue, int lowValue, int highValue, int increment, int fastIncrement, boolean box, boolean shadow);

cdkscreen - ранее созданный CDKSCREEN
xpos, ypos - координаты левого верхнего угла
title - Заголовок. Находится над полем ввода. Может содержать несколько строк. Для перехода на новую строку используется \n.
label - Метка. Находится слева от поля ввода.
fieldAttribute - Атрибуты для отображения вводимой строки.
fieldWidth - ширина поля. Если 0, то будет выбрано максимальное значение, если отрицательное, то из максимального будет вычитаться это значение.
currentValue - Начальное значение.
lowValue - Нижняя граница.
highValue - Верхняя граница.
increment - Шаг.
fastIncrement - Шаг при нажатии PageUp и PageDown.
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка
shadow - тень (TRUE / FALSE) если TRUE будет выведена тень

Уничтожение виджета.
void destroyCDKScale (CDKSCALE *scale);

Удаление виджета с экрана. (Сам виджет не удаляется.)
void eraseCDKScale (CDKSCALE *scale);

Установика атрибутов фона виджета attribute.
void setCDKScaleBackgroundAttrib (CDKSCALE *scale, chtype attribute);

Прорисовка виджета.
void drawCDKScale (CDKSCALE *scale, boolean box);

Активация виджета. Возвращаемое значение содержит выбранное значение. Если scale->exitType равно vNORMAL при выборе подпункта меню то выход осуществлён клавишами Enter или Tab и vESCAPE_HIT при нажатии Esc В качестве actions можно передать 0.
int activateCDKScale (CDKSCALE *scale, chtype *actions);

Функции получения и изменения состояния.

Получение текущего значения.
int getCDKScaleValue (CDKSCALE *scale);

Установка текущего значения.
void setCDKScaleValue (CDKSCALE *scale, int value);

Получение максимального значения.
int getCDKScaleHighValue (CDKSCALE *scale);

Получение минимального значения.
int getCDKScaleLowValue (CDKSCALE *scale);

Установка максимального и минимального значения.
void setCDKScaleLowHigh (CDKSCALE *scale, int low, int high);

Установка состояния виджета.
void setCDKScale (CDKSCALE *scale, int lowValue, int highValue, int currentValue, boolean box);

lowValue - Нижняя граница.
highValue - Верхняя граница.
currentValue - Начальное значение.
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка

Перемещение виджета.
void moveCDKScale (CDKSCALE *scale, int xpos, int ypos, boolean relative, boolean refresh);

xpos, ypos - координаты левого верхнего угла новой позиции
relative - (TRUE / FALSE) если TRUE новые координаты высчитываются от текущего положения виджета, иначе от верхнего левого угла экрана
refresh - обновить после перемещения (TRUE / FALSE)

Управление положением виджета клавишами курсора.
void positionCDKScale (CDKSCALE *scale);

Функции управления рамкой.

Есть ли рамка у виджета.
boolean getCDKScaleBox (CDKSCALE *scale);

Изменить наличие рамки в виджете.
void setCDKScaleBox (CDKSCALE *scale, boolean box);

Установка атрибутов attribute для рамки.
void setCDKScaleBoxAttribute (CDKSCALE *scale, chtype character);

Установка символа character выводимого по горизонтали рамки.
void setCDKScaleHorizontalChar (CDKSCALE *scale, chtype character);

Установка символа character выводимого по вертикали рамки.
void setCDKScaleVerticalChar (CDKSCALE *scale, chtype character);

Установка символа character выводимого в левом нижнем углу рамки.
void setCDKScaleLLChar (CDKSCALE *scale, chtype character);

Установка символа character выводимого в правом нижнем углу рамки.
void setCDKScaleLRChar (CDKSCALE *scale, chtype character);

Установка символа character выводимого в левом верхнем углу рамки.
void setCDKScaleULChar (CDKSCALE *scale, chtype character);

Установка символа character выводимого в правом верхнем углу рамки.
void setCDKScaleURChar (CDKSCALE *scale, chtype character);

Пример использования.

/*
    w_scale.c - пример простой программы демонстрирующей
    		возможности виджета Scale библиотеки CDK.
		
    (C) Copyright 2006 Бердников Александр alexber220@yandex.ru
    Данная программа распростаняется по лицензии BSD.
*/

#include <cdk.h>


int main(int argc, char *argv[])
{
    CDKSCREEN *cdkscreen;
    CDKSCALE *CDKScale;
    WINDOW *screen;
    int val;
    char temp[256], *mesg[10];
    
    // инициализация    
    screen = initscr();
    cdkscreen = initCDKScreen(screen);
    initCDKColor();


    //создаём виджет
    CDKScale = newCDKScale(cdkscreen, 
		CENTER, CENTER, 
		"", "", A_NORMAL, 10,
		5, 0, 100,
		1,10,
		TRUE, FALSE);

    //ждём ввода
    val = activateCDKScale(CDKScale, 0);

    // выводим введённую строку
    if (CDKScale->exitType == vNORMAL)
    {
      sprintf (temp, "(%d)", val);
      mesg[0] = temp;
      popupLabel (cdkscreen, mesg, 1);
    }
    
    
    //освобождаем ресурсы
    destroyCDKScale(CDKScale);
    destroyCDKScreen(cdkscreen);
    endCDK();
    
    return 0;
}

(C) Copyright 2006 Бердников Александр
Hosted by uCoz