forked from qt-creator/qt-creator
QmlDesigner: Add fit selection to screen button
* Add fit selection to screen action to designer actions * Add button to form editor taskbar to trigger the action Change-Id: I3774802f034892ea07782717c769c5141eae4bea Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
committed by
Henning Gründl
parent
d52cb22b44
commit
fe5636e53b
@@ -84,6 +84,7 @@ const char flowAssignEffectCommandId[] = "AssignFlowEffect";
|
|||||||
const char flowAssignCustomEffectCommandId[] = "AssignFlowCustomEffect";
|
const char flowAssignCustomEffectCommandId[] = "AssignFlowCustomEffect";
|
||||||
const char addToGroupItemCommandId[] = "AddToGroupItem";
|
const char addToGroupItemCommandId[] = "AddToGroupItem";
|
||||||
const char fitRootToScreenCommandId[] = "FitRootToScreen";
|
const char fitRootToScreenCommandId[] = "FitRootToScreen";
|
||||||
|
const char fitSelectionToScreenCommandId[] = "FitSelectionToScreen";
|
||||||
|
|
||||||
const char selectionCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Selection");
|
const char selectionCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Selection");
|
||||||
const char flowConnectionCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Connect");
|
const char flowConnectionCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Connect");
|
||||||
@@ -157,6 +158,7 @@ const char flowAssignEffectDisplayName[] = "Assign FlowEffect ";
|
|||||||
const char flowAssignCustomEffectDisplayName[] = "Assign Custom FlowEffect ";
|
const char flowAssignCustomEffectDisplayName[] = "Assign Custom FlowEffect ";
|
||||||
|
|
||||||
const char fitRootToScreenDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fit root to screen");
|
const char fitRootToScreenDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fit root to screen");
|
||||||
|
const char fitSelectionToScreenDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fit selection to screen");
|
||||||
|
|
||||||
const char raiseToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Raise selected item.");
|
const char raiseToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Raise selected item.");
|
||||||
const char lowerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Lower selected item.");
|
const char lowerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Lower selected item.");
|
||||||
@@ -177,6 +179,7 @@ const char addItemToStackedContainerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerCo
|
|||||||
const char addFlowActionToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add flow action.");
|
const char addFlowActionToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add flow action.");
|
||||||
|
|
||||||
const char fitRootToScreenToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fit the root element inside the available space.");
|
const char fitRootToScreenToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fit the root element inside the available space.");
|
||||||
|
const char fitSelectionToScreenToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fit the selected elements inside the available space.");
|
||||||
|
|
||||||
const int priorityFirst = 280;
|
const int priorityFirst = 280;
|
||||||
const int prioritySelectionCategory = 220;
|
const int prioritySelectionCategory = 220;
|
||||||
|
@@ -831,6 +831,17 @@ void DesignerActionManager::createDefaultDesignerActions()
|
|||||||
182,
|
182,
|
||||||
&fitRootToScreen));
|
&fitRootToScreen));
|
||||||
|
|
||||||
|
addDesignerAction(new ModelNodeAction(
|
||||||
|
fitSelectionToScreenCommandId,
|
||||||
|
fitSelectionToScreenDisplayName,
|
||||||
|
Utils::Icon({{":/utils/images/fittoview.png", Utils::Theme::IconsBaseColor}}).icon(),
|
||||||
|
fitSelectionToScreenToolTip,
|
||||||
|
genericToolBarCategory,
|
||||||
|
QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_I),
|
||||||
|
183,
|
||||||
|
&fitSelectionToScreen,
|
||||||
|
&selectionNotEmpty));
|
||||||
|
|
||||||
addDesignerAction(new SeperatorDesignerAction(editCategory, 170));
|
addDesignerAction(new SeperatorDesignerAction(editCategory, 170));
|
||||||
|
|
||||||
addDesignerAction(new VisiblityModelNodeAction(
|
addDesignerAction(new VisiblityModelNodeAction(
|
||||||
|
@@ -352,6 +352,15 @@ void fitRootToScreen(const SelectionContext &selectionState)
|
|||||||
selectionState.view()->emitCustomNotification(QStringLiteral("fit root to screen"));
|
selectionState.view()->emitCustomNotification(QStringLiteral("fit root to screen"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fitSelectionToScreen(const SelectionContext &selectionState)
|
||||||
|
{
|
||||||
|
if (!selectionState.view())
|
||||||
|
return;
|
||||||
|
|
||||||
|
selectionState.view()->emitCustomNotification(QStringLiteral("fit selection to screen"),
|
||||||
|
selectionState.selectedModelNodes());
|
||||||
|
}
|
||||||
|
|
||||||
void goIntoComponentOperation(const SelectionContext &selectionState)
|
void goIntoComponentOperation(const SelectionContext &selectionState)
|
||||||
{
|
{
|
||||||
goIntoComponent(selectionState.currentSingleSelectedNode());
|
goIntoComponent(selectionState.currentSingleSelectedNode());
|
||||||
|
@@ -50,6 +50,7 @@ void setFillHeight(const SelectionContext &selectionState);
|
|||||||
void resetSize(const SelectionContext &selectionState);
|
void resetSize(const SelectionContext &selectionState);
|
||||||
void resetPosition(const SelectionContext &selectionState);
|
void resetPosition(const SelectionContext &selectionState);
|
||||||
void fitRootToScreen(const SelectionContext &selectionState);
|
void fitRootToScreen(const SelectionContext &selectionState);
|
||||||
|
void fitSelectionToScreen(const SelectionContext &selectionState);
|
||||||
void goIntoComponentOperation(const SelectionContext &selectionState);
|
void goIntoComponentOperation(const SelectionContext &selectionState);
|
||||||
void setId(const SelectionContext &selectionState);
|
void setId(const SelectionContext &selectionState);
|
||||||
void resetZ(const SelectionContext &selectionState);
|
void resetZ(const SelectionContext &selectionState);
|
||||||
|
@@ -442,14 +442,13 @@ void FormEditorView::documentMessagesChanged(const QList<DocumentMessage> &error
|
|||||||
m_formEditorWidget->hideErrorMessageBox();
|
m_formEditorWidget->hideErrorMessageBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormEditorView::customNotification(const AbstractView * /*view*/, const QString &identifier, const QList<ModelNode> &/*nodeList*/, const QList<QVariant> &/*data*/)
|
void FormEditorView::customNotification(const AbstractView * /*view*/, const QString &identifier, const QList<ModelNode> &nodeList, const QList<QVariant> &/*data*/)
|
||||||
{
|
{
|
||||||
if (identifier == QLatin1String("puppet crashed"))
|
if (identifier == QLatin1String("puppet crashed"))
|
||||||
m_dragTool->clearMoveDelay();
|
m_dragTool->clearMoveDelay();
|
||||||
if (identifier == QLatin1String("reset QmlPuppet"))
|
if (identifier == QLatin1String("reset QmlPuppet"))
|
||||||
temporaryBlockView();
|
temporaryBlockView();
|
||||||
if (identifier == QLatin1String("fit root to screen")) {
|
if (identifier == QLatin1String("fit root to screen")) {
|
||||||
|
|
||||||
if (QmlItemNode(rootModelNode()).isFlowView()) {
|
if (QmlItemNode(rootModelNode()).isFlowView()) {
|
||||||
QRectF boundingRect;
|
QRectF boundingRect;
|
||||||
for (QGraphicsItem *item : scene()->items()) {
|
for (QGraphicsItem *item : scene()->items()) {
|
||||||
@@ -470,6 +469,22 @@ void FormEditorView::customNotification(const AbstractView * /*view*/, const QSt
|
|||||||
float zoomLevel = ZoomAction::getClosestZoomLevel(scaleFactor);
|
float zoomLevel = ZoomAction::getClosestZoomLevel(scaleFactor);
|
||||||
m_formEditorWidget->zoomAction()->forceZoomLevel(zoomLevel);
|
m_formEditorWidget->zoomAction()->forceZoomLevel(zoomLevel);
|
||||||
}
|
}
|
||||||
|
if (identifier == QLatin1String("fit selection to screen")) {
|
||||||
|
if (nodeList.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
QRectF boundingRect;
|
||||||
|
for (const ModelNode &node : nodeList) {
|
||||||
|
if (FormEditorItem *item = scene()->itemForQmlItemNode(node))
|
||||||
|
boundingRect = boundingRect.united(item->sceneBoundingRect());
|
||||||
|
}
|
||||||
|
|
||||||
|
m_formEditorWidget->graphicsView()->fitInView(boundingRect,
|
||||||
|
Qt::KeepAspectRatio);
|
||||||
|
const qreal scaleFactor = m_formEditorWidget->graphicsView()->viewportTransform().m11();
|
||||||
|
float zoomLevel = ZoomAction::getClosestZoomLevel(scaleFactor);
|
||||||
|
m_formEditorWidget->zoomAction()->forceZoomLevel(zoomLevel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractFormEditorTool *FormEditorView::currentTool() const
|
AbstractFormEditorTool *FormEditorView::currentTool() const
|
||||||
|
Reference in New Issue
Block a user