mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-14 20:33:05 +02:00
Add toolbar widget for edit size of handler in diagram editor.
Add a combo box in the tool bar of diagram editor to quickly change the size of the graphics handler item. The sarto commit :D NOTE only available for diagram editor, element editor will come later.
This commit is contained in:
parent
e087270b6d
commit
ae9faa2192
@ -24,11 +24,16 @@
|
|||||||
@brief QetGraphicsHandlerItem::QetGraphicsHandlerItem
|
@brief QetGraphicsHandlerItem::QetGraphicsHandlerItem
|
||||||
@param size : the size of the handler
|
@param size : the size of the handler
|
||||||
*/
|
*/
|
||||||
QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size) :
|
QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size)
|
||||||
m_size(size)
|
|
||||||
{
|
{
|
||||||
setFlag(QGraphicsItem::ItemIgnoresTransformations);
|
setFlag(QGraphicsItem::ItemIgnoresTransformations);
|
||||||
|
setSize(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void QetGraphicsHandlerItem::setSize(qreal size)
|
||||||
|
{
|
||||||
|
prepareGeometryChange();
|
||||||
|
m_size = size;
|
||||||
m_handler_rect.setRect(0-m_size/2, 0-m_size/2, m_size, m_size);
|
m_handler_rect.setRect(0-m_size/2, 0-m_size/2, m_size, m_size);
|
||||||
m_br.setRect(-1-m_size/2, -1-m_size/2, m_size+2, m_size+2);
|
m_br.setRect(-1-m_size/2, -1-m_size/2, m_size+2, m_size+2);
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ class QetGraphicsHandlerItem : public QGraphicsItem
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QetGraphicsHandlerItem(qreal size = 10);
|
QetGraphicsHandlerItem(qreal size = 10);
|
||||||
|
void setSize(qreal size);
|
||||||
QRectF boundingRect() const override;
|
QRectF boundingRect() const override;
|
||||||
|
|
||||||
enum { Type = UserType + 1200};
|
enum { Type = UserType + 1200};
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include "undocommand/rotatetextscommand.h"
|
#include "undocommand/rotatetextscommand.h"
|
||||||
#include "diagram.h"
|
#include "diagram.h"
|
||||||
#include "TerminalStrip/ui/terminalstripeditor.h"
|
#include "TerminalStrip/ui/terminalstripeditor.h"
|
||||||
|
#include "ui/diagrameditorhandlersizewidget.h"
|
||||||
|
|
||||||
#ifdef BUILD_WITHOUT_KF5
|
#ifdef BUILD_WITHOUT_KF5
|
||||||
#else
|
#else
|
||||||
@ -65,6 +66,9 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
|
|||||||
m_file_actions_group (this),
|
m_file_actions_group (this),
|
||||||
open_dialog_dir (QStandardPaths::writableLocation(QStandardPaths::DesktopLocation))
|
open_dialog_dir (QStandardPaths::writableLocation(QStandardPaths::DesktopLocation))
|
||||||
{
|
{
|
||||||
|
//Trivial property use to set the graphics handler size
|
||||||
|
setProperty("graphics_handler_size", 10);
|
||||||
|
|
||||||
activeSubWindowIndex = 0;
|
activeSubWindowIndex = 0;
|
||||||
|
|
||||||
QSplitter *splitter_ = new QSplitter(this);
|
QSplitter *splitter_ = new QSplitter(this);
|
||||||
@ -732,6 +736,8 @@ void QETDiagramEditor::setUpToolBar()
|
|||||||
view_tool_bar -> addAction(m_mode_selection);
|
view_tool_bar -> addAction(m_mode_selection);
|
||||||
view_tool_bar -> addAction(m_mode_visualise);
|
view_tool_bar -> addAction(m_mode_visualise);
|
||||||
view_tool_bar -> addSeparator();
|
view_tool_bar -> addSeparator();
|
||||||
|
view_tool_bar -> addWidget(new DiagramEditorHandlerSizeWidget(this));
|
||||||
|
view_tool_bar -> addSeparator();
|
||||||
view_tool_bar -> addAction(m_draw_grid);
|
view_tool_bar -> addAction(m_draw_grid);
|
||||||
view_tool_bar -> addAction (m_grey_background);
|
view_tool_bar -> addAction (m_grey_background);
|
||||||
view_tool_bar -> addSeparator();
|
view_tool_bar -> addSeparator();
|
||||||
|
@ -766,6 +766,7 @@ void QetGraphicsTableItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
|||||||
{
|
{
|
||||||
adjustHandlerPos();
|
adjustHandlerPos();
|
||||||
this->scene()->addItem(&m_handler_item);
|
this->scene()->addItem(&m_handler_item);
|
||||||
|
m_handler_item.setSize(QETUtils::graphicsHandlerSize(this));
|
||||||
m_handler_item.installSceneEventFilter(this);
|
m_handler_item.installSceneEventFilter(this);
|
||||||
}
|
}
|
||||||
QGraphicsObject::hoverEnterEvent(event);
|
QGraphicsObject::hoverEnterEvent(event);
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "conductortextitem.h"
|
#include "conductortextitem.h"
|
||||||
#include "element.h"
|
#include "element.h"
|
||||||
#include "../QetGraphicsItemModeler/qetgraphicshandleritem.h"
|
#include "../QetGraphicsItemModeler/qetgraphicshandleritem.h"
|
||||||
|
#include "../utils/qetutils.h"
|
||||||
|
|
||||||
#include <QMultiHash>
|
#include <QMultiHash>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
@ -860,7 +861,7 @@ void Conductor::addHandler()
|
|||||||
{
|
{
|
||||||
if (m_handler_vector.isEmpty() && scene())
|
if (m_handler_vector.isEmpty() && scene())
|
||||||
{
|
{
|
||||||
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(handlerPoints()));
|
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(handlerPoints()), QETUtils::graphicsHandlerSize(this));
|
||||||
|
|
||||||
for(QetGraphicsHandlerItem *handler : m_handler_vector)
|
for(QetGraphicsHandlerItem *handler : m_handler_vector)
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "../qeticons.h"
|
#include "../qeticons.h"
|
||||||
#include "../qetxml.h"
|
#include "../qetxml.h"
|
||||||
#include "../ui/shapegraphicsitempropertieswidget.h"
|
#include "../ui/shapegraphicsitempropertieswidget.h"
|
||||||
|
#include "../utils/qetutils.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief QetShapeItem::QetShapeItem
|
@brief QetShapeItem::QetShapeItem
|
||||||
@ -591,9 +592,9 @@ void QetShapeItem::addHandler()
|
|||||||
|
|
||||||
if(!points_vector.isEmpty() && scene())
|
if(!points_vector.isEmpty() && scene())
|
||||||
{
|
{
|
||||||
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(points_vector));
|
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(points_vector), QETUtils::graphicsHandlerSize(this));
|
||||||
|
|
||||||
for(QetGraphicsHandlerItem *handler : m_handler_vector)
|
for(const auto handler : qAsConst(m_handler_vector))
|
||||||
{
|
{
|
||||||
handler->setZValue(this->zValue()+1);
|
handler->setZValue(this->zValue()+1);
|
||||||
handler->setColor(Qt::blue);
|
handler->setColor(Qt::blue);
|
||||||
|
73
sources/ui/diagrameditorhandlersizewidget.cpp
Normal file
73
sources/ui/diagrameditorhandlersizewidget.cpp
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2006-2021 The QElectroTech Team
|
||||||
|
This file is part of QElectroTech.
|
||||||
|
|
||||||
|
QElectroTech is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
QElectroTech is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include "diagrameditorhandlersizewidget.h"
|
||||||
|
#include "ui_diagrameditorhandlersizewidget.h"
|
||||||
|
#include "../qetapp.h"
|
||||||
|
#include "../qetdiagrameditor.h"
|
||||||
|
#include "../projectview.h"
|
||||||
|
#include "../diagramview.h"
|
||||||
|
#include "../diagram.h"
|
||||||
|
#include "../../QetGraphicsItemModeler/qetgraphicshandleritem.h"
|
||||||
|
|
||||||
|
DiagramEditorHandlerSizeWidget::DiagramEditorHandlerSizeWidget(QWidget *parent) :
|
||||||
|
QWidget(parent),
|
||||||
|
ui(new Ui::DiagramEditorHandlerSizeWidget)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
if (auto editor = QETApp::instance()->diagramEditorAncestorOf(this))
|
||||||
|
{
|
||||||
|
const auto size = editor->property("graphics_handler_size").toInt();
|
||||||
|
|
||||||
|
if (size == 10 || size < 10)
|
||||||
|
ui->comboBox->setCurrentIndex(0);
|
||||||
|
else if (size == 20)
|
||||||
|
ui->comboBox->setCurrentIndex(1);
|
||||||
|
else if (size == 30 || size > 30)
|
||||||
|
ui->comboBox->setCurrentIndex(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DiagramEditorHandlerSizeWidget::~DiagramEditorHandlerSizeWidget()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramEditorHandlerSizeWidget::on_comboBox_currentIndexChanged(int index)
|
||||||
|
{
|
||||||
|
if (auto editor_ = QETApp::instance()->diagramEditorAncestorOf(this))
|
||||||
|
{
|
||||||
|
editor_->setProperty("graphics_handler_size", (index+1) * 10);
|
||||||
|
if (auto project_view = editor_->currentProjectView()) {
|
||||||
|
if (auto diagram_view = project_view->currentDiagram()) {
|
||||||
|
if (auto diagram = diagram_view->diagram())
|
||||||
|
{
|
||||||
|
for (const auto item : diagram->items())
|
||||||
|
{
|
||||||
|
if (item->type() == QetGraphicsHandlerItem::Type)
|
||||||
|
{
|
||||||
|
auto handler = qgraphicsitem_cast<QetGraphicsHandlerItem *>(item);
|
||||||
|
handler->setSize((index+1) * 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
49
sources/ui/diagrameditorhandlersizewidget.h
Normal file
49
sources/ui/diagrameditorhandlersizewidget.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2006-2021 The QElectroTech Team
|
||||||
|
This file is part of QElectroTech.
|
||||||
|
|
||||||
|
QElectroTech is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
QElectroTech is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#ifndef DIAGRAMEDITORHANDLERSIZEWIDGET_H
|
||||||
|
#define DIAGRAMEDITORHANDLERSIZEWIDGET_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class DiagramEditorHandlerSizeWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The DiagramEditorHandlerSizeWidget class
|
||||||
|
* A little widget with a combo box to edit the size of
|
||||||
|
* the graphics handler item in a QetDiagramEditor.
|
||||||
|
* Just create a new instance of this widget, everything
|
||||||
|
* is done by the widget itself.
|
||||||
|
*/
|
||||||
|
class DiagramEditorHandlerSizeWidget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit DiagramEditorHandlerSizeWidget(QWidget *parent = nullptr);
|
||||||
|
~DiagramEditorHandlerSizeWidget();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_comboBox_currentIndexChanged(int index);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::DiagramEditorHandlerSizeWidget *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DIAGRAMEDITORHANDLERSIZEWIDGET_H
|
47
sources/ui/diagrameditorhandlersizewidget.ui
Normal file
47
sources/ui/diagrameditorhandlersizewidget.ui
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>DiagramEditorHandlerSizeWidget</class>
|
||||||
|
<widget class="QWidget" name="DiagramEditorHandlerSizeWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>471</width>
|
||||||
|
<height>62</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Poignées :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>x 1</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>x 2</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>x 3</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -18,6 +18,9 @@
|
|||||||
#include "qetutils.h"
|
#include "qetutils.h"
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QGraphicsView>
|
||||||
|
#include "../qetapp.h"
|
||||||
|
#include "../qetdiagrameditor.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief QETUtils::marginsToString
|
@brief QETUtils::marginsToString
|
||||||
@ -57,3 +60,30 @@ QMargins QETUtils::marginsFromString(const QString &string)
|
|||||||
|
|
||||||
return margins;
|
return margins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief QETUtils::graphicsHandlerSize
|
||||||
|
* @param item
|
||||||
|
* @return Return the handler size to use in the QGraphicsScene of @a item.
|
||||||
|
* If size can't be found, return 10 by default.
|
||||||
|
*/
|
||||||
|
qreal QETUtils::graphicsHandlerSize(QGraphicsItem *item)
|
||||||
|
{
|
||||||
|
if (const auto scene_ = item->scene())
|
||||||
|
{
|
||||||
|
if (!scene_->views().isEmpty())
|
||||||
|
{
|
||||||
|
if (const auto editor_ = QETApp::instance()->diagramEditorAncestorOf(scene_->views().at(0)))
|
||||||
|
{
|
||||||
|
const auto variant_ = editor_->property("graphics_handler_size");
|
||||||
|
//If variant_ can't be converted to qreal, the returned qreal is 0.0
|
||||||
|
//it's sufficient for us to check if value is set or not.
|
||||||
|
if (const auto value_ = variant_.toReal())
|
||||||
|
return value_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Default value
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include <QMargins>
|
#include <QMargins>
|
||||||
|
|
||||||
|
class QGraphicsItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Provide some small utils function
|
Provide some small utils function
|
||||||
*/
|
*/
|
||||||
@ -27,6 +29,7 @@ namespace QETUtils
|
|||||||
{
|
{
|
||||||
QString marginsToString(const QMargins &margins);
|
QString marginsToString(const QMargins &margins);
|
||||||
QMargins marginsFromString(const QString &string);
|
QMargins marginsFromString(const QString &string);
|
||||||
|
qreal graphicsHandlerSize(QGraphicsItem *item);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // QETUTILS_H
|
#endif // QETUTILS_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user