+2
Виконано

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

Foton 12 років тому оновлено Михаил Власов 12 років тому 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 объект и начинают с ним работу.