Board.KolibriOS.org
http://board.kolibrios.org/

box_lib.obj - библиотека gui компонентов
http://board.kolibrios.org/viewtopic.php?f=24&t=1220
Page 9 of 27

Author:  IgorA [ Fri Sep 17, 2010 7:20 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

В ревизии 1619 добавил новую функцию edit_box_set_text

При изменении текста в edit_box-е програмным путем нужно делать изменение параметров size (размер теста) и pos (позиция курсора). Это не всегда бывает удобно, потому я решил ввести данную функцию.

Эта функция копирует текст из указателя в текстовое поле. Если текст в указателе окажется длиннее чем допустимый в элементе edit_box, то он запишется не весь. После вызова данной функции необходимо перерисовать окно функцией edit_box_draw, иначе изменения будут сразу не видны. Пример использования:
Code:
   push dword buf
   push dword edit1
   call dword [edit_box_set_text]
.........
buf db '111-222-333',0

где edit1 - структура элемента edit_box; buf - буфер, в котором содержится устанавливаемый текст.


Вопрос с графическим буфером решил отложить на неопределенное время.

Author:  <Lrz> [ Tue Oct 12, 2010 3:01 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

SVN 1657 Новая версия checkbox. Переписан, оптимизирован, комментарии почти к каждой строке. Изменена строка данных checkbox, появилась возможность построение прямоугольных checkbox'ов, работает со строками ASCIIZ. В ближайшее время будет перенесен код в trunk.

Author:  <Lrz> [ Fri Oct 15, 2010 10:33 am ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

SVN 1661 Релиз кандидат checkbox. Код готов к перемещению в trunk.
Что нового:
1) Checkbox может быть любого размера прямоугольником, квадратом. (Раньше только квадратом).
2) Уменьшен объем кода и реализовано описание почти каждой инструкции.
3) Появился код инициализации компонента.
4) Поддержка ASCIIZ строк в подписях checkbox.(Раньше нужно было указывать количество символов в строке).
5) Написаны макросы, которые работают с группой checkbox, это инициализация группы checkboxes (init_checkboxes), проверки мышки (checkboxes_mouse), нарисовать в окне (checkboxes_draw) макросы принимают в качестве параметров начало структуры и конец.

Необходимо все приложения использующие данный компонент модифицировать. Структура данных checkbox изменена.

Attachments:
File comment: Новый checkbox
new_checkbox.png
new_checkbox.png [ 3.74 KiB | Viewed 3091 times ]

Author:  Mario [ Fri Oct 15, 2010 10:58 am ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

<Lrz>
Может быть пока стоит включить новый чекбокс как еще один компонент, чтобы не нужно было резко переделывать все программы. Все же большой объем работы, а выбросить потом после переделки старый чекбокс всегда можно успеть.

Author:  <Lrz> [ Mon Nov 01, 2010 11:30 am ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

SVN 1682 Код checkbox2 доступен из основной библиотеки box_lib. Сейчас в библиотеке доступны 2 версии, 1-я и 2-я. Я рекомендую использовать 2-ю версию для написания ваших программ. 1-я версия будет удалена.

Author:  IgorA [ Fri Dec 10, 2010 1:39 am ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

Ревизия 1715 исправление глюка в новой версии checkbox (при нажатии мышкой менялся не тот бит в поле flags)
Ревизия 1720 немного доработал функцию init_checkbox2

Author:  lev [ Thu Feb 03, 2011 10:16 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

При наличии выделения в EditBox'е, клавиша BackSpace срабатывает неправильно.
Мой вариант правок файла editbox.mac:
Code:
;--- нажата клавиша backspace ---
edit_box_key.backspace:
        test    word ed_flags,ed_shift_on
        jne     edit_box_key.delete
        ; проверяем, курсор у левого края?
        mov     ecx,ed_pos
        test    ecx,ecx
        jnz     edit_box_key.del_bac
        popad
        ret     4

Сначала проверяем наличие выделения и, если оно есть, передаём обработку в Delete, которое работает так как нам надо.

Author:  Mario [ Fri Feb 04, 2011 6:09 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

lev
Ты оттестировал измененный код на реальном приложении?

Author:  lev [ Fri Feb 04, 2011 6:34 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

Тестировал на паре-тройке приложений использующих EditBox в KlbrInWin и Qemu.
У меня работает как надо. Код самого Delete мне не очень нравится, по моему поверхностному анализу, он сначала убивает первый символ, а уже затем добивает остаток выделенного блока, но итоговый результат правильный, поэтому можно и не править.
[off]Сегодня получил доступ на svn, и если примерно к полуноночи не поступит возражений, залью правку. Будем потом откатывать :)[/off]

Author:  Mario [ Fri Feb 04, 2011 6:49 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

Главное, чтобы внесенные изменения не вызвали непредвиденных результатов в других случаях, например когда Shift зажат или еще что-нибудь. Будешь потом сам выправлять. :mrgreen:

Author:  lev [ Fri Feb 04, 2011 7:21 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

Да там и так ещё своих остаётся :) Просто BackSpace при наличии выделения я часто-часто использую и этот баг мне чуток надоел.
Например, попробуйте выделить последний символ и нажать Shift+Del...

Author:  IgorA [ Mon Aug 22, 2011 4:41 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

ревизия 2102
В элементе t_edit новый формат файлов синтаксиса. Добавлена возможность задавать подавляющий символ, для более правильного отображения строк. Например в синтаксисе C++ теперь правильно будет выделяться цветом такой текст:
Code:
char t1[]="aaa\"bbb";
char t2[]="ccc";

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

Author:  IgorA [ Tue Aug 23, 2011 10:24 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

Добавил на вики описание PathShow http://wiki.kolibrios.org/wiki/Box_lib_pathshow/ru
Только не понял что означают параметры
Code:
.text_pointer dd openfile_pach   ;+28
.work_area_pointer dd text_work_area   ;+32

потому их не описал.

Author:  Mario [ Tue Aug 23, 2011 10:58 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

Спасибо! :)

.text_pointer указатель на область данных с исходной строкой символов.
.work_area_pointer указатель на область данных, где будет сформирована выводимая строка символов.

З.Ы. Причем PathShow_prepare нужно вызывать лишь один раз, если исходный текст не меняется, а если меняется то каждый раз после изменения. Соответсвенно PathShow_draw вызывается при каждой перерисовке.

Author:  IgorA [ Wed Aug 24, 2011 1:57 pm ]
Post subject:  Re: box_lib.obj - библиотека gui компонентов

Пожалуйста, и одну свою программу я добавил на вики, потому решил заодно и элемент PathShow внести.
Mario wrote:
.work_area_pointer указатель на область данных, где будет сформирована выводимая строка символов

Я так и догадывался, но в программе на которой я тестировал этот элемент функцию PathShow_prepare вызвал только 1 раз при запуске. В результате показывался всегда один и тот же текст. Потому и возникли сомнения насчет назначения параметров.
И еще вопрос мне кажется в какой-то программе была обводка вокруг текста в PathShow, или может я перепутал его с текстовым полем edit?

Page 9 of 27 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/