mirror of
https://github.com/arcan1s/arcanis.me.git
synced 2025-04-24 23:37:19 +00:00
155 lines
10 KiB
Markdown
155 lines
10 KiB
Markdown
---
|
||
category: ru
|
||
type: paper
|
||
hastr: true
|
||
layout: paper
|
||
tags: awesome-widgets, pytextmonitor
|
||
title: Awesome Widgets - Произвольные форматеры и макросы
|
||
short: aw-formatters-and-macros
|
||
---
|
||
Данная статья описывает два основных изменения в версии 3.2.0.
|
||
|
||
<!--more-->
|
||
|
||
# <a href="#formatters" class="anchor" id="formatters"><span class="octicon octicon-link"></span></a>Форматеры
|
||
|
||
На самом деле, форматеры имеют графический интерфейс для настройки, но здесь
|
||
я опишу, как их можно настроить, используя текстовый редактор.
|
||
|
||
Чтобы включить форматер, используйте файл `$HOME/.local/share/awesomewidgets/formatters/formatters.ini`.
|
||
Данный файл имеет только одну секцию `[Formatters]`, в которой ключи - это
|
||
соответствующие ключи в виджете, а значения - имена соответствующих форматеров.
|
||
Например:
|
||
|
||
```ini
|
||
[Formatters]
|
||
cpu=myformatter
|
||
```
|
||
|
||
означает, что форматер `myformatter` будет использован для ключа `cpu`.
|
||
|
||
Все форматеры хранятся в той же директории, один форматер на файл, файлы должны
|
||
иметь расширение `.desktop`. Каждый форматер имееет следующие настройки внутри
|
||
секции `[Desktop Entry]`:
|
||
|
||
| Поле | Обязательное | Значение | По-умолчанию |
|
||
| -------------------|--------------|----------------------------------|--------------|
|
||
| Name | да | имя форматера | none |
|
||
| Comment | нет | комментарий | empty |
|
||
| X-AW-ApiVersion | да | совместимость API. Не меняйте, если не знаете, что делаете | 0 |
|
||
| X-AW-Type | нет | тип форматера. Поддерживаются следующие типы: `NoFormat`, `DateTime`, `Float`, `Json`, `List`, `Script`, `String` | NoFormat |
|
||
|
||
Дополнительно следующте поля добавлены для совместимости:: `X-AW-Active`,
|
||
`X-AW-Interval`, `X-AW-Number`, `X-AW-Schedule`, `X-AW-Socket`, но они будут
|
||
проигнорированы.
|
||
|
||
Каждый тип форматера имеет свое поведение и свои настройки, которые описаны ниже.
|
||
Также существуют системные настройки, которые хранятся в `/usr/share/awesomewidgets/formatters/`,
|
||
системные форматеры будут перезаписаны пользовательскими, но настройки (то есть
|
||
`formatters.ini`) будут просто дополнены.
|
||
|
||
## <a href="#formatter-noformat" class="anchor" id="formatter-noformat"><span class="octicon octicon-link"></span></a>NoFormat форматер
|
||
|
||
Просто значение конвертирует в строку. Не имеет никаких особых настроек.
|
||
|
||
## <a href="#formatter-datetime" class="anchor" id="formatter-datetime"><span class="octicon octicon-link"></span></a>DateTime форматер
|
||
|
||
Конвертирует `QDateTime` объект в строку.
|
||
|
||
| Поле | Обязательное | Значение | По-умолчанию |
|
||
| -------------------|--------------|----------------------------------|--------------|
|
||
| X-AW-Format | да | Qt специфичный формат времени | (пусто) |
|
||
|
||
Действует аналогично `$ctime` и имеет аналогичную конфигурацию.
|
||
|
||
## <a href="#formatter-float" class="anchor" id="formatter-float"><span class="octicon octicon-link"></span></a>Float форматер
|
||
|
||
Конвертирует любое число в строку.
|
||
|
||
| Поле | Обязательное | Значение | По-умолчанию |
|
||
| -------------------|--------------|----------------------------------|--------------|
|
||
| X-AW-FillChar | нет | символ для заполнения до `X-AW-Width` | (space) |
|
||
| X-AW-ForceWidth | нет | обрезать строку после `X-AW-Width` | false |
|
||
| X-AW-Format | нет | Qt специфичный формат числа, поддерживаются: `e`, `E`, `f`, `g`, `G` | `f` |
|
||
| X-AW-Multiplier | нет | число, на которое значение будет умножено | 1.0 |
|
||
| X-AW-Precision | нет | число знаков после запятой | -1 (как получится) |
|
||
| X-AW-Summand | нет | число, которое будет добавлено к значению | 0.0 |
|
||
| X-AW-Width | нет | ширина числового поля, отрицательное - выравнивание по левому краю | 0 (не ограничивать) |
|
||
|
||
Конечное значение будет получено по формуле `X-AW-Multiplier * value + X-AW-Summand`.
|
||
|
||
## <a href="#formatter-float" class="anchor" id="formatter-float"><span class="octicon octicon-link"></span></a>Json форматер
|
||
|
||
Извлекает сообщения из JSON.
|
||
|
||
| Поле | Обязательное | Значение | По-умолчанию |
|
||
| -------------------|--------------|----------------------------------|--------------|
|
||
| X-AW-Path | да | путь к значению в JSON | (пусто) |
|
||
|
||
Путь должен быть разделен точками. Числа в пути будут интерпретированы как индекс
|
||
элемента в массиве.
|
||
|
||
## <a href="#formatter-list" class="anchor" id="formatter-list"><span class="octicon octicon-link"></span></a>List форматер
|
||
|
||
Конвертирует список строк в строку
|
||
|
||
| Поле | Обязательное | Значение | По-умолчанию |
|
||
| -------------------|--------------|----------------------------------|--------------|
|
||
| X-AW-Filter | нет | фильтровать список по заданному регулярному выражению | (пусто) |
|
||
| X-AW-Separator | нет | использовать разделитель для объединения | (пусто) |
|
||
| X-AW-Sort | нет | сортировать или нет список | false |
|
||
|
||
## <a href="#formatter-script" class="anchor" id="formatter-script"><span class="octicon octicon-link"></span></a>Script форматер
|
||
|
||
Использует javascript код для конвертации значения в строку. Значение будет
|
||
передано как аргумент в функцию.
|
||
|
||
| Поле | Обязательное | Значение | По-умолчанию |
|
||
| -------------------|--------------|----------------------------------|--------------|
|
||
| X-AW-AppendCode | нет | вставить код между `(function(value) {` и `})` | true |
|
||
| X-AW-Code | нет | код для использования | (пусто) |
|
||
| X-AW-HasReturn | нет | если false, то дополнить код `return output;`. Работает только если `X-AW-AppendCode` - `true` | false |
|
||
|
||
Например, для конвертации скорости загрузки в кибибиты на лету, вы можете использовать
|
||
следующее:
|
||
|
||
```ini
|
||
X-AW-AppendCode=true
|
||
X-AW-Code="output=value/8.0;"
|
||
X-AW-HasReturn=false
|
||
```
|
||
|
||
Код будет развернут в следующее:
|
||
|
||
```javascript
|
||
(function(value) {
|
||
output = value / 8.0;
|
||
return output;
|
||
})
|
||
```
|
||
|
||
## <a href="#formatter-script" class="anchor" id="formatter-script"><span class="octicon octicon-link"></span></a>String форматер
|
||
|
||
Улучшенная версия `NoFormat`.
|
||
|
||
| Поле | Обязательное | Значение | По-умолчанию |
|
||
| -------------------|--------------|----------------------------------|--------------|
|
||
| X-AW-FillChar | нет | символ для заполнения до `X-AW-Width` | (space) |
|
||
| X-AW-ForceWidth | нет | обрезать строку после `X-AW-Width` | false |
|
||
| X-AW-Width | нет | ширина поля, отрицательное - выравнивание по левому краю | 0 (не ограничивать) |
|
||
|
||
# <a href="#macros" class="anchor" id="macros"><span class="octicon octicon-link"></span></a>Макросы
|
||
|
||
Другая особенность - макросы. Пользователь может определить свою функцию, используя
|
||
следующую конструкцию
|
||
`$aw_macro<my_macro_name,some_arg,another_arg>{% raw %}{{{% endraw %}macro body here with $some_arg{% raw %}}}{% endraw %}`.
|
||
|
||
Первый аргумент - имя макроса - обязателен. Другие описывают аргументы, которые
|
||
будут переданы при вызове макроса. Тело макроса может иметь любой текст (включая
|
||
шаблоны, лямбды и прочее) и аргументы, определенные используя `$`.
|
||
|
||
Чтобы вызвать макрос в коде нужно использовать следующую конструкцию:
|
||
`$aw_macro_my_macro_name<$cpu,$cpucl>{% raw %}{{}}{% endraw %}` (тело функции
|
||
будет проигнорировано здесь). В данном примере, макрос будет развернут в
|
||
`macro body here with $cpu`.
|