From 81fa85370abc3d4e2c377b481de308c98e3569ae Mon Sep 17 00:00:00 2001 From: xtemp09 Date: Sat, 2 Aug 2025 19:57:53 +0700 Subject: [PATCH] [Spreadsheet] Add icons to the context menu (#22773) * [Spreadsheet] Add icons to the context menu This commit adds the following icons: - edit-cut - edit-copy - edit-paste - edit-delete - merge-cells - split-cell - view-refresh * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/Mod/Spreadsheet/Gui/SheetTableView.cpp | 66 ++++++++++------------ 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp index f220339e56..706590369a 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp @@ -188,7 +188,35 @@ SheetTableView::SheetTableView(QWidget* parent) menu.exec(QCursor::pos()); }); - actionProperties = new QAction(tr("Properties…"), this); + auto createAction = [this](const char* iconPath, const QString& text, auto fun) { + const QIcon icon {QString::fromLatin1(iconPath)}; + auto act = new QAction(icon, text, this); + connect(act, &QAction::triggered, this, fun); + contextMenu.addAction(act); + return act; + }; + + actionProperties = createAction("", tr("Properties…"), &SheetTableView::cellProperties); + contextMenu.addSeparator(); + actionRecompute = + createAction(":/icons/view-refresh.svg", tr("Recompute"), &SheetTableView::onRecompute); + actionBind = createAction("", tr("Bind…"), &SheetTableView::onBind); + actionConf = createAction("", tr("Configuration Table…"), &SheetTableView::onConfSetup); + contextMenu.addSeparator(); + actionMerge = createAction(":/icons/SpreadsheetMergeCells.svg", + tr("Merge Cells"), + &SheetTableView::mergeCells); + actionSplit = createAction(":/icons/SpreadsheetSplitCell.svg", + tr("Split Cells"), + &SheetTableView::splitCell); + contextMenu.addSeparator(); + actionCut = createAction(":/icons/edit-cut.svg", tr("Cut"), &SheetTableView::cutSelection); + actionCopy = createAction(":/icons/edit-copy.svg", tr("Copy"), &SheetTableView::copySelection); + actionPaste = + createAction(":/icons/edit-paste.svg", tr("Paste"), &SheetTableView::pasteClipboard); + actionDel = + createAction(":/icons/edit-delete.svg", tr("Delete"), &SheetTableView::deleteSelection); + addAction(actionProperties); horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); @@ -196,47 +224,13 @@ SheetTableView::SheetTableView(QWidget* parent) verticalHeader()->setDefaultAlignment(Qt::AlignHCenter | Qt::AlignVCenter); - contextMenu.addAction(actionProperties); - connect(actionProperties, &QAction::triggered, this, &SheetTableView::cellProperties); - - contextMenu.addSeparator(); - actionRecompute = new QAction(tr("Recompute"), this); - connect(actionRecompute, &QAction::triggered, this, &SheetTableView::onRecompute); - contextMenu.addAction(actionRecompute); - - actionBind = new QAction(tr("Bind…"), this); - connect(actionBind, &QAction::triggered, this, &SheetTableView::onBind); - contextMenu.addAction(actionBind); - - actionConf = new QAction(tr("Configuration Table…"), this); - connect(actionConf, &QAction::triggered, this, &SheetTableView::onConfSetup); - contextMenu.addAction(actionConf); - horizontalHeader()->addAction(actionBind); verticalHeader()->addAction(actionBind); - contextMenu.addSeparator(); - actionMerge = contextMenu.addAction(tr("Merge Cells")); - connect(actionMerge, &QAction::triggered, this, &SheetTableView::mergeCells); - actionSplit = contextMenu.addAction(tr("Split Cells")); - connect(actionSplit, &QAction::triggered, this, &SheetTableView::splitCell); - - contextMenu.addSeparator(); - actionCut = contextMenu.addAction(tr("Cut")); - connect(actionCut, &QAction::triggered, this, &SheetTableView::cutSelection); - actionCopy = contextMenu.addAction(tr("Copy")); - connect(actionCopy, &QAction::triggered, this, &SheetTableView::copySelection); - actionPaste = contextMenu.addAction(tr("Paste")); - connect(actionPaste, &QAction::triggered, this, &SheetTableView::pasteClipboard); - actionDel = contextMenu.addAction(tr("Delete")); - connect(actionDel, &QAction::triggered, this, &SheetTableView::deleteSelection); - setTabKeyNavigation(false); timer.setSingleShot(true); - QObject::connect(&timer, &QTimer::timeout, [this]() { - updateCellSpan(); - }); + QObject::connect(&timer, &QTimer::timeout, this, &SheetTableView::updateCellSpan); } void SheetTableView::onRecompute()