Геннадий Тышов писал(а):
"Эргономическое требование. Пять икон действие должны быть автоматически выравнены по горизонтали". Как эти требования будут применены к сложным схемам, по каким алгоритмам они будут реализовываться я не знаю. Ведь в реальности шампуры просматриваются не зависимо друг от друга, иконы имеют различные размеры по высоте и ширине.
Как я понимаю, "выравнены по горизонтали" означает возможность управлять положением икон по высоте; в частности, чтобы расположить иконы разных вертикалей на одной высоте. Можно предложить следующее (имея в виду ручное редактирование):
1. Вводится минимальный шаг привязки по высоте для листа; разумно потребовать, чтобы это была минимальная протяжённость (высота) звена вертикали для схем этого листа. При вводе атомов каждое звено высотой по умолчанию, допустим, 1 шаг. Шаг определяется как изменяемый параметр настройки среды.
2. Вводятся команды пошагового изменения высоты выбранного звена (по аналогии с шириной иконы). При этом, разумеется, вся нижележащая часть данной вертикали сдвигается (а другие взаимосвязанные вертикали в матрёшке/силуэте удлиняются/укорачиваются; пусть за счёт своего последнего звена; если одной из них некуда укорачиваться - начинает удлиняться уже данная вертикаль).
3. Высота иконы (поля) задаётся также в шагах привязки, при этом минимально она определяется подгонкой под текущий текст в текущем его форматировании (принцип этого, впрочем, очевидный, показан
на этой странице на рис. Следование в техноязыке – примеры конструкций); подгонка идёт за счёт динамики верхнего/нижнего отступов (также имеют заданные минимальные значения; если в них не укладываемся - прибавляем шаг к расчётной высоте).
Вводятся команды пошагового изменения высоты (конечно, уменьшение сверх высоты текста вместе с минимальными отступами отвергается).
4. Вводятся команды перемещения выбранной иконы по вертикали; исполнение возможно, пока в направлении перемещения высота звена больше 1 шага (создаётся предварительным увеличением этого звена). При этом возможны варианты: 1) противоположное звено соответственно удлиняется, а всё остальное в схеме неизменно; 2) больше никакие размеры не меняются, т.е. перемещаемая икона "тащит" остальную часть вертикали за собой в направлении перемещения (что влияет и на взаимосвязанные вертикали).
Т.о. у нас появляется конструктивная сетка схемы по вертикали. Причём, меняя величину шага, мы управляем физической высотой схемы.
Наверное, можно реализовать и некоторые групповые команды. Насчёт автоматики сложнее - это всё-таки не выключка текста, и обычно сочинитель должен думать, как "подработать" компоновку.
Аналогично можно ввести измерение сетки и по горизонтали; надо только ввести шаг привязки по ширине, в котором будут измеряться как ширина икон и их смещение на вертикали (что уже реализовано), так и промежутки между иконами, и положения вертикалей. Тогда также, меняя горизонтальный шаг, управляем физической шириной (высота тоже "плавает" за счёт перевыключки текста; можно отдельно ввести режим изменения только промежутков).
Крайне желательно, чтобы наряду/вместо клавишных перемещений выполнялась буксировка мышью (естественно, с шаговыми "прыжками"). Отсутствие этого затрудняет редактирование.
Ещё одно - хотелось бы настройки всех или большинства параметров прямо из приложения (через меню настроек).