Latest post of the previous page:
Может быть. Мне пока хватает проверки макро статуса через АПИ. Если этого недостаточно, то надо что-то предложить конструктивное. В этой теме не совсем логично обсуждать.FarNet — плагин для написания плагинов на .NET языках
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
FarNet — плагин для написания плагинов на .NET языках
Если кого-то интересует, проект FarNet переведен на Visual Studio Community 2013. Это облегчает возможность построить его самостоятельно и что-то похимичить или пофиксить. Подробности тут: How-to-build-FarNet. Поскольку проект теперь на ГитХабе, всякие фиксы и предложения в "готовом виде" предлагать гораздо проще, чем ранее на ГуглеКоде.
Проект/модуль PowerShellFar при этом включен и тоже строится/копируется. Для меня это естественно, ибо вся работа над Фарнет затевалась мною исключительно для PowerShellFar. Если кому-то это лишнее, дайте знать, можно будет сделать конфигурацию (со временем).
Сборка в студии 2013 только для .NET 4.5. Другие версии поддерживаются через билд скрипт для Invoke-Build (один из моих прочих проектов). Официально, как и ранее, будет выпускаться сборка для 3.5. Но если вдруг случится такая ситуация, что у меня не будет машин с VS 2008 и 2010 (да, именно они нужны для такой сборки), то я вынужден буду выпускать только для .NET 4.5 (может, 4.0). Но в ближайшем будущем эта ситуация вроде не предвидится.
Проект/модуль PowerShellFar при этом включен и тоже строится/копируется. Для меня это естественно, ибо вся работа над Фарнет затевалась мною исключительно для PowerShellFar. Если кому-то это лишнее, дайте знать, можно будет сделать конфигурацию (со временем).
Сборка в студии 2013 только для .NET 4.5. Другие версии поддерживаются через билд скрипт для Invoke-Build (один из моих прочих проектов). Официально, как и ранее, будет выпускаться сборка для 3.5. Но если вдруг случится такая ситуация, что у меня не будет машин с VS 2008 и 2010 (да, именно они нужны для такой сборки), то я вынужден буду выпускать только для .NET 4.5 (может, 4.0). Но в ближайшем будущем эта ситуация вроде не предвидится.
-
- Posts: 5
- Joined: Thu 22 Oct, 2015 08:58
FarNet: чего не хватает для выполнения действия по Enter
Добрый день. Подскажите новичку.
Пытаюсь писать плагин с использованием FarNet, и что-то не получается сделать кнопку, которая срабатывает по Enter. Свойство Default диалогу выставил, на клике обработчик висит, при клике мышкой всё нормально. А по Enter просто завершается диалог и всё.
Чего тут не хватает ему?
Пытаюсь писать плагин с использованием FarNet, и что-то не получается сделать кнопку, которая срабатывает по Enter. Свойство Default диалогу выставил, на клике обработчик висит, при клике мышкой всё нормально. А по Enter просто завершается диалог и всё.
Code: Select all
IDialog dial = Far.Api.CreateDialog(-1, -1, dialWidth, dialHeight);
...
IButton btnYes = dial.AddButton(3, 16, "Копировать");
dial.Default = btnYes;
...
dial.Show();
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
FarNet: чего не хватает для выполнения действия по Enter
Если это стандартный сценарий использования диалога, то я бы не вешал обработчик на клик. Проанализируйте результат Show() и выполняйте или не выполняйте свой код в зависимости от этого. (Иными словами, закрытие по энтер и клик мышью на дефолтной кнопке это не совсем одно и тоже. Интуитивно это или нет, но это так и задумано).
Вопросы по FarNet можно задавать тут - http://forum.farmanager.com/viewtopic.php?f=5&t=419
Вопросы по FarNet можно задавать тут - http://forum.farmanager.com/viewtopic.php?f=5&t=419
-
- Posts: 5
- Joined: Thu 22 Oct, 2015 08:58
FarNet: чего не хватает для выполнения действия по Enter
А если при нажатии на default - кнопку я проверяю какие-то условия, и они меня не устраивают (т.е. мне надо установить фокус на "плохой" элемент и продолжить диалог), тогда как поступить?
Т.е. хотите сказать, что мне надо зациклить Show(), а после него анализировать условия, а также true или false он вернул, и если нужно выполнять что-то, а потом делать break, либо не делать его (чтоб снова вызвался диалог в цикле). Примерно так, как делался бы ввод в консольном приложении?
Возможно, моя ошибка в том, что я пытался найти аналогию с forms. Ну, если тут не так, это не страшно, лишь бы понять, как именно надо делать. Ещё, конечно, трудность в том, что в FarNetAPI.chm нет хотя бы коротеньких примеров кода. Был бы код - вопросов бы не было.
Т.е. хотите сказать, что мне надо зациклить Show(), а после него анализировать условия, а также true или false он вернул, и если нужно выполнять что-то, а потом делать break, либо не делать его (чтоб снова вызвался диалог в цикле). Примерно так, как делался бы ввод в консольном приложении?
Возможно, моя ошибка в том, что я пытался найти аналогию с forms. Ну, если тут не так, это не страшно, лишь бы понять, как именно надо делать. Ещё, конечно, трудность в том, что в FarNetAPI.chm нет хотя бы коротеньких примеров кода. Был бы код - вопросов бы не было.
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
FarNet — плагин для написания плагинов на .NET языках
Зато доступны целый ряд готовых плагинов — разной величины и всевозможного назначения — с открытым кодом.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
FarNet — плагин для написания плагинов на .NET языках
AlexanderR
Зациклить Show с проверкой результата и валидацией ввода - нормальный и простой вариант.
Примеров в документации на все случаи все равно не напишешь, да и нет времени ни на примеры, ни на поддержку их в актуальном состоянии. В качестве примеров лучше код существующих модулей смотреть и PowerShellFar скрипты. Основной АПИ так или иначе да задействован где-нибудь.
Зациклить Show с проверкой результата и валидацией ввода - нормальный и простой вариант.
Примеров в документации на все случаи все равно не напишешь, да и нет времени ни на примеры, ни на поддержку их в актуальном состоянии. В качестве примеров лучше код существующих модулей смотреть и PowerShellFar скрипты. Основной АПИ так или иначе да задействован где-нибудь.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
FarNet — плагин для написания плагинов на .NET языках
В цикле Show с валидацией данных при наличии ошибки показать разумное сообщение и установить фокус на тот элемент, где ожидается коррекция ввода. Я бы делал так, это не обязательно, конечно.
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
FarNet — плагин для написания плагинов на .NET языках
В более развесистых системах разработки графического интерфейса есть валидация не только уровня формы, но и уровня отдельного виджета (чтобы срабатывала при попытке увести фокус). Планируется ли что-то подобное в FarNet?
Фар есть инструмент, а не нянька. © 2009 DrKnS
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
FarNet — плагин для написания плагинов на .NET языках
HaRT
Не думал о таком. Пожалуй, мне не особо нравится валидация при уходе фокуса с контрола. Пока пользователь не закрывает диалог, он может вводить все, что хочет, это его "право" - мне вполне нравится такой вариант (за исключением полей с масками, конечно, где четко забито, что надо вводить).
Может, такой подход и имеет смысл в некоторых случаях, спорить не буду. Но на практике как-то не попадались, чтобы задуматься о полезности.
Не думал о таком. Пожалуй, мне не особо нравится валидация при уходе фокуса с контрола. Пока пользователь не закрывает диалог, он может вводить все, что хочет, это его "право" - мне вполне нравится такой вариант (за исключением полей с масками, конечно, где четко забито, что надо вводить).
Может, такой подход и имеет смысл в некоторых случаях, спорить не буду. Но на практике как-то не попадались, чтобы задуматься о полезности.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
FarNet — плагин для написания плагинов на .NET языках
far /ro /s "C:\Program Files\far_profile"
Code: Select all
UnauthorizedAccessException:
Access to the path 'C:\Program Files\far_profile\FarNet' is denied.
Writing cache
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
FarNet — плагин для написания плагинов на .NET языках
Понятно. А как лучше? Не писать кэш, потому что /ro (а как узнать?)? Игнорировать ошибки при попытке писать кэш?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
FarNet — плагин для написания плагинов на .NET языках
А если получается писать кеш (есть такой путь и он разрешен), то не очень согласуется с /ro тоже. Какое-то гладкое однозначное решение пока не приходит. Предлагайте, подумаю.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
FarNet — плагин для написания плагинов на .NET языках
Ну суть там даже не в /ro, а в том, что прав на запись туда нет, а невозможность записать какую-то свою внутреннюю кухню - наверное, ещё не повод вешать весь фар.