Title block template editor: implemented cut operation.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@1561 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2012-03-11 16:06:43 +00:00
parent ab3caba9ef
commit f6b2037fb9
4 changed files with 98 additions and 8 deletions

View File

@@ -849,6 +849,59 @@ void ChangeTemplateInformationsCommand::redo() {
tbtemplate_ -> setInformation(new_information_); tbtemplate_ -> setInformation(new_information_);
} }
/**
Constructor
*/
CutTemplateCellsCommand::CutTemplateCellsCommand(TitleBlockTemplate *tb_template, QUndoCommand *parent) :
TitleBlockTemplateCommand(tb_template, parent)
{
}
/**
Destructor
*/
CutTemplateCellsCommand::~CutTemplateCellsCommand() {
}
/**
Undo a cut operation
*/
void CutTemplateCellsCommand::undo() {
foreach (TitleBlockCell *cell, cut_cells_.keys()) {
cell -> cell_type = cut_cells_.value(cell);
}
if (view_) {
view_ -> refresh();
}
}
/**
Redo a cut operation
*/
void CutTemplateCellsCommand::redo() {
foreach (TitleBlockCell *cell, cut_cells_.keys()) {
cell -> cell_type = TitleBlockCell::EmptyCell;
}
if (view_) {
view_ -> refresh();
}
}
void CutTemplateCellsCommand::setCutCells(const QList<TitleBlockCell *> &cells) {
foreach (TitleBlockCell *cell, cells) {
cut_cells_.insert(cell, cell -> cell_type);
}
updateText();
}
/**
Update the label describing this command
*/
void CutTemplateCellsCommand::updateText() {
setText(QObject::tr("Couper %n cellule(s)", "undo caption", cut_cells_.count()));
}
/** /**
Constructor Constructor
@param tb_template Changed title block template @param tb_template Changed title block template

View File

@@ -22,8 +22,8 @@
#include <QUndoCommand> #include <QUndoCommand>
#include "dimension.h" #include "dimension.h"
#include "templatecellsset.h" #include "templatecellsset.h"
#include "titleblockcell.h"
class TitleBlockTemplateView; class TitleBlockTemplateView;
class TitleBlockCell;
class TitleBlockTemplate; class TitleBlockTemplate;
/** /**
@@ -251,6 +251,30 @@ class ChangeTemplateInformationsCommand : public QUndoCommand {
QString new_information_; QString new_information_;
}; };
/**
This class represents the action of cutting a cells set.
*/
class CutTemplateCellsCommand : public TitleBlockTemplateCommand {
// constructors, destructor
public:
CutTemplateCellsCommand(TitleBlockTemplate *, QUndoCommand * = 0);
virtual ~CutTemplateCellsCommand();
private:
CutTemplateCellsCommand(const CutTemplateCellsCommand &);
// methods
public:
virtual void undo();
virtual void redo();
virtual void setCutCells(const QList<TitleBlockCell *> &);
protected:
virtual void updateText();
// attributes
public:
/// Cut cells
QHash<TitleBlockCell *, TitleBlockCell::TemplateCellType> cut_cells_;
};
/** /**
This class represents the action of pasting a cells set. This class represents the action of pasting a cells set.

View File

@@ -133,26 +133,39 @@ void TitleBlockTemplateView::zoomReset() {
/** /**
Export currently selected cells to the clipboard before setting them as Export currently selected cells to the clipboard before setting them as
empty. empty.
@return the list of cells copied to the clipboard
*/ */
void TitleBlockTemplateView::cut() { QList<TitleBlockCell *> TitleBlockTemplateView::cut() {
/// TODO if (!tbtemplate_) return(QList<TitleBlockCell *>());
QList<TitleBlockCell *> copied_cells = copy();
if (!copied_cells.isEmpty()) {
CutTemplateCellsCommand *cut_command = new CutTemplateCellsCommand(tbtemplate_);
cut_command -> setCutCells(copied_cells);
requestGridModification(cut_command);
}
return(copied_cells);
} }
/** /**
Export currently selected cells to the clipboard. Export currently selected cells to the clipboard.
@return the list of cells copied to the clipboard
*/ */
void TitleBlockTemplateView::copy() { QList<TitleBlockCell *> TitleBlockTemplateView::copy() {
if (!tbtemplate_) return; if (!tbtemplate_) return(QList<TitleBlockCell *>());
QList<TitleBlockCell *> copied_cells = selectedCells();
QDomDocument xml_export; QDomDocument xml_export;
QDomElement tbtpartial = xml_export.createElement("titleblocktemplate-partial"); QDomElement tbtpartial = xml_export.createElement("titleblocktemplate-partial");
xml_export.appendChild(tbtpartial); xml_export.appendChild(tbtpartial);
foreach (TitleBlockCell *cell, selectedCells()) { foreach (TitleBlockCell *cell, copied_cells) {
tbtemplate_ -> exportCellToXml(cell, tbtpartial); tbtemplate_ -> exportCellToXml(cell, tbtpartial);
} }
QClipboard *clipboard = QApplication::clipboard(); QClipboard *clipboard = QApplication::clipboard();
clipboard -> setText(xml_export.toString()); clipboard -> setText(xml_export.toString());
return(copied_cells);
} }
/** /**

View File

@@ -58,8 +58,8 @@ class TitleBlockTemplateView : public QGraphicsView {
void zoomOut(); void zoomOut();
void zoomFit(); void zoomFit();
void zoomReset(); void zoomReset();
void cut(); QList<TitleBlockCell *> cut();
void copy(); QList<TitleBlockCell *> copy();
void paste(); void paste();
void addColumnBefore(); void addColumnBefore();
void addRowBefore(); void addRowBefore();