PIValueTreeEdit paste action in add menu

add piqt_utils translation
This commit is contained in:
2023-04-28 16:06:27 +03:00
parent 76a1b35f14
commit b867500aaf
5 changed files with 794 additions and 3 deletions

View File

@@ -0,0 +1,385 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>ConnectionEdit</name>
<message>
<source>Connection editor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Device</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Path:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>eth://UDP:127.0.0.1:12345:127.0.0.1:12346</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>eth://TCP:127.0.0.1:16666</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>eth://UDP:192.168.0.5:16666:192.168.0.6:16667:mcast:234.0.2.1:mcast:234.0.2.2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>file://./text.txt</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>binlog://./logs/:mylog_:1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ser:///dev/ttyUSB0:9600:8:N:1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ser://COM32:115200:8:N:1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>usb://0bb4:0c86:1:1:2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Options:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disconnect timeout:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> ms</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buffer size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> b</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Modify</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Parameters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Header:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Footer:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Timeout:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sender</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Frequency:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Hz</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Data:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Equal devices names: &quot;%1&quot;!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>IODeviceEdit</name>
<message>
<source>Edit ...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>IODeviceEditDialog</name>
<message>
<source>IODevice</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Options:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIValueTreeEdit</name>
<message>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Input new name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>This name already exists!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>New item</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No allowed names!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select new name:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIValueTreeEditArray</name>
<message>
<source>Count:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIValueTreeEditEnum</name>
<message>
<source>Edit Enum</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Value</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIValueTreeEditParameters</name>
<message>
<source>Read-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Comment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Array</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Attributes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Change ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rename ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Value</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reorder ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Paste before</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Paste after</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Change of &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIValueTreeEditReorder</name>
<message>
<source>Change order:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reorder of &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIVariantEdit</name>
<message>
<source>Invalid type</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No editor for %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIVariantEditors::FileBase</name>
<message>
<source>Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Absolute path</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Existing only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Set filter ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Input filter:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PIVariantEditors::StringList</name>
<message>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear All</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear All?</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,385 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
<name>ConnectionEdit</name>
<message>
<source>Connection editor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Name:</source>
<translation>Имя:</translation>
</message>
<message>
<source>Device</source>
<translation>Устройство</translation>
</message>
<message>
<source>Path:</source>
<translation>Путь:</translation>
</message>
<message>
<source>eth://UDP:127.0.0.1:12345:127.0.0.1:12346</source>
<translation></translation>
</message>
<message>
<source>eth://TCP:127.0.0.1:16666</source>
<translation></translation>
</message>
<message>
<source>eth://UDP:192.168.0.5:16666:192.168.0.6:16667:mcast:234.0.2.1:mcast:234.0.2.2</source>
<translation></translation>
</message>
<message>
<source>file://./text.txt</source>
<translation></translation>
</message>
<message>
<source>binlog://./logs/:mylog_:1</source>
<translation></translation>
</message>
<message>
<source>ser:///dev/ttyUSB0:9600:8:N:1</source>
<translation></translation>
</message>
<message>
<source>ser://COM32:115200:8:N:1</source>
<translation></translation>
</message>
<message>
<source>usb://0bb4:0c86:1:1:2</source>
<translation></translation>
</message>
<message>
<source>Mode:</source>
<translation>Режим:</translation>
</message>
<message>
<source>Options:</source>
<translation>Опции:</translation>
</message>
<message>
<source>Disconnect timeout:</source>
<translation>Таймаут разъединения:</translation>
</message>
<message>
<source> ms</source>
<translation> мс</translation>
</message>
<message>
<source>Buffer size:</source>
<translation>Размер буфера:</translation>
</message>
<message>
<source> b</source>
<translation> б</translation>
</message>
<message>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<source>Modify</source>
<translation>Изменить</translation>
</message>
<message>
<source>Filter</source>
<translation>Фильтр</translation>
</message>
<message>
<source>Parameters</source>
<translation>Параметры</translation>
</message>
<message>
<source>Header:</source>
<translation>Заголовок:</translation>
</message>
<message>
<source>Footer:</source>
<translation>Окончание:</translation>
</message>
<message>
<source>Timeout:</source>
<translation>Таймаут:</translation>
</message>
<message>
<source>Size:</source>
<translation>Размер:</translation>
</message>
<message>
<source>Sender</source>
<translation>Отправитель</translation>
</message>
<message>
<source>Frequency:</source>
<translation>Частота:</translation>
</message>
<message>
<source> Hz</source>
<translation> Гц</translation>
</message>
<message>
<source>Data:</source>
<translation>Данные:</translation>
</message>
<message>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
<source>Clear</source>
<translation>Очистить</translation>
</message>
<message>
<source>error</source>
<translation>ошибка</translation>
</message>
<message>
<source>Equal devices names: &quot;%1&quot;!</source>
<translation>Одинаковые имена устройств: &quot;%1&quot;!</translation>
</message>
</context>
<context>
<name>IODeviceEdit</name>
<message>
<source>Edit ...</source>
<translation>Изменить ...</translation>
</message>
</context>
<context>
<name>IODeviceEditDialog</name>
<message>
<source>IODevice</source>
<translation></translation>
</message>
<message>
<source>Type:</source>
<translation>Тип:</translation>
</message>
<message>
<source>Mode:</source>
<translation>Режим:</translation>
</message>
<message>
<source>Options:</source>
<translation>Опции:</translation>
</message>
</context>
<context>
<name>PIValueTreeEdit</name>
<message>
<source>Rename</source>
<translation>Переименовать</translation>
</message>
<message>
<source>Input new name:</source>
<translation>Введите новое имя:</translation>
</message>
<message>
<source>This name already exists!</source>
<translation>Такое имя уже существует!</translation>
</message>
<message>
<source>New item</source>
<translation>Новый элемент</translation>
</message>
<message>
<source>No allowed names!</source>
<translation>Нет доступных имён!</translation>
</message>
<message>
<source>Select new name:</source>
<translation>Выберите новое имя:</translation>
</message>
</context>
<context>
<name>PIValueTreeEditArray</name>
<message>
<source>Count:</source>
<translation>Количество:</translation>
</message>
</context>
<context>
<name>PIValueTreeEditEnum</name>
<message>
<source>Edit Enum</source>
<translation>Изменить Enum</translation>
</message>
<message>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<source>Value</source>
<translation>Значение</translation>
</message>
</context>
<context>
<name>PIValueTreeEditParameters</name>
<message>
<source>Read-only</source>
<translation>Только для чтения</translation>
</message>
<message>
<source>Hidden</source>
<translation>Скрыт</translation>
</message>
<message>
<source>Label</source>
<translation>Метка</translation>
</message>
<message>
<source>Type:</source>
<translation>Тип:</translation>
</message>
<message>
<source>Comment:</source>
<translation>Комментарий:</translation>
</message>
<message>
<source>Array</source>
<translation>Массив</translation>
</message>
<message>
<source>Attributes</source>
<translation>Атрибуты</translation>
</message>
<message>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
<source>Change ...</source>
<translation>Изменить ...</translation>
</message>
<message>
<source>Rename ...</source>
<translation>Переименовать ...</translation>
</message>
<message>
<source>Value</source>
<translation>Значение</translation>
</message>
<message>
<source>Group</source>
<translation>Группа</translation>
</message>
<message>
<source>Reorder ...</source>
<translation>Изменить порядок ...</translation>
</message>
<message>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
<source>Cut</source>
<translation>Вырезать</translation>
</message>
<message>
<source>Paste before</source>
<translation>Вставить перед</translation>
</message>
<message>
<source>Paste after</source>
<translation>Вставить после</translation>
</message>
<message>
<source>Grouping</source>
<translation>Группировка</translation>
</message>
<message>
<source>Change of &quot;%1&quot;</source>
<translation>Изменение &quot;%1&quot;</translation>
</message>
<message>
<source>Paste</source>
<translation>Вставить</translation>
</message>
</context>
<context>
<name>PIValueTreeEditReorder</name>
<message>
<source>Change order:</source>
<translation>Изменить порядок:</translation>
</message>
<message>
<source>Reorder of &quot;%1&quot;</source>
<translation>Изменение порядка &quot;%1&quot;</translation>
</message>
</context>
<context>
<name>PIVariantEdit</name>
<message>
<source>Invalid type</source>
<translation>Недействительный тип</translation>
</message>
<message>
<source>No editor for %1</source>
<translation>Нет редактора для %1</translation>
</message>
</context>
<context>
<name>PIVariantEditors::FileBase</name>
<message>
<source>Choose</source>
<translation>Выбрать</translation>
</message>
<message>
<source>Select directory</source>
<translation>Выбор директории</translation>
</message>
<message>
<source>Select file</source>
<translation>Выбор файла</translation>
</message>
<message>
<source>Absolute path</source>
<translation>Абсолютный путь</translation>
</message>
<message>
<source>Existing only</source>
<translation>Только существующие</translation>
</message>
<message>
<source>Set filter ...</source>
<translation>Установить фильтр ...</translation>
</message>
<message>
<source>Select filter</source>
<translation>Установка фильтра</translation>
</message>
<message>
<source>Input filter:</source>
<translation>Задайте фильтр:</translation>
</message>
</context>
<context>
<name>PIVariantEditors::StringList</name>
<message>
<source>Apply</source>
<translation>Применить</translation>
</message>
<message>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
<source>Clear</source>
<translation>Очистить</translation>
</message>
<message>
<source>Clear All</source>
<translation>Удалить всё</translation>
</message>
<message>
<source>Clear All?</source>
<translation>Удалить всё?</translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,2 @@
lupdate ../ -ts piqt_utils_ru.ts
lupdate ../ -ts piqt_utils_en.ts

