Title block template editor: implemented copy operation.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@1556 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2012-03-11 16:06:22 +00:00
parent fa34d7fbe6
commit 1f192b26c7
6 changed files with 67 additions and 6 deletions

View File

@@ -300,6 +300,9 @@ void QETTitleBlockTemplateEditor::initActions() {
quit_ = new QAction(QET::Icons::ApplicationExit, tr("&Quitter", "menu entry"), this); quit_ = new QAction(QET::Icons::ApplicationExit, tr("&Quitter", "menu entry"), this);
undo_ = undo_stack_ -> createUndoAction(this); undo_ = undo_stack_ -> createUndoAction(this);
redo_ = undo_stack_ -> createRedoAction(this); redo_ = undo_stack_ -> createRedoAction(this);
cut_ = new QAction(QET::Icons::EditCut, tr("Co&uper", "menu entry"), this);
copy_ = new QAction(QET::Icons::EditCopy, tr("Cop&ier", "menu entry"), this);
paste_ = new QAction(QET::Icons::EditPaste, tr("C&oller", "menu entry"), this);
edit_info_ = new QAction(QET::Icons::UserInformations, tr("\311diter les informations compl\351mentaires", "menu entry"), this); edit_info_ = new QAction(QET::Icons::UserInformations, tr("\311diter les informations compl\351mentaires", "menu entry"), this);
zoom_in_ = new QAction(QET::Icons::ZoomIn, tr("Zoom avant", "menu entry"), this); zoom_in_ = new QAction(QET::Icons::ZoomIn, tr("Zoom avant", "menu entry"), this);
zoom_out_ = new QAction(QET::Icons::ZoomOut, tr("Zoom arri\350re", "menu entry"), this); zoom_out_ = new QAction(QET::Icons::ZoomOut, tr("Zoom arri\350re", "menu entry"), this);
@@ -319,6 +322,9 @@ void QETTitleBlockTemplateEditor::initActions() {
quit_ -> setShortcut(QKeySequence(tr("Ctrl+Q", "shortcut to quit"))); quit_ -> setShortcut(QKeySequence(tr("Ctrl+Q", "shortcut to quit")));
undo_ -> setShortcut(QKeySequence::Undo); undo_ -> setShortcut(QKeySequence::Undo);
redo_ -> setShortcut(QKeySequence::Redo); redo_ -> setShortcut(QKeySequence::Redo);
cut_ -> setShortcut(QKeySequence::Cut);
copy_ -> setShortcut(QKeySequence::Copy);
paste_ -> setShortcut(QKeySequence::Paste);
edit_info_ -> setShortcut(QKeySequence(tr("Ctrl+Y", "shortcut to edit extra information"))); edit_info_ -> setShortcut(QKeySequence(tr("Ctrl+Y", "shortcut to edit extra information")));
merge_cells_ -> setShortcut(QKeySequence(tr("Ctrl+K", "shortcut to merge cells"))); merge_cells_ -> setShortcut(QKeySequence(tr("Ctrl+K", "shortcut to merge cells")));
split_cell_ -> setShortcut(QKeySequence(tr("Ctrl+J", "shortcut to split merged cell"))); split_cell_ -> setShortcut(QKeySequence(tr("Ctrl+J", "shortcut to split merged cell")));
@@ -334,6 +340,9 @@ void QETTitleBlockTemplateEditor::initActions() {
connect(save_as_, SIGNAL(triggered()), this, SLOT(saveAs())); connect(save_as_, SIGNAL(triggered()), this, SLOT(saveAs()));
connect(save_as_file_, SIGNAL(triggered()), this, SLOT(saveAsFile())); connect(save_as_file_, SIGNAL(triggered()), this, SLOT(saveAsFile()));
connect(quit_, SIGNAL(triggered()), this, SLOT(quit())); connect(quit_, SIGNAL(triggered()), this, SLOT(quit()));
connect(cut_, SIGNAL(triggered()), template_edition_area_view_, SLOT(cut()));
connect(copy_, SIGNAL(triggered()), template_edition_area_view_, SLOT(copy()));
connect(paste_, SIGNAL(triggered()), template_edition_area_view_, SLOT(paste()));
connect(zoom_in_, SIGNAL(triggered()), template_edition_area_view_, SLOT(zoomIn())); connect(zoom_in_, SIGNAL(triggered()), template_edition_area_view_, SLOT(zoomIn()));
connect(zoom_out_, SIGNAL(triggered()), template_edition_area_view_, SLOT(zoomOut())); connect(zoom_out_, SIGNAL(triggered()), template_edition_area_view_, SLOT(zoomOut()));
connect(zoom_fit_, SIGNAL(triggered()), template_edition_area_view_, SLOT(zoomFit())); connect(zoom_fit_, SIGNAL(triggered()), template_edition_area_view_, SLOT(zoomFit()));
@@ -363,7 +372,10 @@ void QETTitleBlockTemplateEditor::initMenus() {
edit_menu_ -> addAction(undo_); edit_menu_ -> addAction(undo_);
edit_menu_ -> addAction(redo_); edit_menu_ -> addAction(redo_);
edit_menu_ -> addSeparator(); edit_menu_ -> addSeparator();
edit_menu_ -> addAction(cut_);
edit_menu_ -> addAction(copy_);
edit_menu_ -> addAction(paste_);
edit_menu_ -> addSeparator();
edit_menu_ -> addAction(merge_cells_); edit_menu_ -> addAction(merge_cells_);
edit_menu_ -> addAction(split_cell_); edit_menu_ -> addAction(split_cell_);
edit_menu_ -> addAction(edit_info_); edit_menu_ -> addAction(edit_info_);

View File

@@ -49,7 +49,7 @@ class QETTitleBlockTemplateEditor : public QETMainWindow {
QMenu *file_menu_, *edit_menu_,/* *paste_from_menu_, */*display_menu_,/* *tools_menu_*/; QMenu *file_menu_, *edit_menu_,/* *paste_from_menu_, */*display_menu_,/* *tools_menu_*/;
/// actions /// actions
QAction *new_, *open_, *open_from_file_, *save_, *save_as_, *save_as_file_, *quit_; QAction *new_, *open_, *open_from_file_, *save_, *save_as_, *save_as_file_, *quit_;
QAction *undo_, *redo_, *edit_info_, *merge_cells_, *split_cell_; QAction *undo_, *redo_, *cut_, *copy_, *paste_, *edit_info_, *merge_cells_, *split_cell_;
QAction *zoom_in_, *zoom_out_, *zoom_fit_, *zoom_reset_; QAction *zoom_in_, *zoom_out_, *zoom_fit_, *zoom_reset_;
/// Location of the currently edited template /// Location of the currently edited template
TitleBlockTemplateLocation location_; TitleBlockTemplateLocation location_;

View File

@@ -130,6 +130,38 @@ void TitleBlockTemplateView::zoomReset() {
resetMatrix(); resetMatrix();
} }
/**
Export currently selected cells to the clipboard before setting them as
empty.
*/
void TitleBlockTemplateView::cut() {
/// TODO
}
/**
Export currently selected cells to the clipboard.
*/
void TitleBlockTemplateView::copy() {
if (!tbtemplate_) return;
QDomDocument xml_export;
QDomElement tbtpartial = xml_export.createElement("titleblocktemplate-partial");
xml_export.appendChild(tbtpartial);
foreach (TitleBlockCell *cell, selectedCells()) {
tbtemplate_ -> exportCellToXml(cell, tbtpartial);
}
QClipboard *clipboard = QApplication::clipboard();
clipboard -> setText(xml_export.toString());
}
/**
Import the cells described in the clipboard.
*/
void TitleBlockTemplateView::paste() {
/// TODO
}
/** /**
Add a column right before the last index selected when calling the context Add a column right before the last index selected when calling the context
menu. menu.

View File

@@ -58,6 +58,9 @@ class TitleBlockTemplateView : public QGraphicsView {
void zoomOut(); void zoomOut();
void zoomFit(); void zoomFit();
void zoomReset(); void zoomReset();
void cut();
void copy();
void paste();
void addColumnBefore(); void addColumnBefore();
void addRowBefore(); void addRowBefore();
void addColumnAfter(); void addColumnAfter();

View File

@@ -165,6 +165,14 @@ bool TitleBlockTemplate::saveToXmlElement(QDomElement &xml_element) const {
return(true); return(true);
} }
/**
@param xml_element Parent XML element to be used when exporting \a cell
@param cell Cell to export
*/
void TitleBlockTemplate::exportCellToXml(TitleBlockCell *cell, QDomElement &xml_element) const {
saveCell(cell, xml_element, true);
}
/** /**
@return a deep copy of the current title block template (i.e. title block @return a deep copy of the current title block template (i.e. title block
cells are duplicated too and associated with their parent template). cells are duplicated too and associated with their parent template).
@@ -552,10 +560,13 @@ void TitleBlockTemplate::saveCells(QDomElement &xml_element) const {
Export a specific cell as XML Export a specific cell as XML
@param cell Cell to be exported as XML @param cell Cell to be exported as XML
@param xml_element XML element under which the \<cell\> element will be attached @param xml_element XML element under which the \<cell\> element will be attached
@param save_empty If true, the cell will be saved even if it is an empty one
*/ */
void TitleBlockTemplate::saveCell(TitleBlockCell *cell, QDomElement &xml_element) const { void TitleBlockTemplate::saveCell(TitleBlockCell *cell, QDomElement &xml_element, bool save_empty) const {
if (!cell || cell -> cell_type == TitleBlockCell::EmptyCell) return; if (!cell) return;
if (cell -> spanner_cell) return; if (cell -> spanner_cell) return;
if (!save_empty && cell -> cell_type == TitleBlockCell::EmptyCell) return;
QDomElement cell_elmt = xml_element.ownerDocument().createElement("cell"); QDomElement cell_elmt = xml_element.ownerDocument().createElement("cell");
cell_elmt.setAttribute("name", cell -> value_name); cell_elmt.setAttribute("name", cell -> value_name);
@@ -564,7 +575,9 @@ void TitleBlockTemplate::saveCell(TitleBlockCell *cell, QDomElement &xml_element
if (cell -> row_span) cell_elmt.setAttribute("rowspan", cell -> row_span); if (cell -> row_span) cell_elmt.setAttribute("rowspan", cell -> row_span);
if (cell -> col_span) cell_elmt.setAttribute("colspan", cell -> col_span); if (cell -> col_span) cell_elmt.setAttribute("colspan", cell -> col_span);
if (cell -> type() == TitleBlockCell::LogoCell) { if (cell -> type() == TitleBlockCell::EmptyCell) {
cell_elmt.setTagName("empty");
} else if (cell -> type() == TitleBlockCell::LogoCell) {
cell_elmt.setTagName("logo"); cell_elmt.setTagName("logo");
cell_elmt.setAttribute("resource", cell -> logo_reference); cell_elmt.setAttribute("resource", cell -> logo_reference);
} else { } else {

View File

@@ -49,6 +49,7 @@ class TitleBlockTemplate : public QObject {
bool loadFromXmlElement(const QDomElement &); bool loadFromXmlElement(const QDomElement &);
bool saveToXmlFile(const QString &); bool saveToXmlFile(const QString &);
bool saveToXmlElement(QDomElement &) const; bool saveToXmlElement(QDomElement &) const;
void exportCellToXml(TitleBlockCell *,QDomElement &) const;
TitleBlockTemplate *clone() const; TitleBlockTemplate *clone() const;
QString name() const; QString name() const;
QString information() const; QString information() const;
@@ -108,7 +109,7 @@ class TitleBlockTemplate : public QObject {
void saveLogo(const QString &, QDomElement &) const; void saveLogo(const QString &, QDomElement &) const;
void saveGrid(QDomElement &) const; void saveGrid(QDomElement &) const;
void saveCells(QDomElement &) const; void saveCells(QDomElement &) const;
void saveCell(TitleBlockCell *, QDomElement &) const; void saveCell(TitleBlockCell *, QDomElement &, bool = false) const;
QList<TitleBlockCell *> createCellsList(int); QList<TitleBlockCell *> createCellsList(int);
private: private: