| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include "lc_entitypropertieseditor.h" |
| |
|
| | #include <QTimer> |
| |
|
| | #include "lc_actioncontext.h" |
| | #include "lc_dlgentityproperties.h" |
| | #include "lc_latecompletionrequestor.h" |
| | #include "qc_applicationwindow.h" |
| | #include "rs_graphicview.h" |
| |
|
| | LC_EntityPropertiesEditor::LC_EntityPropertiesEditor(LC_ActionContext* actionContext, LC_LateCompletionRequestor* requestor) |
| | :m_actionContext{actionContext}, m_lateCompletionRequestor(requestor) { |
| | } |
| |
|
| | void LC_EntityPropertiesEditor::editEntity(QWidget* parent, RS_Entity* entity, LC_GraphicViewport* viewport) { |
| | m_entity = entity; |
| | m_viewport = viewport; |
| | m_parent = parent; |
| | QTimer::singleShot(20, this, &LC_EntityPropertiesEditor::showEntityPropertiesDialog); |
| | } |
| |
|
| | void LC_EntityPropertiesEditor::showEntityPropertiesDialog() { |
| | auto interactiveInputInfo = m_actionContext->getInteractiveInputInfo(); |
| | bool updateInteractiveInputValues = interactiveInputInfo->m_state == LC_ActionContext::InteractiveInputInfo::REQUESTED; |
| | double interactiveInputValueOne {0.0}; |
| | double interactiveInputValueTwo {0.0}; |
| | QString interactiveInputTag = ""; |
| |
|
| | auto inputType = interactiveInputInfo->m_inputType; |
| | if (updateInteractiveInputValues) { |
| | interactiveInputTag = interactiveInputInfo->m_requestorTag; |
| | switch (inputType) { |
| | case LC_ActionContext::InteractiveInputInfo::DISTANCE: { |
| | interactiveInputValueOne = interactiveInputInfo->m_distance; |
| | break; |
| | } |
| | case LC_ActionContext::InteractiveInputInfo::ANGLE: { |
| | interactiveInputValueOne = interactiveInputInfo->m_angleRad; |
| | break; |
| | } |
| | case LC_ActionContext::InteractiveInputInfo::POINT: { |
| | interactiveInputValueOne = interactiveInputInfo->m_wcsPoint.x; |
| | interactiveInputValueTwo = interactiveInputInfo->m_wcsPoint.y; |
| | break; |
| | } |
| | default: |
| | break; |
| | } |
| | } |
| | else { |
| | inputType = LC_ActionContext::InteractiveInputInfo::NOTNEEDED; |
| | } |
| |
|
| | auto* dlg = new LC_DlgEntityProperties(m_parent, m_viewport, m_entity, inputType, interactiveInputTag, |
| | interactiveInputValueOne, interactiveInputValueTwo); |
| |
|
| | int result = dlg->exec(); |
| | if ( result == QDialog::Accepted) { |
| | auto interactiveInputRequestType = dlg->isInteractiveInputRequested(); |
| | if (interactiveInputRequestType == LC_ActionContext::InteractiveInputInfo::NOTNEEDED) { |
| | m_actionContext->interactiveInputRequestCancel(); |
| | m_lateCompletionRequestor->onLateRequestCompleted(false); |
| | delete dlg; |
| | } |
| | else { |
| | m_actionContext->interactiveInputStart(interactiveInputRequestType, this, dlg->getInteractiveInputTag()); |
| | delete dlg; |
| | } |
| | } |
| | else { |
| | delete dlg; |
| | m_actionContext->interactiveInputRequestCancel(); |
| | m_lateCompletionRequestor->onLateRequestCompleted(true); |
| | } |
| | } |
| |
|
| | void LC_EntityPropertiesEditor::onLateRequestCompleted(bool shouldBeSkipped) { |
| | if (shouldBeSkipped) { |
| | auto interactiveInput = m_actionContext->getInteractiveInputInfo(); |
| | interactiveInput->m_requestor = nullptr; |
| | interactiveInput->m_state = LC_ActionContext::InteractiveInputInfo::NONE; |
| | } |
| | QTimer::singleShot(100, this, &LC_EntityPropertiesEditor::showEntityPropertiesDialog); |
| | } |
| |
|