OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 20:48

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 649 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19 ... 33  След.
Автор Сообщение
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Вторник, 30 Май, 2023 00:40 

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


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

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


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

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

в принципе, у меня в редакторе уже есть автодополнение по alt+tab (совершенно простое: сканирует текущий документ, собирает десятка два слов, которые из него можно дополнить, показывает попап), так что большинство текста я набираю при помощи чего-то типа PROC<alt+tab>. но иногда хочется, чтобы само.

я давно впилил в текстовый view хуки, которые вызываются по разным событиям (напечатали буковку, начинаем autoindent, etc.), именно для вот таких целей. теперь, наконец, реализовал — не прошло и полугода! почти не прошло.

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


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

Зарегистрирован: Пятница, 11 Январь, 2019 21:33
Сообщения: 88
Комбинацию Alt-Tab желательно вернуть операционной системе.

P.S. Хотя бы чётко пометьте что удалять или комментировать в исходных кодах для этого.

Спасибо!


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
vvmtutby писал(а):
Комбинацию Alt-Tab желательно вернуть операционной системе.
моя точка зрения такая, что alt+tab лучше бы операционным системам оставить в покое. есть же прелестно бесполезная кнопка hyper (она же win) — вот hyper+tab (и прочие подобные сочетания) и надо было давным-давно использовать всяким осям.

vvmtutby писал(а):
P.S. Хотя бы чётко пометьте что удалять или комментировать в исходных кодах для этого.
да ничего, среда же не ставит никаких глобальных системных хуков или подобного. в оськах, где alt+tab занято — просто не будет работать автодополнение, вот и всё. точнее, если это винда, то там ещё alt+backspace должен сработать. вроде бы. да и вообще весь модуль расширений редактора опциональный, убрать из конфига вызовы LamentEdCmds — и не будет в редакторе ничего дополнительного.


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

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

rationale: просто представьте код, где все имена в эмоджи. ;-)

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

для всякого рода учебных сборок всё ещё можно использовать on-the-fly траслятор по типу того, который сделал Фёдор Васильевич; а в остальном коде — извольте нормально. если бы ещё можно было показывать ошибки, когда русские слова транслитом в коде — я бы и это впилил. ;-)

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

p.s.: юникод дрянь, утф тоже дрянь (хоть и отлично сдизайненая, но по наследству от юникода). лично у меня вообще системная локаль — KOI-8 (о чём особо любопытные могут догадаться, глянув в исходники LC, и обнаружив там в стратегических местах детект этой системной локали, и инструменты в Strings для конвертации koi↔ucs).

p.p.s.: рисовалка буков в LC и юникод немножко дискриминирует: там довольно ограниченый набор того, что она считает printable, а всё остальное (включая всякую комбинаторную диакритику) рисуется как «неизвестный глиф» (квадратик, вопросик). да, ударение тоже поставить нельзя. потому что.


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
быстровпилил МегаГениальнуюИдею вот отсюда. экспорты типа `protected`. не уверен, что `+` — хороший выбор для сигила, но остальные сигилы уже заняты. ;-)


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

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


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

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

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


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Копирование уже доделали? Можно поизучать и попробовать перенести?


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
а вам оттуда особо нечего переносить, в gtk-варианте все мои танцы не нужны. ну, то есть, глубокого смысла делать Externalize с копией в LinGtk нет, мне кажется. ну и — вы там обалдеете от кодокаши, я подозреваю. ;-)

а так-то да, можно посмотреть: всё работает. оно давно работает, я правил в основном взаимодействие с X11.


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
а вам оттуда особо нечего переносить, в gtk-варианте все мои танцы не нужны. ну, то есть, глубокого смысла делать Externalize с копией в LinGtk нет, мне кажется. ну и — вы там обалдеете от кодокаши, я подозреваю. ;-)

а так-то да, можно посмотреть: всё работает. оно давно работает, я правил в основном взаимодействие с X11.

А Gtk2 приложение не может обмениваться данными через механизмы X11?


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
Иван Денисов писал(а):
А Gtk2 приложение не может обмениваться данными через механизмы X11?
не может. там нет никаких особых механизмов, там совершенно обычные сообщения X Window — которые gtk никому не даст и не покажет, оно на них сидит и огрызается. у gtk сверху свой event loop, и все сообщения (которые оно посчитает нужным) транслируются в структуры gtk. от неё даже получить fd иксов никак штатно не получается. возможно, какие-то танцы с gtk API и позволят сделать нужное, но оно точно будет совсем иначе выглядеть. это одна из причин, по которым у меня аллергия на gtk.


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
так. я подумал, что хватит этой ситуации, когда StdWindows is the new black. в смысле — StdWindows совершенно зря претендует на новое оконное API. буду вычищать эти конюшни, и дополнять нужными абстрактыми интерфейсами Windows вместо этого: никто не должен импортировать StdWindows, если это не бэкэнд и не оконный менеджер.

я не очень понял идею, стоящую за StdWindows в плане новых апей на глобальном уровне, должен признаться. то ли это была заготовка на новый интерфейс к Windows, то ли там был какой-то далекоидущий план в виде «вместо Windows.dir используем импорты конкретных реализаций и их глобальный API», то ли… ещё что-то. ;-)

в любом случае: в 2.0 сейчас два оконных бэкэнда, и никому это не мешает, двух реализаций оконной системы с разными апями не надо. в то, что у кого-то появится сумасшедшая идея каким-то образом одновременно открывать в одном ящике окна через, например, SDL и Xlib — я не верю. то есть, идея может и появится, но тогда надо подождать, пока попустит чудо-трава. потому делаю как было: Windows — API для высокоуровневого кода, StdWindows — реализация. ну, и тайлеру придётся по нужде в StdWindows лазить, конечно… или может я потом абстрактный интерфейс для бэкэндов тоже вынесу в Windows, тогда не придётся.

в общем, начинаю чистить, а там посмотрим, куда это нас приведёт.


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

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

сам интерфейс недочищен пока: идея такая, что сначала перенести всё нужное в Windows, а потом уже аккуратно разбивать на кусочки.

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

в идеале `StdWindows.Window` вообще не должен быть публичным, баловство это. всё надо делать по правилам, через стандартные интерфейсы. надеюсь к этому прийти.

ещё не закомитовано, если что.


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

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

продолжаем чистить всякое.


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
первая часть чисток закончена: почти все ходят в приличное место теперь (Windows). интерфейсы для оконных бэкэндов тоже в Windows живут. после всей этой свистопляски ящик даже запустился и нарисовал главное окно. (не смотрите так, я сам удивлён!)

Вот я примерно тем же самым занимался.

Вот тут надо возвращать название, если окно было без названия изначально
Код:
   PROCEDURE (w: Window) GetTitle* (OUT title: Views.Title);
   BEGIN
      title := w.initialTitle$;
      IF title = "" THEN
         title := w.title$;
         StripTitle(title)
      END
   END GetTitle;



Также в OpenSubWindow должен быть initialTitle а не title, тогда работает как в 1.7.2
Open(w(Window), doc, flags, u.initialTitle);


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
В общем, эти мои советы неправильные, при открытии формы в аукс режиме, меняются заголовки. Разбираюсь.


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

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
я пока не дошёл до стадии «а что сломалось?» ;-) у меня пока ещё стадия: «ура, оно не упало!»

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

в принципе, начинаю видеть на практике, почему омики его (protected) не ввели. но никакого другого варианта сделать hook chains малой болью не вижу, увы.


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Исправил. Надо было изменить OpenSubWindow ближе к оригиналу. Добавил u.GetTitle(title), который также вернул к старой реализации.
Код:
   PROCEDURE (w: Window) GetTitle* (OUT title: Views.Title);
   BEGIN
      title := w.initialTitle$;
      IF title = "" THEN
         title := w.title$;
         StripTitle(title)
      END
   END GetTitle;


   PROCEDURE (d: StdDirectory) OpenSubWindow* (w: Windows.Window; doc: Documents.Document; flags: SET; title: Views.Title );
      (** Open w as a subwindow (a duplicate window) displaying doc with flags set to flgs and title set to title *)
      VAR u: Window;
   BEGIN
      ASSERT(w # NIL, 20); ASSERT(doc # NIL, 21);
      u := d.First();
      WHILE (u # NIL) & (u.seq # doc.Domain().GetSequencer()) DO u := d.Next(u) END;
      IF u # NIL THEN
         WHILE u.sub DO u := u.link(Window) END;
         u.GetTitle(title);
         Open(w(Window), doc, flags, title);
         IF w.doc # NIL THEN w.SetSpec(u.loc, u.name, u.conv) END
      ELSE
         Open(w(Window), doc, flags, title)
      END
   END OpenSubWindow;


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

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


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

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


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

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