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

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

    Необходимо все приложения использующие данный компонент модифицировать. Структура данных checkbox изменена.
    Attachments
    Новый checkbox
    new_checkbox.png (3.74 KiB)
    Новый checkbox Viewed 6624 times
  • <Lrz>
    Может быть пока стоит включить новый чекбокс как еще один компонент, чтобы не нужно было резко переделывать все программы. Все же большой объем работы, а выбросить потом после переделки старый чекбокс всегда можно успеть.
  • SVN 1682 Код checkbox2 доступен из основной библиотеки box_lib. Сейчас в библиотеке доступны 2 версии, 1-я и 2-я. Я рекомендую использовать 2-ю версию для написания ваших программ. 1-я версия будет удалена.
  • Ревизия 1715 исправление глюка в новой версии checkbox (при нажатии мышкой менялся не тот бит в поле flags)
    Ревизия 1720 немного доработал функцию init_checkbox2
  • При наличии выделения в 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, которое работает так как нам надо.
  • lev
    Ты оттестировал измененный код на реальном приложении?
  • Тестировал на паре-тройке приложений использующих EditBox в KlbrInWin и Qemu.
    У меня работает как надо. Код самого Delete мне не очень нравится, по моему поверхностному анализу, он сначала убивает первый символ, а уже затем добивает остаток выделенного блока, но итоговый результат правильный, поэтому можно и не править.
    [off]Сегодня получил доступ на svn, и если примерно к полуноночи не поступит возражений, залью правку. Будем потом откатывать :)[/off]
  • Главное, чтобы внесенные изменения не вызвали непредвиденных результатов в других случаях, например когда Shift зажат или еще что-нибудь. Будешь потом сам выправлять. :mrgreen:
  • Да там и так ещё своих остаётся :) Просто BackSpace при наличии выделения я часто-часто использую и этот баг мне чуток надоел.
    Например, попробуйте выделить последний символ и нажать Shift+Del...
  • ревизия 2102
    В элементе t_edit новый формат файлов синтаксиса. Добавлена возможность задавать подавляющий символ, для более правильного отображения строк. Например в синтаксисе C++ теперь правильно будет выделяться цветом такой текст:

    Code: Select all

    char t1[]="aaa\"bbb";
    char t2[]="ccc";
    Программы использующие t_edit пострадать не должны, потому что все делается внутри функций библиотеки. Единственное что им будут нужны новые файлы синтаксиса, которые я тоже поменял.
  • Добавил на вики описание 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
    потому их не описал.
  • Спасибо! :)

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

    З.Ы. Причем PathShow_prepare нужно вызывать лишь один раз, если исходный текст не меняется, а если меняется то каждый раз после изменения. Соответсвенно PathShow_draw вызывается при каждой перерисовке.
  • Пожалуйста, и одну свою программу я добавил на вики, потому решил заодно и элемент PathShow внести.
    Mario wrote:.work_area_pointer указатель на область данных, где будет сформирована выводимая строка символов
    Я так и догадывался, но в программе на которой я тестировал этот элемент функцию PathShow_prepare вызвал только 1 раз при запуске. В результате показывался всегда один и тот же текст. Потому и возникли сомнения насчет назначения параметров.
    И еще вопрос мне кажется в какой-то программе была обводка вокруг текста в PathShow, или может я перепутал его с текстовым полем edit?
  • Who is online

    Users browsing this forum: No registered users and 11 guests