Отправляет email-рассылки с помощью сервиса Sendsay

Практические советы по GTK+

  Все выпуски  

Практические советы по GTK+ (новый виджет ввода текста по маске)


Представляю Вашему вниманию новый виджет GtkBasePicker - это базовый виджет для ввода нестандартной символьной информации на основе класса GtkSpinButton. Этот виджет сам по себе ничего особенного для прикладных целей не представляет, но зато содержит рутинные операции, которыми дочерние виджеты можно не загромождать. GtkBasePicker позволяет очень быстро создавать новые дочерние виджеты с минимальными усилиями всего лишь задав параметры и переопределив 2 или 3 функции в зависимости от сложности.

Полностью исходные коды виджета с комментариями можно посмотреть здесь: gtkbasepicker.h   gtkbasepicker.c

Подробно рассмотрим применение GtkBasePicker  завтра, в следующем выпуске на примере виджета ввода IP адреса: GtkIPAddrPicker, а сейчас пока рассмотрим свойства базового виджета GtkBasePicker.

При создании нового виджета задаются следующие параметры:

short      field_count;// число раздельных полей ввода

gchar      **separator;// разделители м/у полями ввода

short      *field_len;// длина каждого поля в символах

short      *separator_len;// длина каждого разделителя в символах

int        *field_val;// цифровые значения полей

int        *field_val_min;// минимальные значения полей

int        *field_val_max;// максимальные значения полей

gboolean   carry;// переносить изменение в следующее по старшинству поле или циклично менять только текущее

 

 

 

При создании нового виджета переопределить нужно будет следующие функции:

Функция инициализации виджета, здесь задаются вышеприведённые параметры, функция переопределяется всегда.

void (*init_values)  (GtkBasePicker *picker);

 

 

 Проверка на валидность каждого из полей, то есть проверять не вышли ли значения полей за предельные границы. Эту функцию можно не переопределять в простых виджетах если базовый вариант устраивает.

void (*validate_values) (GtkBasePicker *picker);

 

 

Функция заполнения текста для отображения на экране, функция переопределяется всегда.

gchar* (*get_val_to_screen)  (GtkBasePicker *picker);

 

 При изменении полей ввода генерируется сигнал "select_picker_value", прототип обработчика сигнала:

static void picker_changed (GtkBasePicker *picker, gpointer user_data);

 

 


В следующих выпусках планируется добавить новые виджеты на основе GtkBasePicker для ввода IP адреса, даты, времени (с учётом текущией локализации) и ввода географических координат (широты и долготы).

P.S. (Все выпуски, включая этот, можно найти в одном файле gtk_book.zip в формате CHM)

 


В избранное