Page 24 of 29

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

Posted: Fri Nov 11, 2016 12:26 pm
by Pathoswithin
0CodErr
Что исправлять? Поломались RunOD, GenFiles, fNav... странно, все от одного автора, наверно совпадение...
Из-за сжатия, пустые байты на размер не влияют. Если уж на то пошло, в RunOD я сэкономил байт 160. А потом ты внезапно предлагаешь просто взять и вкомпилировать код EitBox-а в само приложение - это уже взаимоисключающие параграфы.
Я думаю, администрация с удовольствием облила бы говном архитектуру boxlib, а в остальном, администрация молчит - администрация не против.

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

Posted: Fri Nov 11, 2016 12:37 pm
by 0CodErr
Pathoswithin, ты дурачка решил включить что ли?
Поломались все использующие editbox. Просто те, что находятся в сборке, обновляются со следующей ревизией вместе с BoxLib.

За последнее время уже не первый раз ломается обратная совместимость странно, все от одного автора, наверно совпадение
Из-за сжатия, пустые байты на размер не влияют.
А чего же ты тогда переживаешь из-за этого?
Экономия 12 байт в структуре стоит дополнительных 32 байта в коде
А потом ты внезапно предлагаешь просто взять и вкомпилировать код EitBox-а в само приложение - это уже взаимоисключающие параграфы.
Не, я тебе ничего не предлагаю. Это сделаю я у себя, чтобы поменьше зависеть от необдуманных действий всякой школоты.

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

Posted: Fri Nov 11, 2016 1:00 pm
by Pathoswithin
0CodErr, ты дурачка решил включить что ли?
Назови не свою программу, которая поломалась.
Назови конкретно, где поломалась обратная совместимость.
Действительно, почему я должен переживать из-за того, что школота не умеет использовать макросы... и вообще include. Я твою программу молча починил и оптимизировал, вот и ты делай что хочешь: чини что хочешь, жалуйся администрации - твоё дело.

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

Posted: Fri Nov 11, 2016 1:11 pm
by 0CodErr
Pathoswithin wrote:Назови не свою программу
Решил на личности перейти?
А я тебе ещё раз скажу
Поломались все использующие editbox. Просто те, что находятся в сборке, обновляются со следующей ревизией вместе с BoxLib.
Я твою программу молча починил
Чинить надо было BoxLib. Ты только время потратил.

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

Posted: Fri Nov 11, 2016 2:05 pm
by Leency
Ребят. Не разводите холивар и не нужно дрочить на байты, рабочие программы важнее.

Pathoswithin
Старайся не ломать обратную совместимость всегда тогда, когда это возможно.
Реально не все юзают макрос, есть программы и на других языках программирования.

0CodErr
Программирование штука такая, что иногда обновление может что-то и заломать. Пожалуйста, просто обнови свои программы.

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

Posted: Fri Nov 11, 2016 2:29 pm
by 0CodErr
Leency, я всего лишь предлагаю изменить в структуре editbox приватные поля, используемые только самим editbox-ом, а не приложением
struc edit_box width,left,top,color,shift_color,focus_border_color,\
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
{
.width dd width
.left dd left
.top dd top
.color dd color
.shift_color dd shift_color
.focus_border_color dd focus_border_color
.blur_border_color dd blur_border_color
.text_color dd text_color
.max dd max
.text dd text
.mouse_variable dd mouse_variable
.flags dd flags+0
.size dd size+0
.pos dd pos+0
.offset dd 0
.cl_curs_x dd 0
.cl_curs_y dd 0
.shift dd 0
.shift_old dd 0

.height dd 0
.char_width dd 0
}
на

Code: Select all

.cl_curs_x  dw  0
.cl_curs_y  dw  0
.shift      dw  0
.shift_old  dw  0
чтобы размер структуры оставался как и прежде

Code: Select all

ed_struc_size=76
а не 84. Потому что сейчас код пишет в новые поля

Code: Select all

.height dd 0
.char_width dd 0
и затирает данные. Другой вариант решения, это не использовать эти поля, если не установлен флаг. Но, как я думаю, первый вариант всё же лучше.

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

