View Issue Details

IDProjectCategoryView StatusLast Update
0002608WishesPlugins API.Editorpublic2014-04-15 10:28
ReporterJohnDoe Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilitysometimes
Status closedResolutionfixed 
Product Version3.0 
Fixed in Version3.0 
Summary0002608: функция 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 Reproducelocal 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 Informationhttp://api.farmanager.com/ru/service_functions/editor.html
TagsNo tags attached.
Build3866

Activities

JohnDoe

2014-03-21 08:28

updater   bugnote:0012012

Оказывается предлагаемые флаги уже предусмотрены в 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

vskirdin

2014-03-21 09:41

administrator   bugnote:0012013

<devel>
Только нужна переделка класса FileEditor. Указанные выше EF_OPENMODE_* это аналоги из enum FEOPMODEEXISTFILE. Видимо нужно FEOPMODEEXISTFILE удалить, а заюзать EF_OPENMODE_*.
</devel>

vskirdin

2014-04-08 06:57

administrator   bugnote:0012152

после build 3854 как?

JohnDoe

2014-04-08 09:57

updater   bugnote:0012155

"Новые" флаги работают, но только при EF_NONMODAL=1

И что такое EF_OPENMODE_MASK?

vskirdin

2014-04-08 10:01

administrator   bugnote:0012156

EF_OPENMODE_MASK для выделения значений EF_OPENMODE_* из общего скопа флагов.
Вроде как в Энц написано.

vskirdin

2014-04-08 10:39

administrator   bugnote:0012158

> "Новые" флаги работают, но только при EF_NONMODAL=1
скрипт вверху поправь...

JohnDoe

2014-04-08 11:12

updater   bugnote:0012163

Что править?
Скрипт приведён для иллюстрации того,что модальный реактор всегда открывает новую копию файла, не спрашивая юзера. Пока в этом плане ничего не изменилось.

vskirdin

2014-04-08 14:06

administrator   bugnote:0012169

Закрываем?

JohnDoe

2014-04-08 14:16

updater   bugnote:0012170

Отнюдь, всё в силе, оба предложения а) и б)

(Пока что решена только половина "б")

vskirdin

2014-04-09 11:10

administrator   bugnote:0012183

Логика в отношении модальных редакторов не менялась со времен 1.64
Будем думать

vskirdin

2014-04-10 14:46

administrator   bugnote:0012190

Тестим - 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").

vskirdin

2014-04-11 06:36

administrator   bugnote:0012192

Вдогонку вопрос.
Сейчас оба диалога имею GUID EditorReloadId. Нужно ли их различать (т.е. для случая "модальный" делать другой гуид)?

JohnDoe

2014-04-14 10:47

updater   bugnote:0012206

>GUID EditorReloadId. Нужно ли их различать
Думать надо... (само отсутствие EF_OPENMODE_USEEXISTING/EF_OPENMODE_RELOADIFOPEN меня пока сильно смущает).

Попробовал билд из m0002608.1.7z. Всё согласно описанию.
Однако есть вопрос о возвращаемом значении в случае отмены.
Сейчас возвращается EEC_NOT_MODIFIED, а хотелось бы EEC_LOADING_INTERRUPTED.

(напомню что есть похожий тикет 0002562)

JohnDoe

2014-04-14 10:54

updater   bugnote:0012208

И о немодальном редакторе:
1) Вопрос: какой может быть практический смысл использовать EF_NONMODAL без EF_IMMEDIATERETURN?

2) Смотрю в фаре предусмотрены такие приватные константы
EEC_OPENED_EXISTING
EEC_ALREADY_EXISTS
EEC_OPEN_NEWINSTANCE
EEC_RELOAD
Может быть их тоже надо теперь использовать?

vskirdin

2014-04-15 09:55

administrator   bugnote:0012212

Last edited: 2014-04-15 09:55

EEC_OPENED_EXISTING (и еже с ними) - это несколько недоделанная хотелка. они нигде не участвуют (см. 0000182)
По поводу возвратов... пока ХЗ: это уже относится к 0002562 (лучше туда переползать с возвратами)

По существу вопроса - отработано?

JohnDoe

2014-04-15 10:16

updater   bugnote:0012214

Last edited: 2014-04-15 10:17

Пока отработано, а практика покажет.

Issue History

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