diff --git a/glabels/CMakeLists.txt b/glabels/CMakeLists.txt index 723371d..d506080 100644 --- a/glabels/CMakeLists.txt +++ b/glabels/CMakeLists.txt @@ -50,7 +50,7 @@ set (glabels_sources SelectProductDialog.cpp Settings.cpp SimplePreview.cpp - StartupWizard.cpp + StartupView.cpp TemplatePicker.cpp TemplatePickerItem.cpp TextNode.cpp @@ -89,7 +89,7 @@ set (glabels_qobject_headers SelectProductDialog.h Settings.h SimplePreview.h - StartupWizard.h + StartupView.h TemplatePicker.h UndoRedoModel.h ) @@ -102,7 +102,7 @@ set (glabels_forms ui/PrintView.ui ui/PropertiesView.ui ui/SelectProductDialog.ui - ui/StartupWizard.ui + ui/StartupView.ui ) set (glabels_resource_files diff --git a/glabels/File.cpp b/glabels/File.cpp index 3b9c57f..b2a0f40 100644 --- a/glabels/File.cpp +++ b/glabels/File.cpp @@ -36,9 +36,9 @@ /// /// New Label Dialog /// -bool File::newLabel( QWidget *parent ) +bool File::newLabel( MainWindow *window ) { - SelectProductDialog dialog( parent ); + SelectProductDialog dialog( window ); dialog.exec(); const glabels::Template* tmplate = dialog.tmplate(); @@ -51,9 +51,17 @@ bool File::newLabel( QWidget *parent ) const glabels::Frame* frame = tmplate->frames().first(); label->setRotate( frame->h() > frame->w() ); - MainWindow *newWindow = new MainWindow(); - newWindow->setModel( label ); - newWindow->show(); + // Either apply to current window or open a new one + if ( window->isEmpty() ) + { + window->setModel( label ); + } + else + { + MainWindow *newWindow = new MainWindow(); + newWindow->setModel( label ); + newWindow->show(); + } return true; } @@ -67,13 +75,13 @@ bool File::newLabel( QWidget *parent ) /// /// Open File Dialog /// -bool File::open( QWidget *parent ) +void File::open( MainWindow *window ) { QString fileName = - QFileDialog::getOpenFileName( parent, + QFileDialog::getOpenFileName( window, tr("Open label"), ".", - tr("glabels project files (*.glabels);;All files (*)") + tr("glabels files (*.glabels);;All files (*)") ); if ( !fileName.isEmpty() ) { @@ -82,11 +90,17 @@ bool File::open( QWidget *parent ) { label->setFileName( fileName ); - MainWindow *newWindow = new MainWindow(); - newWindow->setModel( label ); - newWindow->show(); - - return true; + // Either apply to current window or open a new one + if ( window->isEmpty() ) + { + window->setModel( label ); + } + else + { + MainWindow *newWindow = new MainWindow(); + newWindow->setModel( label ); + newWindow->show(); + } } else { @@ -97,8 +111,6 @@ bool File::open( QWidget *parent ) msgBox.exec(); } } - - return false; } diff --git a/glabels/File.h b/glabels/File.h index d5243ec..aa562c9 100644 --- a/glabels/File.h +++ b/glabels/File.h @@ -36,8 +36,8 @@ class File : public QObject Q_OBJECT public: - static bool newLabel( QWidget *parent = 0 ); - static bool open( QWidget *parent = 0 ); + static bool newLabel( MainWindow *window = 0 ); + static void open( MainWindow *window ); static bool save( MainWindow *window ); static bool saveAs( MainWindow *window ); static void print( MainWindow *window ); diff --git a/glabels/MainWindow.cpp b/glabels/MainWindow.cpp index 56b76c5..8317177 100644 --- a/glabels/MainWindow.cpp +++ b/glabels/MainWindow.cpp @@ -37,6 +37,7 @@ #include "libglabels/Db.h" #include "PreferencesDialog.h" +#include "StartupView.h" #include "PropertiesView.h" #include "LabelEditor.h" #include "ObjectEditor.h" @@ -68,6 +69,7 @@ MainWindow::MainWindow() createStatusBar(); // Build pages + QWidget* welcomePage = createWelcomePage(); QWidget* propertiesPage = createPropertiesPage(); QWidget* editorPage = createEditorPage(); QWidget* mergePage = createMergePage(); @@ -80,35 +82,43 @@ MainWindow::MainWindow() mContents->setMinimumWidth(96); mContents->setMaximumWidth(96); mContents->setSpacing(6); - mContents->setEnabled( false ); // Pages widget mPages = new QStackedWidget(); - mPages->setEnabled( false ); + + // Add "Welcome" page + mPages->addWidget( welcomePage ); + mWelcomeButton = new QListWidgetItem(mContents); + mWelcomeButton->setText(tr("Welcome")); + mWelcomeButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // Add "Properties" page mPages->addWidget( propertiesPage ); - QListWidgetItem *propertiesButton = new QListWidgetItem(mContents); - propertiesButton->setText(tr("Properties")); - propertiesButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + mPropertiesButton = new QListWidgetItem(mContents); + mPropertiesButton->setText(tr("Properties")); + mPropertiesButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // Add "Editor" page mPages->addWidget( editorPage ); - QListWidgetItem *editorButton = new QListWidgetItem(mContents); - editorButton->setText(tr("Editor")); - editorButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + mEditorButton = new QListWidgetItem(mContents); + mEditorButton->setText(tr("Editor")); + mEditorButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // Add "Merge" page mPages->addWidget( mergePage ); - QListWidgetItem *mergeButton = new QListWidgetItem(mContents); - mergeButton->setText(tr("Merge")); - mergeButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + mMergeButton = new QListWidgetItem(mContents); + mMergeButton->setText(tr("Merge")); + mMergeButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // Add "Print" page mPages->addWidget( printPage ); - QListWidgetItem *printButton = new QListWidgetItem(mContents); - printButton->setText(tr("Print")); - printButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + mPrintButton = new QListWidgetItem(mContents); + mPrintButton->setText(tr("Print")); + mPrintButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + + // Set initial page selection + mWelcomeButton->setSelected( true ); + mPages->setCurrentIndex(mContents->row(mWelcomeButton)); // Create central widget QWidget *centralWidget = new QWidget(); @@ -172,8 +182,9 @@ void MainWindow::setModel( LabelModel *label ) mMergeView->setModel( mModel , mUndoRedoModel ); mPrintView->setModel( mModel ); - mContents->setEnabled( true ); - mPages->setEnabled( true ); + mEditorButton->setSelected( true ); + mPages->setCurrentIndex(mContents->row(mEditorButton)); + setDocVerbsEnabled( true ); setSelectionVerbsEnabled( false ); setMultiSelectionVerbsEnabled( false ); @@ -659,6 +670,17 @@ void MainWindow::createStatusBar() } +/// +/// Create Welcome Page +/// +QWidget* MainWindow::createWelcomePage() +{ + mWelcomeView = new StartupView( this ); + + return mWelcomeView; +} + + /// /// Create Properties Page /// @@ -768,6 +790,13 @@ 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 ); } diff --git a/glabels/MainWindow.h b/glabels/MainWindow.h index 98ddd21..ca0633b 100644 --- a/glabels/MainWindow.h +++ b/glabels/MainWindow.h @@ -38,6 +38,7 @@ class QScrollArea; // Forward References class LabelModel; class UndoRedoModel; +class StartupView; class PropertiesView; class LabelEditor; class ObjectEditor; @@ -161,6 +162,7 @@ private: void createToolBars(); void createStatusBar(); + QWidget* createWelcomePage(); QWidget* createPropertiesPage(); QWidget* createEditorPage(); QWidget* createMergePage(); @@ -210,7 +212,14 @@ private: UndoRedoModel* mUndoRedoModel; QListWidget* mContents; + QListWidgetItem* mWelcomeButton; + QListWidgetItem* mPropertiesButton; + QListWidgetItem* mEditorButton; + QListWidgetItem* mMergeButton; + QListWidgetItem* mPrintButton; + QStackedWidget* mPages; + StartupView* mWelcomeView; PropertiesView* mPropertiesView; QScrollArea* mLabelEditorScrollArea; LabelEditor* mLabelEditor; diff --git a/glabels/StartupWizard.cpp b/glabels/StartupView.cpp similarity index 76% rename from glabels/StartupWizard.cpp rename to glabels/StartupView.cpp index 4c54fba..5dcf5ed 100644 --- a/glabels/StartupWizard.cpp +++ b/glabels/StartupView.cpp @@ -1,4 +1,4 @@ -/* StartupWizard.cpp +/* StartupView.cpp * * Copyright (C) 2016 Jim Evins * @@ -18,17 +18,18 @@ * along with gLabels-qt. If not, see . */ -#include "StartupWizard.h" +#include "StartupView.h" #include "File.h" +#include "MainWindow.h" #include /// /// Constructor /// -StartupWizard::StartupWizard( QWidget *parent ) - : QDialog(parent) +StartupView::StartupView( MainWindow* window ) + : QWidget(window), mWindow(window) { setupUi( this ); @@ -44,34 +45,16 @@ StartupWizard::StartupWizard( QWidget *parent ) /// /// "New Project" Button Clicked Slot /// -void StartupWizard::onNewProjectButtonClicked() +void StartupView::onNewProjectButtonClicked() { - hide(); - - if ( File::newLabel() ) - { - close(); - } - else - { - show(); - } + File::newLabel( mWindow ); } /// /// "Open Project" Button Clicked Slot /// -void StartupWizard::onOpenProjectButtonClicked() +void StartupView::onOpenProjectButtonClicked() { - hide(); - - if ( File::open() ) - { - close(); - } - else - { - show(); - } + File::open( mWindow ); } diff --git a/glabels/StartupWizard.h b/glabels/StartupView.h similarity index 72% rename from glabels/StartupWizard.h rename to glabels/StartupView.h index 42dc6c9..626d798 100644 --- a/glabels/StartupWizard.h +++ b/glabels/StartupView.h @@ -1,4 +1,4 @@ -/* StartupWizard.h +/* StartupView.h * * Copyright (C) 2016 Jim Evins * @@ -18,16 +18,18 @@ * along with gLabels-qt. If not, see . */ -#ifndef StartupWizard_h -#define StartupWizard_h +#ifndef StartupView_h +#define StartupView_h -#include "ui_StartupWizard.h" +#include "ui_StartupView.h" + +class MainWindow; // Forward reference /// -/// Startup Wizard Dialog Widget +/// Startup View Widget /// -class StartupWizard : public QDialog, public Ui_StartupWizard +class StartupView : public QWidget, public Ui_StartupView { Q_OBJECT @@ -36,7 +38,7 @@ class StartupWizard : public QDialog, public Ui_StartupWizard // Life Cycle ///////////////////////////////// public: - StartupWizard( QWidget *parent = 0 ); + StartupView( MainWindow* window ); ///////////////////////////////// @@ -46,7 +48,14 @@ private slots: void onNewProjectButtonClicked(); void onOpenProjectButtonClicked(); + + ///////////////////////////////// + // Private data + ///////////////////////////////// +private: + MainWindow* mWindow; + }; -#endif // StartupWizard_h +#endif // StartupView_h diff --git a/glabels/glabels_main.cpp b/glabels/glabels_main.cpp index 0d4514c..949e425 100644 --- a/glabels/glabels_main.cpp +++ b/glabels/glabels_main.cpp @@ -24,7 +24,7 @@ #include "libglabels/Db.h" #include "Settings.h" #include "MergeFactory.h" -#include "StartupWizard.h" +#include "MainWindow.h" int main( int argc, char **argv ) @@ -48,8 +48,8 @@ int main( int argc, char **argv ) ///////////////////////////////// /// @TODO open file(s) from command line if present, otherwise start wizard - StartupWizard startupWizard; - startupWizard.show(); + MainWindow mainWindow; + mainWindow.show(); return app.exec(); } diff --git a/glabels/ui/StartupView.ui b/glabels/ui/StartupView.ui new file mode 100644 index 0000000..56e9f8a --- /dev/null +++ b/glabels/ui/StartupView.ui @@ -0,0 +1,224 @@ + + + StartupView + + + + 0 + 0 + 460 + 397 + + + + Form + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 108 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + 0 + 0 + + + + + 319 + 53 + + + + + 16777215 + 53 + + + + padding:8px; + + + <html><head/><body><p><span style=" font-size:24pt; font-weight:600;">gLabels </span><span style=" font-size:16pt; color:#909090;">Label Designer</span></p></body></html> + + + + + + + Qt::Horizontal + + + + + + + Welcome to gLabels. Let's get started: + + + Qt::AlignCenter + + + + + + + + 319 + 59 + + + + + 16777215 + 59 + + + + New Project + + + + :/icons/24x24/actions/file-new.png:/icons/24x24/actions/file-new.png + + + + 24 + 24 + + + + Create a new blank gLabels project + + + + + + + + 319 + 59 + + + + + 16777215 + 59 + + + + Open Project + + + + :/icons/24x24/actions/file-open.png:/icons/24x24/actions/file-open.png + + + + 24 + 24 + + + + Open an existing gLabels project + + + + + + + + + + + + + + + + newProjectButton + clicked() + StartupView + onNewProjectButtonClicked() + + + 304 + 141 + + + 356 + 144 + + + + + openProjectButton + clicked() + StartupView + onOpenProjectButtonClicked() + + + 311 + 194 + + + 357 + 194 + + + + + + onNewProjectButtonClicked() + onOpenProjectButtonClicked() + + diff --git a/glabels/ui/StartupWizard.ui b/glabels/ui/StartupWizard.ui deleted file mode 100644 index ee496a7..0000000 --- a/glabels/ui/StartupWizard.ui +++ /dev/null @@ -1,172 +0,0 @@ - - - StartupWizard - - - - 0 - 0 - 339 - 218 - - - - - 0 - 0 - - - - gLabels - Startup Wizard - - - - - - - - - 0 - 0 - - - - - 319 - 53 - - - - - 16777215 - 53 - - - - padding:8px; - - - <html><head/><body><p><span style=" font-size:24pt; font-weight:600;">gLabels </span><span style=" font-size:16pt; color:#909090;">Label Designer</span></p></body></html> - - - - - - - Qt::Horizontal - - - - - - - Welcome to gLabels. Let's get started: - - - Qt::AlignCenter - - - - - - - - 319 - 59 - - - - - 16777215 - 59 - - - - New Project - - - Create a new blank gLabels project - - - - - - - - 319 - 59 - - - - - 16777215 - 59 - - - - Open Project - - - Open an existing gLabels project - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - - - - newProjectButton - clicked() - StartupWizard - onNewProjectButtonClicked() - - - 291 - 102 - - - 338 - 108 - - - - - openProjectButton - clicked() - StartupWizard - onOpenProjectButtonClicked() - - - 312 - 170 - - - 338 - 169 - - - - - - onNewProjectButtonClicked() - onOpenProjectButtonClicked() - -