View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002608 | Wishes | Plugins API.Editor | public | 2014-02-24 09:33 | 2014-04-15 10:28 |
Reporter | JohnDoe | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | sometimes |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0002608: функция Editor: не всегда учитывается что заданный файл уже может быть загружен | ||||
Description | Если из интерфейса попытаться открыть файл, уже открытый в редакторе, то пользователю предлагается выбор: Editor ... already loaded. How to open this file? &Current &New instance R&eload При попытке открытии уже загруженного файла через API поведение неконсистентно: 1) если задан флаг EF_NONMODAL, то выдаётся запрос пользователю. 2) если флаг не задан, то молча открывается новый экземпляр редактора. Предлагаю: а) Выдавать запрос пользователю в обоих случаях б) Если такой запрос нежелателен (а это также возможно в обоих случаях), то поведение должно определяться дополнительными флагами EF_IFLOADEDCURRENT EF_IFLOADEDRELOAD EF_IFLOADEDNEWINSTANCE | ||||
Steps To Reproduce | local file = win.GetEnv("FARHOME")..[[\Far.exe.example.ini]] editor.Editor (file, nil, nil, nil, nil, nil, {EF_NONMODAL=1,EF_IMMEDIATERETURN=1}) editor.Editor (file, nil, nil, nil, nil, nil, {EF_NONMODAL=1}) far.Show("case 1") editor.Editor (file) far.Show("case 2") | ||||
Additional Information | http://api.farmanager.com/ru/service_functions/editor.html | ||||
Tags | No tags attached. | ||||
Build | 3866 | ||||
|
Оказывается предлагаемые флаги уже предусмотрены в https://code.google.com/p/farmanager/source/browse/trunk/unicode_far/plugin.hpp EF_OPENMODE_NEWIFOPEN = 0x0000000010000000ULL, EF_OPENMODE_USEEXISTING = 0x0000000020000000ULL, EF_OPENMODE_BREAKIFOPEN = 0x0000000030000000ULL, EF_OPENMODE_RELOADIFOPEN = 0x0000000040000000ULL, Но скрыто под FAR_USE_INTERNALS |
|
<devel> Только нужна переделка класса FileEditor. Указанные выше EF_OPENMODE_* это аналоги из enum FEOPMODEEXISTFILE. Видимо нужно FEOPMODEEXISTFILE удалить, а заюзать EF_OPENMODE_*. </devel> |
|
после build 3854 как? |
|
"Новые" флаги работают, но только при EF_NONMODAL=1 И что такое EF_OPENMODE_MASK? |
|
EF_OPENMODE_MASK для выделения значений EF_OPENMODE_* из общего скопа флагов. Вроде как в Энц написано. |
|
> "Новые" флаги работают, но только при EF_NONMODAL=1 скрипт вверху поправь... |
|
Что править? Скрипт приведён для иллюстрации того,что модальный реактор всегда открывает новую копию файла, не спрашивая юзера. Пока в этом плане ничего не изменилось. |
|
Закрываем? |
|
Отнюдь, всё в силе, оба предложения а) и б) (Пока что решена только половина "б") |
|
Логика в отношении модальных редакторов не менялась со времен 1.64 Будем думать |
|
Тестим - http://farmanager.com/farbugs/m0002608.1.7z Если файл уже открыт, то повторное открытие в модальном режиме сопровождается сообщением "already loaded. How to open this file?" и две кнопки "{ New instance }" и "[ Cancel ]". В АПИ: из режимов EF_OPENMODE_* поддерживать только EF_OPENMODE_QUERY, EF_OPENMODE_NEWIFOPEN и EF_OPENMODE_BREAKIFOPEN (т.е. те самые кнопки "New instance" и "Cancel"). |
|
Вдогонку вопрос. Сейчас оба диалога имею GUID EditorReloadId. Нужно ли их различать (т.е. для случая "модальный" делать другой гуид)? |
|
>GUID EditorReloadId. Нужно ли их различать Думать надо... (само отсутствие EF_OPENMODE_USEEXISTING/EF_OPENMODE_RELOADIFOPEN меня пока сильно смущает). Попробовал билд из m0002608.1.7z. Всё согласно описанию. Однако есть вопрос о возвращаемом значении в случае отмены. Сейчас возвращается EEC_NOT_MODIFIED, а хотелось бы EEC_LOADING_INTERRUPTED. (напомню что есть похожий тикет 0002562) |
|
И о немодальном редакторе: 1) Вопрос: какой может быть практический смысл использовать EF_NONMODAL без EF_IMMEDIATERETURN? 2) Смотрю в фаре предусмотрены такие приватные константы EEC_OPENED_EXISTING EEC_ALREADY_EXISTS EEC_OPEN_NEWINSTANCE EEC_RELOAD Может быть их тоже надо теперь использовать? |
|
EEC_OPENED_EXISTING (и еже с ними) - это несколько недоделанная хотелка. они нигде не участвуют (см. 0000182) По поводу возвратов... пока ХЗ: это уже относится к 0002562 (лучше туда переползать с возвратами) По существу вопроса - отработано? |
|
Пока отработано, а практика покажет. |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-02-24 09:33 | JohnDoe | New Issue | |
2014-03-21 08:28 | JohnDoe | Note Added: 0012012 | |
2014-03-21 09:41 | vskirdin | Note Added: 0012013 | |
2014-04-08 06:57 | vskirdin | Note Added: 0012152 | |
2014-04-08 09:57 | JohnDoe | Note Added: 0012155 | |
2014-04-08 10:01 | vskirdin | Note Added: 0012156 | |
2014-04-08 10:39 | vskirdin | Note Added: 0012158 | |
2014-04-08 11:12 | JohnDoe | Note Added: 0012163 | |
2014-04-08 14:06 | vskirdin | Note Added: 0012169 | |
2014-04-08 14:16 | JohnDoe | Note Added: 0012170 | |
2014-04-09 11:10 | vskirdin | Note Added: 0012183 | |
2014-04-10 14:46 | vskirdin | Note Added: 0012190 | |
2014-04-10 14:46 | vskirdin | Assigned To | => vskirdin |
2014-04-10 14:46 | vskirdin | Status | new => feedback |
2014-04-11 06:36 | vskirdin | Note Added: 0012192 | |
2014-04-14 10:47 | JohnDoe | Note Added: 0012206 | |
2014-04-14 10:47 | JohnDoe | Status | feedback => assigned |
2014-04-14 10:54 | JohnDoe | Note Added: 0012208 | |
2014-04-15 09:55 | vskirdin | Note Added: 0012212 | |
2014-04-15 09:55 | vskirdin | Note Edited: 0012212 | |
2014-04-15 10:16 | JohnDoe | Note Added: 0012214 | |
2014-04-15 10:17 | JohnDoe | Note Edited: 0012214 | |
2014-04-15 10:28 | vskirdin | Build | => 3866 |
2014-04-15 10:28 | vskirdin | Status | assigned => closed |
2014-04-15 10:28 | vskirdin | Resolution | open => fixed |
2014-04-15 10:28 | vskirdin | Fixed in Version | => 3.0 |