diff --git a/glabels/MainWindow.cpp b/glabels/MainWindow.cpp index 42527de..1da9e49 100644 --- a/glabels/MainWindow.cpp +++ b/glabels/MainWindow.cpp @@ -125,6 +125,7 @@ MainWindow::MainWindow() setDocVerbsEnabled( false ); setPasteVerbsEnabled( false ); + setWelcomeMode( true ); setTitle(); // Connect @@ -179,6 +180,7 @@ void MainWindow::setModel( LabelModel *label ) setDocVerbsEnabled( true ); setSelectionVerbsEnabled( false ); setMultiSelectionVerbsEnabled( false ); + setWelcomeMode( false ); setTitle(); connect( mLabelEditor, SIGNAL(contextMenuActivate()), this, SLOT(onContextMenuActivate()) ); @@ -736,13 +738,26 @@ QWidget* MainWindow::createPrintPage() } +/// +/// Set enabled state of TOC buttons based on Welcome mode +/// +void MainWindow::setWelcomeMode( bool enabled ) +{ + mWelcomeButton->setHidden( !enabled ); + mPropertiesButton->setHidden( enabled ); + mEditorButton->setHidden( enabled ); + mMergeButton->setHidden( enabled ); + mPrintButton->setHidden( enabled ); +} + + /// /// Set enabled state of actions associated with a document. /// void MainWindow::setDocVerbsEnabled( bool enabled ) { - fileSaveAction->setEnabled( enabled ); - fileSaveAsAction->setEnabled( enabled ); + fileSaveAction->setEnabled( mModel && mModel->isModified() ); + fileSaveAsAction->setEnabled( mModel ); editUndoAction->setEnabled( enabled && mUndoRedoModel->canUndo() ); editRedoAction->setEnabled( enabled && mUndoRedoModel->canRedo() ); editDeleteAction->setEnabled( enabled ); @@ -780,13 +795,6 @@ void MainWindow::setDocVerbsEnabled( bool enabled ) objectsCenterMenu->setEnabled( enabled ); objectsCenterHorizAction->setEnabled( enabled ); objectsCenterVertAction->setEnabled( enabled ); - - // Contents buttons - mWelcomeButton->setHidden( enabled ); - mPropertiesButton->setHidden( !enabled ); - mEditorButton->setHidden( !enabled ); - mMergeButton->setHidden( !enabled ); - mPrintButton->setHidden( !enabled ); } @@ -805,6 +813,7 @@ void MainWindow::setDocModifiedVerbsEnabled( bool enabled ) void MainWindow::setPasteVerbsEnabled( bool enabled ) { editPasteAction->setEnabled( enabled ); + contextPasteAction->setEnabled( enabled ); } @@ -966,7 +975,15 @@ void MainWindow::changePage(QListWidgetItem *current, QListWidgetItem *previous) current = previous; } - mPages->setCurrentIndex(mContents->row(current)); + int row = mContents->row(current); + + mPages->setCurrentIndex(row); + bool isEditorPage = ( row == mContents->row(mEditorButton) ); + + setDocVerbsEnabled( isEditorPage ); + setSelectionVerbsEnabled( isEditorPage && !mModel->isSelectionEmpty() ); + setMultiSelectionVerbsEnabled( isEditorPage && !mModel->isSelectionAtomic() ); + setPasteVerbsEnabled( isEditorPage && mModel->canPaste() ); } diff --git a/glabels/MainWindow.h b/glabels/MainWindow.h index d9e5968..023df73 100644 --- a/glabels/MainWindow.h +++ b/glabels/MainWindow.h @@ -166,6 +166,7 @@ private: QWidget* createMergePage(); QWidget* createPrintPage(); + void setWelcomeMode( bool ); void setDocVerbsEnabled( bool ); void setDocModifiedVerbsEnabled( bool ); void setPasteVerbsEnabled( bool );