OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Сентябрь, 2023 00:48

Часовой пояс: UTC + 3 часа


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему  [ Сообщений: 603 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 31  След.
Автор Сообщение
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 01 Июнь, 2023 20:31 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
я вообще почти всю эту копипасту из StdWindows убрал. кое-что перенёс прямо в Windows (типа StdTrack, StdWheel, и ты пы). реально в StdWindows осталась только работа с HostBackends. потому что оно примерно так и должно быть: более-менее высокоуровневая логика окон не должна быть привязана к бэкэндам.

но я не уверен, как это будет работать с MDI: я пока даже gtk-бэкэнд не портировал, а MDI и тем паче. вообще, MDI очень мешает, он не нужен. то есть, вам-то нужен для совместимости, а я таки выкину, видимо. не знаю ни одного человека, который был бы доволен MDI-версией, и предпочёл бы её тайлам. ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 01 Июнь, 2023 20:53 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
так. сейчас будет смертельный номер! знаменитый акробат нашего цирка прыгнет из-под купола вниз головой в бетон! без страховки! бетон настоящий!

короче, сейчас закрою последний рабочий экземпляр старого LC (который до переделок окон, и в котором я их переделывал), и перелезу на новозапиленый. надеюсь, оно упадёт хотя бы не сразу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 01 Июнь, 2023 20:57 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
о. и сразу прелесть: я где-то таки облажался с локаторами, похоже: окна потеряли связь с дисковыми файлами. смотреть моги, схоронять не моги. а мог бы проверить до закрытия, однако. хороший бетон оказался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 01 Июнь, 2023 22:07 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
ура, все бэкэнды собрались. но ни один кроме LinX11 не работает, все падают, гыг. WinMDI падает очень забавно: успевает открыть главное окно и лог (из конфига, видимо), а потом делает БРЯК!

ну, я расширил необходимое API для бэкэндов и окон, и нигде новое не реализовал кроме X11, так что в принципе понятно, почему падает.

вообще, gtk-бэкэнд надо выкидывать, в нём больше и смысла-то никакого нет. но как-то жаль беднягу…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 01 Июнь, 2023 22:28 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
…и на удивление — первым заработал самый ненужный MDI-бэкэнд. гыг. gtk и win-tiled всё ещё падают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 01 Июнь, 2023 22:38 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
затолкал текущий вариант в репу. он далеко не финальный, и вообще ничего кроме LinX11 толком не работает, но пуркуа бы и да.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 02 Июнь, 2023 01:00 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
да блин! ищем баги в вин-бэкэнде, пыхтим. вайн делает троллфэйс. а вы знали, знали, что если в вайне открыть два окна со стилем "always on top", то мышиные события получает не то, которое в фокусе, а то, которое последним было открыто, знали? вот и я не знал.

кстати, этот стиль надо только для isTool ставить, а не всем диалогам подряд.

p.s.: там смешнее даже: онтопы получают события начиная с последнего открытого, и дальше по списку, с проверкой попадания внутрь. а какое окно в фокусе — это вайн совершенно не заботит, вайн художник, он так видит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 03 Июнь, 2023 04:12 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
запилил загрузчик PNG и поддержку png-растров в LinX11. пока что особо не тестировал загрузчик на фильтрах и interlacing (поддержка есть, но фиг знает, как она там работает).

ах, да. zlib тянуть не надо: там своя надувалка. очень медленная, зато маленькая и своя. порт вот этой прелестной штучки (самой первой версии, я только когда стал искать ссылку, узнал, что у неё апдейты были).

порт немножко более продвинутый, чем оригинал: ему нужен колбэк «читать байты», и из него тоже можно байты добывать в любом количестве за раз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 03 Июнь, 2023 07:59 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
выкинул нафиг все упоминания GDI+ в Host/Win. рисовалку я всё равно потом привинчу туда нормальную (как только пойму, как в идиотской винде рисовать шрифты в память), а пинги я теперь умею декодировать самостоятельно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 03 Июнь, 2023 11:15 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
ну и заодно упёр из A2 рескалеры: простой и билинейный. так что интерфейс растров на LinX11 теперь реализован полностью. вот вам скрин с билинейным рескалером, а чо бы и да. не идеально — зато дёшево и сердито.


Вложения:
2023_06_03_11_13_51_605x660.png
2023_06_03_11_13_51_605x660.png [ 44.52 КБ | Просмотров: 1113 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Воскресенье, 04 Июнь, 2023 14:33 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
ради спортивного интереса засунул пинг: width: 8243; height: 11892. оно таки смогло, хотя и декодировало несколько секунд.

p.s.: и даже справилось с interlaced image.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 05 Июнь, 2023 03:24 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
кстати, чисто по приколу: вот так drag-n-drop в диалоге открытия файла красившее выглядит.

всё стандартными средствами BBCB, никакого глубокого копания в потрохах. открываем буфер, делаем SaveRect, рисуем, закрываем буфер. потом открываем, делаем RestoreRect, схороняем с нового места, рисуем. открывать/закрывать буфер надо чтобы не было противного моргания — в момент получения сообщения о мышке у нас отрисовка давно закончена, двойная буферизация выключена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 05 Июнь, 2023 04:04 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
кстати. таким же образом можно рисовать попапы от комбо-боксов, без оверлеев. идеологически это будет более правильно: фрэймворк ожидает, что при открытии попапа мы уходим в цикл выбора, из которого возвращаемся только когда попап закрыт. и порядок notifications хочет именно такой (я тут выше где-то писал об этом). с одной стороны я сейчас в CFrames просто вешаю оверлей и обрабатываю его события штатно. а с другой — можно точно то же самое сделать и без оверлея.

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

по сути, оверлей — это попап-окно поверх текущего окна. при этом оверлей для документа может быть только один, и ровно одного типа: который съедает все сообщения от мыши и клавы.

если подумать, то на самом деле это огрызок системы popup notifications, где оные оверлеи нужно иметь возможность открывать в количестве, и давать им выбор: или жрать все сообщения, или только мышь, когда она в границах попапа. таким образом мы сможем делать и всякие прикольные notifications в документах (в том числе с альфа-каналом, потому что технически LC позволяет блитать картиночки с альфой), и попапы.

хотя по уму, попапы надо делать вообще отдельными окнами host OS — чтобы они не были ограничены размером текущего окна. а то если у нас форма с одним комбо, например, по высоте как раз чтобы комбо влез — то попапу от комбо просто негде открыться, он и будет однострочным. работоспособно, но неудобно. в винде для этого используется стандартный виндокотрол, и в других местах TrackPopupMenu. а у нас на невинде такого трекера нет. а хочется.

в принципе, у меня в LC есть механика модальных окон: когда активно модальное окно, то запускается Loop.LoopModal, который почти обычный цикл обработки сообщений, но с некоторыми нюансами. нюанс такой, что в нём крутятся только immediate и insistent actions, и ещё система не посылает сообщения о юзерской активности и перерисовке никаким окнам кроме модального. i can get away with this, потому что у меня каждое окно имеет задний буфер; таким образом когда host OS просит нарисовать окно — я не посылаю ему сообщения, а просто блитаю кусок готового заднего буфера. соответственно, нет риска, что всё изменится, пока модал активен. там ещё небольшие патчи в Controllers для этого, но в целом оно вот так. фильтрация сообщений сделана на уровне бэкэнда, натурально. (кстати, input-цикл тоже фильтрует сообщения тем же механизмом; поэтому в таком цикле LC нормально реагирует на запросы отрисовки от системы).

так я к чему. попапы надо делать той же механикой, мне кажется. в иксах — используя override redirect, как и делают все тулкиты. это позволит нам использовать для кода попапов обычную механику views, с обычной отрисовкой и обработкой сообщений — но попапы больше не будут ограничены родительским окном. главное меню оставить на оверлеях пока (там много переделывать иначе), но добавить в бэкэнд штатный апи типа `TrackPopupMenu()`. на винде его можно делать через вызов оси, а на линуксах эмулировать ручками через механику модалов, например. в идеале, конечно, этот же апи надо и для главного меню использовать — тогда мы сможем без особых напрягов получить вложеные менюшки, например. а линейка главного меню останется обычным встраиваемым bar-ом.

у меню на оверлеях, впрочем, есть одно большое достоинство: оно не блокирует никакие actions. но это решаемо и в моём варианте: у меня в модалах предусмотрена возможность разрешить не только insistent, а все. также меню на оверлеях вызывает нормальные перерисовки окон через `Restore()` — и тут я не уверен, плюс это или минус.

вообще, идея такого верхнего меню довольно чужеродна для оберон-систем — поэтому оно так фигово впиховывается в BBCB; я так-то не очень уверен, что оно нужно именно в таком виде. возможно, его лучше сделать особым видом попап-меню, которое вызывается по другой кнопке, например (и вертикальным). омики в своё время его запилили чтобы выглядеть «нативно», но это давно уже не жёсткое требование.

p.s.: и, кстати, заодно сделать нормальный апи для регистрации как system-wide hotkeys, так и window hotkeys. чтобы можно было без меню их регистрировать, получать список, и ты пы. а меню пусть пользуется этим механизмом. тогда во многих случаях главное меню вообще можно в приложении не делать; или делать, но не подвязывать к нему хоткеи.

натурально, подвязывание хоткеев к меню имеет одно большое достоинтсво: discoverability. юзер посмотрел меню — там хоткеи написаны. но мне кажется, что всё-таки стоит разделить низкоуровневый механизм хоткеев, и высокоуровневую сущность типа менюшки. а то сейчас кадавр какой-то получается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 05 Июнь, 2023 07:19 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
запилил идею вот отсюда.

также в этом коммите (и окружающих) ещё одна идея: секвенсор теперь можно попросить (через сообщение, так что никаких новых апи, гыг) не вести undo-историю. при этом весь остальной код по-прежнему использует обычное апи для операций, и они исполняются, просто секвенсер после исполнения выкидывает их за дверь. полезно, например, для StdLog: ему в пень не сдалось undo, только память зря занимает. в текстовую модель я докинул маленьких оптимизаций на этот случай, но в принципе оно нафиг не надо: обычная текстовая модель как работала — так и будет работать, безо всяких изменений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 05 Июнь, 2023 10:40 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
совершенно не понимаю, почему контейнеры контроллеру в `PasteChar()`, `ArrowChar()`, `ControlChar()` не передают модификаторы. контейнер их знает, но не даёт. и попробуй проверь в контроллере: там был shift+enter, например, ctrl+enter, и ты пы? вообще, я уже не раз говорил, что оберонщики лютой ненавистью ненавидят клавиатуры и мечтают, чтобы клавиатуры исчезли. а пока не исчезли — хотя бы по максимуму затруднят работу с клавиатурой.

добавил в контейнеры методы с "2" (`PasteChar2()`, и так далее), которые в стандартной реализации тупо вызывают старые. зачем понадобилось: мои расширения текстового редактора вызываются как раз из контроллера. и я хочу, чтобы по enter делался продвинутый autoindent с дополнениями, например, а по shift+enter — обычный. как различить? а никак! контейнер, зараза, эту информацию зажал.

ну, и в других местах может пригодиться, конечно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 05 Июнь, 2023 14:27 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
кстати. до Зоркого Глаза только дошло. а ведь у LC всегда есть абсолютно валидный задний буфер — нет вообще никакой нужды в обработчике сообщения Expose пинать перерисовку окна! все изменения накопятся и отрисуются на очередном обороте цикла обработки сообщений, а в Expose можно просто блитать задний буфер и не париться. и меньше работы, и даже правильней выглядит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Среда, 07 Июнь, 2023 05:36 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
ну и раз уж LC теперь умеет нормально читать пинги… само собой, там сразу появилась Зан.
Вложение:
2023_06_07_05_41_39_1536x960.png
2023_06_07_05_41_39_1536x960.png [ 212.93 КБ | Просмотров: 795 ]
на всех треках она потому что реально, как понимаете, Зан виндно только на Aux, User-то занят. ;-)
картинка в оригинале не такая тусклая, кстати, я её немного обрабатываю после загрузки. как раз и новый модуль Colors пригодился.

также добавил команд для переключения между полезными окнами (лог, скратч, активное на юзертреке). вообще, надо пойти в StdGrids и заняться там непотребством. а то я набыстрохачил туда кривоапей, стыдоба. дочинить уже баги, сделать нормальный райдер для инспектирования треков и их содержимого, такое вот.

кстати, и перевесил ctrl+w на другую команду, которая не позволит закрыть лог или скратч. смысла их закрывать нет. но если очень хочется — то среднеклац на табе закроет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 08 Июнь, 2023 01:42 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 586
Цитата:
...там сразу появилась Зан...

хосспыдя, что у дизайнера промеж ушей?! Шипы по кругу на бицепсах с 3-им размером ж несовместимы (в смысле с жизнедеятельностью) ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 08 Июнь, 2023 04:14 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
ну ёлы, девушка же очевидно позирует в специальном костюме для фото. естественно, в процессе раздачи она выглядит как-то так. ну, и если присмотреться, то видно, что шипы там вовсе не по кругу, они вполне чётенько только на внешней стороне. так что даже «костюм для съёмок» не совсем такая лажа.


Вложения:
CZANA1.png
CZANA1.png [ 66.64 КБ | Просмотров: 698 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 08 Июнь, 2023 15:05 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1105
спёр из оберона декодер жопегов. заодно сделал в Raster детектор форматов, так что StdRasters может теперь хранить пинги или жопеги, оно там разберётся. потом ещё bmp докину и tga (потому что мне надо).

как обычно, картинка. картинка авторская, автор няша, но хрен к ней достучишься чтобы спросить, можно ли. а мне нравится, поэтому вот. это downscale на лету, оригинал больше и красившее.

для открытия картинок вот такие коммандеры:
^Q`KthTestImgLoad.Deposit('', 'acatwithagun_poster.png'); StdCmds.Open`
^Q`KthTestImgLoad.Deposit('/home/ketmar/.screenshots/', 'imgyznuY9zl67iAGiD2Lsfn.jpeg'); StdCmds.Open`

дальше делается обычный файловый Reader, который и передаётся:
img := RasterImages.Load(rd, ^fmt);

получаем на выходе RGBA, размеры и DPI.


Вложения:
2023_06_08_15_01_01_970x806.png
2023_06_08_15_01_01_970x806.png [ 658.2 КБ | Просмотров: 669 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 603 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 31  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2023, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB