Editor plugin: Edit element via double click

This commit is contained in:
Jakub Melka 2024-06-09 20:03:25 +02:00
parent b43b4c1874
commit 05cf65b381
8 changed files with 82 additions and 35 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -463,6 +463,11 @@ void EditorPlugin::onSceneEditElement(const std::set<pdf::PDFInteger>& elements)
}
}
void EditorPlugin::onSceneEditSingleElement(pdf::PDFInteger elementId)
{
onSceneEditElement({ elementId });
}
void EditorPlugin::onPenChanged(const QPen& pen)
{
if (pdf::PDFCreatePCElementTool* activeTool = qobject_cast<pdf::PDFCreatePCElementTool*>(getActiveTool()))
@ -606,6 +611,7 @@ void EditorPlugin::updateDockWidget()
m_editorWidget->setScene(&m_scene);
connect(m_editorWidget, &pdf::PDFPageContentEditorWidget::operationTriggered, &m_scene, &pdf::PDFPageContentScene::performOperation);
connect(m_editorWidget, &pdf::PDFPageContentEditorWidget::itemSelectionChangedByUser, this, &EditorPlugin::onWidgetSelectionChanged);
connect(m_editorWidget, &pdf::PDFPageContentEditorWidget::editElementRequest, this, &EditorPlugin::onSceneEditSingleElement);
m_editorWidget->getToolButtonForOperation(static_cast<int>(pdf::PDFPageContentElementManipulator::Operation::AlignTop))->setIcon(QIcon(":/resources/pce-align-top.svg"));
m_editorWidget->getToolButtonForOperation(static_cast<int>(pdf::PDFPageContentElementManipulator::Operation::AlignCenterVertically))->setIcon(QIcon(":/resources/pce-align-v-center.svg"));

View File

@ -57,6 +57,7 @@ private:
void onWidgetSelectionChanged();
void onToolActivityChanged();
void onSceneEditElement(const std::set<pdf::PDFInteger>& elements);
void onSceneEditSingleElement(pdf::PDFInteger elementId);
void onPenChanged(const QPen& pen);
void onBrushChanged(const QBrush& brush);

View File

@ -642,6 +642,7 @@ void SignaturePlugin::updateDockWidget()
m_editorWidget->setScene(&m_scene);
connect(m_editorWidget, &pdf::PDFPageContentEditorWidget::operationTriggered, &m_scene, &pdf::PDFPageContentScene::performOperation);
connect(m_editorWidget, &pdf::PDFPageContentEditorWidget::itemSelectionChangedByUser, this, &SignaturePlugin::onWidgetSelectionChanged);
connect(m_editorWidget, &pdf::PDFPageContentEditorWidget::editElementRequest, this, &SignaturePlugin::onSceneEditSingleElement);
m_editorWidget->getToolButtonForOperation(static_cast<int>(pdf::PDFPageContentElementManipulator::Operation::AlignTop))->setIcon(QIcon(":/resources/pce-align-top.svg"));
m_editorWidget->getToolButtonForOperation(static_cast<int>(pdf::PDFPageContentElementManipulator::Operation::AlignCenterVertically))->setIcon(QIcon(":/resources/pce-align-v-center.svg"));
@ -672,4 +673,9 @@ void SignaturePlugin::updateDockWidget()
connect(m_editorWidget, &pdf::PDFPageContentEditorWidget::textAngleChanged, this, &SignaturePlugin::onTextAngleChanged);
}
void SignaturePlugin::onSceneEditSingleElement(pdf::PDFInteger elementId)
{
onSceneEditElement({ elementId });
}
}

View File

@ -63,6 +63,7 @@ private:
void onFontChanged(const QFont& font);
void onAlignmentChanged(Qt::Alignment alignment);
void onTextAngleChanged(pdf::PDFReal angle);
void onSceneEditSingleElement(pdf::PDFInteger elementId);
enum Action
{

View File

@ -530,7 +530,7 @@ PDFEditedPageContentElementPath* PDFEditedPageContentElementPath::clone() const
QRectF PDFEditedPageContentElementPath::getBoundingBox() const
{
QPainterPath mappedPath = getState().getCurrentTransformationMatrix().map(m_path);
QPainterPath mappedPath = getTransform().map(m_path);
return mappedPath.boundingRect();
}

View File

@ -85,6 +85,7 @@ PDFPageContentEditorWidget::PDFPageContentEditorWidget(QWidget* parent) :
connect(&m_actionMapper, &QSignalMapper::mappedObject, this, &PDFPageContentEditorWidget::onActionTriggerRequest);
connect(&m_operationMapper, &QSignalMapper::mappedInt, this, &PDFPageContentEditorWidget::operationTriggered);
connect(ui->itemsListWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this, &PDFPageContentEditorWidget::onItemSelectionChanged);
connect(ui->itemsListWidget, &QListWidget::itemDoubleClicked, this, &PDFPageContentEditorWidget::onItemDoubleClicked);
connect(m_settingsWidget, &PDFPageContentEditorStyleSettings::penChanged, this, &PDFPageContentEditorWidget::penChanged);
connect(m_settingsWidget, &PDFPageContentEditorStyleSettings::brushChanged, this, &PDFPageContentEditorWidget::brushChanged);
@ -225,6 +226,12 @@ void PDFPageContentEditorWidget::onItemSelectionChanged()
}
}
void PDFPageContentEditorWidget::onItemDoubleClicked(QListWidgetItem* item)
{
const PDFInteger elementId = item->data(Qt::UserRole).toLongLong();
Q_EMIT editElementRequest(elementId);
}
PDFPageContentScene* PDFPageContentEditorWidget::scene() const
{
return m_scene;

View File

@ -27,6 +27,7 @@
#include <set>
class QToolButton;
class QListWidgetItem;
namespace Ui
{
@ -74,11 +75,13 @@ signals:
void fontChanged(const QFont& font);
void alignmentChanged(Qt::Alignment alignment);
void textAngleChanged(pdf::PDFReal angle);
void editElementRequest(pdf::PDFInteger elementId);
private:
void onActionTriggerRequest(QObject* actionObject);
void onActionChanged();
void onItemSelectionChanged();
void onItemDoubleClicked(QListWidgetItem* item);
Ui::PDFPageContentEditorWidget* ui;
PDFPageContentEditorStyleSettings* m_settingsWidget;