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

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

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

Post by NightRoman »

Есть ли способ узнать, что FCTL_GETUSERSCREEN уже вызван? Например, это было сделано другим плагином ранее, и текущий вызван в некотором межплагиновом сценарии.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

в текущей реализации десктоп будет модальным. это не то чтобы документированная фича, но пока так.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Не понял ответ. Нельзя узнать? Можно, но недокументированно? Или что-то еще?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

если FCTL_GETUSERSCREEN уже вызван, то у окна десктопа будет флаг WIF_MODAL, иначе — не будет.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Может, завести какой офиц. АПИ для этого?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

И само окно десктопа тоже недокументированная фича, оказывается. Энц. не упоминает. Это случайно забыто или умышленно умалчивается?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

экспериментальная функциональность.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

NightRoman wrote: окно десктопа тоже недокументированная фича
Да ещё и название, напомню, неудачное.
И даже есть отдельная тема с его, названия, обсуждением.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

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

Подход GET/print/SET на каждый print не годится. 1) Медленно. 2) Лишние переводы строк, уродливый вывод. Приходится придерживать GET с отложенным SET, но тут вызываются другие модули или скрипты, которым тоже надо решать, как быть с консолью, сложность возрастает. Если бы информация о текущем состоянии была предоставлена Фаром (это ведь он делает GET/SET) центализованно и официально, было бы проще.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

NightRoman wrote:меняется, написанное ломается.
вы так пишите, как будто я вот от нечего делать беру и вношу изменения, которые ломают ваши скрипты. но это не так. был конкретный багрепорт. если у вас есть альтернативное предложение, такое же эффективное, но работающие так, как вам нужно, присылайте патч, обсудим.
NightRoman wrote:2) Лишние переводы строк, уродливый вывод.
я не в курсе, зачем нужен перевод строки, возможно стоит обсудить.
NightRoman wrote:Если бы информация о текущем состоянии была предоставлена Фаром (это ведь он делает GET/SET) центализованно и официально, было бы проще.
я вам способ привёл.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

zg wrote: я вам способ привёл.
Реальное спасибо. Обязательно воспользуюсь. Проблема только в том, что через год(?) это поменяется. Жалко тратить время в который раз на пере-прикручивание. Если был бы АПИ, пусть даже объявленный как тестовый, то было бы потенциально лучше. Какие-то изменения в Фаре можно было бы делать за ширмой этого АПИ без ломки.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Консоль у Фара - это уникальная и мощная фича. А АПИ для нее для плагинов кот наплакал и документация секретная, ибо "экспериментальная функциональность".
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

NightRoman wrote:Проблема только в том, что через год(?) это поменяется. Жалко тратить время в который раз на пере-прикручивание.
если что-то поменяется, то возможности две: поменяется сильно или не сильно. второй вариант по временным затратам вряд ли стоит внимания, а если что-то поменяется сильно, значит текущий вариант не прошёл проверку временем и добавлять сейчас апи — это замораживать потенциально неудачную реализацию. в фаре и так в апи дофига всего, что слабо согласуется между собой.
а насчёт времени. ну мне тоже жалко тратить время на людей, до которых доходит с четвёртого раза. или пишущих такие багрепорты. я ж не привожу это в качестве аргумента.
NightRoman wrote:Консоль у Фара - это уникальная и мощная фича. А АПИ для нее для плагинов кот наплакал и документация секретная, ибо "экспериментальная функциональность".
что значит секретная документация?
1. документацию никто не читает. этот форум каждый день доказывает это.
2. исходники открыты, читайте. вон John Doe, как научился собирать фар, реально стал писать меньше фигни.
3. я что-то не вижу конструктивного обсуждения расширения возможностей консоли в фаре с учётом текущих реалий.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

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

Сегодня это "если FCTL_GETUSERSCREEN уже вызван, то у окна десктопа будет флаг WIF_MODAL", завтра внутри Фара что-то иное, а плагины проверяют флаг и не ломаются. И не выдумывают тракинг состояния.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

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

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