Cut/Copy/Paste menu entries are now enabled/disabled according to the current state of editor, selection and clipboard.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@1563 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2012-03-11 16:06:48 +00:00
parent 9bf900ca29
commit 8daa1bebce
3 changed files with 22 additions and 3 deletions

View File

@@ -452,6 +452,7 @@ void QETTitleBlockTemplateEditor::initWidgets() {
SLOT(savePreviewWidthToApplicationSettings(int, int))
);
connect(undo_stack_, SIGNAL(cleanChanged(bool)), this, SLOT(updateEditorTitle()));
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(updateActions()));
}
/**
@@ -578,9 +579,13 @@ void QETTitleBlockTemplateEditor::updateActions() {
bool can_merge;
bool can_split;
int count;
if (!read_only_) {
template_edition_area_view_ -> analyzeSelectedCells(&can_merge, &can_split);
template_edition_area_view_ -> analyzeSelectedCells(&can_merge, &can_split, &count);
}
cut_ -> setEnabled(!read_only_ && count);
copy_ -> setEnabled(count);
paste_ -> setEnabled(!read_only_ && count && template_edition_area_view_ -> mayPaste());
merge_cells_ -> setEnabled(!read_only_ && can_merge);
split_cell_ -> setEnabled(!read_only_ && can_split);
}

View File

@@ -168,6 +168,15 @@ QList<TitleBlockCell *> TitleBlockTemplateView::copy() {
return(copied_cells);
}
/**
@return true if the content of the clipboard looks interesting
*/
bool TitleBlockTemplateView::mayPaste() {
// retrieve the clipboard content
QClipboard *clipboard = QApplication::clipboard();
return(clipboard -> text().contains("<titleblocktemplate-partial"));
}
/**
Import the cells described in the clipboard.
*/
@@ -385,8 +394,9 @@ TitleBlockTemplateCellsSet TitleBlockTemplateView::cells(const QRectF &rect) con
/**
@param can_merge If non-zero, will be changed to reflect whether selected cells may be merged
@param can_merge If non-zero, will be changed to reflect whether selected cells may be splitted
@param count If non-zero, will be changed to reflect the number of selected cells
*/
void TitleBlockTemplateView::analyzeSelectedCells(bool *can_merge, bool *can_split) {
void TitleBlockTemplateView::analyzeSelectedCells(bool *can_merge, bool *can_split, int *count) {
if (!can_merge && !can_split) return;
if (!tbtemplate_) {
@@ -404,6 +414,9 @@ void TitleBlockTemplateView::analyzeSelectedCells(bool *can_merge, bool *can_spl
if (can_split) {
*can_split = SplitCellsCommand::canSplit(selected_cells, tbtemplate_);
}
if (count) {
*count = selectedCellsSet().count();
}
}
/**

View File

@@ -46,7 +46,7 @@ class TitleBlockTemplateView : public QGraphicsView {
virtual QList<TitleBlockCell *> selectedCells() const;
virtual TitleBlockTemplateCellsSet selectedCellsSet() const;
virtual TitleBlockTemplateCellsSet cells(const QRectF &) const;
virtual void analyzeSelectedCells(bool *, bool *);
virtual void analyzeSelectedCells(bool *, bool *, int *);
virtual QSizeF templateSize() const;
virtual qreal templateWidth() const;
virtual qreal templateHeight() const;
@@ -60,6 +60,7 @@ class TitleBlockTemplateView : public QGraphicsView {
void zoomReset();
QList<TitleBlockCell *> cut();
QList<TitleBlockCell *> copy();
bool mayPaste();
void paste();
void addColumnBefore();
void addRowBefore();