Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб дек 16, 2017 8:29 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 371 сообщение ]  На страницу 1 2 3 4 525 След.
Автор Сообщение
 Заголовок сообщения: box_lib.obj - библиотека gui компонентов
СообщениеДобавлено: Пт фев 13, 2009 3:42 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
По данной библиотеке достаточно много постов, которые разбросаны по форуму.
Библиотека приобрела статус системной не так давно, в связи с этим, возникла необходимость отдельной ветки, посвященной вопросам программирования с использованием этой библиотеки.

Истоия создания:
andrew_programmer, делал свою библиотеку libGUI, однако низкая эффективность последней и проблемы, которые возникали при использовании компонентов созданных или доработанных мной побудили меня создать пример библиотеки, которая позволяла показать более простой и эффективный подход. Т.е. библиотека была сделана, что бы показать работоспособность кода. Ранее, все элементы были оформлены в макросы, это позволяло и позволяет достаточно эффективно использовать их при разработке программ. Со временем, andrew_programmer пропал с форума и оставил свою библиотеку недоделанной. В то же время, мной был написан код, позволяющий использовать библиотеку и компоненты для написания программ на С--. С течением времени, количество программ увеличилось, и библиотеку причислили к системной.

Особенности:
Каждый элемент библиотеки может быть встроен в программу в виде макроса. Макросы доступны на svn. Так же, возможно использования компонентов из подключаемой библиотеки. На 13 февраля 2009 года размер бибилотеки составляет 3.4 кб. Она содержит следующие компоненты:
    - editbox;
    - optionbox;
    - checkbox.

Данная библиотека продолжает совершенствоваться, со временем число доступных компонентов будет расширено. Планируется добавить scrollbar, dinamic button и menubar.

Предлагаю обсудить следующие вопросы:
    - особенности написания программ с использованием данной библиотеки;
    - как я могу использовать данную библиотеку для написания своих программ;
    - и другие темы которые будут касаться использования библиотеки, и принципов ее работы.


Вернуться к началу
СообщениеДобавлено: Вт фев 17, 2009 1:54 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 751
несколько вопросов,
1) кто будет вести разработку компонентов ? Можно ли к примеру, свой компонент написать и дать его разработчикам библиотеки чтобы внести его туда ?
2)
Цитата:
Макросы доступны на svn

я так понимаю это здесь будет: ftp://kolibrios.org/pub/libraries/ ?
3) я знаю что пока есть editbox, optionbox, checkbox, а мне говорят что вроди уже и скролинг есть, либо я не так понял ?

Цитата:
как я могу использовать данную библиотеку для написания своих программ

Была-бы библиотека, а куда-нибудь приткнуть ее это не проблема. Главное чтобы не глючило.


Вернуться к началу
СообщениеДобавлено: Вт фев 17, 2009 2:38 pm 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 689
IgorA
Речь о http://kolibrios.org/repos/programs/dev ... s/box_lib/

_________________
in code we trust


Вернуться к началу
СообщениеДобавлено: Вт фев 17, 2009 3:08 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
IgorA
по поводу svn загляни еще сюда:
http://wiki.kolibrios.org/Как_работать_с_SVN_сервером_Kolibri


Вернуться к началу
СообщениеДобавлено: Вт фев 17, 2009 9:19 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Разработкой компонентов и поддержкой существующих занимаю я.
Да, можно будет добавить свой компонент в либу. Добавить могу я, можно и самостоятельно.
Компоненты scrollbar, dinamic button и menubar, разработал Марат, они будут добавлены в ближайшее время.


Вернуться к началу
СообщениеДобавлено: Вт фев 17, 2009 9:34 pm 
Не в сети

Зарегистрирован: Вс фев 04, 2007 2:07 pm
Сообщения: 176
<Lrz>
По поводу editboxa. В последней ревизии ты не исправлял работу компонента с функциональными клавишами(F1-F12)?


Вернуться к началу
СообщениеДобавлено: Вт фев 17, 2009 11:19 pm 
Ну, все первая ступень отшла, 30 секунд полет нормальный!!!
Я прикрутил SCROLLBAR к BOX_LIB - zSea уже работает через библиотеку.
Осталось еще две отделяемые ступени и "Марс НАШ!!!"...

0.36 МСК Кстати вот viewtopic.php?f=9&t=1201&p=22281#p22281


Вернуться к началу
   
СообщениеДобавлено: Ср фев 18, 2009 10:39 am 
Компоненты залиты на SVN, но примера их использования еще нету (не считая zSea), позже будет.


Вернуться к началу
   
СообщениеДобавлено: Пн фев 23, 2009 3:30 pm 
SVN ревизия 1041, добавил пример (ctrldemo.asm) использования ScrollBar, MenuBar, DinamicButton и небольшое изменение в данных ScrollBar.


Вернуться к началу
   
