A PyQT GUI application for converting InfoLease report outputs into Excel files. Handles parsing and summarizing. Learns where files are meant to be store and compiles monthly and yearly summaries.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
InfoLeaseExtract/venv/Lib/site-packages/PyQt5/Qt5/qml/QtQuick/Extras/Dial.qml

229 lines
6.7 KiB

/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Quick Extras module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Controls.Private 1.0
import QtQuick.Extras 1.4
import QtQuick.Extras.Private 1.0
/*!
\qmltype Dial
\inqmlmodule QtQuick.Extras
\since 5.5
\ingroup extras
\ingroup extras-interactive
\brief A circular dial that is rotated to set a value.
\image dial.png A Dial
The Dial is similar to a traditional dial knob that is found on devices
such as stereos or industrial equipment. It allows the user to specify a
value within a range.
Like CircularGauge, Dial can display tickmarks to give an indication of
the current value. When a suitable stepSize is combined with
\l {DialStyle::}{tickmarkStepSize},
the dial "snaps" to each tickmark.
You can create a custom appearance for a Dial by assigning a
\l {DialStyle}.
*/
Control {
id: dial
activeFocusOnTab: true
style: Settings.styleComponent(Settings.style, "DialStyle.qml", dial)
/*!
\qmlproperty real Dial::value
The angle of the handle along the dial, in the range of
\c 0.0 to \c 1.0.
The default value is \c{0.0}.
*/
property alias value: range.value
/*!
\qmlproperty real Dial::minimumValue
The smallest value allowed by the dial.
The default value is \c{0.0}.
\sa value, maximumValue
*/
property alias minimumValue: range.minimumValue
/*!
\qmlproperty real Dial::maximumValue
The largest value allowed by the dial.
The default value is \c{1.0}.
\sa value, minimumValue
*/
property alias maximumValue: range.maximumValue
/*!
\qmlproperty real Dial::hovered
This property holds whether the button is being hovered.
*/
readonly property alias hovered: mouseArea.containsMouse
/*!
\qmlproperty real Dial::stepSize
The default value is \c{0.0}.
*/
property alias stepSize: range.stepSize
/*!
\internal
Determines whether the dial can be freely rotated past the zero marker.
The default value is \c false.
*/
property bool __wrap: false
/*!
This property specifies whether the dial should gain active focus when
pressed.
The default value is \c false.
\sa pressed
*/
property bool activeFocusOnPress: false
/*!
\qmlproperty bool Dial::pressed
Returns \c true if the dial is pressed.
\sa activeFocusOnPress
*/
readonly property alias pressed: mouseArea.pressed
/*!
This property determines whether or not the dial displays tickmarks,
minor tickmarks, and labels.
For more fine-grained control over what is displayed, the following
style components of
\l {DialStyle} can be used:
\list
\li \l {DialStyle::}{tickmark}
\li \l {DialStyle::}{minorTickmark}
\li \l {DialStyle::}{tickmarkLabel}
\endlist
The default value is \c true.
*/
property bool tickmarksVisible: true
Keys.onLeftPressed: value -= stepSize
Keys.onDownPressed: value -= stepSize
Keys.onRightPressed: value += stepSize
Keys.onUpPressed: value += stepSize
Keys.onPressed: {
if (event.key === Qt.Key_Home) {
value = minimumValue;
event.accepted = true;
} else if (event.key === Qt.Key_End) {
value = maximumValue;
event.accepted = true;
}
}
RangeModel {
id: range
minimumValue: 0.0
maximumValue: 1.0
stepSize: 0
value: 0
}
MouseArea {
id: mouseArea
hoverEnabled: true
parent: __panel.background.parent
anchors.fill: parent
onPositionChanged: {
if (pressed) {
value = valueFromPoint(mouseX, mouseY);
}
}
onPressed: {
if (!__style.__dragToSet)
value = valueFromPoint(mouseX, mouseY);
if (activeFocusOnPress)
dial.forceActiveFocus();
}
function bound(val) { return Math.max(minimumValue, Math.min(maximumValue, val)); }
function valueFromPoint(x, y)
{
var yy = height / 2.0 - y;
var xx = x - width / 2.0;
var angle = (xx || yy) ? Math.atan2(yy, xx) : 0;
if (angle < Math.PI/ -2)
angle = angle + Math.PI * 2;
var range = maximumValue - minimumValue;
var value;
if (__wrap)
value = (minimumValue + range * (Math.PI * 3 / 2 - angle) / (2 * Math.PI));
else
value = (minimumValue + range * (Math.PI * 4 / 3 - angle) / (Math.PI * 10 / 6));
return bound(value)
}
}
}