OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 19 Апрель, 2024 21:58

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 649 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 33  След.
Автор Сообщение
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 06 Май, 2023 14:49 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
таки впилил WIP-индексатор. категории, правда, не редактируются, и ещё всякие мелочи не допилены — но оно работает: строит индексы, и потом по ним очень быстро ищет. вдобавок оно ещё и простенький язык запросов поддерживает (AND/NOT/OR, такое вот). и даже историю поиска хранит. довольно прикольная штука.

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

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


Вложения:
2023_05_06_14_38_19_882x706.png
2023_05_06_14_38_19_882x706.png [ 30.88 КБ | Просмотров: 1769 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 06 Май, 2023 18:11 

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

короче, суть такова(ц): среда ожидает, что при выскакивании комбо-попапа мы вернёмся из обработчика события не раньше, чем попап закроется. это важно для порядка нотификаторов, они должны быть такими:
Dialogs.pressed
(тут вылез попап, и мы выбираем фигню; потом попап закрылся, и…)
Dialogs.changed (это посылает ctl.Update)
Dialogs.released (это посылает обработчик оригинального сообщения «мышь-почка»)

а поскольку у нас попап теперь оверлей, то мы получаем такое:
Dialogs.pressed
Dialogs.released (потому что мы вернулись из обработчика, запросив оверлей)
Dialogs.changed (это попап-оверлей закрылся)

некоторый код ожидает именно первого порядка, и нифига не работает.

в общем, пришлось сделать хак: расширить Controllers.TrackMsg одним полем специально для контролов, и ввести в `StdCFrames.Frame` метод `MouseDown2 (x, y, mods, VAR dontSendReleased: BOOLEAN)`. и посылать нотификацию `Dialogs.released` вручную, когда попап закрылся.

кстати, заодно вручную посылать и `Dialogs.pressed`, если попап добыли с клавиатуры, а не мышью. чтобы хитрый код не сломался.

в общем, вот такой стрёмный хак вышел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 06 Май, 2023 21:18 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
подумал — и аннигилировал старый код для plain text searching в TextCmds. мой (ну, пусть типа мой, чо) движок регулярок имеет режим "literal", который как раз для plain text search придуман — его и буду использовать. совсем «нерегулярный» поиск убирать нельзя, потому что некоторые модули его пинают. да и не мешает.

продолжаю утверждать, что CpcRegul — жирная картонная фигня, а Srex — мощный и компактный движок для реальных пацанов.


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

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

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

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


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
добавил в StdWindows хуки для Select/Deselect/Close/TitleChange. а также (в этом же коммите) добавил в лин-хост модуль, который запоминает позицию диалога (по заголовку), и при открытии кидает обратно. ну, чуть-чуть окошко моргает (открывается по центру, потом сразу едет куда надо), но это мелочь по сравнению с тем, что идиотский диалог поиска/замены наконец-то не закрывает собой текст.

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


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

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

хук, впрочем, оставил в полном объеме: вдруг пригодится ещё.


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

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

а ещё мне не нравится разделение на Windows и StdWindows. я считаю, что специфичные вещи надо уносить обратно в Host, а остальное добавить в интерфейс Windows. но тут надо сильно думать сначала.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 08 Май, 2023 15:29 

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

для такого пришлось сделать метод `Idle` принадлежностью `StdCFrames.Frame`, и чуть-чуть поправить Controls (чтобы его там везде вызывали). омики сделали Idle только для элементов, которые могут иметь редактор текста (чтобы курсором моргать), а мне тикалка нужна и в других — поэтому сделал, чтобы тикалка была у всех контролов. а чего, мне не жалко: можно будет какие-то анимашки рисовать, если вдруг что.

коммит.

и второй коммит, который делает то же самое в StdFilesBrowser (там эта фича тоже реализована, и i bet опять никто о ней не знает ;-).

p.s.: картинка. вон, в уголке "fiv" набрано.


Вложения:
2023_05_08_15_31_38_454x241.png
2023_05_08_15_31_38_454x241.png [ 4.99 КБ | Просмотров: 1615 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 13 Май, 2023 16:27 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
обожаю жестовые интерфейсы. видео.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 13 Май, 2023 16:52 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
если кому интересно — это помесь протрактора и матчера по дотпродуктам Олега Доперчука, маленько отрихтованая. но вне LC работать не будет, потому что я добавил фильтр сообщений от Controllers в StdWindows. возможно, это можно сделать заменив форвардер, но мне было проще впилить фильтры.


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
эх. никто не хвалит. не любят люди мышерисование, видимо.

fun fact: кажется, так и есть, таких упоротых немного. а я ещё с древней оперы привык, очень удобно. а потом нашёл для винды софтину sensiva (как сейчас помню), где можно было system-wide делать: нарисовал на сетке 16x16 векторами глиф, и потом оно его распознавало. а потом софтина стала совсем платная, и намного хуже. было это примерно двадцать лет назад. тогда я в первый раз попытался сделать распознавалку (и не смог). доходил до fft всяких — но ниасилил, тупой потому что.

если что, под пинусы есть easystroke для system-wide жестов (хотя правильнее их всё-таки называть strokes). там распознавалка на dynamic time warping. довольно сложный и медленный алгоритм, но вполне рабочий. я, может, что-то подобное таки как базу буду использовать: я никуда не спешу, а распознаёт он лучше $P/Protractor, даже с модификациями от Доперчука.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Воскресенье, 14 Май, 2023 13:29 

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

как допилю редактор и прочее — может, закину ещё трактор как альтернативу.


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

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


Вложения:
Комментарий к файлу: editor window
2023_05_14_23_03_53_769x689.png
2023_05_14_23_03_53_769x689.png [ 29.24 КБ | Просмотров: 1331 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 15 Май, 2023 14:16 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
привинтил ещё простенькие настройки распознавалки. правда, тексты не локализовал, лень. ;-)


Вложения:
2023_05_15_14_15_31_266x371.png
2023_05_15_14_15_31_266x371.png [ 7.27 КБ | Просмотров: 1282 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Вторник, 16 Май, 2023 10:07 

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

для виндоверсии ничего не правил, потому что мне лень. впрочем, виндоюзерам к страданиям не привыкать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Вторник, 16 Май, 2023 19:18 

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

p.s.: сделать, что ли, анимашку, чтобы по рисующемуся жесту КРАВИЩА стекала?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Среда, 17 Май, 2023 13:47 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
заодно сделал, чтобы StdStdCFrames использовали скроллбары из Guts. а StdScroller теперь уважает настройку скина «скроллбары слева». скроллбаров на документах это не касается, там свои.


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

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

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

пока модальный диалог активный — вызываются только настойчивые actions (и immediate), так же, как и в `Input()`. тоже плюсик: с системными вызывается ничего.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 19 Май, 2023 12:43 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
добавил экспериментальную возможность объявлять переменные в statseq:
Код:
IF smth THEN
  VAR i: INTEGER;
  …
END

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

в принципе, фича не особо нужная, но: довольно часто бывает, что в цикле/условии сидит изолированый кусок кода, который особого смысла уносить в процедуру нет (например, там несколько строчек, если их уносить — то будут только лишние прыжки по тексту во время чтения глазами); но код более-менее независимый, и удобно объявить его локалы прямо рядом с ним.

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

p.s.: анализатор пока этому не обучил.


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1164
движемся к избавлению от ига готэка: создал xlib-ом окошко, покрутил event loop, сделал код для XImage через MIT-SHM (и без, если его нет), поблитал туда результаты рендерилки.

думаю оформить в виде двух субархитектур дальше: LinGtk и LinX11. gtk оставлю чисто чтобы было: оно более-менее работает, жаль выкидывать пока.

зато с xlib можно будет создать отдельный вид actions, которые будут активироваться, когда сокет готов к приёму/передаче/etc. дёшево, сердито, экономно. там, где event loop не такой интересный, их можно эмулировать тупо как обычные actions-повремянки (сначала проверяем сокет каждый квант перед вызовом Do), а где нормальный select — там будет чОтенька.

и ещё можно посмотреть на акшоны и посчитать, сколько времени до следующего. и делать select именно с таким таймаутом: какой смысл цикл вертеть, если все спят?

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

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

кстати, надо будет аннигилировать виндовый mdi-бэкэнд: особого смысла я в нём не вижу. я и в принципе в виндовом бэкэнде смысла не вижу (особенно в свете новостей про то, что новошында дропает поддержку 32-бит-софта), tbh. он и так у меня частично поломан, чинить его мне совершенно неинтересно.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 649 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 33  След.

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


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

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


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

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