Added initial File boilerplate.

This commit is contained in:
Jim Evins
2014-09-01 23:26:20 -04:00
parent 06ff813618
commit b318efd68e
7 changed files with 260 additions and 35 deletions
+1
View File
@@ -46,6 +46,7 @@ set (glabels_qobject_headers
FieldButton.h
FieldMenu.h
FieldMenuItem.h
File.h
LabelModel.h
LabelModelObject.h
LabelModelBoxObject.h
+130 -3
View File
@@ -20,20 +20,147 @@
#include "File.h"
#include "MainWindow.h"
#include "LabelModel.h"
#include "NewLabelDialog.h"
#include <QFileDialog>
#include <QMessageBox>
#include <iostream>
namespace glabels
{
///
/// Open a New Label Dialog
/// New Label Dialog
///
void File::newLabel( QWidget *parent )
void File::newLabel( MainWindow *window )
{
NewLabelDialog newDialog( parent );
NewLabelDialog newDialog( window );
newDialog.exec();
}
///
/// Open File Dialog
///
void File::open( MainWindow *window )
{
QString fileName =
QFileDialog::getOpenFileName( window,
tr("Open label"),
".",
tr("glabels files (*.glabels);;All files (*)")
);
if ( !fileName.isEmpty() )
{
std::cout << "ACTION: file->Open: " << fileName.toStdString() << std::endl;
}
}
///
/// Save file
///
bool File::save( MainWindow *window )
{
if ( window->model()->filename().isEmpty() )
{
return saveAs( window );
}
else
{
std::cout << "ACTION: file->Save: " << window->model()->filename().toStdString() << std::endl;
return true;
}
}
///
/// Save file as
///
bool File::saveAs( MainWindow *window )
{
QString fileName =
QFileDialog::getSaveFileName( window,
tr("Save label"),
".",
tr("glabels files (*.glabels)")
);
if ( !fileName.isEmpty() )
{
std::cout << "ACTION: file->SaveAs: " << fileName.toStdString() << std::endl;
return true;
}
return false;
}
///
/// Print file
///
void File::print( MainWindow *window )
{
std::cout << "ACTION: file->print" << std::endl;
}
///
/// Close file
///
void File::close( MainWindow *window )
{
bool closeFlag = true;
if ( !window->isEmpty() )
{
QMessageBox msgBox;
msgBox.setText( tr("The document ") + window->model()->shortName() + tr(" has been modified.") );
msgBox.setInformativeText( tr("Do you want to save your changes?") );
msgBox.setStandardButtons( QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel );
msgBox.setDefaultButton( QMessageBox::Save );
int ret = msgBox.exec();
switch (ret) {
case QMessageBox::Save:
// Save was clicked
closeFlag = save( window );
break;
case QMessageBox::Discard:
// Don't Save was clicked
closeFlag = true;
break;
case QMessageBox::Cancel:
// Cancel was clicked
closeFlag = false;
break;
default:
// should never be reached
closeFlag = false;
break;
}
}
if ( closeFlag )
{
window->close();
}
}
///
/// Exit, closing all windows
///
void File::exit()
{
foreach ( MainWindow* window, MainWindow::windowList() )
{
close( window );
}
}
}
+14 -4
View File
@@ -22,19 +22,29 @@
#define glabels_File_h
#include <QWidget>
#include <QObject>
namespace glabels
{
class MainWindow;
///
/// File Actions
///
namespace File
class File : public QObject
{
void newLabel( QWidget *parent );
}
Q_OBJECT
public:
static void newLabel( MainWindow *window );
static void open( MainWindow *window );
static bool save( MainWindow *window );
static bool saveAs( MainWindow *window );
static void print( MainWindow *window );
static void close( MainWindow *window );
static void exit();
};
}
+28 -1
View File
@@ -20,6 +20,7 @@
#include "LabelModel.h"
#include <QFileInfo>
#include <algorithm>
#include <cmath>
@@ -33,11 +34,37 @@ namespace glabels
///
/// Default constructor.
///
LabelModel::LabelModel() : mModified(true), mTmplate(0), mRotate(false)
LabelModel::LabelModel() : mUntitledInstance(0), mModified(true), mTmplate(0), mRotate(false)
{
}
///
/// Short name.
///
QString LabelModel::shortName()
{
static int untitledCount = 0;
if ( mFilename.isEmpty() )
{
if ( mUntitledInstance == 0 )
{
mUntitledInstance = ++untitledCount;
}
QString numString;
numString.setNum(mUntitledInstance);;
return tr("Untitled") + numString;
}
else
{
QFileInfo fileInfo( mFilename );
return fileInfo.baseName();
}
}
///
/// Add object.
///
+2
View File
@@ -76,6 +76,7 @@ namespace glabels
inline bool isModified() const;
inline void clearModified();
QString shortName();
inline const QString& filename() const;
inline void setFilename( const QString &filename );
@@ -180,6 +181,7 @@ namespace glabels
// Private data
/////////////////////////////////
private:
int mUntitledInstance;
bool mModified;
QString mFilename;
int mCompressionLevel;
+69 -26
View File
@@ -43,6 +43,12 @@
namespace glabels
{
///
/// Static window list
///
QList<MainWindow*> MainWindow::smWindowList;
///
/// Constructor
///
@@ -53,9 +59,9 @@ namespace glabels
QLabel* tmp = new QLabel( "Coming Soon..." );
setCentralWidget( tmp );
#else
LabelModel* model = new LabelModel();
mModel = new LabelModel();
const libglabels::Template* tmplate = libglabels::Db::lookupTemplateFromName( "Avery 5163" );
model->setTmplate( tmplate );
mModel->setTmplate( tmplate );
LabelModelBoxObject* object = new LabelModelBoxObject();
object->setW( 36 );
object->setH( 36 );
@@ -69,12 +75,12 @@ namespace glabels
object->setShadowX( 5 );
object->setShadowY( 5 );
object->setShadow( true );
model->addObject( object );
mModel->addObject( object );
view = new View();
view->setModel( model );
mView = new View();
mView->setModel( mModel );
setCentralWidget( view );
setCentralWidget( mView );
#endif
/////////////////////////////////////////////////
@@ -87,6 +93,43 @@ namespace glabels
setPasteVerbsEnabled( false );
readSettings();
smWindowList.push_back( this );
}
///
/// Destructor
///
MainWindow::~MainWindow()
{
smWindowList.removeOne( this );
}
///
/// Get model accessor
///
LabelModel* MainWindow::model() const
{
return mModel;
}
///
/// Is window empty?
///
bool MainWindow::isEmpty() const
{
return mModel == 0;
}
///
/// Get window list
///
QList<MainWindow*> MainWindow::windowList()
{
return smWindowList;
}
@@ -537,9 +580,9 @@ namespace glabels
updateZoomInfo();
updateCursorInfo();
connect( view, SIGNAL(zoomChanged()), this, SLOT(updateZoomInfo()) );
connect( view, SIGNAL(pointerMoved(double, double)), this, SLOT(updateCursorInfo(double, double)) );
connect( view, SIGNAL(pointerExited()), this, SLOT(updateCursorInfo()) );
connect( mView, SIGNAL(zoomChanged()), this, SLOT(updateZoomInfo()) );
connect( mView, SIGNAL(pointerMoved(double, double)), this, SLOT(updateCursorInfo(double, double)) );
connect( mView, SIGNAL(pointerExited()), this, SLOT(updateCursorInfo()) );
}
@@ -680,8 +723,8 @@ namespace glabels
objectsToolBar->setVisible( showObjectsToolBar );
editToolBar ->setVisible( showEditToolBar );
viewToolBar ->setVisible( showViewToolBar );
view ->setGridVisible( showGrid );
view ->setMarkupVisible( showMarkup );
mView ->setGridVisible( showGrid );
mView ->setMarkupVisible( showMarkup );
}
@@ -717,7 +760,7 @@ namespace glabels
///
void MainWindow::fileOpen()
{
std::cout << "ACTION: file->Open" << std::endl;
File::open( this );
}
@@ -726,7 +769,7 @@ namespace glabels
///
void MainWindow::fileSave()
{
std::cout << "ACTION: file->Save" << std::endl;
File::save( this );
}
@@ -735,7 +778,7 @@ namespace glabels
///
void MainWindow::fileSaveAs()
{
std::cout << "ACTION: file->Save As" << std::endl;
File::saveAs( this );
}
@@ -744,7 +787,7 @@ namespace glabels
///
void MainWindow::filePrint()
{
std::cout << "ACTION: file->Print" << std::endl;
File::print( this );
}
@@ -771,7 +814,7 @@ namespace glabels
///
void MainWindow::fileClose()
{
std::cout << "ACTION: file->Close" << std::endl;
File::close( this );
}
@@ -780,7 +823,7 @@ namespace glabels
///
void MainWindow::fileExit()
{
std::cout << "ACTION: file->Exit" << std::endl;
File::exit();
}
@@ -906,7 +949,7 @@ namespace glabels
///
void MainWindow::viewGrid( bool state )
{
view->setGridVisible( state );
mView->setGridVisible( state );
}
@@ -915,7 +958,7 @@ namespace glabels
///
void MainWindow::viewMarkup( bool state )
{
view->setMarkupVisible( state );
mView->setMarkupVisible( state );
}
@@ -924,7 +967,7 @@ namespace glabels
///
void MainWindow::viewZoomIn()
{
view->zoomIn();
mView->zoomIn();
}
@@ -933,7 +976,7 @@ namespace glabels
///
void MainWindow::viewZoomOut()
{
view->zoomOut();
mView->zoomOut();
}
@@ -942,7 +985,7 @@ namespace glabels
///
void MainWindow::viewZoom1To1()
{
view->zoom1To1();
mView->zoom1To1();
}
@@ -951,7 +994,7 @@ namespace glabels
///
void MainWindow::viewZoomToFit()
{
view->zoomToFit();
mView->zoomToFit();
}
@@ -1176,10 +1219,10 @@ namespace glabels
///
void MainWindow::updateZoomInfo()
{
zoomInfoLabel->setText( QString( " %1% " ).arg(100*view->zoom(), 0, 'f', 0) );
zoomInfoLabel->setText( QString( " %1% " ).arg(100*mView->zoom(), 0, 'f', 0) );
viewZoomInAction->setEnabled( !view->isZoomMax() );
viewZoomOutAction->setEnabled( !view->isZoomMin() );
viewZoomInAction->setEnabled( !mView->isZoomMax() );
viewZoomOutAction->setEnabled( !mView->isZoomMin() );
}
+16 -1
View File
@@ -34,6 +34,7 @@ class QLabel;
namespace glabels
{
// Forward References
class LabelModel;
class View;
@@ -50,6 +51,17 @@ namespace glabels
/////////////////////////////////////
public:
MainWindow();
virtual ~MainWindow();
/////////////////////////////////////
// Public Methods
/////////////////////////////////////
public:
LabelModel* model() const;
bool isEmpty() const;
static QList<MainWindow *> windowList();
/////////////////////////////////////
@@ -148,6 +160,8 @@ namespace glabels
// Private Data
/////////////////////////////////////
private:
static QList<MainWindow*> smWindowList;
QMenu* fileMenu;
QMenu* editMenu;
QMenu* viewMenu;
@@ -165,7 +179,8 @@ namespace glabels
QToolBar* editToolBar;
QToolBar* viewToolBar;
View* view;
LabelModel* mModel;
View* mView;
QLabel* zoomInfoLabel;
QLabel* cursorInfoLabel;