selection.cpp
author insilmaril
Thu, 19 Mar 2009 11:45:28 +0000
changeset 742 54d44ecd6097
parent 735 84ae10f6e3a3
child 746 ee6b0f3a4c2f
permissions -rw-r--r--
ProgressBar during load and more fixes
insilmaril@611
     1
#include <typeinfo>
insilmaril@735
     2
#include <iostream>
insilmaril@735
     3
using namespace std;
insilmaril@611
     4
insilmaril@0
     5
#include "selection.h"
insilmaril@0
     6
insilmaril@440
     7
#include "mainwindow.h"
insilmaril@641
     8
#include "vymmodel.h"
insilmaril@440
     9
insilmaril@440
    10
insilmaril@440
    11
insilmaril@440
    12
extern Main *mainWindow;
insilmaril@0
    13
insilmaril@0
    14
Selection::Selection()
insilmaril@0
    15
{
insilmaril@721
    16
	blocked=false;
insilmaril@735
    17
	model=NULL;
insilmaril@0
    18
}
insilmaril@0
    19
insilmaril@0
    20
Selection::~Selection()
insilmaril@0
    21
{
insilmaril@0
    22
}
insilmaril@0
    23
insilmaril@641
    24
void Selection::setModel (VymModel *m)
insilmaril@0
    25
{
insilmaril@641
    26
	model=m;
insilmaril@0
    27
}
insilmaril@0
    28
insilmaril@735
    29
void Selection::update() // FIXME VM emit signal in VM instead and get rid of this
insilmaril@440
    30
{
insilmaril@729
    31
/*
insilmaril@440
    32
	QRectF bbox;
insilmaril@728
    33
	//int w=0;
insilmaril@440
    34
	for (int i=0; i< selectList.count(); ++i) 
insilmaril@440
    35
	{
insilmaril@440
    36
		bbox=selectList.at(i)->getBBox();
insilmaril@440
    37
		selboxList.at(i)->setRect (
insilmaril@440
    38
			bbox.x()-w,bbox.y()-w, 
insilmaril@440
    39
			bbox.width()+2*w, bbox.height()+2*w);
insilmaril@440
    40
		selboxList.at(i)->setPen (color);	
insilmaril@440
    41
		selboxList.at(i)->setBrush (color);	
insilmaril@440
    42
	}	
insilmaril@729
    43
*/
insilmaril@440
    44
}
insilmaril@421
    45
bool Selection::select(LinkableMapObj *lmo)	// TODO no multiselections yet
insilmaril@0
    46
{
insilmaril@735
    47
	return model->select (lmo);
insilmaril@735
    48
	/*
insilmaril@424
    49
	if (!selectList.isEmpty()) unselect();
insilmaril@16
    50
	selectList.append (lmo);
insilmaril@424
    51
	lmo->select();
insilmaril@460
    52
	update();
insilmaril@723
    53
	mainWindow->updateSatellites (model);	
insilmaril@735
    54
	cout << "Sel::select lmo e\n";
insilmaril@424
    55
	return true;
insilmaril@735
    56
	*/
insilmaril@0
    57
}
insilmaril@0
    58
insilmaril@421
    59
bool Selection::select (const QString &s)	// TODO no multiselections yet
insilmaril@0
    60
{
insilmaril@735
    61
	return model->select (s);
insilmaril@735
    62
	/*
insilmaril@735
    63
	cout << "Sel::select s=\n";
insilmaril@641
    64
	LinkableMapObj *lmo=model->findObjBySelect(s);
insilmaril@16
    65
insilmaril@16
    66
	// Finally select the found object
insilmaril@16
    67
	if (lmo)
insilmaril@16
    68
	{
insilmaril@424
    69
		unselect();
insilmaril@16
    70
		select (lmo);
insilmaril@16
    71
		return true;
insilmaril@16
    72
	} 
insilmaril@16
    73
	return false;
insilmaril@735
    74
	*/
insilmaril@16
    75
}
insilmaril@16
    76
insilmaril@421
    77
bool Selection::reselect ()	// TODO no multiselections yet
insilmaril@421
    78
{
insilmaril@421
    79
	if (!lastSelectList.isEmpty())
insilmaril@421
    80
	{
insilmaril@421
    81
		select (lastSelectList.first());
insilmaril@421
    82
		return true;
insilmaril@421
    83
	}
insilmaril@421
    84
	return false;
insilmaril@421
    85
insilmaril@421
    86
}
insilmaril@421
    87
insilmaril@16
    88
void Selection::unselect()
insilmaril@16
    89
{
insilmaril@735
    90
	model->unselect();
insilmaril@735
    91
	/*
insilmaril@735
    92
	cout << "Sel::unselect\n";
insilmaril@424
    93
	if (!selectList.isEmpty() )
insilmaril@424
    94
	{
insilmaril@424
    95
		for (int i=0; i< selectList.count(); ++i) 
insilmaril@424
    96
			selectList.at(i)->unselect();
insilmaril@424
    97
		lastSelectList=selectList;
insilmaril@424
    98
		selectList.clear();
insilmaril@735
    99
		// FIXME VM move to ME
insilmaril@735
   100
		//while (!selboxList.isEmpty() )	
insilmaril@735
   101
		//	delete selboxList.takeFirst();
insilmaril@735
   102
	}	
insilmaril@728
   103
		*/	
insilmaril@0
   104
}
insilmaril@0
   105
