diff --git a/libs/piqt_utils/lang/piqt_utils_en.ts b/libs/piqt_utils/lang/piqt_utils_en.ts index e493b64..4db122b 100644 --- a/libs/piqt_utils/lang/piqt_utils_en.ts +++ b/libs/piqt_utils/lang/piqt_utils_en.ts @@ -192,6 +192,14 @@ Select new name: + + Paste + + + + Name "%1" already exists, get new name: + + PIValueTreeEditArray diff --git a/libs/piqt_utils/lang/piqt_utils_ru.ts b/libs/piqt_utils/lang/piqt_utils_ru.ts index cf8f5e7..0289ff1 100644 --- a/libs/piqt_utils/lang/piqt_utils_ru.ts +++ b/libs/piqt_utils/lang/piqt_utils_ru.ts @@ -192,6 +192,14 @@ Select new name: Выберите новое имя: + + Paste + Вставить + + + Name "%1" already exists, get new name: + Имя "%1" уже существует, задайте новое имя: + PIValueTreeEditArray diff --git a/libs/piqt_utils/pivaluetree_edit.cpp b/libs/piqt_utils/pivaluetree_edit.cpp index ae02018..61d4c78 100644 --- a/libs/piqt_utils/pivaluetree_edit.cpp +++ b/libs/piqt_utils/pivaluetree_edit.cpp @@ -442,10 +442,22 @@ void PIValueTreeEdit::actionCopy(QToolButton *, const PIString & vn) { } -void PIValueTreeEdit::actionPaste(QToolButton * button, const PIString & vn, int offset) { +void PIValueTreeEdit::actionPaste(QToolButton *, const PIString & vn, int offset) { PIString json = Q2PIString(QApplication::clipboard()->text()); if (json.isEmpty()) return; + while (current.contains(paste_name)) { + bool ok = false; + QString s = QInputDialog::getText(nullptr, + tr("Paste"), + tr("Name \"%1\" already exists, get new name:").arg(PI2QString(paste_name)), + QLineEdit::Normal, + PI2QString(paste_name), + &ok); + if (!ok) return; + paste_name = Q2PIString(s); + } PIValueTree ins_val = PIValueTreeConversions::fromJSON(PIJSON::fromJSON(json)); + ins_val.setName(paste_name); // if (ins_val.name.isEmpty()) return; PIValueTree cur_val = value(); cur_val.insertChild(cur_val.childIndex(vn) + offset, ins_val); @@ -492,6 +504,7 @@ void PIValueTreeEdit::actionTriggered(QToolButton * button, const PIString & vn, void PIValueTreeEdit::checkActions() { + paste_name.clear(); bool can_paste = true; PIString str = Q2PIString(QApplication::clipboard()->text()); if (str.isEmpty() || !str.startsWith("{")) { @@ -501,7 +514,7 @@ void PIValueTreeEdit::checkActions() { if (!j.contains("name")) can_paste = false; else { - if (current.contains(j["name"].value().toString())) can_paste = false; + paste_name = j["name"].value().toString(); } } widget_params->actionPasteBefore->setEnabled(can_paste); diff --git a/libs/piqt_utils/pivaluetree_edit.h b/libs/piqt_utils/pivaluetree_edit.h index 1b76f69..68cba29 100644 --- a/libs/piqt_utils/pivaluetree_edit.h +++ b/libs/piqt_utils/pivaluetree_edit.h @@ -174,6 +174,7 @@ private: PIValueTreeEditParameters * widget_params; PIValueTreeEditReorder * widget_reorder; PIStringList root_path; + PIString paste_name; PIVector array_edits; PIMap value_edits; PIMap tree_edits; diff --git a/libs/piqt_utils/pivaluetree_edit_array.ui b/libs/piqt_utils/pivaluetree_edit_array.ui index 15e9dc6..93d32ab 100644 --- a/libs/piqt_utils/pivaluetree_edit_array.ui +++ b/libs/piqt_utils/pivaluetree_edit_array.ui @@ -89,12 +89,21 @@ 0 + + + + + + PIValueTreeEdit + QWidget +
pivaluetree_edit.h
+
+
-