mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-02-10 10:09:58 +01:00
Merge branch 'master' into terminal_strip
* master: BugFix : default element collection path is wrong snap: Remove framework snap prompt Update translation and add cn chinese ts files Danish translation updated Danish translation Danish translation Add new thumbnail element Flatpak add --share=network Flatpak : add --socket=cups see : https://github.com/flathub/org.libreoffice.LibreOffice/issues/90 Graphics item handler is bigger when overred Add toolbar widget for edit size of handler in diagram editor. Fix Multiple translation in elements Fix Multiple translation in elements Fix segfault. new Analog-In - Module cleanup and upgraded elements modified: lang/qet_nl.qm modified: lang/qet_nl.ts Add Russian translation, thanks "А.Разживин" little modification in hungarian language Fixed typo
This commit is contained in:
@@ -19,18 +19,25 @@
|
||||
#include <QPainter>
|
||||
#include <QDebug>
|
||||
#include <utility>
|
||||
#include <QPropertyAnimation>
|
||||
|
||||
/**
|
||||
@brief QetGraphicsHandlerItem::QetGraphicsHandlerItem
|
||||
@param size : the size of the handler
|
||||
*/
|
||||
QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size) :
|
||||
m_size(size)
|
||||
QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size)
|
||||
{
|
||||
setAcceptHoverEvents(true);
|
||||
setFlag(QGraphicsItem::ItemIgnoresTransformations);
|
||||
|
||||
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);
|
||||
setSize(size);
|
||||
}
|
||||
|
||||
void QetGraphicsHandlerItem::setSize(qreal size)
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_current_size = m_original_size = size;
|
||||
m_handler_rect.setRect(0-m_current_size/2, 0-m_current_size/2, m_current_size, m_current_size);
|
||||
m_br.setRect(-1-m_current_size/2, -1-m_current_size/2, m_current_size+2, m_current_size+2);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,6 +86,38 @@ void QetGraphicsHandlerItem::paint(QPainter *painter,
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
void QetGraphicsHandlerItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
|
||||
auto animation_ = new QPropertyAnimation(this, "currentSize");
|
||||
animation_->setStartValue(m_original_size);
|
||||
animation_->setEndValue(m_original_size*1.5);
|
||||
animation_->setDuration(200);
|
||||
animation_->setEasingCurve(QEasingCurve::OutBack);
|
||||
animation_->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
void QetGraphicsHandlerItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
|
||||
auto animation_ = new QPropertyAnimation(this, "currentSize");
|
||||
animation_->setStartValue(m_current_size);
|
||||
animation_->setEndValue(m_original_size);
|
||||
animation_->setDuration(200);
|
||||
animation_->setEasingCurve(QEasingCurve::OutBack);
|
||||
animation_->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
void QetGraphicsHandlerItem::setCurrentSize(qreal size)
|
||||
{
|
||||
prepareGeometryChange();
|
||||
m_current_size = size;
|
||||
m_handler_rect.setRect(0-m_current_size/2, 0-m_current_size/2, m_current_size, m_current_size);
|
||||
m_br.setRect(-1-m_current_size/2, -1-m_current_size/2, m_current_size+2, m_current_size+2);
|
||||
}
|
||||
|
||||
/**
|
||||
@brief QetGraphicsHandlerItem::handlerForPoint
|
||||
@param points
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#ifndef QETGRAPHICSHANDLERITEM_H
|
||||
#define QETGRAPHICSHANDLERITEM_H
|
||||
|
||||
#include <QGraphicsItem>
|
||||
#include <QGraphicsObject>
|
||||
#include <QPen>
|
||||
|
||||
/**
|
||||
@@ -33,10 +33,15 @@
|
||||
need to reimplement "sceneEventFilter"
|
||||
for create the modification behavior.
|
||||
*/
|
||||
class QetGraphicsHandlerItem : public QGraphicsItem
|
||||
class QetGraphicsHandlerItem : public QGraphicsObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(qreal currentSize READ currentSize WRITE setCurrentSize)
|
||||
|
||||
public:
|
||||
QetGraphicsHandlerItem(qreal size = 10);
|
||||
void setSize(qreal size);
|
||||
QRectF boundingRect() const override;
|
||||
|
||||
enum { Type = UserType + 1200};
|
||||
@@ -44,15 +49,24 @@ class QetGraphicsHandlerItem : public QGraphicsItem
|
||||
|
||||
void setColor(QColor color);
|
||||
|
||||
|
||||
protected:
|
||||
void paint(QPainter *painter,
|
||||
const QStyleOptionGraphicsItem *option,
|
||||
QWidget *widget) override;
|
||||
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
|
||||
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
|
||||
|
||||
qreal currentSize() const {return m_current_size;}
|
||||
void setCurrentSize(qreal size);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
QRectF m_handler_rect,
|
||||
m_br;
|
||||
qreal m_size;
|
||||
qreal m_current_size;
|
||||
qreal m_original_size;
|
||||
QColor m_color;
|
||||
QPen m_pen;
|
||||
|
||||
|
||||
@@ -1219,13 +1219,20 @@ QList<QAction *> DiagramView::contextMenuActions() const
|
||||
*/
|
||||
void DiagramView::contextMenuEvent(QContextMenuEvent *e)
|
||||
{
|
||||
if (QGraphicsItem *qgi = m_diagram->itemAt(mapToScene(e->pos()), transform()))
|
||||
if (auto qgi = m_diagram->itemAt(mapToScene(e->pos()), transform()))
|
||||
{
|
||||
if (!qgi -> isSelected()) {
|
||||
if (!qgi->isSelected()) {
|
||||
m_diagram->clearSelection();
|
||||
}
|
||||
|
||||
qgi->setSelected(true);
|
||||
// At this step qgi can be deleted for exemple if qgi is a QetGraphicsHandlerItem.
|
||||
// When we call clearSelection the parent item of the handler
|
||||
// is deselected and so delete all handlers, in this case,
|
||||
// qgi become a dangling pointer.
|
||||
// we need to call again itemAt.
|
||||
if (auto item_ = m_diagram->itemAt(mapToScene(e->pos()), transform())) {
|
||||
item_->setSelected(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_diagram->selectedItems().isEmpty())
|
||||
|
||||
@@ -525,8 +525,6 @@ QString QETApp::commonElementsDir()
|
||||
m_common_element_dir = m_overrided_common_elements_dir;
|
||||
return(m_common_element_dir);
|
||||
}
|
||||
m_common_element_dir = QCoreApplication::applicationDirPath() + "/elements";
|
||||
return m_common_element_dir;
|
||||
#endif
|
||||
#ifndef QET_COMMON_COLLECTION_PATH
|
||||
/* in the absence of a compilation option,
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include "undocommand/rotatetextscommand.h"
|
||||
#include "diagram.h"
|
||||
#include "TerminalStrip/ui/terminalstripeditor.h"
|
||||
#include "ui/diagrameditorhandlersizewidget.h"
|
||||
|
||||
#ifdef BUILD_WITHOUT_KF5
|
||||
#else
|
||||
@@ -65,6 +66,9 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
|
||||
m_file_actions_group (this),
|
||||
open_dialog_dir (QStandardPaths::writableLocation(QStandardPaths::DesktopLocation))
|
||||
{
|
||||
//Trivial property use to set the graphics handler size
|
||||
setProperty("graphics_handler_size", 10);
|
||||
|
||||
activeSubWindowIndex = 0;
|
||||
|
||||
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_visualise);
|
||||
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_grey_background);
|
||||
view_tool_bar -> addSeparator();
|
||||
|
||||
@@ -766,6 +766,7 @@ void QetGraphicsTableItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
adjustHandlerPos();
|
||||
this->scene()->addItem(&m_handler_item);
|
||||
m_handler_item.setSize(QETUtils::graphicsHandlerSize(this));
|
||||
m_handler_item.installSceneEventFilter(this);
|
||||
}
|
||||
QGraphicsObject::hoverEnterEvent(event);
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "conductortextitem.h"
|
||||
#include "element.h"
|
||||
#include "../QetGraphicsItemModeler/qetgraphicshandleritem.h"
|
||||
#include "../utils/qetutils.h"
|
||||
|
||||
#include <QMultiHash>
|
||||
#include <QtDebug>
|
||||
@@ -860,7 +861,7 @@ void Conductor::addHandler()
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "../qeticons.h"
|
||||
#include "../qetxml.h"
|
||||
#include "../ui/shapegraphicsitempropertieswidget.h"
|
||||
#include "../utils/qetutils.h"
|
||||
|
||||
/**
|
||||
@brief QetShapeItem::QetShapeItem
|
||||
@@ -591,9 +592,9 @@ void QetShapeItem::addHandler()
|
||||
|
||||
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->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 <QString>
|
||||
#include <QStringList>
|
||||
#include <QGraphicsView>
|
||||
#include "../qetapp.h"
|
||||
#include "../qetdiagrameditor.h"
|
||||
|
||||
/**
|
||||
@brief QETUtils::marginsToString
|
||||
@@ -57,3 +60,30 @@ QMargins QETUtils::marginsFromString(const QString &string)
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
#include <QMargins>
|
||||
#include <QWeakPointer>
|
||||
|
||||
class RealTerminal;
|
||||
class QGraphicsItem;
|
||||
|
||||
/**
|
||||
Provide some small utils function
|
||||
*/
|
||||
@@ -29,6 +30,7 @@ namespace QETUtils
|
||||
{
|
||||
QString marginsToString(const QMargins &margins);
|
||||
QMargins marginsFromString(const QString &string);
|
||||
qreal graphicsHandlerSize(QGraphicsItem *item);
|
||||
|
||||
template <typename T>
|
||||
QVector<QWeakPointer<T>> sharedVectorToWeak(const QVector<QSharedPointer<T>> &vector)
|
||||
|
||||
Reference in New Issue
Block a user