/****************************************************************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you wish to add, delete or rename slots use Qt Designer which will
** update this file, preserving your code. Create an init() slot in place of
** a constructor, and a destroy() slot in place of a destructor.
*****************************************************************************/
void TDataViewMain::fileOpen()
{
QString fileName, f2, tr;
int dirlen, nums, oreturn;
if ( fd->exec() == QDialog::Accepted )
{
if( actual!="0")
{
f2 = *( fpaths.begin() + LB_Files->index( LB_Files->findItem( actual)));
optbuf[f2].setBuf( RB_ShowObj->isChecked(), CB_ShowCol->isChecked(),
LE_Size3d->text().toDouble());
}
dirlen = fd->dir()->path().length();
f2 = fileName = fd->selectedFile();
if( !LE_PointsG->text().toInt())nums = 10000;
else nums=LE_PointsG->text().toInt();
oreturn = View1->open( f2,nums);
if( oreturn != -1)
{
if( numFiles) coord.push_back( View1->currentConfig());
LB_Files->insertItem( fileName.remove( 0, dirlen+1), LB_Files->count()+1);
tr.setNum( oreturn);
LE_Points3d->setText( tr);
actual = fileName;
fpaths.push_back( f2);
optbuf[f2]= new oBuffer( RB_ShowObj->isChecked(), CB_ShowCol->isChecked(),
LE_Size3d->text().toDouble());
cur = numFiles;
numFiles++;
}
}
}
void TDataViewMain::helpAbout()
{
QMessageBox::about( this, "About DataView",
"
Dataview 3D Data visualization tool
Version: 1.1
"
"by The Weird Birds Corp.
License: GPL
"
"Chief of Development: T.H.E.
Head of testing staff: Florian Nehonsky
"
"The Great and Honorous ShiFu: H.T.D.
");
}
void TDataViewMain::Update()
{
//update1->setEnabled( false);
View1->obj = RB_ShowObj->isChecked();
View1->col = CB_ShowCol->isChecked();
//View1->axis = CB_Axes3d->isChecked();
View1->setNumPoints( LE_PointsG->text().toInt());
View1->pSize = LE_Size3d->text().toDouble();
}
void TDataViewMain::init()
{
fd = new QFileDialog( this, "file open dialog", TRUE );
fd->setMode( QFileDialog::ExistingFile );
fd->setViewMode( QFileDialog::Detail );
fd->addFilter( "Text Files (*.txt)" );
fd2 = new QFileDialog( this, "save image as", TRUE );
fd2->setMode( QFileDialog::AnyFile );
fd2->setViewMode( QFileDialog::Detail );
fd2->addFilter( "PNG Images (*.png)" );
//fd2->setSelection( "*.png");
View1->Init();
this->toolBars( DockTop).first()->hide();
this->resize( 980, 670);
LB_Files->clear();
numFiles = 0;
actual = "0";
oscx = oscy = cx = cy = 0;
repl = false;
Update();
}
void TDataViewMain::Changed()
{
//update1->setEnabled( true);
}
void TDataViewMain::TabChanged( QWidget *w)
{
short int current = TabWidget2->indexOf( w);
if( !current) View1->setFocus();
}
void TDataViewMain::ListDblClick( QListBoxItem *w)
{
QString tr,f2;
int ind = LB_Files->index( w);
if( repl)
{
playReplay();
}
else if( ind != cur)
{
f2 = *( fpaths.begin() + LB_Files->index( LB_Files->findItem( actual)));
optbuf[f2].setBuf( RB_ShowObj->isChecked(), CB_ShowCol->isChecked(),
LE_Size3d->text().toDouble());
actual = w->text();
vector::iterator it;
it = coord.begin()+cur;
*it = View1->currentConfig();
f2 = *( fpaths.begin() + ind);
View1->open( f2, LE_PointsG->text().toInt(), &*( coord.begin() + ind));
cur = ind;
tr.setNum( optbuf[f2].Size3d);
RB_ShowObj->setChecked( optbuf[f2].ShowObj);
CB_ShowCol->setChecked( optbuf[f2].ShowCol);
LE_Size3d->setText( tr);
}else View1->open( *( fpaths.begin() + ind), LE_PointsG->text().toInt());
}
void TDataViewMain::ListRClick( QListBoxItem *w )
{
QString out = "Really Delete " + w->text() + " from open file list?";
QMessageBox mb( "Info", out, QMessageBox::NoIcon, QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape, QMessageBox::NoButton);
if( mb.exec())
{
numFiles--;
int ind = LB_Files->index( w);
QString t = w->text();
LB_Files->removeItem( ind);
vector::iterator it;
it = fpaths.begin()+ind;
optbuf.erase( *it);
fpaths.erase( it);
vector::iterator it2;
it2 = coord.begin()+ind;
coord.erase( it2);
cur = LB_Files->currentItem();
if( t == actual) if( numFiles) View1->open( *( fpaths.begin()+cur), LE_PointsG->text().toInt(), &*( coord.begin()+cur) );
else View1->clear();
if( !LB_Files->count()) activateControls3D( false);
}
}
void TDataViewMain::resizeEvent( QResizeEvent *ev)
{
TextLabel1_4->move( ev->size().width() - 165 - cx, 4);
update1->move( ev->size().width() - 165 - cx, ev->size().height() - 90 - cy);
LB_Files->setGeometry( ev->size().width() - 165 - cx, 24, 160, ev->size().height() - 120 - cy);
TabWidget2->setGeometry( 0, 0, ev->size().width() - 170 - cx, ev->size().height() - 60 - cy);
Hscroll1->setGeometry( 0, TabWidget2->height() - 51, TabWidget2->width() - 18 - cx, 20);
Vscroll1->setGeometry( TabWidget2->width() - 20, 0, 20, TabWidget2->height() - 49 - cx);
Bresize1->move( TabWidget2->width() - 20, TabWidget2->height() - 51);
View1->setGeometry( 0, 0, ev->size().width() - 172 - cx, ev->size().height() - 70 - cy);
if( ev->size().width() < 980 + cx)
{
Hscroll1->show();
Bresize1->show();
oscx = Hscroll1->value()*( 980 + cx + 20 - this->width())/100;
}else
{
Hscroll1->hide();
oscx = 0;
}
if( ev->size().height() < 670 + cy)
{
Vscroll1->show();
Bresize1->show();
oscy = Vscroll1->value()*( 670 + cy + 20 - this->height())/100;
}else
{
oscy = 0;
Vscroll1->hide();
if( ev->size().width() >= 980 + cx)Bresize1->hide();
}
GroupBox1->move( 10 - oscx, 10 - oscy);
GroupBox2->move( 10 - oscx, 260 - oscy);
}
void TDataViewMain::hideRTollB( bool tog)
{
QResizeEvent resev( QSize( this->size().width(), this->size().height()), QSize( this->size().width(), this->size().height()));
if(!tog)
{
Toolbar_2->hide();
cx = cy = 0;
resizeEvent( &resev);
}
else
{
Toolbar_2->show();
ToolbarPosChanged();
}
}
void TDataViewMain::ToolbarPosChanged()
{
if( Toolbar_2->place()==QDockWindow::OutsideDock)cx = cy = 0;
else
{
if(Toolbar_2->orientation()==Qt::Horizontal)
{
cx = 0;
cy = 30;
SL_SPEED->setOrientation( Qt::Horizontal);
}
else
{
cy = 0;
cx = 30;
SL_SPEED->setOrientation( Qt::Vertical);
}
}
QResizeEvent resev( QSize( this->size().width(), this->size().height()), QSize( this->size().width(), this->size().height()));
resizeEvent( &resev);
}
void TDataViewMain::playReplay()
{
int ind = LB_Files->currentItem();
if( ind!=-1)
{
LB_Files->setEnabled( false);
update1->setEnabled( false);
TabWidget2->setCurrentPage( 0);
View1->setupReplayMode( true, *(fpaths.begin() + ind), LE_Nppt->text().toInt(), CB_ReplayDel->isChecked());
View1->setPlaySpeed( 500 - SL_SPEED->value());
View1->play();
}else QMessageBox::critical( this, "Attention", "Specify Replay Datafile first!!\n(per highlighting it in the Open Files listbox)");
}
void TDataViewMain::stopReplay()
{
LB_Files->setEnabled( true);
update1->setEnabled( true);
View1->setupReplayMode();
}
void TDataViewMain::tPlayReplay( bool r)
{
repl = r;
}
void TDataViewMain::changeReplaySpeed( int speed )
{
View1->setPlaySpeed( 800 - speed);
}
void TDataViewMain::activateControls3D( bool en)
{
GroupBox2->setEnabled( en);
}
void TDataViewMain::resizeffv()
{
this->resize( 980, 670);
}
void TDataViewMain::vScroll( int value)
{
oscy= value*(670 + 20 - this->height())/100;
GroupBox1->move( 10 - oscx, 10 - oscy);
GroupBox2->move( 10 - oscx, 260 - oscy);
}
void TDataViewMain::hScroll( int value)
{
oscx = value*(980 + 20 - this->width())/100;
GroupBox1->move( 10 - oscx, 10 - oscy);
GroupBox2->move( 10 - oscx, 260 - oscy);
}
void TDataViewMain::fileSave()
{
if ( fd2->exec() == QDialog::Accepted )
{
QString fname=fd2->selectedFile();
if( !( fname.right( 4).contains( ".png"))) fname.append( ".png");
View1->SaveImage( fname);
}
}
void TDataViewMain::takeSnapshot()
{
QImage im = View1->getImage();
QWidget *newtab = new QTabWidget( TabWidget2);
QLabel *newlab = new QLabel( newtab);
newlab->setAutoResize( true);
QPixmap pm;
pm.convertFromImage( im, 0);
newlab->setPixmap( pm);
TabWidget2->addTab( newtab, "Snapshot View");
images.push_back( im);
}
void TDataViewMain::closeSnapshot()
{
int h = TabWidget2->currentPageIndex();
if( h > 1)
{
TabWidget2->removePage( TabWidget2->page( h));
TabWidget2->setCurrentPage( 0);
images.erase( images.begin() + h - 2);
}
}
void TDataViewMain::saveSnapshot()
{
if ( fd2->exec() == QDialog::Accepted )
{
QString fname=fd2->selectedFile();
if( !( fname.right( 4).contains( ".png"))) fname.append( ".png");
( images.begin() + TabWidget2->currentPageIndex() - 2)->save( fname, "PNG");
}
}
void TDataViewMain::openSnapshot()
{
fd2->setMode( QFileDialog::ExistingFile );
if ( fd2->exec() == QDialog::Accepted )
{
QImage im;
if( !im.load( fd2->selectedFile()))
{
QMessageBox::critical( this, "Attention", "Could not load file");
return;
}
QWidget *newtab = new QTabWidget( TabWidget2);
QLabel *newlab = new QLabel( newtab);
newlab->setAutoResize( true);
QPixmap pm;
pm.convertFromImage( im, 0);
newlab->setPixmap( pm);
TabWidget2->addTab( newtab, "Snapshot View");
images.push_back( im);
}
fd2->setMode( QFileDialog::AnyFile );
}