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

Discussing libraries simplifying applications development
  • Pathoswithin, ты дурачка решил включить что ли?
    Поломались все использующие editbox. Просто те, что находятся в сборке, обновляются со следующей ревизией вместе с BoxLib.

    За последнее время уже не первый раз ломается обратная совместимость странно, все от одного автора, наверно совпадение
    Из-за сжатия, пустые байты на размер не влияют.
    А чего же ты тогда переживаешь из-за этого?
    Экономия 12 байт в структуре стоит дополнительных 32 байта в коде
    А потом ты внезапно предлагаешь просто взять и вкомпилировать код EitBox-а в само приложение - это уже взаимоисключающие параграфы.
    Не, я тебе ничего не предлагаю. Это сделаю я у себя, чтобы поменьше зависеть от необдуманных действий всякой школоты.
  • 0CodErr, ты дурачка решил включить что ли?
    Назови не свою программу, которая поломалась.
    Назови конкретно, где поломалась обратная совместимость.
    Действительно, почему я должен переживать из-за того, что школота не умеет использовать макросы... и вообще include. Я твою программу молча починил и оптимизировал, вот и ты делай что хочешь: чини что хочешь, жалуйся администрации - твоё дело.
  • Pathoswithin wrote:Назови не свою программу
    Решил на личности перейти?
    А я тебе ещё раз скажу
    Поломались все использующие editbox. Просто те, что находятся в сборке, обновляются со следующей ревизией вместе с BoxLib.
    Я твою программу молча починил
    Чинить надо было BoxLib. Ты только время потратил.
  • Ребят. Не разводите холивар и не нужно дрочить на байты, рабочие программы важнее.

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

    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
    и затирает данные. Другой вариант решения, это не использовать эти поля, если не установлен флаг. Но, как я думаю, первый вариант всё же лучше.
  • Pathoswithin wrote:0CodErr
    Что исправлять? Поломались RunOD, GenFiles, fNav... странно, все от одного автора, наверно совпадение...
    Из-за сжатия, пустые байты на размер не влияют. Если уж на то пошло, в RunOD я сэкономил байт 160. А потом ты внезапно предлагаешь просто взять и вкомпилировать код EitBox-а в само приложение - это уже взаимоисключающие параграфы.
    Я думаю, администрация с удовольствием облила бы говном архитектуру boxlib, а в остальном, администрация молчит - администрация не против.
    Администрация, во-первых, культурная, а во-вторых, считает, что разглагольствования на форуме ничему не помогут. По существу - API у box_lib сделано неправильно, "структура" с данными компонента должна иметь размер 4 байта и содержать один указатель. В крайнем случае можно ещё включить поля, смысл которых железобетонно меняться не будет и которые полезны использующему коду, вроде координат в окне. Указатель на данные должна выделять сама box_lib, которая знает, что ей нужно. А так, как сделано, - совместимость обречена периодически ломаться.
    Сделаем мир лучше!
  • В принципе, и сейчас можно добавить функцию CreateEditbox, которая будет делать инициализацию и возвращать указатель на структуру, только существующим программам это не поможет. Меня больше всего удивляет экспортируемый параметр "версия" - какой от него толк? Вместо него можно было экспортировать размер структуры, это обеспечило бы совместимость для неассемблерных программ.
  • /me предлагает жить дружно, но по законам программирования для каждого языка

    Идеальных решений пока не изобрели, языков тоже
  • Предлагаю добавить для EditBox ещё одну функцию, по сути аналогичную edit_box_key
    Чтобы не приходилось так извращаться:
    http://websvn.kolibrios.org/filedetails ... 7#line-108
  • #6965
    Я немного улучшил в EditBox работу ctrl+C\ctrl+V.
    Надо это потестировать.
    Между EditBox-ами работает как задумано.
    Но при вставке из TinyPad или TextEdit текущая длина EditBox(ed_size) почему-то становится на один больше.
    Но вроде это не критично.
  • Заметил такой баг:
    • пишем в EditBox "012345"
      выделяем "12"
      нажимаем End
      нажимаем пробел
    Проверял также предыдущую ревизию #6959.
    Значит, баг был там давно.
  • Есть одно из направлений по улучшению кода box_lib. Дело в том что изначально было 3 файла с макросами для элементов: editbox, checkbox и optionbox, код которых включался в исполняемый файл. Потом из них создали библиотеку box_lib. Подразумевалось что можно использовать эти файлы как отдельные макросы и все целиком в виде библиотеки. Но со временем код много раз менялся и стало невозможным использовать эти макросы отдельно от библиотеки box_lib. А вот файлы макросов остались и новые элементы (подключаемые к библиотеке) по инерции писались в виде макросов.
    Это выглядит не красиво и захламляет код, логичнее было-бы сделать коды элементов в файлах *.asm, и если элемент нужен в библиотеке просто делаем include для файла. Если не нужен элемент то не делаем include. А писать в коде кучу макросов вида: use_элемент_n-й_мышь, use_элемент_n-й_клавиатура, use_элемент_n-й_рисование и делать подключение файла с макросом *.mac не хорошо. Я когда-то исправил некоторые файлы а остальные остались не доделанными.
  • #6968
    Добавил обработку Ctrl+X в EditBox.
  • 0CodErr wrote:#6968
    Добавил обработку Ctrl+X в EditBox.
    Это круто и большой лайк.
    Из хаоса в космос
  • Who is online

    Users browsing this forum: No registered users and 4 guests