git-svn-id: svn://db.shs.com.ru/libs@646 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
BIN
qad/icons/scroll_spin.png
Normal file
BIN
qad/icons/scroll_spin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
@@ -14,6 +14,7 @@ EvalSpinBox::EvalSpinBox(QWidget * parent): QAbstractSpinBox(parent) {
|
|||||||
status = new QWidget(lineEdit());
|
status = new QWidget(lineEdit());
|
||||||
cw = new QWidget(lineEdit());
|
cw = new QWidget(lineEdit());
|
||||||
label = new QLabel(lineEdit());
|
label = new QLabel(lineEdit());
|
||||||
|
precision_ = -1;
|
||||||
// label->hide();
|
// label->hide();
|
||||||
clear_im.load(":/icons/edit-clear-locationbar-rtl.png");
|
clear_im.load(":/icons/edit-clear-locationbar-rtl.png");
|
||||||
icon_ok.load(":/icons/dialog-ok-apply.png");
|
icon_ok.load(":/icons/dialog-ok-apply.png");
|
||||||
@@ -155,7 +156,7 @@ void EvalSpinBox::setExpression_() {
|
|||||||
/*if (eval.expression() == "0") lineEdit()->clear();
|
/*if (eval.expression() == "0") lineEdit()->clear();
|
||||||
else*/ lineEdit()->setText(eval.expression());
|
else*/ lineEdit()->setText(eval.expression());
|
||||||
eval.evaluate();
|
eval.evaluate();
|
||||||
if (td) lineEdit()->setText(QString::number(value(), 'G', 10));
|
if (td) lineEdit()->setText(QString::number(value(), 'G', precision_ > 0 ? precision_ : 16));
|
||||||
status->setToolTip("OK -> " + QString::number(value(), 'G', 10));
|
status->setToolTip("OK -> " + QString::number(value(), 'G', 10));
|
||||||
icon = icon_ok;
|
icon = icon_ok;
|
||||||
} else {
|
} else {
|
||||||
@@ -199,7 +200,7 @@ void EvalSpinBox::setExpression(const QString & expr) {
|
|||||||
|
|
||||||
|
|
||||||
void EvalSpinBox::setValue(double val) {
|
void EvalSpinBox::setValue(double val) {
|
||||||
lineEdit()->setText(QString::number(val, 'G', 16));
|
lineEdit()->setText(QString::number(val, 'G', precision_ > 0 ? precision_ : 16));
|
||||||
//if (val == 0) lineEdit()->clear();
|
//if (val == 0) lineEdit()->clear();
|
||||||
cw->setVisible(text() != dt && cw_visible);
|
cw->setVisible(text() != dt && cw_visible);
|
||||||
setExpression_();
|
setExpression_();
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class EvalSpinBox: public QAbstractSpinBox
|
|||||||
Q_PROPERTY(QString expression READ expression WRITE setExpression USER true)
|
Q_PROPERTY(QString expression READ expression WRITE setExpression USER true)
|
||||||
Q_PROPERTY(QString defaultText READ defaultText WRITE setDefaultText)
|
Q_PROPERTY(QString defaultText READ defaultText WRITE setDefaultText)
|
||||||
Q_PROPERTY(bool clearButtonVisible READ isClearButtonVisible WRITE setClearButtonVisible)
|
Q_PROPERTY(bool clearButtonVisible READ isClearButtonVisible WRITE setClearButtonVisible)
|
||||||
|
Q_PROPERTY(int precision READ precision WRITE setPrecision)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit EvalSpinBox(QWidget * parent = 0);
|
explicit EvalSpinBox(QWidget * parent = 0);
|
||||||
@@ -24,17 +25,12 @@ public:
|
|||||||
const QString & defaultText() const {return dt;}
|
const QString & defaultText() const {return dt;}
|
||||||
bool isClearButtonVisible() const {return cw_visible;}
|
bool isClearButtonVisible() const {return cw_visible;}
|
||||||
bool isCleared() const;
|
bool isCleared() const;
|
||||||
|
int precision() const {return precision_;}
|
||||||
|
|
||||||
virtual void stepBy(int steps);
|
virtual void stepBy(int steps);
|
||||||
virtual void clear();
|
virtual void clear();
|
||||||
virtual QSize sizeHint() const;
|
virtual QSize sizeHint() const;
|
||||||
|
|
||||||
public slots:
|
|
||||||
void setExpression(const QString & expr);
|
|
||||||
void setValue(double val);
|
|
||||||
void setDefaultText(const QString & t);
|
|
||||||
void setClearButtonVisible(bool visible);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QString text() const {return QAbstractSpinBox::text();}
|
QString text() const {return QAbstractSpinBox::text();}
|
||||||
|
|
||||||
@@ -56,6 +52,7 @@ protected:
|
|||||||
QImage clear_im;
|
QImage clear_im;
|
||||||
QString dt;
|
QString dt;
|
||||||
bool cw_visible;
|
bool cw_visible;
|
||||||
|
int precision_;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool eventFilter(QObject * o, QEvent * e);
|
bool eventFilter(QObject * o, QEvent * e);
|
||||||
@@ -70,6 +67,13 @@ private slots:
|
|||||||
void setExpression_();
|
void setExpression_();
|
||||||
void resizeIcons();
|
void resizeIcons();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setExpression(const QString & expr);
|
||||||
|
void setValue(double val);
|
||||||
|
void setDefaultText(const QString & t);
|
||||||
|
void setClearButtonVisible(bool visible);
|
||||||
|
void setPrecision(int precision) {precision_ = precision;}
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void valueChanged(double val);
|
void valueChanged(double val);
|
||||||
void cleared();
|
void cleared();
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#include "qpiconfigplugin.h"
|
#include "qpiconfigplugin.h"
|
||||||
#include "evalspinboxplugin.h"
|
#include "evalspinboxplugin.h"
|
||||||
#include "imageviewplugin.h"
|
#include "imageviewplugin.h"
|
||||||
|
#include "scroll_spin_boxplugin.h"
|
||||||
|
|
||||||
|
|
||||||
QADWidgets::QADWidgets(QObject * parent): QObject(parent) {
|
QADWidgets::QADWidgets(QObject * parent): QObject(parent) {
|
||||||
@@ -34,6 +35,7 @@ QADWidgets::QADWidgets(QObject * parent): QObject(parent) {
|
|||||||
m_widgets.append(new QPIConfigPlugin(this));
|
m_widgets.append(new QPIConfigPlugin(this));
|
||||||
m_widgets.append(new EvalSpinBoxPlugin(this));
|
m_widgets.append(new EvalSpinBoxPlugin(this));
|
||||||
m_widgets.append(new ImageViewPlugin(this));
|
m_widgets.append(new ImageViewPlugin(this));
|
||||||
|
m_widgets.append(new ScrollSpinBoxPlugin(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
69
qad/widgets/plugin/scroll_spin_boxplugin.cpp
Normal file
69
qad/widgets/plugin/scroll_spin_boxplugin.cpp
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
#include "scroll_spin_box.h"
|
||||||
|
#include "scroll_spin_boxplugin.h"
|
||||||
|
#include <QtCore/QtPlugin>
|
||||||
|
|
||||||
|
|
||||||
|
ScrollSpinBoxPlugin::ScrollSpinBoxPlugin(QObject * parent): QObject(parent) {
|
||||||
|
m_initialized = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ScrollSpinBoxPlugin::initialize(QDesignerFormEditorInterface * /* core */) {
|
||||||
|
if (m_initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Add extension registrations, etc. here
|
||||||
|
|
||||||
|
m_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool ScrollSpinBoxPlugin::isInitialized() const {
|
||||||
|
return m_initialized;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QWidget * ScrollSpinBoxPlugin::createWidget(QWidget * parent) {
|
||||||
|
return new ScrollSpinBox(parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString ScrollSpinBoxPlugin::name() const {
|
||||||
|
return QLatin1String("ScrollSpinBox");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString ScrollSpinBoxPlugin::group() const {
|
||||||
|
return QLatin1String("Input Widgets");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QIcon ScrollSpinBoxPlugin::icon() const {
|
||||||
|
return QIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString ScrollSpinBoxPlugin::toolTip() const {
|
||||||
|
return QLatin1String("SpinBox with scroll");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString ScrollSpinBoxPlugin::whatsThis() const {
|
||||||
|
return QLatin1String("SpinBox with scroll");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool ScrollSpinBoxPlugin::isContainer() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString ScrollSpinBoxPlugin::domXml() const {
|
||||||
|
return QLatin1String("<widget class=\"ScrollSpinBox\" name=\"spin\">\n</widget>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString ScrollSpinBoxPlugin::includeFile() const {
|
||||||
|
return QLatin1String("scroll_spin_box.h");
|
||||||
|
}
|
||||||
|
|
||||||
36
qad/widgets/plugin/scroll_spin_boxplugin.h
Normal file
36
qad/widgets/plugin/scroll_spin_boxplugin.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#ifndef SCROLLSPINBOXPLUGIN_H
|
||||||
|
#define SCROLLSPINBOXPLUGIN_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#if QT_VERSION >= 0x050000
|
||||||
|
# include <QtUiPlugin/QDesignerCustomWidgetInterface>
|
||||||
|
#else
|
||||||
|
# include <QDesignerCustomWidgetInterface>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class ScrollSpinBoxPlugin: public QObject, public QDesignerCustomWidgetInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_INTERFACES(QDesignerCustomWidgetInterface)
|
||||||
|
|
||||||
|
public:
|
||||||
|
ScrollSpinBoxPlugin(QObject * parent = 0);
|
||||||
|
|
||||||
|
bool isContainer() const;
|
||||||
|
bool isInitialized() const;
|
||||||
|
QIcon icon() const;
|
||||||
|
QString domXml() const;
|
||||||
|
QString group() const;
|
||||||
|
QString includeFile() const;
|
||||||
|
QString name() const;
|
||||||
|
QString toolTip() const;
|
||||||
|
QString whatsThis() const;
|
||||||
|
QWidget * createWidget(QWidget * parent);
|
||||||
|
void initialize(QDesignerFormEditorInterface * core);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_initialized;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SCROLLSPINBOXPLUGIN_H
|
||||||
@@ -42,5 +42,6 @@
|
|||||||
<file>../icons/dialog-warning.png</file>
|
<file>../icons/dialog-warning.png</file>
|
||||||
<file>../icons/tools-wizard.png</file>
|
<file>../icons/tools-wizard.png</file>
|
||||||
<file>../icons/evalspinbox.png</file>
|
<file>../icons/evalspinbox.png</file>
|
||||||
|
<file>../icons/scroll_spin.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
113
qad/widgets/scroll_spin_box.cpp
Normal file
113
qad/widgets/scroll_spin_box.cpp
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
QGLView
|
||||||
|
Copyright (C) 2019 Ivan Pelipenko peri4ko@yandex.ru
|
||||||
|
|
||||||
|
This program 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 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program 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 this programap-> If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "scroll_spin_box.h"
|
||||||
|
#include "ui_scroll_spin_box.h"
|
||||||
|
#include <evalspinbox.h>
|
||||||
|
#include <qad_types.h>
|
||||||
|
#include <QStyleOptionSpinBox>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QStyle>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
|
||||||
|
ScrollSpinBox::ScrollSpinBox(QWidget * parent): QWidget(parent) {
|
||||||
|
ui = new Ui::ScrollSpinBox();
|
||||||
|
ui->setupUi(this);
|
||||||
|
ui->spin->setPrecision(3);
|
||||||
|
ui->handle->installEventFilter(this);
|
||||||
|
last_value = 0.;
|
||||||
|
sensivity_ = 0.2;
|
||||||
|
scroll_scale = sensivity_ / 10;
|
||||||
|
canceled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EvalSpinBox * ScrollSpinBox::spin() {
|
||||||
|
return ui->spin;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ScrollSpinBox::changeEvent(QEvent * e) {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
switch (e->type()) {
|
||||||
|
case QEvent::LanguageChange:
|
||||||
|
ui->retranslateUi(this);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ScrollSpinBox::resizeEvent(QResizeEvent * e) {
|
||||||
|
QStyleOptionSpinBox so;
|
||||||
|
so.initFrom(ui->spin);
|
||||||
|
QRect r = qApp->style()->subControlRect(QStyle::CC_SpinBox, &so, QStyle::SC_SpinBoxUp);
|
||||||
|
ui->handle->setFixedWidth(qMax<int>(ui->handle->height() / 3, r.width()));
|
||||||
|
scroll_scale = sensivity_ / appScale(this) / 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool ScrollSpinBox::eventFilter(QObject * o, QEvent * e) {
|
||||||
|
switch (e->type()) {
|
||||||
|
case QEvent::MouseButtonPress:
|
||||||
|
mousePress((QMouseEvent*)e);
|
||||||
|
return true;
|
||||||
|
case QEvent::MouseButtonRelease:
|
||||||
|
mouseRelease((QMouseEvent*)e);
|
||||||
|
return true;
|
||||||
|
case QEvent::MouseMove:
|
||||||
|
mouseMove((QMouseEvent*)e);
|
||||||
|
return true;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return QWidget::eventFilter(o, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ScrollSpinBox::mousePress(QMouseEvent * e) {
|
||||||
|
if (canceled) return;
|
||||||
|
if (e->button() == Qt::RightButton) {
|
||||||
|
canceled = true;
|
||||||
|
ui->spin->setExpression(last_text);
|
||||||
|
}
|
||||||
|
if (e->button() == Qt::LeftButton) {
|
||||||
|
down_pos = e->pos();
|
||||||
|
last_text = ui->spin->expression();
|
||||||
|
last_value = ui->spin->value();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ScrollSpinBox::mouseRelease(QMouseEvent * e) {
|
||||||
|
if (e->buttons() == Qt::NoButton) canceled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ScrollSpinBox::mouseMove(QMouseEvent * e) {
|
||||||
|
if (canceled) return;
|
||||||
|
if (e->buttons().testFlag(Qt::LeftButton)) {
|
||||||
|
double dv = (down_pos.y() - e->pos().y()) * scroll_scale;
|
||||||
|
if (dv != 0.) {
|
||||||
|
QCursor::setPos(ui->handle->mapToGlobal(down_pos));
|
||||||
|
ui->spin->setValue(ui->spin->value() + qAbs(last_value) * dv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
58
qad/widgets/scroll_spin_box.h
Normal file
58
qad/widgets/scroll_spin_box.h
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
QGLView
|
||||||
|
Copyright (C) 2019 Ivan Pelipenko peri4ko@yandex.ru
|
||||||
|
|
||||||
|
This program 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 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SCROLL_SPIN_BOX_H
|
||||||
|
#define SCROLL_SPIN_BOX_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class ScrollSpinBox;
|
||||||
|
}
|
||||||
|
class EvalSpinBox;
|
||||||
|
|
||||||
|
class ScrollSpinBox: public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(double sensivity READ sensivity WRITE setSensivity)
|
||||||
|
public:
|
||||||
|
explicit ScrollSpinBox(QWidget * parent = 0);
|
||||||
|
|
||||||
|
EvalSpinBox * spin();
|
||||||
|
double sensivity() const {return sensivity_;}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void changeEvent(QEvent * e);
|
||||||
|
void resizeEvent(QResizeEvent * e);
|
||||||
|
bool eventFilter(QObject * o, QEvent * e);
|
||||||
|
void mousePress(QMouseEvent * e);
|
||||||
|
void mouseRelease(QMouseEvent * e);
|
||||||
|
void mouseMove(QMouseEvent * e);
|
||||||
|
|
||||||
|
Ui::ScrollSpinBox * ui;
|
||||||
|
QPoint down_pos;
|
||||||
|
QString last_text;
|
||||||
|
double last_value, scroll_scale, sensivity_;
|
||||||
|
bool canceled;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setSensivity(double s) {sensivity_ = s;}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SCROLL_SPIN_BOX_H
|
||||||
72
qad/widgets/scroll_spin_box.ui
Normal file
72
qad/widgets/scroll_spin_box.ui
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>ScrollSpinBox</class>
|
||||||
|
<widget class="QWidget" name="ScrollSpinBox">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>292</width>
|
||||||
|
<height>40</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="EvalSpinBox" name="spin">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="handle" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="cursor">
|
||||||
|
<cursorShape>SplitVCursor</cursorShape>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Grab and scroll</string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">image: url(:/icons/scroll_spin.png);</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>EvalSpinBox</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>evalspinbox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
<slots>
|
||||||
|
<slot>mapChanged()</slot>
|
||||||
|
</slots>
|
||||||
|
</ui>
|
||||||
Reference in New Issue
Block a user