goat3d
diff goatview/src/scenemodel.cc @ 88:7941e89798e5
selections
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 15 May 2014 06:52:01 +0300 |
parents | 6d04caf510ab |
children |
line diff
1.1 --- a/goatview/src/scenemodel.cc Wed May 14 18:28:38 2014 +0300 1.2 +++ b/goatview/src/scenemodel.cc Thu May 15 06:52:01 2014 +0300 1.3 @@ -1,5 +1,6 @@ 1.4 #include <assert.h> 1.5 #include "scenemodel.h" 1.6 +#include "goatview.h" 1.7 1.8 SceneModel::SceneModel() 1.9 { 1.10 @@ -25,6 +26,7 @@ 1.11 1.12 SceneNodeData data; 1.13 data.visible = true; 1.14 + data.selected = false; 1.15 1.16 node_data[node] = data; 1.17 } 1.18 @@ -246,3 +248,25 @@ 1.19 1.20 return createIndex(pidx, 0, (void*)parent); 1.21 } 1.22 + 1.23 + 1.24 +void SceneModel::selchange(const QModelIndexList &selidx) 1.25 +{ 1.26 + // go over the previously selected and unselect them 1.27 + std::set<goat3d_node*>::iterator it = selected.begin(); 1.28 + while(it != selected.end()) { 1.29 + goat3d_node *node = *it++; 1.30 + SceneNodeData *data = get_node_data(node); 1.31 + data->selected = false; 1.32 + } 1.33 + selected.clear(); 1.34 + 1.35 + for(int i=0; i<selidx.size(); i++) { 1.36 + goat3d_node *node = (goat3d_node*)selidx.at(i).internalPointer(); 1.37 + SceneNodeData *data = get_node_data(node); 1.38 + data->selected = true; 1.39 + selected.insert(node); 1.40 + } 1.41 + 1.42 + post_redisplay(); 1.43 +}