Added initial File boilerplate.
This commit is contained in:
@@ -46,6 +46,7 @@ set (glabels_qobject_headers
|
|||||||
FieldButton.h
|
FieldButton.h
|
||||||
FieldMenu.h
|
FieldMenu.h
|
||||||
FieldMenuItem.h
|
FieldMenuItem.h
|
||||||
|
File.h
|
||||||
LabelModel.h
|
LabelModel.h
|
||||||
LabelModelObject.h
|
LabelModelObject.h
|
||||||
LabelModelBoxObject.h
|
LabelModelBoxObject.h
|
||||||
|
|||||||
+130
-3
@@ -20,20 +20,147 @@
|
|||||||
|
|
||||||
#include "File.h"
|
#include "File.h"
|
||||||
|
|
||||||
|
#include "MainWindow.h"
|
||||||
|
#include "LabelModel.h"
|
||||||
#include "NewLabelDialog.h"
|
#include "NewLabelDialog.h"
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
namespace glabels
|
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();
|
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
@@ -22,19 +22,29 @@
|
|||||||
#define glabels_File_h
|
#define glabels_File_h
|
||||||
|
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QObject>
|
||||||
|
|
||||||
|
|
||||||
namespace glabels
|
namespace glabels
|
||||||
{
|
{
|
||||||
|
class MainWindow;
|
||||||
|
|
||||||
///
|
///
|
||||||
/// File Actions
|
/// 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
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "LabelModel.h"
|
#include "LabelModel.h"
|
||||||
|
|
||||||
|
#include <QFileInfo>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
@@ -33,11 +34,37 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
/// Default constructor.
|
/// 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.
|
/// Add object.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ namespace glabels
|
|||||||
inline bool isModified() const;
|
inline bool isModified() const;
|
||||||
inline void clearModified();
|
inline void clearModified();
|
||||||
|
|
||||||
|
QString shortName();
|
||||||
inline const QString& filename() const;
|
inline const QString& filename() const;
|
||||||
inline void setFilename( const QString &filename );
|
inline void setFilename( const QString &filename );
|
||||||
|
|
||||||
@@ -180,6 +181,7 @@ namespace glabels
|
|||||||
// Private data
|
// Private data
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
private:
|
private:
|
||||||
|
int mUntitledInstance;
|
||||||
bool mModified;
|
bool mModified;
|
||||||
QString mFilename;
|
QString mFilename;
|
||||||
int mCompressionLevel;
|
int mCompressionLevel;
|
||||||
|
|||||||
+69
-26
@@ -43,6 +43,12 @@
|
|||||||
namespace glabels
|
namespace glabels
|
||||||
{
|
{
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Static window list
|
||||||
|
///
|
||||||
|
QList<MainWindow*> MainWindow::smWindowList;
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Constructor
|
/// Constructor
|
||||||
///
|
///
|
||||||
@@ -53,9 +59,9 @@ namespace glabels
|
|||||||
QLabel* tmp = new QLabel( "Coming Soon..." );
|
QLabel* tmp = new QLabel( "Coming Soon..." );
|
||||||
setCentralWidget( tmp );
|
setCentralWidget( tmp );
|
||||||
#else
|
#else
|
||||||
LabelModel* model = new LabelModel();
|
mModel = new LabelModel();
|
||||||
const libglabels::Template* tmplate = libglabels::Db::lookupTemplateFromName( "Avery 5163" );
|
const libglabels::Template* tmplate = libglabels::Db::lookupTemplateFromName( "Avery 5163" );
|
||||||
model->setTmplate( tmplate );
|
mModel->setTmplate( tmplate );
|
||||||
LabelModelBoxObject* object = new LabelModelBoxObject();
|
LabelModelBoxObject* object = new LabelModelBoxObject();
|
||||||
object->setW( 36 );
|
object->setW( 36 );
|
||||||
object->setH( 36 );
|
object->setH( 36 );
|
||||||
@@ -69,12 +75,12 @@ namespace glabels
|
|||||||
object->setShadowX( 5 );
|
object->setShadowX( 5 );
|
||||||
object->setShadowY( 5 );
|
object->setShadowY( 5 );
|
||||||
object->setShadow( true );
|
object->setShadow( true );
|
||||||
model->addObject( object );
|
mModel->addObject( object );
|
||||||
|
|
||||||
view = new View();
|
mView = new View();
|
||||||
view->setModel( model );
|
mView->setModel( mModel );
|
||||||
|
|
||||||
setCentralWidget( view );
|
setCentralWidget( mView );
|
||||||
#endif
|
#endif
|
||||||
/////////////////////////////////////////////////
|
/////////////////////////////////////////////////
|
||||||
|
|
||||||
@@ -87,6 +93,43 @@ namespace glabels
|
|||||||
setPasteVerbsEnabled( false );
|
setPasteVerbsEnabled( false );
|
||||||
|
|
||||||
readSettings();
|
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();
|
updateZoomInfo();
|
||||||
updateCursorInfo();
|
updateCursorInfo();
|
||||||
|
|
||||||
connect( view, SIGNAL(zoomChanged()), this, SLOT(updateZoomInfo()) );
|
connect( mView, SIGNAL(zoomChanged()), this, SLOT(updateZoomInfo()) );
|
||||||
connect( view, SIGNAL(pointerMoved(double, double)), this, SLOT(updateCursorInfo(double, double)) );
|
connect( mView, SIGNAL(pointerMoved(double, double)), this, SLOT(updateCursorInfo(double, double)) );
|
||||||
connect( view, SIGNAL(pointerExited()), this, SLOT(updateCursorInfo()) );
|
connect( mView, SIGNAL(pointerExited()), this, SLOT(updateCursorInfo()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -680,8 +723,8 @@ namespace glabels
|
|||||||
objectsToolBar->setVisible( showObjectsToolBar );
|
objectsToolBar->setVisible( showObjectsToolBar );
|
||||||
editToolBar ->setVisible( showEditToolBar );
|
editToolBar ->setVisible( showEditToolBar );
|
||||||
viewToolBar ->setVisible( showViewToolBar );
|
viewToolBar ->setVisible( showViewToolBar );
|
||||||
view ->setGridVisible( showGrid );
|
mView ->setGridVisible( showGrid );
|
||||||
view ->setMarkupVisible( showMarkup );
|
mView ->setMarkupVisible( showMarkup );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -717,7 +760,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::fileOpen()
|
void MainWindow::fileOpen()
|
||||||
{
|
{
|
||||||
std::cout << "ACTION: file->Open" << std::endl;
|
File::open( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -726,7 +769,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::fileSave()
|
void MainWindow::fileSave()
|
||||||
{
|
{
|
||||||
std::cout << "ACTION: file->Save" << std::endl;
|
File::save( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -735,7 +778,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::fileSaveAs()
|
void MainWindow::fileSaveAs()
|
||||||
{
|
{
|
||||||
std::cout << "ACTION: file->Save As" << std::endl;
|
File::saveAs( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -744,7 +787,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::filePrint()
|
void MainWindow::filePrint()
|
||||||
{
|
{
|
||||||
std::cout << "ACTION: file->Print" << std::endl;
|
File::print( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -771,7 +814,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::fileClose()
|
void MainWindow::fileClose()
|
||||||
{
|
{
|
||||||
std::cout << "ACTION: file->Close" << std::endl;
|
File::close( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -780,7 +823,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::fileExit()
|
void MainWindow::fileExit()
|
||||||
{
|
{
|
||||||
std::cout << "ACTION: file->Exit" << std::endl;
|
File::exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -906,7 +949,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::viewGrid( bool state )
|
void MainWindow::viewGrid( bool state )
|
||||||
{
|
{
|
||||||
view->setGridVisible( state );
|
mView->setGridVisible( state );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -915,7 +958,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::viewMarkup( bool state )
|
void MainWindow::viewMarkup( bool state )
|
||||||
{
|
{
|
||||||
view->setMarkupVisible( state );
|
mView->setMarkupVisible( state );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -924,7 +967,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::viewZoomIn()
|
void MainWindow::viewZoomIn()
|
||||||
{
|
{
|
||||||
view->zoomIn();
|
mView->zoomIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -933,7 +976,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::viewZoomOut()
|
void MainWindow::viewZoomOut()
|
||||||
{
|
{
|
||||||
view->zoomOut();
|
mView->zoomOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -942,7 +985,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::viewZoom1To1()
|
void MainWindow::viewZoom1To1()
|
||||||
{
|
{
|
||||||
view->zoom1To1();
|
mView->zoom1To1();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -951,7 +994,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::viewZoomToFit()
|
void MainWindow::viewZoomToFit()
|
||||||
{
|
{
|
||||||
view->zoomToFit();
|
mView->zoomToFit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1176,10 +1219,10 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void MainWindow::updateZoomInfo()
|
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() );
|
viewZoomInAction->setEnabled( !mView->isZoomMax() );
|
||||||
viewZoomOutAction->setEnabled( !view->isZoomMin() );
|
viewZoomOutAction->setEnabled( !mView->isZoomMin() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+16
-1
@@ -34,6 +34,7 @@ class QLabel;
|
|||||||
namespace glabels
|
namespace glabels
|
||||||
{
|
{
|
||||||
// Forward References
|
// Forward References
|
||||||
|
class LabelModel;
|
||||||
class View;
|
class View;
|
||||||
|
|
||||||
|
|
||||||
@@ -50,6 +51,17 @@ namespace glabels
|
|||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
public:
|
public:
|
||||||
MainWindow();
|
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 Data
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
private:
|
private:
|
||||||
|
static QList<MainWindow*> smWindowList;
|
||||||
|
|
||||||
QMenu* fileMenu;
|
QMenu* fileMenu;
|
||||||
QMenu* editMenu;
|
QMenu* editMenu;
|
||||||
QMenu* viewMenu;
|
QMenu* viewMenu;
|
||||||
@@ -165,7 +179,8 @@ namespace glabels
|
|||||||
QToolBar* editToolBar;
|
QToolBar* editToolBar;
|
||||||
QToolBar* viewToolBar;
|
QToolBar* viewToolBar;
|
||||||
|
|
||||||
View* view;
|
LabelModel* mModel;
|
||||||
|
View* mView;
|
||||||
|
|
||||||
QLabel* zoomInfoLabel;
|
QLabel* zoomInfoLabel;
|
||||||
QLabel* cursorInfoLabel;
|
QLabel* cursorInfoLabel;
|
||||||
|
|||||||
Reference in New Issue
Block a user