Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 10:08

Есть ли способ узнать, что FCTL_GETUSERSCREEN уже вызван? Например, это было сделано другим плагином ранее, и текущий вызван в некотором межплагиновом сценарии.

User avatar
zg
zero-gravity
Posts: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by zg » Tue 06 Sep, 2016 10:48

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

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 10:57

Не понял ответ. Нельзя узнать? Можно, но недокументированно? Или что-то еще?

User avatar
zg
zero-gravity
Posts: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by zg » Tue 06 Sep, 2016 11:06

если FCTL_GETUSERSCREEN уже вызван, то у окна десктопа будет флаг WIF_MODAL, иначе — не будет.

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 11:13

Может, завести какой офиц. АПИ для этого?

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 12:31

И само окно десктопа тоже недокументированная фича, оказывается. Энц. не упоминает. Это случайно забыто или умышленно умалчивается?

User avatar
zg
zero-gravity
Posts: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by zg » Tue 06 Sep, 2016 13:15

экспериментальная функциональность.

User avatar
HaRT
Moderator
Posts: 8109
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by HaRT » Tue 06 Sep, 2016 14:04

NightRoman wrote: окно десктопа тоже недокументированная фича
Да ещё и название, напомню, неудачное.
И даже есть отдельная тема с его, названия, обсуждением.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 14:09

Ясно... Не критикую, но жалуюсь. Трудно пользоваться юзер скрином, недокументировано, меняется, написанное ломается. А пользоваться-то надо. Есть сценарии где надо писать на консоль, но при этом иметь возможность и UI Фара задействовать между выводом. Давнишний PowerShellFar и недавний FSharpFar - оболочки вокруг скриптовых REPL движков. Вывод на консоль кой-каких данных после команд для них типичен, я это "перехватываю", и вывожу на консоль с юзер скрином. В простых случаях работает. Сложности начинаются, когда скрипты еще что-то пытаются делать с UI или окнами (а иначе их можно было бы и вне Фара запускать, если они Фаром-то и не пользуются).

Подход GET/print/SET на каждый print не годится. 1) Медленно. 2) Лишние переводы строк, уродливый вывод. Приходится придерживать GET с отложенным SET, но тут вызываются другие модули или скрипты, которым тоже надо решать, как быть с консолью, сложность возрастает. Если бы информация о текущем состоянии была предоставлена Фаром (это ведь он делает GET/SET) центализованно и официально, было бы проще.

User avatar
zg
zero-gravity
Posts: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by zg » Tue 06 Sep, 2016 14:45

NightRoman wrote:меняется, написанное ломается.
вы так пишите, как будто я вот от нечего делать беру и вношу изменения, которые ломают ваши скрипты. но это не так. был конкретный багрепорт. если у вас есть альтернативное предложение, такое же эффективное, но работающие так, как вам нужно, присылайте патч, обсудим.
NightRoman wrote:2) Лишние переводы строк, уродливый вывод.
я не в курсе, зачем нужен перевод строки, возможно стоит обсудить.
NightRoman wrote:Если бы информация о текущем состоянии была предоставлена Фаром (это ведь он делает GET/SET) центализованно и официально, было бы проще.
я вам способ привёл.

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 15:09

zg wrote: я вам способ привёл.
Реальное спасибо. Обязательно воспользуюсь. Проблема только в том, что через год(?) это поменяется. Жалко тратить время в который раз на пере-прикручивание. Если был бы АПИ, пусть даже объявленный как тестовый, то было бы потенциально лучше. Какие-то изменения в Фаре можно было бы делать за ширмой этого АПИ без ломки.

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 15:19

Консоль у Фара - это уникальная и мощная фича. А АПИ для нее для плагинов кот наплакал и документация секретная, ибо "экспериментальная функциональность".

User avatar
zg
zero-gravity
Posts: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by zg » Tue 06 Sep, 2016 15:59

NightRoman wrote:Проблема только в том, что через год(?) это поменяется. Жалко тратить время в который раз на пере-прикручивание.
если что-то поменяется, то возможности две: поменяется сильно или не сильно. второй вариант по временным затратам вряд ли стоит внимания, а если что-то поменяется сильно, значит текущий вариант не прошёл проверку временем и добавлять сейчас апи — это замораживать потенциально неудачную реализацию. в фаре и так в апи дофига всего, что слабо согласуется между собой.
а насчёт времени. ну мне тоже жалко тратить время на людей, до которых доходит с четвёртого раза. или пишущих такие багрепорты. я ж не привожу это в качестве аргумента.
NightRoman wrote:Консоль у Фара - это уникальная и мощная фича. А АПИ для нее для плагинов кот наплакал и документация секретная, ибо "экспериментальная функциональность".
что значит секретная документация?
1. документацию никто не читает. этот форум каждый день доказывает это.
2. исходники открыты, читайте. вон John Doe, как научился собирать фар, реально стал писать меньше фигни.
3. я что-то не вижу конструктивного обсуждения расширения возможностей консоли в фаре с учётом текущих реалий.

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 16:23

zg wrote: я что-то не вижу конструктивного обсуждения расширения возможностей консоли в фаре с учётом текущих реалий.
Конкретно и реально. Для начала добавить флаг IS_USER_SCREEN. Методы установки сброса есть. Метода проверки состояния нет. Заставляет плагины вести тракинг самим. Приемлемо в рамках одного плагина, но и то, зачем? Но при меж-плагинной работе становится сложно без центрального источника.

Сегодня это "если FCTL_GETUSERSCREEN уже вызван, то у окна десктопа будет флаг WIF_MODAL", завтра внутри Фара что-то иное, а плагины проверяют флаг и не ломаются. И не выдумывают тракинг состояния.

User avatar
zg
zero-gravity
Posts: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by zg » Tue 06 Sep, 2016 16:52

NightRoman wrote:Конкретно и реально. Для начала добавить флаг IS_USER_SCREEN.
я просил конструктивно.

User avatar
NightRoman
Posts: 5872
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 9 times
Contact:

Как узнать, что FCTL_GETUSERSCREEN уже вызван?

Post by NightRoman » Tue 06 Sep, 2016 17:08

Извините, ответил конструктивно, в моем понимании этого слова.

Post Reply

Return to “Разработка плагинов”