СообщениеДобавлено: Вт фев 24, 2009 9:53 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 751
Скомпилировал файл ctrldemo.asm не запускается. Брал файлы *.obj из zSea 0.95 альфа.
Как узнать что означают параметры (некоторые понятны из названия, остальные нет)
Код:
scroll_bar_data_vertical:
.x:
.size_x     dw 15 ;+0
.start_x    dw 370 ;+2
.y:
.size_y     dw 300 ;+4
.start_y    dw 50 ;+6
.btn_high   dd 15 ;+8
.type       dd 1  ;+12
.max_area   dd 300  ;+16
.cur_area   dd 30  ;+20
.position   dd 140  ;+24
.bckg_col   dd 0xeeeeee ;+28
.frnt_col   dd 0xbbddff ;+32
.line_col   dd 0  ;+36
.redraw     dd 0  ;+40
.delta      dw 0  ;+44
.delta2     dw 0  ;+46
.run_x:
.r_size_x   dw 0  ;+48
.r_start_x  dw 0  ;+50
.run_y:
.r_size_y   dw 0 ;+52
.r_start_y  dw 0 ;+54
.m_pos      dd 0 ;+56
.m_pos_2    dd 0 ;+60
.m_keys     dd 0 ;+64
.run_size   dd 0 ;+68
.position2  dd 0 ;+72
.work_size  dd 0 ;+76
.all_redraw dd 0 ;+80
.ar_offset   dd 10 ;+84


Вернуться к началу
СообщениеДобавлено: Ср фев 25, 2009 9:35 am 
IgorA
Для работы ctrldemo нужно: box_lib.obj, cnv_bmp.obj, reload_16x16_8b.bmp - причем box_lib.obj может находится как в текущей директории приложения так и в /sys/lib/, при наличии библиотеки в обоих местах, предпочтение отдается текущей директории. Брать из zSea не обязательно на SVN залито все что используется.

Поля имеют следующие значения:
x и y - наружные размеры компонента
btn_high - высота боковых кнопок (левая и правая для гориз. и верхняя и нижняя для верт.)
type - зарезервировано для будущих типов, если скроллбар будет дорабатываться.
max_area - область максимальная, актуально когда не влазит в отображаемую область, т.е. случай активности компонента.
cur_area - область отображаемая
position - позиция бегунка изменяемая от 0 до значения x=(max_area-cur_area)
bckg_col - цвет внутренний, применяется для областей между бегунком и кноками
frnt_col - цвет наружный, применяется для областей отличных от применяемых в bckg_col
line_col - цвет линий и стрелок на кнопках
redraw - индикатор необходимости перерисовки управляемой области учитывая изменение position и cur_area
delta2 - индикатор захвата фокуса скроллбаром (удержание бегунка)
all_redraw - флаг устанавливаемый в 1 для перерисовки всего компонента, если поставить 0, то перерисовка происходит только для области бегунка. Введено для ускорения отрисовки, поскольку не во всех случаях требуется принудитеьно отрисовывать все части компонента. Когда вызывается по событию мыши всегда отрисовывается самим компонентом со значением 0.
ar_offset - величина смещения при однократном нажатии боковой кнопки.

Остальное используется для внутренних потребностей компонента.

В примере приведен лишь вариант для статичной cur_area в реальном приложении величины: max_area, cur_area и position естественно могут меняться, при этом в некоторых случаях нужно вызывать принудительную отрисовку.


Вернуться к началу
   
СообщениеДобавлено: Ср фев 25, 2009 11:38 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 751
все работает, не хватало картинки для кнопок: reload_16x16_8b.bmp,
а параметры посмотрю позже


Вернуться к началу
СообщениеДобавлено: Сб мар 07, 2009 8:16 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 751
Возникли вопросы по использованию меню:
1 Как быть если меню накрывает кнопку ? При "не удачном" нажатии программа выполняет действия на меню и на нижнюю нажатую кнопку ...
2 Как при автоматической перерисовке меню учесть параметры скина ? Я пока делаю общую перерисовку окна после нажатия каждого пункта меню, но чувствую что это не правильно ...


Вернуться к началу
СообщениеДобавлено: Сб мар 07, 2009 8:42 pm 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
при отрисовке меню удаляй кнопки под ним(до отрисовки меню) и при закрытии создай заново... или в обработчиках кнопок сделай если меню активно то не обрабатывать нажатие


Вернуться к началу
СообщениеДобавлено: Сб мар 07, 2009 11:16 pm 
IgorA
Цитата:
1 Как быть если меню накрывает кнопку ? При "не удачном" нажатии программа выполняет действия на меню и на нижнюю нажатую кнопку ...

а) Если кнопка работает через функцию 8, то поможет удаление и переопределение конкретных срабатывающих кнопок. При этом поскольку внешний вид восстанавливается, то перерисовывать картинку не нужно.
б) Чтобы исключить влияние на другие элементы, которые реализованы в самой программе через событие мыши (например тот же DinamicButon), то нужно не обрабатывать текущий случай для мыши, а обрабатывать только следующий.
Вообще разведение логики среди элементов управления это отдельная задача, иногда приходится поломать голову.
Цитата:
2 Как при автоматической перерисовке меню учесть параметры скина ? Я пока делаю общую перерисовку окна после нажатия каждого пункта меню, но чувствую что это не правильно ...

Я не совсем понял как возникла твоя ситуация.

Если у тебя в процессе работы приограммы поменялся системный скин, то естественно надо корректировать при полной перерисовке окна координаты в:
Код:
.x:
.size_x                 dw 0 ;+4
.start_x                dw 0   ;+6 <----вот это
.y:
.size_y                 dw 0   ;+8
.start_y                dw 0  ;+10 <---- и вот это

а также координаты развернутой части меню:
Код:
.x1:
.size_x1                dw 0  ;+32
.start_x1               dw 0   ;+34 <----вот это
.y1:
.size_y1                dw 0   ;+36
.start_y1               dw 0  ;+38 <---- и вот это


Код работает с абсолютными координатами и все в руках программиста.


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 371 сообщение ]  На страницу 1 2 3 4 525 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB