+2
Terminé

Выход из режима редактирования

Foton il y a 12 ans mis à jour par Михаил Власов il y a 11 ans 12

Хочется иметь выход из режима редактирования например по клавише Esc. Очень его нехватает. Постоянно зрительно шаришь по панели инструментов с поиском кнопки, которую отжать. И еще в АПИ возможность программного вкл/выкл.

Завершение редактирования, как и начало редактирования, по кнопке Enter

Программно, через API:


Delphi:

MainWindow.Actions["ActionsEditStartSelection"].Execute


VBScript:

MainWindow.Actions("ActionsEditStartSelection").Execute


а с помощью апи можно узнать текущий режим? (редактируется или нет)

Узнать текущий режим можно, анализируя состояния команд:


function GetMapMode

    dim aSelectionMode, anEditingMode

    aSelectionMode = MainWindow.Actions("ActionsEditStartSelection").Checked

    anEditingMode = MainWindow.Actions("ActionsEditReshapeSelection").Checked

    if aSelectionMode then

        GetMapMode = "Выделение"

    elseif anEditingMode then

        GetMapMode = "Редактирование"

    else

        GetMapMode = "Создание"

    end if

end function


Узнать, какой объект и какая его форма редактируется, можно через Selection.Ids(0) и Selection.ShapeIndexes(0).


Про    "MainWindow.Actions["ActionsEditStartSelection"].Execute"  думал, что так не совсем правильно.

Про ESC имел в виду выход из режима создания НОВОГО объекта. Нарисовав объект нужно жать на панели кнопку или запомнить что она есть еще в контекстном меню, но кнопки на это не предусмотрено. Жалобы по этому поводу слышу от разных пользователей разного уровня. Чаще от тех кто работал в графических редакторах.

Да, мне тоже практика использования MainWindow.Actions("ActionsЧтоТоТам") кажется порочной (костыль какой-то).

логичнее было бы видеть такие методы в АПИ.
ну или отразить в документации эти приёмкики и жёстко закрепить список "системных" акшонов

Абсолютно согласен!

Практика использования системных команд - абсолютно нормальна и безопасна, и довольно часто используется. Имена системных команд меняться не будут. Никогда. Могут добавляться новые команды.

Тогда стоит закрепить это в документации к API и задекларировать список основных ( а лучше всех) системных команд с соответствующим описанием.
Можно на вашем wiki статью сделать, которую потом включить в документацию.

Сейчас:


Выход из режима редактирования:

  1. Клавиша [Enter].
  2. Двойной щелчок левой кнопкой мыши.
  3. Из контекстного меню "Завершить редактирование.
  4. На панели инструментов отжать кнопку  
  5. На панели инструментов нажать кнопку 
Выход из режима создания:

  1. Из контекстного меню "Выйти из режима создания".
  2. На панели инструментов отжать кнопку 
  3. На панели инструментов нажать кнопку 
Можем добавить (скорее всего, добавим):


Выход из режима создания/редактирования/измерений/выделений по [Escape].


"Выход из режима создания/редактирования/измерений/выделений по [Escape]."

Спасибо!

Может еще сделать такую развилку выхода из создания:

  • [Enter], [Esc], [double click] - создать объект и выйти из режима создания
  • [Ctrl]+[Enter], [Ctrl]+[double click] - создать объект и начать создание другого такого же
Дело в том что ингео после создания объекта продолжает оставатся в режиме создания; я предлагаю изменить это поведение: оставатся в режиме создания если пользователь закончил редактирование при зажатом [Ctrl], так как в основном юзеры создают 1 объект и начинают с ним работу.