Slider - выбор числа с визуальным отображеним относительной величины значения.

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

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

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

Уничтожение виджета.
void destroyCDKSlider (CDKSLIDER *slider);

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

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

Прорисовка виджета.
void drawCDKSlider (CDKSLIDER *slider, boolean box);

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

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

Получение текущего значения.
int getCDKSliderValue (CDKSLIDER *slider);

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

Получение максимального значения.
int getCDKSliderHighValue (CDKSLIDER *slider);

Получение минимального значения.
int getCDKSliderLowValue (CDKSLIDER *slider);

Установка максимального и минимального значения.
void setCDKSliderLowHigh (CDKSLIDER *slider, int lowValue, int highValue);

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

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

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

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

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

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

Есть ли рамка у виджета.
boolean getCDKSliderBox (CDKSLIDER *slider);

Изменить наличие рамки в виджете.
void setCDKSliderBox (CDKSLIDER *slider, boolean boxWidget);

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

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

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

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

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

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

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

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

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

#include <cdk.h>


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


    //создаём виджет
    slider = newCDKSlider(cdkscreen, 
		CENTER, CENTER, 
		"", "", ' ' | A_REVERSE,10,
		5, 0, 100,
		1,10,
		TRUE, FALSE);

    //ждём ввода
    val = activateCDKSlider(slider, 0);

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

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