Page 9 of 29

Re: box_lib.obj - библиотека gui компонентов

Posted: Fri Sep 17, 2010 7:20 pm
by IgorA
В ревизии 1619 добавил новую функцию edit_box_set_text

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

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

Code: Select all

	push dword buf
	push dword edit1
	call dword [edit_box_set_text]
.........
buf db '111-222-333',0
где edit1 - структура элемента edit_box; buf - буфер, в котором содержится устанавливаемый текст.
Вопрос с графическим буфером решил отложить на неопределенное время.

Re: box_lib.obj - библиотека gui компонентов

Posted: Tue Oct 12, 2010 3:01 pm
by <Lrz>
SVN 1657 Новая версия checkbox. Переписан, оптимизирован, комментарии почти к каждой строке. Изменена строка данных checkbox, появилась возможность построение прямоугольных checkbox'ов, работает со строками ASCIIZ. В ближайшее время будет перенесен код в trunk.

Re: box_lib.obj - библиотека gui компонентов

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

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

Re: box_lib.obj - библиотека gui компонентов

Posted: Fri Oct 15, 2010 10:58 am
by Mario
<Lrz>
Может быть пока стоит включить новый чекбокс как еще один компонент, чтобы не нужно было резко переделывать все программы. Все же большой объем работы, а выбросить потом после переделки старый чекбокс всегда можно успеть.

Re: box_lib.obj - библиотека gui компонентов

Posted: Mon Nov 01, 2010 11:30 am
by <Lrz>
SVN 1682 Код checkbox2 доступен из основной библиотеки box_lib. Сейчас в библиотеке доступны 2 версии, 1-я и 2-я. Я рекомендую использовать 2-ю версию для написания ваших программ. 1-я версия будет удалена.

Re: box_lib.obj - библиотека gui компонентов

Posted: Fri Dec 10, 2010 1:39 am
by IgorA
Ревизия 1715 исправление глюка в новой версии checkbox (при нажатии мышкой менялся не тот бит в поле flags)
Ревизия 1720 немного доработал функцию init_checkbox2

Re: box_lib.obj - библиотека gui компонентов

Posted: Thu Feb 03, 2011 10:16 pm
by lev
При наличии выделения в EditBox'е, клавиша BackSpace срабатывает неправильно.
Мой вариант правок файла editbox.mac:

Code: Select all

;--- нажата клавиша 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, которое работает так как нам надо.

Re: box_lib.obj - библиотека gui компонентов

Posted: Fri Feb 04, 2011 6:09 pm
by Mario
lev
Ты оттестировал измененный код на реальном приложении?

Re: box_lib.obj - библиотека gui компонентов

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

Re: box_lib.obj - библиотека gui компонентов

Posted: Fri Feb 04, 2011 6:49 pm
by Mario
Главное, чтобы внесенные изменения не вызвали непредвиденных результатов в других случаях, например когда Shift зажат или еще что-нибудь. Будешь потом сам выправлять. :mrgreen:

Re: box_lib.obj - библиотека gui компонентов

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

Re: box_lib.obj - библиотека gui компонентов

Posted: Mon Aug 22, 2011 4:41 pm
by IgorA
ревизия 2102
В элементе t_edit новый формат файлов синтаксиса. Добавлена возможность задавать подавляющий символ, для более правильного отображения строк. Например в синтаксисе C++ теперь правильно будет выделяться цветом такой текст:

Code: Select all

char t1[]="aaa\"bbb";
char t2[]="ccc";
Программы использующие t_edit пострадать не должны, потому что все делается внутри функций библиотеки. Единственное что им будут нужны новые файлы синтаксиса, которые я тоже поменял.

Re: box_lib.obj - библиотека gui компонентов

Posted: Tue Aug 23, 2011 10:24 pm
by IgorA
Добавил на вики описание PathShow http://wiki.kolibrios.org/wiki/Box_lib_pathshow/ru
Только не понял что означают параметры

Code: Select all

.text_pointer dd openfile_pach	;+28
.work_area_pointer dd text_work_area	;+32
потому их не описал.

Re: box_lib.obj - библиотека gui компонентов

Posted: Tue Aug 23, 2011 10:58 pm
by Mario
Спасибо! :)

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

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

Re: box_lib.obj - библиотека gui компонентов

Posted: Wed Aug 24, 2011 1:57 pm
by IgorA
Пожалуйста, и одну свою программу я добавил на вики, потому решил заодно и элемент PathShow внести.
Mario wrote:.work_area_pointer указатель на область данных, где будет сформирована выводимая строка символов
Я так и догадывался, но в программе на которой я тестировал этот элемент функцию PathShow_prepare вызвал только 1 раз при запуске. В результате показывался всегда один и тот же текст. Потому и возникли сомнения насчет назначения параметров.
И еще вопрос мне кажется в какой-то программе была обводка вокруг текста в PathShow, или может я перепутал его с текстовым полем edit?