Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Feb 20, 2020 9:18 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 400 posts ]  Go to page Previous 17 8 9 10 1127 Next
Author Message
PostPosted: Fri Sep 17, 2010 7:20 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 814
В ревизии 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 - буфер, в котором содержится устанавливаемый текст.


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


Top
   
PostPosted: Tue Oct 12, 2010 3:01 pm 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
SVN 1657 Новая версия checkbox. Переписан, оптимизирован, комментарии почти к каждой строке. Изменена строка данных checkbox, появилась возможность построение прямоугольных checkbox'ов, работает со строками ASCIIZ. В ближайшее время будет перенесен код в trunk.


Top
   
PostPosted: Fri Oct 15, 2010 10:33 am 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
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 2763 times ]
Top
   
PostPosted: Fri Oct 15, 2010 10:58 am 
<Lrz>
Может быть пока стоит включить новый чекбокс как еще один компонент, чтобы не нужно было резко переделывать все программы. Все же большой объем работы, а выбросить потом после переделки старый чекбокс всегда можно успеть.


Top
   
PostPosted: Mon Nov 01, 2010 11:30 am 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
SVN 1682 Код checkbox2 доступен из основной библиотеки box_lib. Сейчас в библиотеке доступны 2 версии, 1-я и 2-я. Я рекомендую использовать 2-ю версию для написания ваших программ. 1-я версия будет удалена.


Top
   
PostPosted: Fri Dec 10, 2010 1:39 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 814
Ревизия 1715 исправление глюка в новой версии checkbox (при нажатии мышкой менялся не тот бит в поле flags)
Ревизия 1720 немного доработал функцию init_checkbox2


Top
   
PostPosted: Thu Feb 03, 2011 10:16 pm 
Offline

Joined: Tue Oct 05, 2010 6:05 pm
Posts: 216
При наличии выделения в 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, которое работает так как нам надо.


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


Top
   
PostPosted: Fri Feb 04, 2011 6:34 pm 
Offline

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


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


Top
   
PostPosted: Fri Feb 04, 2011 7:21 pm 
Offline

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


Top
   
PostPosted: Mon Aug 22, 2011 4:41 pm 
Offline
User avatar

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

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


Top
   
PostPosted: Tue Aug 23, 2011 10:24 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 814
Добавил на вики описание 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

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


Top
   
PostPosted: Tue Aug 23, 2011 10:58 pm 
Спасибо! :)

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

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


Top
   
PostPosted: Wed Aug 24, 2011 1:57 pm 
Offline
User avatar

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 400 posts ]  Go to page Previous 17 8 9 10 1127 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited