Использование far.Text для рисования на просмотрщике/редакторе

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
Grom PE
Posts: 34
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 5 times
Been thanked: 2 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by Grom PE »

Не нашёл ни одного примера на Lua с использованием far.Text() со значимыми параметрами, то есть для рисования чего-либо на экране консоли.

Пробую:

far.Text(1,1,0x0F,"test")

Ничего не происходит. В документации тоже негусто.
Потом обнаружил, что в панелях этот код действует, а где хотелось бы, и где пытался всё это время, в редакторе — нет.

В редакторе и просмотрщике действует какая-то дополнительная буферизация или же far.Text() там поломан?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by zg »

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

Code: Select all

Macro
  area:"Common"
  key:"CtrlShiftQ"
  action:->
    far.Text(1,1,0x0F,"test")
    far.Text()
    mf.waitkey()
User avatar
Grom PE
Posts: 34
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 5 times
Been thanked: 2 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by Grom PE »

Про вызов far.Text() дважды я бы не догадался! А как тогда рисовать на редакторе, сохраняя интерактивный ввод?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by zg »

Grom PE wrote: Thu 19 Oct, 2017 15:43А как тогда рисовать на редакторе, сохраняя интерактивный ввод?
без подробностей сложно что-то сказать.
User avatar
Grom PE
Posts: 34
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 5 times
Been thanked: 2 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by Grom PE »

Например, хотелось бы рисовать в EditorEvent после события EE_REDRAW.

Мой скрипт изменяет режим ввода в редакторе, типа плагина Draw Lines, и пока он активен, нужно об этом где-то показывать. Можно использовать editor.SetTitle(), но хотелось бы не терять имя текущего файла из видимости.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Grom PE wrote: Thu 19 Oct, 2017 16:26хотелось бы не терять имя текущего файла из видимости.
Можно не терять, выводите и его.
User avatar
Grom PE
Posts: 34
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 5 times
Been thanked: 2 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by Grom PE »

John Doe wrote: Thu 19 Oct, 2017 18:08Можно не терять, выводите и его.
Тем не менее, это всё обходные пути. Совсем мало места останется, а если ещё какую-то информацию выводить? Лучше найти общее решение.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Например?
User avatar
Grom PE
Posts: 34
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 5 times
Been thanked: 2 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by Grom PE »

При ширине экрана в 90 строк и добавлении "[Punched tape input]" в title уже не остаётся места для файла: "C:\...Punched tape input]". Так что этот метод — на крайний случай.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by zg »

выведите диалог, всё что ненужно в DN_INPUT транслируйте в editor.ProcessInput.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Grom PE wrote: Thu 19 Oct, 2017 18:43"[Punched tape input]"
Что ж вы так, экономнее надо)

Но мой вопрос был о другом: что собственно вы предлагаете, в качестве общего решения
User avatar
Grom PE
Posts: 34
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 5 times
Been thanked: 2 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by Grom PE »

Я хотел выкрутиться вот так:



Но подозреваю, что это нечто ужасное, да и Far после такого издевательства при закрытии редактора завалился %)
John Doe wrote: Thu 19 Oct, 2017 19:18что собственно вы предлагаете, в качестве общего решения
Собственно, рисовать поверх редактора, в чём и тема.
zg wrote: Thu 19 Oct, 2017 18:58выведите диалог, всё что ненужно в DN_INPUT транслируйте в editor.ProcessInput.
Спасибо, попробую.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Grom PE wrote: Thu 19 Oct, 2017 19:28Я хотел выкрутиться вот так:
"Выкрутиться" и "общее решение" это разные вещи.
Grom PE wrote: Thu 19 Oct, 2017 19:28Но подозреваю, что это нечто ужасное
Не то что бы.
С виду работает
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by zg »

Grom PE wrote: Thu 19 Oct, 2017 19:28Я хотел выкрутиться вот так
у меня работает, возможно у вас фар старый, как раз недавно far.Timer(1,…) исправляли.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Единственная проблема: redraw вызывается и при неактивном редакоре, когда на экране меню (особенно если курсор перемещать)
Не знаю даже зачем так.
Post Reply

Return to “Нужна помощь”