RinUI 0.0.11__py3-none-any.whl → 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- RinUI/__init__.py +1 -1
- RinUI/__pycache__/__init__.cpython-38.pyc +0 -0
- RinUI/assets/img/default_app_icon.png +0 -0
- RinUI/components/BasicInput/Button.qml +1 -2
- RinUI/components/DialogsAndFlyouts/Flyout.qml +10 -67
- RinUI/components/Media/Avatar.qml +83 -0
- RinUI/components/Navigation/Segmented.qml +17 -0
- RinUI/components/Navigation/SegmentedItem.qml +108 -0
- RinUI/components/Navigation/SelectorBar.qml +3 -48
- RinUI/components/Navigation/SelectorBarItem.qml +89 -0
- RinUI/components/qmldir +3 -0
- RinUI/qmldir +7 -0
- RinUI/themes/dark.qml +9 -0
- RinUI/themes/light.qml +10 -1
- RinUI/windows/TitleBar.qml +2 -2
- {rinui-0.0.11.data → rinui-0.1.0.data}/data/README.md +3 -0
- {rinui-0.0.11.dist-info → rinui-0.1.0.dist-info}/METADATA +4 -1
- {rinui-0.0.11.dist-info → rinui-0.1.0.dist-info}/RECORD +23 -19
- {rinui-0.0.11.data → rinui-0.1.0.data}/data/LICENSE +0 -0
- {rinui-0.0.11.dist-info → rinui-0.1.0.dist-info}/LICENSE +0 -0
- {rinui-0.0.11.dist-info → rinui-0.1.0.dist-info}/WHEEL +0 -0
- {rinui-0.0.11.dist-info → rinui-0.1.0.dist-info}/entry_points.txt +0 -0
- {rinui-0.0.11.dist-info → rinui-0.1.0.dist-info}/top_level.txt +0 -0
RinUI/__init__.py
CHANGED
Binary file
|
Binary file
|
@@ -82,10 +82,9 @@ Button {
|
|
82
82
|
anchors.centerIn: parent
|
83
83
|
IconWidget {
|
84
84
|
id: iconWidget
|
85
|
-
size: icon || source ? text.font.pixelSize * 1.
|
85
|
+
size: icon || source ? text.font.pixelSize * 1.3 : 0 // 图标大小 / Icon Size
|
86
86
|
icon: root.icon.name
|
87
87
|
source: root.icon.source
|
88
|
-
height: parent.height
|
89
88
|
y: 0.25
|
90
89
|
color: icon.color ? icon.color : highlighted ? flat ?
|
91
90
|
enabled ? Theme.currentTheme.colors.textAccentColor : Theme.currentTheme.colors.textColor :
|
@@ -7,62 +7,29 @@ import "../../components"
|
|
7
7
|
|
8
8
|
Popup {
|
9
9
|
id: flyout
|
10
|
-
property
|
10
|
+
property alias text: flyoutText.text // 弹出文本内容
|
11
11
|
property alias buttonBox: buttonLayout.data // 按钮列表
|
12
|
-
property
|
13
|
-
property real maximumWidth: 350 // 最大宽度
|
12
|
+
default property alias content: customContent.data // 弹出内容
|
14
13
|
|
15
14
|
position: Position.Top
|
16
15
|
|
17
16
|
padding: 16
|
18
17
|
|
19
|
-
// 坐标
|
20
|
-
|
21
18
|
contentItem: ColumnLayout {
|
22
19
|
spacing: 0
|
23
20
|
|
24
|
-
|
25
|
-
id:
|
21
|
+
ColumnLayout {
|
22
|
+
id: customContent
|
23
|
+
spacing: 8
|
26
24
|
Layout.fillWidth: true
|
27
|
-
Layout.maximumWidth: maximumWidth
|
28
|
-
Layout.margins: -flyout.padding + 2
|
29
|
-
Layout.bottomMargin: 0
|
30
|
-
Layout.preferredHeight: width * (sourceSize.height / sourceSize.width)
|
31
|
-
fillMode: Image.PreserveAspectCrop
|
32
|
-
source: flyout.image
|
33
|
-
visible: flyout.image !== ""
|
34
|
-
|
35
|
-
layer.enabled: true
|
36
|
-
layer.smooth: true
|
37
|
-
layer.effect: OpacityMask {
|
38
|
-
maskSource: Rectangle {
|
39
|
-
width: flyoutImg.width
|
40
|
-
height: flyoutImg.height
|
41
|
-
radius: background.radius
|
42
|
-
color: "black"
|
43
25
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
}
|
26
|
+
Text {
|
27
|
+
id: flyoutText
|
28
|
+
Layout.fillWidth: true
|
29
|
+
typography: Typography.Body
|
30
|
+
visible: text.length > 0
|
50
31
|
}
|
51
32
|
}
|
52
|
-
}
|
53
|
-
|
54
|
-
Item {
|
55
|
-
height: 16
|
56
|
-
visible: flyoutImg.visible
|
57
|
-
}
|
58
|
-
|
59
|
-
Text {
|
60
|
-
id: flyoutText
|
61
|
-
Layout.fillWidth: true
|
62
|
-
Layout.maximumWidth: maximumWidth
|
63
|
-
typography: Typography.Body
|
64
|
-
text: flyout.text
|
65
|
-
}
|
66
33
|
|
67
34
|
Item {
|
68
35
|
height: 16
|
@@ -76,30 +43,6 @@ Popup {
|
|
76
43
|
}
|
77
44
|
}
|
78
45
|
|
79
|
-
// background: Rectangle {
|
80
|
-
// id: background
|
81
|
-
// anchors.fill: parent
|
82
|
-
// anchors.horizontalCenter: parent.horizontalCenter
|
83
|
-
// y: -6
|
84
|
-
//
|
85
|
-
// radius: Theme.currentTheme.appearance.windowRadius
|
86
|
-
// color: Theme.currentTheme.colors.backgroundAcrylicColor
|
87
|
-
// border.color: Theme.currentTheme.colors.flyoutBorderColor
|
88
|
-
//
|
89
|
-
// Behavior on color {
|
90
|
-
// ColorAnimation {
|
91
|
-
// duration: Utils.appearanceSpeed
|
92
|
-
// easing.type: Easing.OutQuart
|
93
|
-
// }
|
94
|
-
// }
|
95
|
-
//
|
96
|
-
// layer.enabled: true
|
97
|
-
// layer.effect: Shadow {
|
98
|
-
// style: "flyout"
|
99
|
-
// source: background
|
100
|
-
// }
|
101
|
-
// }
|
102
|
-
|
103
46
|
// 动画 / Animation //
|
104
47
|
enter: Transition {
|
105
48
|
ParallelAnimation {
|
@@ -0,0 +1,83 @@
|
|
1
|
+
import QtQuick 2.15
|
2
|
+
import QtQuick.Controls.Basic 2.15
|
3
|
+
import QtQuick.Layouts 2.15
|
4
|
+
import Qt5Compat.GraphicalEffects
|
5
|
+
import "../../themes"
|
6
|
+
import "../../components"
|
7
|
+
|
8
|
+
Item {
|
9
|
+
id: root
|
10
|
+
property int size: 96
|
11
|
+
property string source: ""
|
12
|
+
property string text
|
13
|
+
property alias icon: icon.icon
|
14
|
+
|
15
|
+
implicitWidth: size
|
16
|
+
implicitHeight: size
|
17
|
+
opacity: enabled ? 1 : 0.4
|
18
|
+
|
19
|
+
Rectangle {
|
20
|
+
id: background
|
21
|
+
anchors.fill: parent
|
22
|
+
color: Theme.currentTheme.colors.controlQuaternaryColor
|
23
|
+
border.color: Theme.currentTheme.colors.cardBorderColor
|
24
|
+
radius: size / 2
|
25
|
+
|
26
|
+
// 图标
|
27
|
+
IconWidget {
|
28
|
+
id: icon
|
29
|
+
anchors.centerIn: parent
|
30
|
+
icon: "ic_fluent_person_20_regular"
|
31
|
+
size: root.size * 0.5
|
32
|
+
source: root.source
|
33
|
+
|
34
|
+
visible: root.source === "" && root.text === ""
|
35
|
+
}
|
36
|
+
|
37
|
+
// 文本
|
38
|
+
Text {
|
39
|
+
id: textLabel
|
40
|
+
anchors.centerIn: parent
|
41
|
+
font.pixelSize: size * 0.41
|
42
|
+
font.bold: true
|
43
|
+
text: {
|
44
|
+
let text_list = root.text.split(" ")
|
45
|
+
let result = ""
|
46
|
+
for (let i = 0; i < text_list.length; i++) {
|
47
|
+
if (text_list[i] !== "" && (i === 0 || i === text_list.length - 1)) {
|
48
|
+
result += text_list[i][0]
|
49
|
+
}
|
50
|
+
}
|
51
|
+
return result
|
52
|
+
}
|
53
|
+
visible: root.source === "" && root.text !== ""
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
Image {
|
58
|
+
id: image
|
59
|
+
source: root.source
|
60
|
+
anchors.fill: parent
|
61
|
+
fillMode: Image.PreserveAspectCrop
|
62
|
+
smooth: true
|
63
|
+
clip: true
|
64
|
+
}
|
65
|
+
|
66
|
+
// 遮罩
|
67
|
+
layer.enabled: true
|
68
|
+
layer.effect: OpacityMask {
|
69
|
+
maskSource: Rectangle {
|
70
|
+
width: root.width
|
71
|
+
height: root.height
|
72
|
+
radius: background.radius
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
// 动画
|
77
|
+
Behavior on opacity {
|
78
|
+
NumberAnimation {
|
79
|
+
duration: Utils.appearanceSpeed
|
80
|
+
easing.type: Easing.InOutQuint
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import QtQuick 2.15
|
2
|
+
import QtQuick.Controls 2.15
|
3
|
+
import QtQuick.Layouts 2.15
|
4
|
+
import "../../components"
|
5
|
+
import "../../themes"
|
6
|
+
|
7
|
+
TabBar {
|
8
|
+
id: root
|
9
|
+
implicitWidth: contentWidth
|
10
|
+
|
11
|
+
background: Rectangle {
|
12
|
+
border.width: Theme.currentTheme.appearance.borderWidth // 边框宽度 / Border Width
|
13
|
+
border.color: Theme.currentTheme.colors.controlBorderColor
|
14
|
+
radius: Theme.currentTheme.appearance.buttonRadius
|
15
|
+
color: Theme.currentTheme.colors.controlAltSecondaryColor
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
import QtQuick 2.15
|
2
|
+
import QtQuick.Controls 2.15
|
3
|
+
import QtQuick.Layouts 2.15
|
4
|
+
import Qt5Compat.GraphicalEffects
|
5
|
+
import "../../components"
|
6
|
+
import "../../themes"
|
7
|
+
|
8
|
+
TabButton {
|
9
|
+
id: root
|
10
|
+
|
11
|
+
implicitWidth: Math.max(row.implicitWidth + 26 , 40)
|
12
|
+
implicitHeight: 32
|
13
|
+
|
14
|
+
background: Rectangle {
|
15
|
+
id: background
|
16
|
+
anchors.centerIn: parent
|
17
|
+
width: checked ? parent.width : parent.width - 4*2
|
18
|
+
height: checked ? parent.height : parent.height - 3*2
|
19
|
+
|
20
|
+
color: checked ? Theme.currentTheme.colors.controlFillColor :
|
21
|
+
hovered ? Theme.currentTheme.colors.subtleSecondaryColor : Theme.currentTheme.colors.subtleColor
|
22
|
+
radius: Theme.currentTheme.appearance.smallRadius
|
23
|
+
|
24
|
+
border.width: Theme.currentTheme.appearance.borderWidth // 边框宽度 / Border Width
|
25
|
+
border.color: checked ? Theme.currentTheme.colors.controlBorderColor : "transparent"
|
26
|
+
|
27
|
+
Behavior on scale {
|
28
|
+
NumberAnimation {
|
29
|
+
duration: Utils.animationSpeed
|
30
|
+
easing.type: Easing.OutQuart
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
Behavior on opacity {
|
36
|
+
NumberAnimation {
|
37
|
+
duration: Utils.animationSpeed
|
38
|
+
easing.type: Easing.InOutQuint
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
contentItem: Item {
|
43
|
+
clip: true
|
44
|
+
anchors.fill: parent
|
45
|
+
|
46
|
+
Row {
|
47
|
+
id: row
|
48
|
+
spacing: 8
|
49
|
+
anchors.centerIn: parent
|
50
|
+
IconWidget {
|
51
|
+
id: iconWidget
|
52
|
+
size: icon || source ? text.font.pixelSize * 1.3 : 0 // 图标大小 / Icon Size
|
53
|
+
icon: root.icon.name
|
54
|
+
source: root.icon.source
|
55
|
+
y: 0.25
|
56
|
+
}
|
57
|
+
|
58
|
+
Text {
|
59
|
+
id: text
|
60
|
+
typography: Typography.Body
|
61
|
+
text: root.text
|
62
|
+
color: Theme.currentTheme.colors.textColor
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
Indicator {
|
67
|
+
anchors {
|
68
|
+
bottom: parent.bottom
|
69
|
+
bottomMargin: Theme.currentTheme.appearance.borderWidth
|
70
|
+
horizontalCenter: parent.horizontalCenter
|
71
|
+
}
|
72
|
+
visible: root.checked
|
73
|
+
orientation: Qt.Horizontal
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
// 状态变化
|
78
|
+
states: [
|
79
|
+
State {
|
80
|
+
name: "disabled"
|
81
|
+
when: !enabled
|
82
|
+
PropertyChanges {
|
83
|
+
target: root
|
84
|
+
opacity: 0.65
|
85
|
+
}
|
86
|
+
},
|
87
|
+
State {
|
88
|
+
name: "pressed"
|
89
|
+
when: pressed
|
90
|
+
PropertyChanges {
|
91
|
+
target: root;
|
92
|
+
opacity: 0.67
|
93
|
+
}
|
94
|
+
PropertyChanges {
|
95
|
+
target: background;
|
96
|
+
scale: 0.95
|
97
|
+
}
|
98
|
+
},
|
99
|
+
State {
|
100
|
+
name: "hovered"
|
101
|
+
when: hovered
|
102
|
+
PropertyChanges {
|
103
|
+
target: root;
|
104
|
+
opacity: 0.875
|
105
|
+
}
|
106
|
+
}
|
107
|
+
]
|
108
|
+
}
|
@@ -5,54 +5,9 @@ import "../../components"
|
|
5
5
|
import "../../themes"
|
6
6
|
|
7
7
|
|
8
|
-
|
8
|
+
TabBar {
|
9
9
|
id: root
|
10
|
-
|
11
|
-
property int currentIndex: -1
|
12
|
-
property bool enabled: true
|
13
|
-
// 自动检测模型类型
|
14
|
-
readonly property string modelType: {
|
15
|
-
if (!model) return "null";
|
16
|
-
if (Array.isArray(model) && typeof model[0] === "object") return "array-with-role";
|
17
|
-
if (Array.isArray(model)) return "array";
|
18
|
-
if (model instanceof ListModel) return "listmodel";
|
19
|
-
if (typeof model === "object" && "count" in model) return "listmodel-like";
|
20
|
-
return "unknown";
|
21
|
-
}
|
10
|
+
implicitWidth: contentWidth
|
22
11
|
|
23
|
-
|
24
|
-
spacing: 0
|
25
|
-
|
26
|
-
Repeater {
|
27
|
-
model: root.model
|
28
|
-
delegate: Button {
|
29
|
-
Layout.fillWidth: true
|
30
|
-
Layout.fillHeight: true
|
31
|
-
Layout.preferredHeight: 40
|
32
|
-
flat: true
|
33
|
-
|
34
|
-
background: Item {}
|
35
|
-
|
36
|
-
text: {
|
37
|
-
switch (root.modelType) {
|
38
|
-
case "array": return modelData;
|
39
|
-
case "array-with-role": return modelData["text"] || modelData || "";
|
40
|
-
case "listmodel":
|
41
|
-
case "listmodel-like":
|
42
|
-
return model["text"] || modelData || "";
|
43
|
-
default: return "";
|
44
|
-
}
|
45
|
-
}
|
46
|
-
icon.name: root.modelType === "array-with-role" ? modelData["icon"] : ""
|
47
|
-
icon.source: root.modelType === "array-with-role" ? modelData["source"] : ""
|
48
|
-
|
49
|
-
onClicked: root.currentIndex = index
|
50
|
-
enabled: root.enabled
|
51
|
-
|
52
|
-
Indicator {
|
53
|
-
orientation: Qt.Horizontal
|
54
|
-
visible: index === root.currentIndex
|
55
|
-
}
|
56
|
-
}
|
57
|
-
}
|
12
|
+
background: Item {}
|
58
13
|
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
import QtQuick 2.15
|
2
|
+
import QtQuick.Controls 2.15
|
3
|
+
import QtQuick.Layouts 2.15
|
4
|
+
import Qt5Compat.GraphicalEffects
|
5
|
+
import "../../components"
|
6
|
+
import "../../themes"
|
7
|
+
|
8
|
+
TabButton {
|
9
|
+
id: root
|
10
|
+
|
11
|
+
implicitWidth: Math.max(row.implicitWidth + 26 , 40)
|
12
|
+
implicitHeight: 32
|
13
|
+
|
14
|
+
background: Item {}
|
15
|
+
|
16
|
+
Behavior on opacity {
|
17
|
+
NumberAnimation {
|
18
|
+
duration: Utils.animationSpeed
|
19
|
+
easing.type: Easing.InOutQuint
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
contentItem: Item {
|
24
|
+
clip: true
|
25
|
+
anchors.fill: parent
|
26
|
+
|
27
|
+
Row {
|
28
|
+
id: row
|
29
|
+
spacing: 8
|
30
|
+
anchors.centerIn: parent
|
31
|
+
IconWidget {
|
32
|
+
id: iconWidget
|
33
|
+
size: icon || source ? text.font.pixelSize * 1.3 : 0 // 图标大小 / Icon Size
|
34
|
+
icon: root.icon.name
|
35
|
+
source: root.icon.source
|
36
|
+
y: 0.25
|
37
|
+
}
|
38
|
+
|
39
|
+
Text {
|
40
|
+
id: text
|
41
|
+
typography: Typography.Body
|
42
|
+
text: root.text
|
43
|
+
color: Theme.currentTheme.colors.textColor
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
Indicator {
|
48
|
+
anchors {
|
49
|
+
bottom: parent.bottom
|
50
|
+
bottomMargin: Theme.currentTheme.appearance.borderWidth
|
51
|
+
horizontalCenter: parent.horizontalCenter
|
52
|
+
}
|
53
|
+
visible: root.checked
|
54
|
+
orientation: Qt.Horizontal
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
// 状态变化
|
59
|
+
states: [
|
60
|
+
State {
|
61
|
+
name: "disabled"
|
62
|
+
when: !enabled
|
63
|
+
PropertyChanges {
|
64
|
+
target: root
|
65
|
+
opacity: 0.65
|
66
|
+
}
|
67
|
+
},
|
68
|
+
State {
|
69
|
+
name: "pressed"
|
70
|
+
when: pressed
|
71
|
+
PropertyChanges {
|
72
|
+
target: root;
|
73
|
+
opacity: 0.67
|
74
|
+
}
|
75
|
+
PropertyChanges {
|
76
|
+
target: background;
|
77
|
+
scale: 0.95
|
78
|
+
}
|
79
|
+
},
|
80
|
+
State {
|
81
|
+
name: "hovered"
|
82
|
+
when: hovered
|
83
|
+
PropertyChanges {
|
84
|
+
target: root;
|
85
|
+
opacity: 0.875
|
86
|
+
}
|
87
|
+
}
|
88
|
+
]
|
89
|
+
}
|
RinUI/components/qmldir
CHANGED
@@ -22,6 +22,9 @@ ToolButton 1.0 BasicInput/ToolButton.qml
|
|
22
22
|
Switch 1.0 BasicInput/Switch.qml
|
23
23
|
RadioButton 1.0 BasicInput/RadioButton.qml
|
24
24
|
|
25
|
+
# Media
|
26
|
+
Avatar 1.0 Media/Avatar.qml
|
27
|
+
|
25
28
|
# Date & Time
|
26
29
|
PickerView 1.0 DateAndTime/PickerView.qml
|
27
30
|
# TimePicker 1.0 DateAndTime/TimePicker.qml
|
RinUI/qmldir
CHANGED
@@ -68,10 +68,17 @@ MenuSeparator 1.0 components/MenusAndToolbars/MenuSeparator.qml
|
|
68
68
|
ToolSeparator 1.0 components/MenusAndToolbars/ToolSeparator.qml
|
69
69
|
MenuBar 1.0 components/MenusAndToolbars/MenuBar.qml
|
70
70
|
|
71
|
+
# Media
|
72
|
+
Avatar 1.0 components/Media/Avatar.qml
|
73
|
+
|
71
74
|
# Navigation
|
72
75
|
NavigationView 1.0 components/Navigation/NavigationView.qml
|
73
76
|
NavigationBar 1.0 components/Navigation/NavigationBar.qml
|
74
77
|
SelectorBar 1.0 components/Navigation/SelectorBar.qml
|
78
|
+
SelectorBarItem 1.0 components/Navigation/SelectorBarItem.qml
|
79
|
+
Segmented 1.0 components/Navigation/Segmented.qml
|
80
|
+
SegmentedItem 1.0 components/Navigation/SegmentedItem.qml
|
81
|
+
|
75
82
|
|
76
83
|
# Window
|
77
84
|
ApplicationWindow 1.0 windows/window/ApplicationWindow.qml
|
RinUI/themes/dark.qml
CHANGED
@@ -16,6 +16,15 @@ QtObject {
|
|
16
16
|
property color controlStrongColor: Qt.alpha("#ffffff", 0.5442)
|
17
17
|
property color controlInputActiveColor: Qt.alpha("#1E1E1E", 0.7)
|
18
18
|
|
19
|
+
property color controlAltSecondaryColor: Qt.alpha("#000000", 0.1)
|
20
|
+
property color controlAltTertiaryColor: Qt.alpha("#ffffff", 0.0419)
|
21
|
+
property color controlAltQuaternaryColor: Qt.alpha("#ffffff", 0.0698)
|
22
|
+
|
23
|
+
property color controlFillColor: Qt.alpha("#ffffff", 0.0605)
|
24
|
+
property color controlFillSecondaryColor: Qt.alpha("#ffffff", 0.0837)
|
25
|
+
property color controlFillTertiaryColor: Qt.alpha("#ffffff", 0.0326)
|
26
|
+
property color controlFillQuaternaryColor: Qt.alpha("#ffffff", 0.0605)
|
27
|
+
|
19
28
|
property color controlBorderColor: Qt.alpha("#ffffff", 0.09)
|
20
29
|
property color controlBottomBorderColor: Qt.alpha("#000000", 0.03)
|
21
30
|
property color controlAccentBottomBorderColor: Qt.alpha("#000000", 0.14)
|
RinUI/themes/light.qml
CHANGED
@@ -16,6 +16,15 @@ QtObject {
|
|
16
16
|
property color controlStrongColor: Qt.alpha("#000000", 0.4458)
|
17
17
|
property color controlInputActiveColor: "#ffffff"
|
18
18
|
|
19
|
+
property color controlAltSecondaryColor: Qt.alpha("#000000", 0.0241)
|
20
|
+
property color controlAltTertiaryColor: Qt.alpha("#000000", 0.0578)
|
21
|
+
property color controlAltQuaternaryColor: Qt.alpha("#000000", 0.0924)
|
22
|
+
|
23
|
+
property color controlFillColor: Qt.alpha("#ffffff", 0.7)
|
24
|
+
property color controlFillSecondaryColor: Qt.alpha("#F9F9F9", 0.5)
|
25
|
+
property color controlFillTertiaryColor: Qt.alpha("#F9F9F9", 0.3)
|
26
|
+
property color controlFillQuaternaryColor: Qt.alpha("#F3F3F3", 0.76)
|
27
|
+
|
19
28
|
property color controlBorderColor: Qt.alpha("#000000", 0.06)
|
20
29
|
property color controlBottomBorderColor: Qt.alpha("#000000", 0.16)
|
21
30
|
property color controlAccentBottomBorderColor: Qt.alpha("#000000", 0.4)
|
@@ -43,7 +52,7 @@ QtObject {
|
|
43
52
|
property color backgroundAcrylicColor: "#F9F9F9"
|
44
53
|
property color backgroundSmokeColor: Qt.alpha("#000000", 0.3)
|
45
54
|
|
46
|
-
property color subtleColor: "
|
55
|
+
property color subtleColor: Qt.alpha("#ffffff", 0)
|
47
56
|
property color subtleSecondaryColor: Qt.alpha("#000000", 0.0373)
|
48
57
|
property color subtleTertiaryColor: Qt.alpha("#000000", 0.0241)
|
49
58
|
property color captionCloseColor: "#c42b1c"
|
RinUI/windows/TitleBar.qml
CHANGED
@@ -58,7 +58,7 @@ Item {
|
|
58
58
|
onPressed: {
|
59
59
|
clickPos = Qt.point(mouseX, mouseY)
|
60
60
|
|
61
|
-
if (!(Qt.platform.os !== "windows" || Qt.platform.os !== "winrt") && !Theme.
|
61
|
+
if (!(Qt.platform.os !== "windows" || Qt.platform.os !== "winrt") && !Theme._isThemeMgrInitialized()) {
|
62
62
|
return // 在win环境使用原生方法拖拽
|
63
63
|
}
|
64
64
|
Theme.sendDragWindowEvent(window)
|
@@ -69,7 +69,7 @@ Item {
|
|
69
69
|
return
|
70
70
|
}
|
71
71
|
|
72
|
-
if ((Qt.platform.os !== "windows" || Qt.platform.os !== "winrt") && Theme.
|
72
|
+
if ((Qt.platform.os !== "windows" || Qt.platform.os !== "winrt") && Theme._isThemeMgrInitialized()) {
|
73
73
|
return // 在win环境使用原生方法拖拽
|
74
74
|
}
|
75
75
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<div align="center">
|
2
|
+
<img src="docs/img/logo.png" alt="RinUI Logo" width="18%">
|
2
3
|
<h1>RinUI</h1>
|
3
4
|
<p>A Fluent Design-like UI library for Qt Quick (QML)</p>
|
4
5
|
|
@@ -37,6 +38,8 @@ With simple configuration, you can quickly develop elegant UI interfaces in the
|
|
37
38
|

|
38
39
|
</details>
|
39
40
|
|
41
|
+
> The image in the banner comes from Pixiv, PID: [125975786](https://www.pixiv.net/artworks/125975786)
|
42
|
+
|
40
43
|
## 🪄 Usage
|
41
44
|
|
42
45
|
You can install RinUI via pip:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: RinUI
|
3
|
-
Version: 0.0
|
3
|
+
Version: 0.1.0
|
4
4
|
Summary: A Fluent Design-like UI library for Qt Quick (QML) based on PySide6
|
5
5
|
Author-email: RinLit <lintu233_qwq@icloud.com>
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
@@ -14,6 +14,7 @@ Requires-Dist: darkdetect~=0.8.0
|
|
14
14
|
Requires-Dist: pywin32>=306; sys_platform == "win32"
|
15
15
|
|
16
16
|
<div align="center">
|
17
|
+
<img src="docs/img/logo.png" alt="RinUI Logo" width="18%">
|
17
18
|
<h1>RinUI</h1>
|
18
19
|
<p>A Fluent Design-like UI library for Qt Quick (QML)</p>
|
19
20
|
|
@@ -52,6 +53,8 @@ With simple configuration, you can quickly develop elegant UI interfaces in the
|
|
52
53
|

|
53
54
|
</details>
|
54
55
|
|
56
|
+
> The image in the banner comes from Pixiv, PID: [125975786](https://www.pixiv.net/artworks/125975786)
|
57
|
+
|
55
58
|
## 🪄 Usage
|
56
59
|
|
57
60
|
You can install RinUI via pip:
|
@@ -1,9 +1,9 @@
|
|
1
|
-
RinUI/__init__.py,sha256=
|
2
|
-
RinUI/qmldir,sha256=
|
3
|
-
RinUI/__pycache__/__init__.cpython-38.pyc,sha256=
|
1
|
+
RinUI/__init__.py,sha256=P4P_cLIyRXIeqnX5EgOm4i4u_YMJIzvYaitiT_gBc-Y,69
|
2
|
+
RinUI/qmldir,sha256=DDb5LGs5T_hYUJ4-eObD34PghPlgs2KAouU2KA6EaS4,3739
|
3
|
+
RinUI/__pycache__/__init__.cpython-38.pyc,sha256=uHwmokq_9l1VA5_6BJej_mO-spqvcKoNb2wHdG4HppA,220
|
4
4
|
RinUI/assets/fonts/FluentSystemIcons-Index.js,sha256=XCgcjUnuZjdsjXUu37llGDpQW8sSJbxwmh-hG6UTB2A,258677
|
5
5
|
RinUI/assets/fonts/FluentSystemIcons-Resizable.ttf,sha256=-IfF3NT1eODD0vOLVLC0Z2U5bsR6woSQAziX3qD1TqU,1447252
|
6
|
-
RinUI/assets/img/default_app_icon.png,sha256=
|
6
|
+
RinUI/assets/img/default_app_icon.png,sha256=8O83zl-bghUNsmEx9iCWYiXS8aC_0VGZKqMHdNKjB4A,292885
|
7
7
|
RinUI/components/Base.qml,sha256=YifNpJR3iywAhbWkzGciOF-fyL_eb6YohrgLjDOxTkA,2439
|
8
8
|
RinUI/components/ContextMenu.qml,sha256=GV2SOLNxhgKDHRpZoJU6fahDvJiP98NC2E1Ujosw4yA,5780
|
9
9
|
RinUI/components/FocusIndicator.qml,sha256=R54F-CtUEeNmtoFmCX2Wo-7dom6MAhiWqN8vFapzUPo,926
|
@@ -12,8 +12,8 @@ RinUI/components/Indicator.qml,sha256=yIC96KZo6vhXE1aEX7wz2m2iwb8KXBWCqgxKrsLomT
|
|
12
12
|
RinUI/components/ScrollBar.qml,sha256=01Qo9eAYRzEQhIU4oD2E7lCLdFGCmekhO32z-DCqo4o,7118
|
13
13
|
RinUI/components/ScrollView.qml,sha256=S6GuZm9lptsZduH-xVDGKkS3BqGqi8EmyiBFvbVFAgM,275
|
14
14
|
RinUI/components/Shadow.qml,sha256=YmVgAPAIY69ur57EDMDKMihx6ucI973SWyff01L8r0s,1638
|
15
|
-
RinUI/components/qmldir,sha256=
|
16
|
-
RinUI/components/BasicInput/Button.qml,sha256=
|
15
|
+
RinUI/components/qmldir,sha256=1Q9BIhNGkpdDyOiLWnZpnC6MTkT8KUT8tDPj8HC4NzY,2335
|
16
|
+
RinUI/components/BasicInput/Button.qml,sha256=bZGURFGOSnHdHlFEq0OuNmdpk-mJQh7yo5pUBYUZRYU,5390
|
17
17
|
RinUI/components/BasicInput/CheckBox.qml,sha256=hFSaKw5LLqSVZXTASQ5csCkTHUOBRZ700v4hm6uEfFM,3183
|
18
18
|
RinUI/components/BasicInput/ComboBox.qml,sha256=OOJSoLGBnNJ8O--htkZfT8VDu7jAwHYbS-B_NB9J-SA,4748
|
19
19
|
RinUI/components/BasicInput/DropDownButton.qml,sha256=loDUw_k9GeBUFSgb3McRIdCuLxptoj5Vc8jxinJMoCE,410
|
@@ -30,7 +30,7 @@ RinUI/components/DateAndTime/PickerView.qml,sha256=Av2ybHDQ-Hc00cxi3g97y0wyXZ_aC
|
|
30
30
|
RinUI/components/DateAndTime/TimePicker.qml,sha256=KKOVLvKPm5moYIZaRxesRzi9v2pAK5xypCIfDda7N_Q,3844
|
31
31
|
RinUI/components/DialogsAndFlyouts/Dialog.qml,sha256=KIIswm78ly6BK37wfb5mg26CjpGr-ehp0YdTpo902io,2759
|
32
32
|
RinUI/components/DialogsAndFlyouts/DialogButtonBox.qml,sha256=60vE_o-3IgF8Ol0OkobJTeWYE4xaxiD1jFoKN1ZARXg,1174
|
33
|
-
RinUI/components/DialogsAndFlyouts/Flyout.qml,sha256=
|
33
|
+
RinUI/components/DialogsAndFlyouts/Flyout.qml,sha256=Q-UmV2SoirbwJncjUyeDyzjchEHmm__MI324k3gUvBw,2454
|
34
34
|
RinUI/components/DialogsAndFlyouts/Popup.qml,sha256=U0TXPlU22EObTrNsXw2FI4s8MruWP0w4T6lSqOEYTLc,3252
|
35
35
|
RinUI/components/Layout/Expander.qml,sha256=XUm0YSy0cMS6wJxstxpzVXXddY0iIridpeQxZc8gxyU,4859
|
36
36
|
RinUI/components/Layout/SettingExpander.qml,sha256=e4xDD6ndlQDkBBJyp7AtMdpfkVpzRnesJPzIWVlMBx0,1950
|
@@ -42,6 +42,7 @@ RinUI/components/ListAndCollections/ListViewDelegate.qml,sha256=AQAsrtleMO5t3601
|
|
42
42
|
RinUI/components/ListAndCollections/SettingCard.qml,sha256=CaR-MQnMIFjwnVM0VhI2IqSenBNtz_kGA4ExzxAjmLE,2208
|
43
43
|
RinUI/components/ListAndCollections/TableView.qml,sha256=RJZQPb4yIdcE1jUJ4iQOHDSB5l4O3s7g3oKSuRaubI0,2232
|
44
44
|
RinUI/components/ListAndCollections/TableViewDelegate.qml,sha256=lH19q3Vx9X6TYhgnRlwi7RGnAtb_k3dBbgJZlnQnEmE,2371
|
45
|
+
RinUI/components/Media/Avatar.qml,sha256=JnDHQ8jSq_8gHAMIwnMoOJBPikjuwGJvd0Ul6txOD04,2170
|
45
46
|
RinUI/components/MenusAndToolbars/Menu.qml,sha256=AbnOkFR6nweWIBe1A4dsnZmb3eHHjqfokMVRNed-PPU,4653
|
46
47
|
RinUI/components/MenusAndToolbars/MenuBar.qml,sha256=HR1pSTqklkLFiGkOTGxgRO9WFtsKRlxAT1sSzqYVP7Q,1097
|
47
48
|
RinUI/components/MenusAndToolbars/MenuItem.qml,sha256=XghKdgYVksNKS1zufNtE96c0pnTQg6Dig_8ZNGqip84,3915
|
@@ -54,7 +55,10 @@ RinUI/components/Navigation/NavigationBar.qml,sha256=RR8PjDNl0lqfwcvnx0EvooAnVx4
|
|
54
55
|
RinUI/components/Navigation/NavigationItem.qml,sha256=YzveFBTT4I-NVF40NSVD3GCOgP0qdK3aWMA_3IGxuP0,5947
|
55
56
|
RinUI/components/Navigation/NavigationSubItem.qml,sha256=Xap5EX41SWPOIzvd9FmTR4-zJIwHTe2OvestK_j_jso,3041
|
56
57
|
RinUI/components/Navigation/NavigationView.qml,sha256=8RQh88UbCBvxL9FQDnnMznCy0PR2kAE6-ppudzZQj_k,7496
|
57
|
-
RinUI/components/Navigation/
|
58
|
+
RinUI/components/Navigation/Segmented.qml,sha256=uOqp8DYh0Lyx3bndYdIVXBdaqmI-qaWTRfSMMQUd2OQ,520
|
59
|
+
RinUI/components/Navigation/SegmentedItem.qml,sha256=fKJUXT9Tb_PKzqiXFwNXRcRvJevFWRZEd3VOhuGoHjo,3001
|
60
|
+
RinUI/components/Navigation/SelectorBar.qml,sha256=xGP9V6BvPRYJQAIkMyanUMEGL3AbNok9Cj973920cN0,219
|
61
|
+
RinUI/components/Navigation/SelectorBarItem.qml,sha256=BGPqY5HGefEkIzZo98dFuBpJJN_lPtv2Mcg82gNOxGQ,2192
|
58
62
|
RinUI/components/StatusAndInfo/InfoBadge.qml,sha256=AmyrUwPLP62x83mFlZu6aio7DFOtVK6mKhPVMVBjpQw,2457
|
59
63
|
RinUI/components/StatusAndInfo/InfoBar.qml,sha256=LlW1ObaCOyBs6P5j8oNUSDfGxiXnP6m_jv1HLpK6S-Q,7728
|
60
64
|
RinUI/components/StatusAndInfo/ProgressBar.qml,sha256=RAivKVM8C3JcQFjR6VZPz0H7XqWpSPq5G9qfnh2ABmQ,3515
|
@@ -82,8 +86,8 @@ RinUI/languages/en_US.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16
|
|
82
86
|
RinUI/languages/en_US.ts,sha256=G4-J3m4FUwJRhYvJg9aqS4MYXVu6TQV_GvPBAJVrV-0,6804
|
83
87
|
RinUI/languages/zh_CN.qm,sha256=bQCxv9OfHL8xJbBZYXPZvpPJ6v_czMeVin5Kdnn7LSA,1697
|
84
88
|
RinUI/languages/zh_CN.ts,sha256=fKkkNsnSkFtPXpDiHWhoNnbmGGbTnGz81lrZYeSFVaE,6578
|
85
|
-
RinUI/themes/dark.qml,sha256=
|
86
|
-
RinUI/themes/light.qml,sha256=
|
89
|
+
RinUI/themes/dark.qml,sha256=qg9pEbkoGGLgVdIaNR-9uC7vdvwPLayPGtwB0OXS_Ss,5938
|
90
|
+
RinUI/themes/light.qml,sha256=FhRke_jaFZPUon-slfVgPThp8eSgtnZMnUR53BaFcHQ,5886
|
87
91
|
RinUI/themes/qmldir,sha256=cpBqpZ_vfZyOwWzAT9MEEVruyJkSWi3RVV6Qj0RVrGI,125
|
88
92
|
RinUI/themes/theme.qml,sha256=zuMlMOn80U738znBR8_KCeMKYMXt3dKuvGreAm58FKI,4396
|
89
93
|
RinUI/themes/utils.qml,sha256=g7rx6WS_F4zZJneUIVCHv_4RUT4Hdh01XllZlAh1lfI,1712
|
@@ -98,15 +102,15 @@ RinUI/windows/CtrlBtn.qml,sha256=R4c_ZQxv2SFNnuOsCnq0_dH3THEQkZVl41ZFkVG8IR0,339
|
|
98
102
|
RinUI/windows/FluentPage.qml,sha256=UBhBZcQbO5hJNmXlOLlDVWSVYBlu73wa1CAKlxgjows,2840
|
99
103
|
RinUI/windows/FluentWindow.qml,sha256=FBsc2Wl16oS4KIuN4d0uMP35jSluq2y4l0DZnfWVdoM,856
|
100
104
|
RinUI/windows/FluentWindowBase.qml,sha256=kt9AG1_ACilx5cMhjMQ6OfBz8EPMjwOJBV5xJ04_mNo,4783
|
101
|
-
RinUI/windows/TitleBar.qml,sha256=
|
105
|
+
RinUI/windows/TitleBar.qml,sha256=ssCtj9QtXAQuL7zVn87KlaSnhiEUgMvsiwPBKVZeGpU,3877
|
102
106
|
RinUI/windows/qmldir,sha256=8zVLwFf2mHV3QKp13YnR6OkayRpZl7bHpxSdRdBthK4,212
|
103
107
|
RinUI/windows/window/ApplicationWindow.qml,sha256=sVgqmUEk0bh0QfmF5trs7-W3FaEdYUIYDx7Tv5Pdeww,196
|
104
108
|
RinUI/windows/window/Window.qml,sha256=hQ6aPNv37my-A1cB3EwrxKr8HeYzQqv2LFlS8XCdqto,3603
|
105
|
-
rinui-0.0.
|
106
|
-
rinui-0.0.
|
107
|
-
rinui-0.0.
|
108
|
-
rinui-0.0.
|
109
|
-
rinui-0.0.
|
110
|
-
rinui-0.0.
|
111
|
-
rinui-0.0.
|
112
|
-
rinui-0.0.
|
109
|
+
rinui-0.1.0.data/data/LICENSE,sha256=5tTvyBFn2yeDG5EfIkn4FRJKHXNKRomDVGxssfzXtqg,1084
|
110
|
+
rinui-0.1.0.data/data/README.md,sha256=3dpuJ-ecybFTR247R9DKVnEwLQ18eZqvfd8qU1NfQRI,3187
|
111
|
+
rinui-0.1.0.dist-info/LICENSE,sha256=5tTvyBFn2yeDG5EfIkn4FRJKHXNKRomDVGxssfzXtqg,1084
|
112
|
+
rinui-0.1.0.dist-info/METADATA,sha256=2JIDWunumAlaynIUVkVq0W-WldAhkRl3n07QqQ-yTI0,3725
|
113
|
+
rinui-0.1.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
114
|
+
rinui-0.1.0.dist-info/entry_points.txt,sha256=taxuZYCggoQa2LPubwcurQYRjBRC4cNYOjWaqOYZVxw,54
|
115
|
+
rinui-0.1.0.dist-info/top_level.txt,sha256=vKKjXBXEw5OFRIzTxZWUC5ZOj0CK5e3atbymBB4eJ6w,6
|
116
|
+
rinui-0.1.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|