28
28
#include "texwidget.h"
29
29
#include "decalmgr.h"
31
#include "mq3compat.h"
31
#include <QtGui/QInputDialog>
32
#include <QtGui/QPushButton>
33
#include <QtGui/QComboBox>
34
#include <QtGui/QLabel>
35
#include <QtGui/QLineEdit>
36
#include <QtGui/QShortcut>
33
#include <qinputdialog.h>
34
#include <qpushbutton.h>
35
#include <qcombobox.h>
37
#include <qlineedit.h>
46
46
#include "modelstatus.h"
49
#include <QCloseEvent>
52
48
ProjectionWin::ProjectionWin( Model * model, QWidget * parent, ViewPanel * viewPanel )
53
: ProjectionWinBase( parent, "" ),
54
m_accel( new QAccel(this) ),
55
50
m_viewPanel( viewPanel ),
59
54
m_ignoreChange( false )
59
m_materialLabel->hide();
61
61
m_textureWidget = m_textureFrame->getTextureWidget();
62
62
m_textureWidget->setInteractive( true );
63
63
m_textureWidget->setMouseOperation( TextureWidget::MouseRange );
69
69
connect( m_textureWidget, SIGNAL(updateSeamDoneSignal()), this, SLOT(applyProjectionEvent()) );
70
70
connect( m_textureWidget, SIGNAL(zoomLevelChanged(QString)), this, SLOT(zoomLevelChangedEvent(QString)) );
72
m_accel->insertItem( QKeySequence( tr("F1", "Help Shortcut")), 0 );
73
m_accel->insertItem( QKeySequence( tr("Ctrl+Z", "Undo")), 1 );
74
m_accel->insertItem( QKeySequence( tr("Ctrl+Y", "Redo")), 2 );
75
connect( m_accel, SIGNAL(activated(int)), this, SLOT(accelEvent(int)) );
72
QShortcut * help = new QShortcut( QKeySequence( tr("F1", "Help Shortcut")), this );
73
connect( help, SIGNAL(activated()), this, SLOT(helpNowEvent()) );
75
QShortcut * undo = new QShortcut( QKeySequence( tr("CTRL+Z", "Undo shortcut")), this );
76
connect( undo, SIGNAL(activated()), this, SLOT(undoEvent()) );
77
QShortcut * redo = new QShortcut( QKeySequence( tr("CTRL+Y", "Redo shortcut")), this );
78
connect( redo, SIGNAL(activated()), this, SLOT(redoEvent()) );
77
80
// can't do this until constructor is done (because of Model::Observer interface)
78
81
//setModel( model );
89
92
if ( m_projection->count() > 0 )
91
int proj = m_projection->currentItem();
94
int proj = m_projection->currentIndex();
92
95
unsigned tcount = m_model->getTriangleCount();
93
96
for ( unsigned t = 0; t < tcount; t++ )
140
143
// a change to projection itself, or a non-projection change, just
141
144
// re-initialize the projection display for the current projection
142
int p = m_projection->currentItem();
143
m_projection->changeItem( QString::fromUtf8( m_model->getProjectionName( p )), p );
144
m_type->setCurrentItem( m_model->getProjectionType( p ) );
145
int p = m_projection->currentIndex();
146
m_projection->setItemText( p, QString::fromUtf8( m_model->getProjectionName( p )) );
147
m_type->setCurrentIndex( m_model->getProjectionType( p ) );
145
148
// TODO material/test pattern?
146
149
addProjectionTriangles();
205
void ProjectionWin::accelEvent( int id )
208
void ProjectionWin::helpNowEvent()
211
HelpWin * win = new HelpWin( "olh_projectionwin.html", true );
210
HelpWin * win = new HelpWin( "olh_projectionwin.html", true );
224
214
void ProjectionWin::undoEvent()
284
274
for ( unsigned p = 0; p < pcount; p++ )
286
m_projection->insertItem( QString::fromUtf8( m_model->getProjectionName(p) ), p );
276
m_projection->insertItem( p, QString::fromUtf8( m_model->getProjectionName(p) ) );
289
279
bool found = false;
345
335
m_model->setProjectionType( p, type );
346
336
//m_model->applyProjection( p );
347
operationComplete( tr( "Set Projection Type", "operation complete" ).utf8() );
337
operationComplete( tr( "Set Projection Type", "operation complete" ).toUtf8() );
350
340
refreshProjectionDisplay();
365
355
m_model->applyProjection( p );
366
operationComplete( tr( "Set Triangle Projection", "operation complete" ).utf8() );
356
operationComplete( tr( "Set Triangle Projection", "operation complete" ).toUtf8() );
367
357
refreshProjectionDisplay();
377
367
m_model->setTriangleProjection( t, -1 );
380
operationComplete( tr( "Set Triangle Projection", "operation complete" ).utf8() );
370
operationComplete( tr( "Set Triangle Projection", "operation complete" ).toUtf8() );
381
371
refreshProjectionDisplay();
395
385
void ProjectionWin::applyProjectionEvent()
397
387
applyProjection();
398
operationComplete( tr("Apply Projection", "operation complete").utf8() );
388
operationComplete( tr("Apply Projection", "operation complete").toUtf8() );
401
391
void ProjectionWin::resetClickedEvent()
403
393
int p = getSelectedProjection();
405
395
m_model->setProjectionRange( p, 0.0, 0.0, 1.0, 1.0 );
406
operationComplete( tr( "Reset UV Coordinates", "operation complete" ).utf8() );
396
operationComplete( tr( "Reset UV Coordinates", "operation complete" ).toUtf8() );
407
397
addProjectionTriangles();
408
398
//applyProjectionEvent();
418
QString projName = QInputDialog::getText( tr("Rename projection", "window title"), tr("Enter new point name:"), QLineEdit::Normal, QString::fromUtf8( m_model->getProjectionName( p )), &ok );
408
QString projName = QInputDialog::getText( this, tr("Rename projection", "window title"), tr("Enter new point name:"), QLineEdit::Normal, QString::fromUtf8( m_model->getProjectionName( p )), &ok );
421
m_model->setProjectionName( p, projName.utf8() );
422
m_projection->changeItem( projName, p );
423
operationComplete( tr( "Rename Projection", "operation complete" ).utf8() );
411
m_model->setProjectionName( p, projName.toUtf8() );
412
m_projection->setItemText( p, projName );
413
operationComplete( tr( "Rename Projection", "operation complete" ).toUtf8() );
428
418
void ProjectionWin::projectionIndexChangedEvent( int newIndex )
430
420
int type = m_model->getProjectionType( newIndex );
431
m_type->setCurrentItem( type );
421
m_type->setCurrentIndex( type );
433
423
double uv[4] = { 0, 0, 0, 0 };
434
424
m_model->getProjectionRange( newIndex,