View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002562 | Wishes | Plugins API.Editor | public | 2014-01-15 15:31 | 2014-07-28 19:54 |
Reporter | JohnDoe | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | new | Resolution | open | ||
Product Version | 3.0 | ||||
Summary | 0002562: функция Editor: EF_NONMODAL, возвращаемое значение при отмене открытия редактора | ||||
Description | В случае если функция Editor была вызвана с флагом EF_NONMODAL, то возвращается одно из двух значений EEC_OPEN_ERROR или EEC_MODIFIED. Хочется чтобы кроме того распознавалась ситуация с отменой открытия (EEC_LOADING_INTERRUPTED), т.к. иначе по возвращаемому значению невозможно понять открылся ли вообще редактор. | ||||
Steps To Reproduce | Типичная ситуация с отмена открытия возникает если файл уже открыт (например в другом окне редакторе). В этом случае при вызове функции Editor отображается Message, в котором пользователю предоставляется выбор как именно должен быть открыт файл: { Current } [ New instance ] [ Reload ] Если пользователь нажмёт Esc, то загрузка прервётся, но функция всё равно вернёт EEC_MODIFIED | ||||
Additional Information | http://api.farmanager.com/ru/service_functions/editor.html | ||||
Tags | No tags attached. | ||||
Build | |||||
|
<беглый взгляд> XC_LOADING_INTERRUPTED никогда не возвращается при FFILEEDIT_ENABLEF6. Если вставить возврат XC_LOADING_INTERRUPTED в FileEditor::Init - падаем. </беглый взгляд> |
|
По результату 0002608 данный тикет распространяется также и на модальный редактор. Описание переделать, или и так сойдёт? |
|
Вопрос(ы) (учитываем, что EEC_OPEN_ERROR, EEC_MODIFIED и EEC_NOT_MODIFIED влияют на плагины, скажем архивные) (речь про EF_NONMODAL) Ситуация 1. Был открыт файл. Вызываем Editor(EF_NONMODAL). В диалоге (или флагом EF_OPENMODE_USEEXISTING) говорим "{ Current }". Что должен получить плагин? EEC_OPENED_EXISTING или EEC_NOT_MODIFIED? Ситуация 2. Был открыт файл. Вызываем Editor(EF_NONMODAL). В диалоге (или флагом EF_OPENMODE_RELOADIFOPEN) говорим "[ Reload ]". Что должен получить плагин после получения управления? EEC_RELOAD, EEC_MODIFIED или EEC_NOT_MODIFIED? Замечание: плагин получит управление в двух случаях: "пользователь вышел из редактора (нажал Esc)" и "пользователь переключился (Ctrl-Tab или F12) в другой фрейм". Ситуация 3. Был открыт файл. Вызываем Editor(EF_NONMODAL|EF_IMMEDIATERETURN). В диалоге (или флагом EF_OPENMODE_RELOADIFOPEN) говорим "[ Reload ]". Что должен получить плагин? EEC_RELOAD, EEC_MODIFIED или EEC_NOT_MODIFIED? и т.д. Или... чтобы не ломать АПИ не возвращать в плагин коды: #ifdef FAR_USE_INTERNALS EEC_OPENED_EXISTING = 4, EEC_ALREADY_EXISTS = 5, EEC_OPEN_NEWINSTANCE = 6, EEC_RELOAD = 7, #endif // END FAR_USE_INTERNALS ы? |
|
Да, плагины могут поломаться... |
|
>(речь про EF_NONMODAL) Разве в этом случае имеет смысл возвращать EEC_MODIFIED/EEC_NOT_MODIFIED? |
|
Есть возможность получить эту инфу, так почему бы и нет? |
|
Сейчас в EF_NONMODAL не может вернуться EEC_NOT_MODIFIED. И я не представляю даже что тут можно сделать, учитывая что при EF_NONMODAL возврат из функции происходит не при закрытии редактора, а при потере фокуса. Кстати интересно узнать почему так сделано. Я например не вижу смысла использовать EF_NONMODAL без EF_IMMEDIATERETURN. |
|
На "поиграться": 1) плагин http://farmanager.com/farbugs/editor_flags.7z 2) Far с "новыми" кода возврата для Editor() http://farmanager.com/farbugs/m0002562.1.7z |
|
Какие изменения включены? Планируется ли это в релиз? |
|
В релиз только после договоренности, что кроме существующих кодов возврата EEC_OPEN_ERROR, EEC_MODIFIED и EEC_NOT_MODIFIED плагины готовы будут принять еще несколько. |
|
Частный случай: если находясь в модальном редакторе попытаться открыть редактор с флагом EF_NONMODAL, то редактор всё равно будет модальным. Если же при этом пытаться открыть уже открытый файл используя флаг EF_OPENMODE_USEEXISTING, то редактор не откроется, но плагин об этом не узнает, т.к. функция Editor вернёт EEC_NOT_MODIFIED (вместо EEC_LOADING_INTERRUPTED). |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-01-15 15:31 | JohnDoe | New Issue | |
2014-01-16 06:20 | vskirdin | Note Added: 0011681 | |
2014-04-15 09:11 | JohnDoe | Note Added: 0012213 | |
2014-04-22 11:05 | vskirdin | Note Added: 0012261 | |
2014-04-23 10:49 | JohnDoe | Note Added: 0012279 | |
2014-04-24 08:25 | JohnDoe | Note Added: 0012285 | |
2014-04-24 13:35 | vskirdin | Note Added: 0012286 | |
2014-04-24 13:52 | JohnDoe | Note Added: 0012287 | |
2014-04-29 09:47 | vskirdin | Note Added: 0012303 | |
2014-04-29 10:16 | JohnDoe | Note Added: 0012305 | |
2014-04-29 11:48 | vskirdin | Note Added: 0012306 | |
2014-07-28 19:54 | JohnDoe | Note Added: 0012812 |