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 +}