MainWindow tracks model status.

This commit is contained in:
Jim Evins
2014-09-27 00:49:34 -04:00
parent f402599b8a
commit 496bb39903
4 changed files with 133 additions and 22 deletions
+40
View File
@@ -65,6 +65,16 @@ namespace glabels
} }
///
/// Clear modified status
///
void LabelModel::clearModified()
{
mModified = false;
emit modifiedChanged();
}
/// ///
/// Add object. /// Add object.
/// ///
@@ -80,6 +90,7 @@ namespace glabels
emit objectAdded( object ); emit objectAdded( object );
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -92,6 +103,7 @@ namespace glabels
emit objectChanged( qobject_cast<LabelModelObject*>(sender()) ); emit objectChanged( qobject_cast<LabelModelObject*>(sender()) );
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -104,6 +116,7 @@ namespace glabels
emit objectMoved( qobject_cast<LabelModelObject*>(sender()) ); emit objectMoved( qobject_cast<LabelModelObject*>(sender()) );
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -121,6 +134,7 @@ namespace glabels
emit objectDeleted( object ); emit objectDeleted( object );
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -361,6 +375,7 @@ namespace glabels
emit changed(); emit changed();
emit selectionChanged(); emit selectionChanged();
emit modifiedChanged();
} }
@@ -386,6 +401,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -411,6 +427,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -430,6 +447,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -467,6 +485,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -486,6 +505,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -520,6 +540,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -554,6 +575,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -605,6 +627,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -639,6 +662,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -673,6 +697,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -724,6 +749,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -748,6 +774,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -772,6 +799,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -791,6 +819,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -810,6 +839,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -829,6 +859,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -848,6 +879,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -867,6 +899,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -886,6 +919,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -905,6 +939,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -924,6 +959,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -943,6 +979,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -962,6 +999,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -981,6 +1019,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
@@ -1000,6 +1039,7 @@ namespace glabels
mModified = true; mModified = true;
emit changed(); emit changed();
emit modifiedChanged();
} }
} }
+2 -7
View File
@@ -61,6 +61,7 @@ namespace glabels
void nameChanged(); void nameChanged();
void sizeChanged(); void sizeChanged();
void selectionChanged(); void selectionChanged();
void modifiedChanged();
void objectChanged( LabelModelObject* object ); void objectChanged( LabelModelObject* object );
void objectMoved( LabelModelObject* object ); void objectMoved( LabelModelObject* object );
void objectAdded( LabelModelObject* object ); void objectAdded( LabelModelObject* object );
@@ -74,7 +75,7 @@ namespace glabels
///////////////////////////////// /////////////////////////////////
public: public:
inline bool isModified() const; inline bool isModified() const;
inline void clearModified(); void clearModified();
QString shortName(); QString shortName();
inline const QString& filename() const; inline const QString& filename() const;
@@ -205,12 +206,6 @@ namespace glabels
} }
inline void LabelModel::clearModified()
{
mModified = false;
}
inline const QString& LabelModel::filename() const inline const QString& LabelModel::filename() const
{ {
return mFilename; return mFilename;
+81 -12
View File
@@ -65,6 +65,7 @@ namespace glabels
setDocVerbsEnabled( false ); setDocVerbsEnabled( false );
setPasteVerbsEnabled( false ); setPasteVerbsEnabled( false );
setTitle();
readSettings(); readSettings();
@@ -99,6 +100,12 @@ namespace glabels
mView->setModel( mModel ); mView->setModel( mModel );
setDocVerbsEnabled( true ); setDocVerbsEnabled( true );
setTitle();
connect( mModel, SIGNAL(nameChanged()), this, SLOT(onNameChanged()) );
connect( mModel, SIGNAL(modifiedChanged()), this, SLOT(onModifiedChanged()) );
connect( mModel, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()) );
connect( mModel, SIGNAL(changed()), this, SLOT(onLabelChanged()) );
} }
@@ -563,12 +570,13 @@ namespace glabels
statusBar()->addWidget( zoomInfoLabel ); statusBar()->addWidget( zoomInfoLabel );
statusBar()->addWidget( cursorInfoLabel, 1 ); statusBar()->addWidget( cursorInfoLabel, 1 );
updateZoomInfo(); onZoomChanged();
updateCursorInfo(); onPointerExit();
connect( mView, SIGNAL(zoomChanged()), this, SLOT(updateZoomInfo()) ); connect( mView, SIGNAL(zoomChanged()), this, SLOT(onZoomChanged()) );
connect( mView, SIGNAL(pointerMoved(double, double)), this, SLOT(updateCursorInfo(double, double)) ); connect( mView, SIGNAL(pointerMoved(double, double)),
connect( mView, SIGNAL(pointerExited()), this, SLOT(updateCursorInfo()) ); this, SLOT(onPointerMoved(double, double)) );
connect( mView, SIGNAL(pointerExited()), this, SLOT(onPointerExit()) );
} }
@@ -682,6 +690,30 @@ namespace glabels
} }
///
/// Set window title
///
void MainWindow::setTitle()
{
if ( mModel == 0 )
{
setWindowTitle( "gLabels" );
}
else
{
if ( mModel->isModified() )
{
setWindowTitle( mModel->shortName() + " " + tr("(modified)")
+ " - gLabels" );
}
else
{
setWindowTitle( mModel->shortName() + " - gLabels" );
}
}
}
/// ///
/// Read MainWindow Settings /// Read MainWindow Settings
/// ///
@@ -1201,9 +1233,9 @@ namespace glabels
/// ///
/// Update Zoom Information in Status Bar /// Zoom changed: update Zoom Information in Status Bar
/// ///
void MainWindow::updateZoomInfo() void MainWindow::onZoomChanged()
{ {
zoomInfoLabel->setText( QString( " %1% " ).arg(100*mView->zoom(), 0, 'f', 0) ); zoomInfoLabel->setText( QString( " %1% " ).arg(100*mView->zoom(), 0, 'f', 0) );
@@ -1213,9 +1245,9 @@ namespace glabels
/// ///
/// Update Cursor Information in Status Bar /// Pointer moved: update Cursor Information in Status Bar
/// ///
void MainWindow::updateCursorInfo( double x, double y ) void MainWindow::onPointerMoved( double x, double y )
{ {
/* TODO: convert x,y to locale units and set precision accordingly. */ /* TODO: convert x,y to locale units and set precision accordingly. */
cursorInfoLabel->setText( QString( "%1, %2" ).arg(x).arg(y) ); cursorInfoLabel->setText( QString( "%1, %2" ).arg(x).arg(y) );
@@ -1223,14 +1255,51 @@ namespace glabels
/// ///
/// Update Zoom Information in Status Bar (Clears information) /// Pointer exited view: update Zoom Information in Status Bar (Clears information)
/// E.g. when pointer exits view.
/// ///
void MainWindow::updateCursorInfo() void MainWindow::onPointerExit()
{ {
cursorInfoLabel->setText( "" ); cursorInfoLabel->setText( "" );
} }
///
/// Name changed handler
///
void MainWindow::onNameChanged()
{
setTitle();
}
///
/// Modified changed handler
///
void MainWindow::onModifiedChanged()
{
setTitle();
setDocModifiedVerbsEnabled( mModel->isModified() );
}
///
/// Selection changed handler
///
void MainWindow::onSelectionChanged()
{
setSelectionVerbsEnabled( !mModel->isSelectionEmpty() );
setMultiSelectionVerbsEnabled( !mModel->isSelectionAtomic() );
}
///
/// Label changed handler
///
void MainWindow::onLabelChanged()
{
/* @TODO: update undo/redo verbs. */
}
} }
+10 -3
View File
@@ -133,9 +133,14 @@ namespace glabels
void helpContents(); void helpContents();
void helpAbout(); void helpAbout();
void updateZoomInfo(); void onZoomChanged();
void updateCursorInfo(); void onPointerMoved( double, double );
void updateCursorInfo( double, double ); void onPointerExit();
void onNameChanged();
void onModifiedChanged();
void onSelectionChanged();
void onLabelChanged();
///////////////////////////////////// /////////////////////////////////////
@@ -153,6 +158,8 @@ namespace glabels
void setSelectionVerbsEnabled( bool ); void setSelectionVerbsEnabled( bool );
void setMultiSelectionVerbsEnabled( bool ); void setMultiSelectionVerbsEnabled( bool );
void setTitle();
void readSettings(); void readSettings();
void writeSettings(); void writeSettings();