From 23c7f76f531794a085687f4420b55e59a8dd23e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 12 Dec 2019 17:08:03 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@690 a8b55f48-bf90-11e4-a774-851b48703e85 --- qglengine/glscene.cpp | 4 +-- qglengine/glscene.h | 2 +- qglengine/widgets/materials_editor.cpp | 15 ++++++++ qglengine/widgets/materials_editor.h | 1 + qglengine/widgets/materials_editor.ui | 47 ++++++++++++++++---------- 5 files changed, 48 insertions(+), 21 deletions(-) diff --git a/qglengine/glscene.cpp b/qglengine/glscene.cpp index 2bf22d3..75399b0 100644 --- a/qglengine/glscene.cpp +++ b/qglengine/glscene.cpp @@ -280,8 +280,8 @@ const Box3D & Scene::boundingBox() const { } -Material * Scene::newMaterial() { - materials << new Material(); +Material * Scene::newMaterial(const QString & name) { + materials << new Material(name); makeMaterialsUniqueNames(); mat_changed = true; return materials.back(); diff --git a/qglengine/glscene.h b/qglengine/glscene.h index 212660b..c3677af 100644 --- a/qglengine/glscene.h +++ b/qglengine/glscene.h @@ -82,7 +82,7 @@ public: const Box3D & boundingBox() const; QVector getMaterials() const {return materials;} - Material * newMaterial(); + Material * newMaterial(const QString & name = QString()); void removeMaterial(Material * m); void makeMaterialsUniqueNames(); diff --git a/qglengine/widgets/materials_editor.cpp b/qglengine/widgets/materials_editor.cpp index 6ad0297..3b9b932 100644 --- a/qglengine/widgets/materials_editor.cpp +++ b/qglengine/widgets/materials_editor.cpp @@ -51,6 +51,7 @@ bool MaterialsEditor::event(QEvent * e) { ui->comboMaterial->setIconSize(sz * 3); ui->buttonRename->setIconSize(sz); ui->buttonAdd ->setIconSize(sz); + ui->buttonClone ->setIconSize(sz); ui->buttonDelete->setIconSize(sz); ui->buttonAssign->setIconSize(sz); ui->buttonUnset ->setIconSize(sz); @@ -162,6 +163,20 @@ void MaterialsEditor::on_buttonAdd_clicked() { } +void MaterialsEditor::on_buttonClone_clicked() { + if (!view) return; + Material * curm = currentMaterial(); + if (!curm) return; + Material * m = view->scene()->newMaterial(curm->name); + QString nm = m->name; + *m = *curm; + m->name = nm; + m->_changed = true; + materialsChanged(); + selectMaterial(m); +} + + void MaterialsEditor::on_buttonDelete_clicked() { if (!view) return; Material * m = currentMaterial(); diff --git a/qglengine/widgets/materials_editor.h b/qglengine/widgets/materials_editor.h index 2bbc8be..9991c2c 100644 --- a/qglengine/widgets/materials_editor.h +++ b/qglengine/widgets/materials_editor.h @@ -53,6 +53,7 @@ private slots: void on_comboMaterial_currentIndexChanged(int index); void on_buttonRename_clicked(); void on_buttonAdd_clicked(); + void on_buttonClone_clicked(); void on_buttonDelete_clicked(); void on_buttonAssign_clicked(); void on_buttonUnset_clicked(); diff --git a/qglengine/widgets/materials_editor.ui b/qglengine/widgets/materials_editor.ui index aa9fb13..e416569 100644 --- a/qglengine/widgets/materials_editor.ui +++ b/qglengine/widgets/materials_editor.ui @@ -68,17 +68,6 @@ - - - - Rename ... - - - - :/icons/edit-rename.png:/icons/edit-rename.png - - - @@ -106,7 +95,18 @@ - + + + + Assign + + + + :/icons/go-jump.png:/icons/go-jump.png + + + + Add @@ -117,7 +117,7 @@ - + Delete @@ -128,14 +128,25 @@ - - + + - Assign + Rename ... - - :/icons/go-jump.png:/icons/go-jump.png + + :/icons/edit-rename.png:/icons/edit-rename.png + + + + + + + Clone + + + + :/icons/edit-copy.png:/icons/edit-copy.png