diff --git a/docs/language/en/NAVIGATOR_statement.md b/docs/language/en/NAVIGATOR_statement.md index e03d84b9b1..0643c04f24 100644 --- a/docs/language/en/NAVIGATOR_statement.md +++ b/docs/language/en/NAVIGATOR_statement.md @@ -46,6 +46,8 @@ imageSetting CLASS classExpr HEADER headerExpr SHOWIF showIfExpr +CHANGEKEY key [showSetting] +CHANGEMOUSE key [showSetting] ``` ### Description @@ -167,6 +169,36 @@ The hierarchy described within a single `NAVIGATOR` statement can have an arbitr Expression whose value determines visibility of the navigator element. +- `CHANGEKEY key [showSetting]` + + Specifying the [key combination](../paradigm/Form_events.md#keyboard) that selects this navigator element when pressed. + + - `key` + + [String literal](Literals.md#strliteral) describing the key combination. + + - `showSetting` + + Display of the combination in the navigator element's caption. Specified by one of the keywords: + + - `SHOW` - the combination is shown in the navigator element's caption. + - `HIDE` - the combination is not shown (default value). + +- `CHANGEMOUSE key [showSetting]` + + Specifying the mouse key combination that selects this navigator element when pressed. + + - `key` + + String literal describing the mouse key combination. + + - `showSetting` + + Display of the combination in the navigator element's caption. Specified by one of the keywords: + + - `SHOW` - the combination is shown in the navigator element's caption. + - `HIDE` - the combination is not shown (default value). + ### Examples ```lsf @@ -195,8 +227,8 @@ NAVIGATOR { NEW FOLDER documents 'Documents' WINDOW toolbar { // the folders themselves will be displayed in the root window, and when the user selects one of them // in a window with a vertical toolbar the descendants of this particular folder will be shown - NEW ACTION hi; // creating an action element - NEW ACTION h=hello; // creating an action element + NEW ACTION hi CHANGEKEY 'ctrl I' SHOW; // an action element with a hot key shown in its caption + NEW ACTION h=hello CHANGEMOUSE 'DBLCLK' SHOW; // an action element triggered by a double mouse click // the statement to move the shipments element from the catalogs folder to the document folder // before the hello element MOVE shipments BEFORE h; diff --git a/docs/language/en/WINDOW_statement.md b/docs/language/en/WINDOW_statement.md index 85d74f638c..9c2986801a 100644 --- a/docs/language/en/WINDOW_statement.md +++ b/docs/language/en/WINDOW_statement.md @@ -3,12 +3,12 @@ slug: "/WINDOW_statement" title: 'WINDOW statement' --- -The `WINDOW` statement - creating a new [window](../paradigm/Navigator_design.md). +The `WINDOW` statement - creating a new [window](../paradigm/Navigator_design.md), the `HIDE WINDOW` statement - hiding an existing window. ### Syntax ``` -WINDOW name [caption] [options]; +WINDOW name [caption] [NATIVE] [options]; ``` The `options` that appear at the end of the statement can be specified one after another in any order: @@ -20,16 +20,26 @@ orientationType POSITION(x, y, width, height) fixedPositionType HALIGN(alignType) -VALING(alignType) +VALIGN(alignType) TEXTHALIGN(alignType) TEXTVALIGN(alignType) CLASS cssClassExpr ``` +An existing window can be hidden with a separate statement: + +``` +HIDE WINDOW windowName; +``` + ### Description The `WINDOW` statement declares a new window and adds it to the current [module](../paradigm/Modules.md). +By default a window is created that displays [navigator elements](../paradigm/Navigator.md). + +The `HIDE WINDOW` statement hides the specified window, making it invisible. For example, hiding the `System.log` window causes messages to the user to be shown as system dialog forms. + ### Parameters - `name` @@ -40,6 +50,14 @@ The `WINDOW` statement declares a new window and adds it to the current [module] Window caption. [String literal](Literals.md#strliteral). If caption is not specified, the window's name will be used as the caption. +- `NATIVE` + + Keyword specifying that the window is filled by the client rather than by the navigator: navigator elements cannot be placed into it. This is how the predefined `System.forms` window, where forms open, and `System.log` window, where user messages appear, are defined. For such a window only the `POSITION`, `CLASS`, `HIDETITLE`, and `HIDESCROLLBARS` options apply, while orientation and alignment are ignored. + +- `windowName` + + Name of the window to hide. [Composite ID](IDs.md#cid) of an existing window. + ### Options - `HIDETITLE` @@ -152,8 +170,15 @@ WINDOW system HORIZONTAL POSITION(80, 0, 20, 6) VALIGN(CENTER) HALIGN(END) HIDET WINDOW toolbar VERTICAL POSITION(0, 6, 20, 94) HIDETITLE CLASS toolbarWindowClass(); +// forms open in forms, messages are shown in log +WINDOW forms NATIVE POSITION(20, 6, 80, 94) CLASS formsWindowClass(); +WINDOW log NATIVE POSITION(80, 6, 20, 93) HIDETITLE CLASS logsWindowClass(); + // a horizontal toolbar at the bottom of the desktop, in which all buttons will be centered and text will be aligned up // in this toolbar, for example, it is possible to place forms for quick opening WINDOW hotforms HORIZONTAL BOTTOM VALIGN(CENTER) TEXTVALIGN(START); + +// hiding the predefined message window (then messages are shown as dialog forms) +HIDE WINDOW System.log; ``` diff --git a/docs/language/ru/NAVIGATOR_statement.md b/docs/language/ru/NAVIGATOR_statement.md index c5dd8f3eb2..01dcb63d92 100644 --- a/docs/language/ru/NAVIGATOR_statement.md +++ b/docs/language/ru/NAVIGATOR_statement.md @@ -46,6 +46,8 @@ imageSetting CLASS classExpr HEADER headerExpr SHOWIF showIfExpr +CHANGEKEY key [showSetting] +CHANGEMOUSE key [showSetting] ``` ### Описание @@ -167,6 +169,36 @@ SHOWIF showIfExpr Выражение, значение которого определяет видимость элемента навигатора. +- `CHANGEKEY key [showSetting]` + + Указание [комбинации клавиш](../paradigm/Form_events.md#keyboard), при нажатии которой будет выбран этот элемент навигатора. + + - `key` + + [Строковый литерал](Literals.md#strliteral), описывающий комбинацию клавиш. + + - `showSetting` + + Отображение комбинации в заголовке элемента навигатора. Задается одним из ключевых слов: + + - `SHOW` - комбинация отображается в заголовке элемента навигатора. + - `HIDE` - комбинация не отображается (значение по умолчанию). + +- `CHANGEMOUSE key [showSetting]` + + Указание комбинации клавиш мыши, при нажатии которой будет выбран этот элемент навигатора. + + - `key` + + Строковый литерал, описывающий комбинацию клавиш мыши. + + - `showSetting` + + Отображение комбинации в заголовке элемента навигатора. Задается одним из ключевых слов: + + - `SHOW` - комбинация отображается в заголовке элемента навигатора. + - `HIDE` - комбинация не отображается (значение по умолчанию). + ### Примеры ```lsf @@ -194,8 +226,8 @@ NAVIGATOR { // сами папки будут отображаться в окне root, и при выборе одной из них в окне с вертикальным // тулбаром будут показаны потомки именно этой папки NEW FOLDER documents 'Документы' WINDOW toolbar { - NEW ACTION hi; // создаем элемент-действие - NEW ACTION h=hello; // создаем элемент-действие + NEW ACTION hi CHANGEKEY 'ctrl I' SHOW; // элемент-действие с горячей клавишей, показываемой в его заголовке + NEW ACTION h=hello CHANGEMOUSE 'DBLCLK' SHOW; // элемент-действие, вызываемое двойным щелчком мыши // инструкция перемещения элемента shipments из папки catalogs в папку document перед элементом hello MOVE shipments BEFORE h; } diff --git a/docs/language/ru/WINDOW_statement.md b/docs/language/ru/WINDOW_statement.md index 1c91d58b8b..6b6e013f5e 100644 --- a/docs/language/ru/WINDOW_statement.md +++ b/docs/language/ru/WINDOW_statement.md @@ -3,12 +3,12 @@ slug: "/WINDOW_statement" title: 'Инструкция WINDOW' --- -Инструкция `WINDOW` - создание нового [окна](../paradigm/Navigator_design.md). +Инструкция `WINDOW` - создание нового [окна](../paradigm/Navigator_design.md), инструкция `HIDE WINDOW` - скрытие существующего окна. ### Синтаксис ``` -WINDOW name [caption] [options]; +WINDOW name [caption] [NATIVE] [options]; ``` Опции `options`, которые идут в конце инструкции, могут быть указаны друг за другом в произвольном порядке: @@ -20,16 +20,26 @@ orientationType POSITION(x, y, width, height) fixedPositionType HALIGN(alignType) -VALING(alignType) +VALIGN(alignType) TEXTHALIGN(alignType) TEXTVALIGN(alignType) CLASS cssClassExpr ``` +Существующее окно можно скрыть отдельной инструкцией: + +``` +HIDE WINDOW windowName; +``` + ### Описание Инструкция `WINDOW` объявляет новое окно и добавляет его в текущий [модуль](../paradigm/Modules.md). +По умолчанию создаётся окно, в котором отображаются [элементы навигатора](../paradigm/Navigator.md). + +Инструкция `HIDE WINDOW` скрывает указанное окно, делая его невидимым. Например, скрытие окна `System.log` приводит к тому, что сообщения пользователю выдаются в виде системных диалоговых форм. + ### Параметры - `name` @@ -40,6 +50,14 @@ CLASS cssClassExpr Заголовок окна. [Строковый литерал](Literals.md#strliteral). Если заголовок не задан, то заголовком окна будет являться его имя. +- `NATIVE` + + Ключевое слово, указывающее, что окно наполняет клиент, а не навигатор: поместить в него элементы навигатора нельзя. Так заданы предопределённые окна `System.forms`, в котором открываются формы, и `System.log`, в котором выводятся сообщения пользователю. Для такого окна применяются только опции `POSITION`, `CLASS`, `HIDETITLE` и `HIDESCROLLBARS`, а ориентация и выравнивание не учитываются. + +- `windowName` + + Имя скрываемого окна. [Составной идентификатор](IDs.md#cid) существующего окна. + ### Опции инструкции - `HIDETITLE` @@ -152,7 +170,14 @@ WINDOW system HORIZONTAL POSITION(80, 0, 20, 6) VALIGN(CENTER) HALIGN(END) HIDET WINDOW toolbar VERTICAL POSITION(0, 6, 20, 94) HIDETITLE CLASS toolbarWindowClass(); +// в forms открываются формы, в log выводятся сообщения +WINDOW forms NATIVE POSITION(20, 6, 80, 94) CLASS formsWindowClass(); +WINDOW log NATIVE POSITION(80, 6, 20, 93) HIDETITLE CLASS logsWindowClass(); + // горизонтальное окно внизу рабочего стола, в котором все кнопки будут выравниваться по центру, а текст - выравниваться вверх // в это окно можно, например, помещать формы для быстрого открытия WINDOW hotforms HORIZONTAL BOTTOM VALIGN(CENTER) TEXTVALIGN(START); + +// скрытие предопределённого окна сообщений (тогда сообщения выдаются диалоговыми формами) +HIDE WINDOW System.log; ``` diff --git a/docs/paradigm/en/Icons.md b/docs/paradigm/en/Icons.md index 111f5da2bb..d91c3b366a 100644 --- a/docs/paradigm/en/Icons.md +++ b/docs/paradigm/en/Icons.md @@ -50,17 +50,17 @@ Parameters that change ranking thresholds: | Parameter | Scope | Default threshold | |-------------------------------------------|---------------------------------|-------------------| | `defaultAutoImageRankingThreshold` | All auto-icons | `0.0` | -| `defaultNavigatorImageRankingThreshold` | Navigator elements | `0.1` | -| `defaultContainerImageRankingThreshold` | Containers and forms | `0.6` | +| `defaultNavigatorImageRankingThreshold` | Navigator elements and forms | `0.1` | +| `defaultContainerImageRankingThreshold` | Containers | `0.6` | | `defaultPropertyImageRankingThreshold` | Properties and actions | `0.8` | Parameters to enable/disable default icons: | Parameter | Element type | Default value | |--------------------------|--------------------------|---------------| -| `defaultNavigatorImage` | Navigator elements | `true` | -| `defaultContainerImage` | Containers and forms | `false` | +| `defaultNavigatorImage` | Navigator elements and forms | `true` | +| `defaultContainerImage` | Containers | `false` | | `defaultPropertyImage` | Properties and actions | `false` | -By default, automatic icon assignment is enabled only for navigator elements. +The default icon is substituted when no suitable match is found; with the standard settings it is enabled only for navigator elements and forms. diff --git a/docs/paradigm/en/Navigator.md b/docs/paradigm/en/Navigator.md index 400b6d0693..9e8450bb99 100644 --- a/docs/paradigm/en/Navigator.md +++ b/docs/paradigm/en/Navigator.md @@ -9,10 +9,17 @@ title: 'Navigator' - *action* – executes a specified [action](Actions.md). Only actions that take no arguments can be added to the navigator. - *form* – [opens](In_an_interactive_view_SHOW_DIALOG.md) a specified [form](Forms.md) in the interactive view and the [asynchronous](In_an_interactive_view_SHOW_DIALOG.md#flow) mode. -When an element is added to the navigator, a *parent* element is defined for it. The root element of the navigator is the `System.root` folder. +When an element is added to the navigator, a *parent* element is defined for it; among the children of one folder the elements are ordered. The root element of the navigator is the `System.root` folder. If no navigator elements are displayed in a particular navigator folder, this folder is automatically hidden. +A navigator element can additionally be given: + +- a *caption* shown to the user — a fixed text or the current value of a property, in which case it depends on data; +- a *visibility condition* — the element is shown only when the specified condition holds; +- an *icon*, chosen or set by the [common icon assignment mechanism](Icons.md); +- a *hot key* and a *mouse binding* that trigger the element just as selecting it does. + Just as an [interactive](Interactive_view.md) form view, the navigator is displayed in a 2D space: on the user's device screen. Therefore, it's [design](Navigator_design.md) can/has to be defined, as well as for all other [graphic](Form_views.md#graphic) views. ### Language diff --git a/docs/paradigm/en/Navigator_design.md b/docs/paradigm/en/Navigator_design.md index 675bcf279f..3f0b820afa 100644 --- a/docs/paradigm/en/Navigator_design.md +++ b/docs/paradigm/en/Navigator_design.md @@ -36,7 +36,7 @@ Each window occupies a predefined section of the desktop. Graphically, this can }} /> -The entire desktop is `100 x 100` *pixels* in size. When creating a window, you must specify the window's upper left coordinate, width and height, expressed in *pixels*. It is desirable that windows should "cover" the entire area of the desktop. If this does not happen, then the free area will be given to one of the windows (there is no guarantee as to which one). Two windows are allowed to have absolutely identical coordinates and sizes. In this case they will be displayed in the same place, but switching between them will be possible using tabs. +The entire desktop is `100 x 100` *points* in size. When creating a window, you must specify the window's upper left coordinate, width and height, expressed in *points*. It is desirable that windows should "cover" the entire area of the desktop. If this does not happen, then the free area will be given to one of the windows (there is no guarantee as to which one). Two windows are allowed to have absolutely identical coordinates and sizes. In this case they will be displayed in the same place, but switching between them will be possible using tabs. ### Selected folder {#selectedfolder} diff --git a/docs/paradigm/en/User_interface.md b/docs/paradigm/en/User_interface.md index dfeaa9b607..80a919f8b3 100644 --- a/docs/paradigm/en/User_interface.md +++ b/docs/paradigm/en/User_interface.md @@ -3,4 +3,34 @@ slug: "/User_interface" title: 'User interface' --- -### (Under development) +The platform lets the user adjust the graphical interface to their own preferences — the appearance of the client and the behavior of forms. The chosen settings are saved and reapplied the next time the user logs in, layered on top of the [form design](Form_design.md) and the [navigator design](Navigator_design.md) defined by the developer, and on top of the default values set by the administrator. + +By default the settings are stored separately for each user. Some of the appearance settings can be stored for the computer rather than for the user — they then become shared by everyone working at that computer. + +### Appearance + +Appearance settings are set in the user profile and in the appearance settings form; the color theme and the navigator pinning can also be switched directly from the system toolbar. + +| Setting | Values | Purpose | +|---|---|---| +| Color theme | light, dark, system | light or dark interface background; the system theme is taken from the client side | +| Theme | Excel, Classic, Flatly, Lumen, Quartz, Simplex, Sketchy, Yeti | the style of interface elements — fonts, colors, paddings | +| Size | normal, mini, tiny | the scale of interface elements | +| Navigation bar | horizontal, vertical | the placement of the navigation bar | +| Navigator pinning | all, navigation bar only, none | what part of the navigator is pinned (permanently shown) | +| Text wrapping | yes, no | wrapping of long text in table cells | +| Highlighting of duplicates | yes, no | highlighting of repeated values in a column | +| Manual filter applying | yes, no | filters are applied by a separate command rather than immediately on input | +| Mobile mode | yes, no | interface layout for mobile devices | +| Font size | percent | the font size of the interface | +| Colors | color choice | the color of the selected row and cell, the active cell, and the table grid lines | + +### Regional settings + +The user can set the interface language, country, time zone, and the date and time formats. Each of these values is taken from the client side (the browser or the operating system) if the user allows it; otherwise the value set by the user explicitly is used, then the default value set by the administrator, and finally the server value. + +### Form table settings + +For each table on a form the user can change the set of displayed columns, their order, width, sorting, captions, and value display format, as well as the row font, the page size, and the header height. These settings are saved personally and override the general table settings and the [form design](Form_design.md). + +The user can save their table settings or reset them to the general ones. The administrator can set general settings that apply to all users who have none of their own. diff --git a/docs/paradigm/ru/Icons.md b/docs/paradigm/ru/Icons.md index a7e819eca6..c6bb09a8f0 100644 --- a/docs/paradigm/ru/Icons.md +++ b/docs/paradigm/ru/Icons.md @@ -51,16 +51,16 @@ title: 'Механизм установки иконок' | Параметр | Область действия | Порог по умолчанию | |--------------------------------------------|---------------------------------------|--------------------| | `defaultAutoImageRankingThreshold` | Все авто-иконки | `0.0` | -| `defaultNavigatorImageRankingThreshold` | Элементы навигатора | `0.1` | -| `defaultContainerImageRankingThreshold` | Контейнеры и формы | `0.6` | +| `defaultNavigatorImageRankingThreshold` | Элементы навигатора и формы | `0.1` | +| `defaultContainerImageRankingThreshold` | Контейнеры | `0.6` | | `defaultPropertyImageRankingThreshold` | Свойства и действия | `0.8` | Параметры, позволяющие включить/отключить использование иконок по умолчанию: | Параметр | Тип элементов | Значение по умолчанию | |----------------------------|-------------------------|-----------------------| -| `defaultNavigatorImage` | Элементы навигатора | `true` | -| `defaultContainerImage` | Контейнеры и формы | `false` | +| `defaultNavigatorImage` | Элементы навигатора и формы | `true` | +| `defaultContainerImage` | Контейнеры | `false` | | `defaultPropertyImage` | Свойства и действия | `false` | -По умолчанию автоматическая установка иконки элементов включена только для элементов навигатора. \ No newline at end of file +Иконка по умолчанию подставляется, когда подходящее совпадение не найдено; по стандартным настройкам она включена только для элементов навигатора и форм. \ No newline at end of file diff --git a/docs/paradigm/ru/Navigator.md b/docs/paradigm/ru/Navigator.md index 52dacfa454..22eb700202 100644 --- a/docs/paradigm/ru/Navigator.md +++ b/docs/paradigm/ru/Navigator.md @@ -9,10 +9,17 @@ title: 'Навигатор' - *действие* - выполняет заданное [действие](Actions.md). В навигатор можно добавить только те действия, которые не принимают на вход ни одного аргумента. - *форма* - [открывает](In_an_interactive_view_SHOW_DIALOG.md) заданную [форму](Forms.md) в интерактивном представлении в [асинхронном](In_an_interactive_view_SHOW_DIALOG.md#flow) режиме. -При добавлении элемента в навигатор ему устанавливается *родительский* элемент. Корневым элементом навигатора является папка навигатора `System.root`. +При добавлении элемента в навигатор ему устанавливается *родительский* элемент; среди потомков одной папки элементы упорядочены. Корневым элементом навигатора является папка навигатора `System.root`. Если в какой-то папке навигатора не отображается ни один элемент навигатора, то эта папка автоматически прячется. +Для элемента навигатора можно дополнительно задать: + +- *заголовок*, отображаемый пользователю, — постоянный текст или текущее значение свойства, и тогда он зависит от данных; +- *условие видимости* — элемент отображается только тогда, когда заданное условие выполняется; +- *иконку*, выбираемую или задаваемую по [общему механизму установки иконок](Icons.md); +- *горячую клавишу* и *привязку мыши*, срабатывание которых равносильно выбору элемента пользователем. + Также, как и [интерактивное](Interactive_view.md) представление формы, навигатор отображается в двумерном пространстве: на экране устройства пользователя, и, соответственно, для него, как и для других [графических](Form_views.md#graphic) представлений, можно / нужно задавать [дизайн](Navigator_design.md). ### Язык diff --git a/docs/paradigm/ru/User_interface.md b/docs/paradigm/ru/User_interface.md index b57508a97e..c03a4bd478 100644 --- a/docs/paradigm/ru/User_interface.md +++ b/docs/paradigm/ru/User_interface.md @@ -3,4 +3,34 @@ slug: "/User_interface" title: 'Пользовательский интерфейс' --- -### (В разработке) +Платформа позволяет пользователю настраивать графический интерфейс под себя — внешний вид клиента и поведение форм. Сделанные настройки сохраняются и применяются при следующем входе пользователя, накладываясь поверх [дизайна форм](Form_design.md) и [дизайна навигатора](Navigator_design.md), заданных разработчиком, а также поверх значений по умолчанию, заданных администратором. + +По умолчанию настройки хранятся отдельно для каждого пользователя. Часть настроек оформления может храниться не для пользователя, а для компьютера — тогда они становятся общими для всех, кто работает за этим компьютером. + +### Оформление + +Настройки оформления задаются в профиле пользователя и в форме настроек оформления; цветовую тему и закрепление навигатора можно также переключать прямо с системной панели. + +| Настройка | Значения | Назначение | +|---|---|---| +| Цветовая тема | светлая, тёмная, системная | светлый или тёмный фон интерфейса; системная тема берётся со стороны клиента | +| Тема оформления | Excel, Классическая, Flatly, Lumen, Quartz, Simplex, Sketchy, Yeti | стиль элементов интерфейса — шрифты, цвета, отступы | +| Размер | нормальный, мини, крошечный | масштаб элементов интерфейса | +| Панель навигации | горизонтальная, вертикальная | расположение панели навигации | +| Закрепление навигатора | всё, только панель навигации, ничего | что из навигатора закреплено (постоянно показано) | +| Перенос текста | да, нет | перенос длинного текста в ячейках таблиц | +| Подсветка дубликатов | да, нет | подсветка повторяющихся значений в колонке | +| Ручное применение фильтров | да, нет | фильтры применяются по отдельной команде, а не сразу при вводе | +| Мобильный режим | да, нет | компоновка интерфейса для мобильных устройств | +| Размер шрифта | процент | размер шрифта интерфейса | +| Цвета | выбор цвета | цвет выделенной строки и ячейки, активной ячейки и линий таблицы | + +### Региональные настройки + +Пользователь может задать язык интерфейса, страну, часовой пояс, а также форматы даты и времени. Каждое из этих значений берётся со стороны клиента (из браузера или операционной системы), если пользователь это разрешил; иначе используется значение, заданное пользователем явно, затем значение по умолчанию, заданное администратором, и, наконец, значение сервера. + +### Настройки таблиц форм + +Для каждой таблицы на форме пользователь может изменить состав отображаемых колонок, их порядок, ширину, сортировку, заголовки и формат отображения значений, а также шрифт строк, размер страницы и высоту заголовка. Эти настройки сохраняются персонально и переопределяют общие настройки таблицы и [дизайн формы](Form_design.md). + +Пользователь может сохранить свои настройки таблицы или сбросить их к общим. Администратор может задать общие настройки, которые применяются ко всем пользователям, у которых нет собственных.