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:
joshua
2022-01-14 19:47:28 +01:00
136 changed files with 22886 additions and 10974 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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())

View File

@@ -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,

View File

@@ -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();

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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);

View 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);
}
}
}
}
}
}
}

View 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

View 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>

View File

@@ -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;
}

View File

@@ -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)