Moved startup wizard to welcome page in main window's stacked widget.

This commit is contained in:
Jim Evins
2016-05-14 20:01:36 -04:00
parent 73b7475cbc
commit 8d9686430f
10 changed files with 339 additions and 245 deletions
+3 -3
View File
@@ -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
+27 -15
View File
@@ -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;
}
+2 -2
View File
@@ -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 );
+45 -16
View File
@@ -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 );
}
+9
View File
@@ -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;
@@ -1,4 +1,4 @@
/* StartupWizard.cpp
/* StartupView.cpp
*
* Copyright (C) 2016 Jim Evins <evins@snaught.com>
*
@@ -18,17 +18,18 @@
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StartupWizard.h"
#include "StartupView.h"
#include "File.h"
#include "MainWindow.h"
#include <QtDebug>
///
/// 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 );
}
@@ -1,4 +1,4 @@
/* StartupWizard.h
/* StartupView.h
*
* Copyright (C) 2016 Jim Evins <evins@snaught.com>
*
@@ -18,16 +18,18 @@
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#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
+3 -3
View File
@@ -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();
}
+224
View File
@@ -0,0 +1,224 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>StartupView</class>
<widget class="QWidget" name="StartupView">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>460</width>
<height>397</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>108</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="titleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>319</width>
<height>53</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>53</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">padding:8px;</string>
</property>
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:24pt; font-weight:600;&quot;&gt;gLabels &lt;/span&gt;&lt;span style=&quot; font-size:16pt; color:#909090;&quot;&gt;Label Designer&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Welcome to gLabels. Let's get started:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QCommandLinkButton" name="newProjectButton">
<property name="minimumSize">
<size>
<width>319</width>
<height>59</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>59</height>
</size>
</property>
<property name="text">
<string>New Project</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/24x24/actions/file-new.png</normaloff>:/icons/24x24/actions/file-new.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="description">
<string>Create a new blank gLabels project</string>
</property>
</widget>
</item>
<item>
<widget class="QCommandLinkButton" name="openProjectButton">
<property name="minimumSize">
<size>
<width>319</width>
<height>59</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>59</height>
</size>
</property>
<property name="text">
<string>Open Project</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/24x24/actions/file-open.png</normaloff>:/icons/24x24/actions/file-open.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="description">
<string>Open an existing gLabels project</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="../icons.qrc"/>
</resources>
<connections>
<connection>
<sender>newProjectButton</sender>
<signal>clicked()</signal>
<receiver>StartupView</receiver>
<slot>onNewProjectButtonClicked()</slot>
<hints>
<hint type="sourcelabel">
<x>304</x>
<y>141</y>
</hint>
<hint type="destinationlabel">
<x>356</x>
<y>144</y>
</hint>
</hints>
</connection>
<connection>
<sender>openProjectButton</sender>
<signal>clicked()</signal>
<receiver>StartupView</receiver>
<slot>onOpenProjectButtonClicked()</slot>
<hints>
<hint type="sourcelabel">
<x>311</x>
<y>194</y>
</hint>
<hint type="destinationlabel">
<x>357</x>
<y>194</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>onNewProjectButtonClicked()</slot>
<slot>onOpenProjectButtonClicked()</slot>
</slots>
</ui>
-172
View File
@@ -1,172 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>StartupWizard</class>
<widget class="QDialog" name="StartupWizard">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>339</width>
<height>218</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>gLabels - Startup Wizard</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="titleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>319</width>
<height>53</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>53</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">padding:8px;</string>
</property>
<property name="text">
<string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:24pt; font-weight:600;&quot;&gt;gLabels &lt;/span&gt;&lt;span style=&quot; font-size:16pt; color:#909090;&quot;&gt;Label Designer&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Welcome to gLabels. Let's get started:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QCommandLinkButton" name="newProjectButton">
<property name="minimumSize">
<size>
<width>319</width>
<height>59</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>59</height>
</size>
</property>
<property name="text">
<string>New Project</string>
</property>
<property name="description">
<string>Create a new blank gLabels project</string>
</property>
</widget>
</item>
<item>
<widget class="QCommandLinkButton" name="openProjectButton">
<property name="minimumSize">
<size>
<width>319</width>
<height>59</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>59</height>
</size>
</property>
<property name="text">
<string>Open Project</string>
</property>
<property name="description">
<string>Open an existing gLabels project</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources>
<include location="../images.qrc"/>
</resources>
<connections>
<connection>
<sender>newProjectButton</sender>
<signal>clicked()</signal>
<receiver>StartupWizard</receiver>
<slot>onNewProjectButtonClicked()</slot>
<hints>
<hint type="sourcelabel">
<x>291</x>
<y>102</y>
</hint>
<hint type="destinationlabel">
<x>338</x>
<y>108</y>
</hint>
</hints>
</connection>
<connection>
<sender>openProjectButton</sender>
<signal>clicked()</signal>
<receiver>StartupWizard</receiver>
<slot>onOpenProjectButtonClicked()</slot>
<hints>
<hint type="sourcelabel">
<x>312</x>
<y>170</y>
</hint>
<hint type="destinationlabel">
<x>338</x>
<y>169</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>onNewProjectButtonClicked()</slot>
<slot>onOpenProjectButtonClicked()</slot>
</slots>
</ui>