Posted: Fri Nov 11, 2016 3:52 pm
by CleverMouse
Pathoswithin wrote:0CodErr
Что исправлять? Поломались RunOD, GenFiles, fNav... странно, все от одного автора, наверно совпадение...
Из-за сжатия, пустые байты на размер не влияют. Если уж на то пошло, в RunOD я сэкономил байт 160. А потом ты внезапно предлагаешь просто взять и вкомпилировать код EitBox-а в само приложение - это уже взаимоисключающие параграфы.
Я думаю, администрация с удовольствием облила бы говном архитектуру boxlib, а в остальном, администрация молчит - администрация не против.
Администрация, во-первых, культурная, а во-вторых, считает, что разглагольствования на форуме ничему не помогут. По существу - API у box_lib сделано неправильно, "структура" с данными компонента должна иметь размер 4 байта и содержать один указатель. В крайнем случае можно ещё включить поля, смысл которых железобетонно меняться не будет и которые полезны использующему коду, вроде координат в окне. Указатель на данные должна выделять сама box_lib, которая знает, что ей нужно. А так, как сделано, - совместимость обречена периодически ломаться.

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

Posted: Fri Nov 11, 2016 10:52 pm
by Pathoswithin
В принципе, и сейчас можно добавить функцию CreateEditbox, которая будет делать инициализацию и возвращать указатель на структуру, только существующим программам это не поможет. Меня больше всего удивляет экспортируемый параметр "версия" - какой от него толк? Вместо него можно было экспортировать размер структуры, это обеспечило бы совместимость для неассемблерных программ.

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

Posted: Fri Nov 11, 2016 11:52 pm
by Siemargl
/me предлагает жить дружно, но по законам программирования для каждого языка

Идеальных решений пока не изобрели, языков тоже

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

Posted: Thu Sep 07, 2017 1:43 am
by 0CodErr
Предлагаю добавить для EditBox ещё одну функцию, по сути аналогичную edit_box_key
Чтобы не приходилось так извращаться:
http://websvn.kolibrios.org/filedetails ... 7#line-108

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

Posted: Fri Sep 08, 2017 11:27 am
by 0CodErr
#6965
Я немного улучшил в EditBox работу ctrl+C\ctrl+V.
Надо это потестировать.
Между EditBox-ами работает как задумано.
Но при вставке из TinyPad или TextEdit текущая длина EditBox(ed_size) почему-то становится на один больше.
Но вроде это не критично.

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

Posted: Fri Sep 08, 2017 2:33 pm
by 0CodErr
Заметил такой баг:
  • пишем в EditBox "012345"
    выделяем "12"
    нажимаем End
    нажимаем пробел
Проверял также предыдущую ревизию #6959.
Значит, баг был там давно.

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

Posted: Fri Sep 08, 2017 10:15 pm
by IgorA
Есть одно из направлений по улучшению кода box_lib. Дело в том что изначально было 3 файла с макросами для элементов: editbox, checkbox и optionbox, код которых включался в исполняемый файл. Потом из них создали библиотеку box_lib. Подразумевалось что можно использовать эти файлы как отдельные макросы и все целиком в виде библиотеки. Но со временем код много раз менялся и стало невозможным использовать эти макросы отдельно от библиотеки box_lib. А вот файлы макросов остались и новые элементы (подключаемые к библиотеке) по инерции писались в виде макросов.
Это выглядит не красиво и захламляет код, логичнее было-бы сделать коды элементов в файлах *.asm, и если элемент нужен в библиотеке просто делаем include для файла. Если не нужен элемент то не делаем include. А писать в коде кучу макросов вида: use_элемент_n-й_мышь, use_элемент_n-й_клавиатура, use_элемент_n-й_рисование и делать подключение файла с макросом *.mac не хорошо. Я когда-то исправил некоторые файлы а остальные остались не доделанными.

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

Posted: Sat Sep 09, 2017 6:28 pm
by 0CodErr
#6968
Добавил обработку Ctrl+X в EditBox.

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

Posted: Sun Sep 10, 2017 2:06 am
by Leency
0CodErr wrote:#6968
Добавил обработку Ctrl+X в EditBox.
Это круто и большой лайк.