insilmaril@721
   106
bool Selection::isBlocked()
insilmaril@721
   107
{
insilmaril@721
   108
	return blocked;
insilmaril@721
   109
}
insilmaril@721
   110
insilmaril@721
   111
void Selection::block()
insilmaril@721
   112
{
insilmaril@721
   113
	blocked=true;
insilmaril@721
   114
}
insilmaril@721
   115
insilmaril@721
   116
void Selection::unblock()
insilmaril@721
   117
{
insilmaril@721
   118
	blocked=false;
insilmaril@721
   119
}
insilmaril@721
   120
insilmaril@0
   121
bool Selection::isEmpty()
insilmaril@0
   122
{
insilmaril@0
   123
	return selectList.isEmpty();
insilmaril@0
   124
}
insilmaril@0
   125
insilmaril@735
   126
/*
insilmaril@0
   127
uint Selection::count()
insilmaril@0
   128
{
insilmaril@0
   129
	return selectList.count();
insilmaril@0
   130
}
insilmaril@735
   131
*/
insilmaril@16
   132
insilmaril@735
   133
/*
insilmaril@492
   134
Selection::Type Selection::type() // TODO no multiselections yet
insilmaril@16
   135
{
insilmaril@421
   136
	if (!selectList.isEmpty())
insilmaril@421
   137
	{
insilmaril@421
   138
		LinkableMapObj *sel=selectList.first();
insilmaril@421
   139
		if (typeid (*sel)==typeid (BranchObj)) return Branch;
insilmaril@421
   140
		if (typeid (*sel)==typeid (MapCenterObj)) return MapCenter;
insilmaril@421
   141
		if (typeid (*sel)==typeid (FloatImageObj)) return FloatImage;
insilmaril@421
   142
	}
insilmaril@421
   143
	return Undefined;
insilmaril@421
   144
}
insilmaril@735
   145
*/
insilmaril@421
   146
insilmaril@735
   147
/*
insilmaril@424
   148
LinkableMapObj* Selection::first()
insilmaril@424
   149
{
insilmaril@424
   150
	if (!selectList.isEmpty())
insilmaril@424
   151
		return selectList.first();
insilmaril@424
   152
	else	
insilmaril@424
   153
		return NULL;
insilmaril@424
   154
}
insilmaril@424
   155
insilmaril@424
   156
LinkableMapObj* Selection::single()
insilmaril@424
   157
{
insilmaril@424
   158
	if (selectList.count() == 1)
insilmaril@424
   159
		return selectList.first();
insilmaril@424
   160
	else	
insilmaril@424
   161
		return NULL;
insilmaril@424
   162
}
insilmaril@424
   163
insilmaril@726
   164
TreeItem* Selection::getBranchItem()
insilmaril@726
   165
{
insilmaril@726
   166
	BranchObj* bo=getBranch();
insilmaril@728
   167
	if (bo) return bo->getTreeItem(); // FIXME VM get directly from treemodl
insilmaril@726
   168
	return NULL;
insilmaril@726
   169
}
insilmaril@726
   170
insilmaril@728
   171
QModelIndex Selection::getBranchIndex()
insilmaril@728
   172
{
insilmaril@732
   173
	return model->getSelectionModel()->selectedIndexes().first();	// TODO no multiselections yet
insilmaril@728
   174
insilmaril@728
   175
}
insilmaril@735
   176
*/
insilmaril@728
   177
insilmaril@424
   178
FloatImageObj* Selection::getFloatImage()
insilmaril@424
   179
{
insilmaril@424
   180
	if (!selectList.isEmpty())
insilmaril@424
   181
	{
insilmaril@424
   182
		LinkableMapObj *sel=selectList.first();
insilmaril@424
   183
		if (typeid (*sel)==typeid (FloatImageObj)) 
insilmaril@424
   184
			return (FloatImageObj*)sel;
insilmaril@424
   185
	}
insilmaril@424
   186
		return NULL;
insilmaril@424
   187
}
insilmaril@424
   188
insilmaril@729
   189
QString Selection::getSelectString() // FIXME VM this is also in VM ?! clean up here...
insilmaril@729
   190
// TODO no multiselections yet
insilmaril@421
   191
{
insilmaril@16
   192
	if (selectList.count()==1)
insilmaril@650
   193
	{
insilmaril@650
   194
		return model->getSelectString (selectList.first() );
insilmaril@650
   195
	}
insilmaril@16
   196
	else
insilmaril@16
   197
		return"";
insilmaril@16
   198
}
insilmaril@16
   199
insilmaril@16
   200