View File

@@ -457,6 +457,7 @@ void PIValueTreeEdit::checkActions() {
}
widget_params->actionPasteBefore->setEnabled(can_paste);
widget_params->actionPasteAfter->setEnabled(can_paste);
widget_params->actionPaste->setEnabled(can_paste);
}
@@ -628,15 +629,21 @@ PIValueTreeEdit::GridWidgets::GridWidgets(PIValueTreeEdit * p) {
menu_conf.addActions({wp->actionRename, wp->actionChange, wp->actionReorder});
menu_group.addActions(common_actions);
menu_conf.addActions(common_actions);
menu_new.addActions({wp->actionValue, wp->actionGroup, wp->actionArray});
button_add = new QToolButton();
menu_new.addActions({wp->actionValue, wp->actionGroup, wp->actionArray, newSeparator(), wp->actionPaste});
button_add = new ToolButton();
button_add->setIcon(QIcon(":/icons/list-add.png"));
button_add->setPopupMode(QToolButton::InstantPopup);
button_add->setMenu(&menu_new);
((ToolButton *)button_add)->setPressHandler([this]() { parent->checkActions(); });
wp->actionValue->setData((int)NewType::Value);
wp->actionGroup->setData((int)NewType::Group);
wp->actionArray->setData((int)NewType::Array);
connect(button_add, &QToolButton::triggered, this, [this](QAction * a) { parent->newRequest((NewType)a->data().toInt()); });
connect(button_add, &QToolButton::triggered, this, [this](QAction * a) {
if (a == parent->widget_params->actionPaste)
parent->actionPaste(button_add, "", parent->current.children().size_s() + 1);
else
parent->newRequest((NewType)a->data().toInt());
});
}

View File

@@ -209,6 +209,18 @@
<string>Paste after</string>
</property>
</action>
<action name="actionPaste">
<property name="icon">
<iconset resource="../utils/qad_utils.qrc">
<normaloff>:/icons/edit-paste.png</normaloff>:/icons/edit-paste.png</iconset>
</property>
<property name="text">
<string>Paste</string>
</property>
<property name="toolTip">
<string>Paste</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>