RinUI 0.0.10.1__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/ContextMenu.qml +1 -1
- RinUI/components/DialogsAndFlyouts/Flyout.qml +10 -67
- RinUI/components/Media/Avatar.qml +83 -0
- RinUI/components/MenusAndToolbars/TextInputMenu.qml +38 -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/Text/TextArea.qml +1 -29
- RinUI/components/Text/TextField.qml +1 -29
- RinUI/components/Text/TextInput.qml +19 -0
- RinUI/components/qmldir +4 -0
- RinUI/core/__init__.py +2 -1
- RinUI/core/__pycache__/__init__.cpython-38.pyc +0 -0
- RinUI/core/__pycache__/config.cpython-38.pyc +0 -0
- RinUI/core/__pycache__/launcher.cpython-38.pyc +0 -0
- RinUI/core/__pycache__/theme.cpython-38.pyc +0 -0
- RinUI/core/__pycache__/translator.cpython-38.pyc +0 -0
- RinUI/core/config.py +11 -2
- RinUI/core/launcher.py +24 -37
- RinUI/core/theme.py +17 -20
- RinUI/core/translator.py +25 -0
- RinUI/languages/en_US.qm +1 -0
- RinUI/languages/en_US.ts +201 -0
- RinUI/languages/zh_CN.qm +0 -0
- RinUI/languages/zh_CN.ts +204 -0
- RinUI/qmldir +8 -0
- RinUI/themes/dark.qml +9 -0
- RinUI/themes/light.qml +10 -1
- RinUI/themes/theme.qml +39 -15
- RinUI/themes/utils.qml +4 -0
- RinUI/windows/FluentWindow.qml +0 -1
- RinUI/windows/FluentWindowBase.qml +0 -1
- RinUI/windows/TitleBar.qml +2 -2
- {rinui-0.0.10.1.data → rinui-0.1.0.data}/data/README.md +5 -1
- {rinui-0.0.10.1.dist-info → rinui-0.1.0.dist-info}/METADATA +6 -2
- {rinui-0.0.10.1.dist-info → rinui-0.1.0.dist-info}/RECORD +46 -35
- {rinui-0.0.10.1.data → rinui-0.1.0.data}/data/LICENSE +0 -0
- {rinui-0.0.10.1.dist-info → rinui-0.1.0.dist-info}/LICENSE +0 -0
- {rinui-0.0.10.1.dist-info → rinui-0.1.0.dist-info}/WHEEL +0 -0
- {rinui-0.0.10.1.dist-info → rinui-0.1.0.dist-info}/entry_points.txt +0 -0
- {rinui-0.0.10.1.dist-info → rinui-0.1.0.dist-info}/top_level.txt +0 -0
RinUI/languages/zh_CN.ts
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE TS>
|
3
|
+
<TS version="2.1" language="zh_CN" sourcelanguage="en_US">
|
4
|
+
<context>
|
5
|
+
<name>CtrlBtn</name>
|
6
|
+
<message>
|
7
|
+
<location filename="../windows/CtrlBtn.qml" line="19"/>
|
8
|
+
<source>Maximize</source>
|
9
|
+
<translation>最大化</translation>
|
10
|
+
</message>
|
11
|
+
<message>
|
12
|
+
<location filename="../windows/CtrlBtn.qml" line="19"/>
|
13
|
+
<source>Minimize</source>
|
14
|
+
<translation>最小化</translation>
|
15
|
+
</message>
|
16
|
+
<message>
|
17
|
+
<location filename="../windows/CtrlBtn.qml" line="19"/>
|
18
|
+
<source>Close</source>
|
19
|
+
<translation>关闭</translation>
|
20
|
+
</message>
|
21
|
+
<message>
|
22
|
+
<location filename="../windows/CtrlBtn.qml" line="19"/>
|
23
|
+
<source>Unknown</source>
|
24
|
+
<translation>未知</translation>
|
25
|
+
</message>
|
26
|
+
</context>
|
27
|
+
<context>
|
28
|
+
<name>DatePicker</name>
|
29
|
+
<message>
|
30
|
+
<location filename="../components/DateAndTime/DatePicker.qml" line="98"/>
|
31
|
+
<source>year</source>
|
32
|
+
<translation>年</translation>
|
33
|
+
</message>
|
34
|
+
<message>
|
35
|
+
<location filename="../components/DateAndTime/DatePicker.qml" line="99"/>
|
36
|
+
<source>month</source>
|
37
|
+
<translation>月</translation>
|
38
|
+
</message>
|
39
|
+
<message>
|
40
|
+
<location filename="../components/DateAndTime/DatePicker.qml" line="100"/>
|
41
|
+
<source>day</source>
|
42
|
+
<translation>日</translation>
|
43
|
+
</message>
|
44
|
+
</context>
|
45
|
+
<context>
|
46
|
+
<name>ErrorPage</name>
|
47
|
+
<message>
|
48
|
+
<location filename="../components/Navigation/ErrorPage.qml" line="21"/>
|
49
|
+
<source>Sorry, something went wrong!</source>
|
50
|
+
<translation>抱歉,出错了!</translation>
|
51
|
+
</message>
|
52
|
+
<message>
|
53
|
+
<location filename="../components/Navigation/ErrorPage.qml" line="30"/>
|
54
|
+
<source> load failed!
|
55
|
+
|
56
|
+
Because of </source>
|
57
|
+
<translation> 加载 QML 失败!
|
58
|
+
|
59
|
+
由于 </translation>
|
60
|
+
</message>
|
61
|
+
<message>
|
62
|
+
<location filename="../components/Navigation/ErrorPage.qml" line="30"/>
|
63
|
+
<source>
|
64
|
+
Please try again later.</source>
|
65
|
+
<translation>
|
66
|
+
请稍后重试。</translation>
|
67
|
+
</message>
|
68
|
+
<message>
|
69
|
+
<location filename="../components/Navigation/ErrorPage.qml" line="41"/>
|
70
|
+
<source>Retry</source>
|
71
|
+
<translation>重试</translation>
|
72
|
+
</message>
|
73
|
+
</context>
|
74
|
+
<context>
|
75
|
+
<name>FluentWindow</name>
|
76
|
+
<message>
|
77
|
+
<location filename="../windows/FluentWindow.qml" line="11"/>
|
78
|
+
<source>Fluent Window</source>
|
79
|
+
<translation>流畅窗口</translation>
|
80
|
+
</message>
|
81
|
+
</context>
|
82
|
+
<context>
|
83
|
+
<name>FluentWindowBase</name>
|
84
|
+
<message>
|
85
|
+
<location filename="../windows/FluentWindowBase.qml" line="11"/>
|
86
|
+
<source>Fluent Window Base</source>
|
87
|
+
<translation>流畅窗口基类</translation>
|
88
|
+
</message>
|
89
|
+
</context>
|
90
|
+
<context>
|
91
|
+
<name>InfoBar</name>
|
92
|
+
<message>
|
93
|
+
<location filename="../components/StatusAndInfo/InfoBar.qml" line="171"/>
|
94
|
+
<source>Close</source>
|
95
|
+
<translation>关闭</translation>
|
96
|
+
</message>
|
97
|
+
</context>
|
98
|
+
<context>
|
99
|
+
<name>NavigationBar</name>
|
100
|
+
<message>
|
101
|
+
<location filename="../components/Navigation/NavigationBar.qml" line="98"/>
|
102
|
+
<source>Back</source>
|
103
|
+
<translation>返回</translation>
|
104
|
+
</message>
|
105
|
+
<message>
|
106
|
+
<location filename="../components/Navigation/NavigationBar.qml" line="137"/>
|
107
|
+
<source>Open Navigation</source>
|
108
|
+
<translation>展开导航</translation>
|
109
|
+
</message>
|
110
|
+
<message>
|
111
|
+
<location filename="../components/Navigation/NavigationBar.qml" line="137"/>
|
112
|
+
<source>Close Navigation</source>
|
113
|
+
<translation>收起导航</translation>
|
114
|
+
</message>
|
115
|
+
</context>
|
116
|
+
<context>
|
117
|
+
<name>PickerView</name>
|
118
|
+
<message>
|
119
|
+
<location filename="../components/DateAndTime/PickerView.qml" line="26"/>
|
120
|
+
<source>AM</source>
|
121
|
+
<translation>上午</translation>
|
122
|
+
</message>
|
123
|
+
<message>
|
124
|
+
<location filename="../components/DateAndTime/PickerView.qml" line="26"/>
|
125
|
+
<source>PM</source>
|
126
|
+
<translation>下午</translation>
|
127
|
+
</message>
|
128
|
+
</context>
|
129
|
+
<context>
|
130
|
+
<name>Switch</name>
|
131
|
+
<message>
|
132
|
+
<location filename="../components/BasicInput/Switch.qml" line="15"/>
|
133
|
+
<source>On</source>
|
134
|
+
<translation>启用</translation>
|
135
|
+
</message>
|
136
|
+
<message>
|
137
|
+
<location filename="../components/BasicInput/Switch.qml" line="16"/>
|
138
|
+
<source>Off</source>
|
139
|
+
<translation>禁用</translation>
|
140
|
+
</message>
|
141
|
+
</context>
|
142
|
+
<context>
|
143
|
+
<name>TextInputMenu</name>
|
144
|
+
<message>
|
145
|
+
<location filename="../components/MenusAndToolbars/TextInputMenu.qml" line="13"/>
|
146
|
+
<source>Cut</source>
|
147
|
+
<translation>剪切</translation>
|
148
|
+
</message>
|
149
|
+
<message>
|
150
|
+
<location filename="../components/MenusAndToolbars/TextInputMenu.qml" line="20"/>
|
151
|
+
<source>Copy</source>
|
152
|
+
<translation>复制</translation>
|
153
|
+
</message>
|
154
|
+
<message>
|
155
|
+
<location filename="../components/MenusAndToolbars/TextInputMenu.qml" line="27"/>
|
156
|
+
<source>Paste</source>
|
157
|
+
<translation>粘贴</translation>
|
158
|
+
</message>
|
159
|
+
<message>
|
160
|
+
<location filename="../components/MenusAndToolbars/TextInputMenu.qml" line="34"/>
|
161
|
+
<source>Select All</source>
|
162
|
+
<translation>全选</translation>
|
163
|
+
</message>
|
164
|
+
</context>
|
165
|
+
<context>
|
166
|
+
<name>TimePicker</name>
|
167
|
+
<message>
|
168
|
+
<location filename="../components/DateAndTime/TimePicker.qml" line="10"/>
|
169
|
+
<source>AM</source>
|
170
|
+
<translation>上午</translation>
|
171
|
+
</message>
|
172
|
+
<message>
|
173
|
+
<location filename="../components/DateAndTime/TimePicker.qml" line="11"/>
|
174
|
+
<source>PM</source>
|
175
|
+
<translation>下午</translation>
|
176
|
+
</message>
|
177
|
+
<message>
|
178
|
+
<location filename="../components/DateAndTime/TimePicker.qml" line="12"/>
|
179
|
+
<source>hour</source>
|
180
|
+
<translation>小时</translation>
|
181
|
+
</message>
|
182
|
+
<message>
|
183
|
+
<location filename="../components/DateAndTime/TimePicker.qml" line="13"/>
|
184
|
+
<source>minute</source>
|
185
|
+
<translation>分钟</translation>
|
186
|
+
</message>
|
187
|
+
</context>
|
188
|
+
<context>
|
189
|
+
<name>TitleBar</name>
|
190
|
+
<message>
|
191
|
+
<location filename="../windows/TitleBar.qml" line="133"/>
|
192
|
+
<source>Fluent TitleBar</source>
|
193
|
+
<translation>流畅标题栏</translation>
|
194
|
+
</message>
|
195
|
+
</context>
|
196
|
+
<context>
|
197
|
+
<name>Toast</name>
|
198
|
+
<message>
|
199
|
+
<location filename="../components/StatusAndInfo/Toast.qml" line="156"/>
|
200
|
+
<source>Close</source>
|
201
|
+
<translation type="unfinished">关闭</translation>
|
202
|
+
</message>
|
203
|
+
</context>
|
204
|
+
</TS>
|
RinUI/qmldir
CHANGED
@@ -61,16 +61,24 @@ TableViewDelegate 1.0 components/ListAndCollections/TableViewDelegate.qml
|
|
61
61
|
|
62
62
|
# Menus & Toolbars
|
63
63
|
Menu 1.0 components/MenusAndToolbars/Menu.qml
|
64
|
+
TextInputMenu 1.0 components/MenusAndToolbars/TextInputMenu.qml
|
64
65
|
MenuItem 1.0 components/MenusAndToolbars/MenuItem.qml
|
65
66
|
MenuItemGroup 1.0 components/MenusAndToolbars/MenuItemGroup.qml
|
66
67
|
MenuSeparator 1.0 components/MenusAndToolbars/MenuSeparator.qml
|
67
68
|
ToolSeparator 1.0 components/MenusAndToolbars/ToolSeparator.qml
|
68
69
|
MenuBar 1.0 components/MenusAndToolbars/MenuBar.qml
|
69
70
|
|
71
|
+
# Media
|
72
|
+
Avatar 1.0 components/Media/Avatar.qml
|
73
|
+
|
70
74
|
# Navigation
|
71
75
|
NavigationView 1.0 components/Navigation/NavigationView.qml
|
72
76
|
NavigationBar 1.0 components/Navigation/NavigationBar.qml
|
73
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
|
+
|
74
82
|
|
75
83
|
# Window
|
76
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/themes/theme.qml
CHANGED
@@ -6,6 +6,17 @@ Item {
|
|
6
6
|
id: themeManager
|
7
7
|
|
8
8
|
property var currentTheme: null
|
9
|
+
readonly property var mode: ({
|
10
|
+
Light: "Light",
|
11
|
+
Dark: "Dark",
|
12
|
+
Auto: "Auto"
|
13
|
+
})
|
14
|
+
readonly property var effect: ({
|
15
|
+
Mica: "mica",
|
16
|
+
Acrylic: "acrylic",
|
17
|
+
Tabbed: "tabbed",
|
18
|
+
None: "none"
|
19
|
+
})
|
9
20
|
|
10
21
|
// 初始化时设置默认主题
|
11
22
|
Component.onCompleted: {
|
@@ -17,12 +28,12 @@ Item {
|
|
17
28
|
}
|
18
29
|
}
|
19
30
|
|
20
|
-
function
|
31
|
+
function _isThemeMgrInitialized() {
|
21
32
|
return typeof ThemeManager!== "undefined"
|
22
33
|
}
|
23
34
|
|
24
35
|
function setBackdropEffect(effect) {
|
25
|
-
if (!
|
36
|
+
if (!_isThemeMgrInitialized()) {
|
26
37
|
console.error("ThemeManager is not defined.")
|
27
38
|
return -1
|
28
39
|
}
|
@@ -30,7 +41,7 @@ Item {
|
|
30
41
|
}
|
31
42
|
|
32
43
|
function sendDragWindowEvent(window) {
|
33
|
-
if (!
|
44
|
+
if (!_isThemeMgrInitialized()) {
|
34
45
|
console.error("ThemeManager is not defined.")
|
35
46
|
return -1
|
36
47
|
}
|
@@ -38,15 +49,28 @@ Item {
|
|
38
49
|
}
|
39
50
|
|
40
51
|
function getBackdropEffect() {
|
41
|
-
if (!
|
52
|
+
if (!_isThemeMgrInitialized()) {
|
42
53
|
console.error("ThemeManager is not defined.")
|
43
54
|
return -1
|
44
55
|
}
|
45
56
|
return ThemeManager.get_backdrop_effect()
|
46
57
|
}
|
47
58
|
|
59
|
+
function setThemeColor(color) {
|
60
|
+
if (!_isThemeMgrInitialized()) {
|
61
|
+
console.error("ThemeManager is not defined.")
|
62
|
+
return -1
|
63
|
+
}
|
64
|
+
if (typeof color !== "string") {
|
65
|
+
console.error("Invalid color format. Expected a string.")
|
66
|
+
return -1
|
67
|
+
}
|
68
|
+
Utils.primaryColor = color
|
69
|
+
ThemeManager.set_theme_color(color)
|
70
|
+
}
|
71
|
+
|
48
72
|
function getThemeColor() {
|
49
|
-
if (!
|
73
|
+
if (!_isThemeMgrInitialized()) {
|
50
74
|
console.error("ThemeManager is not defined.")
|
51
75
|
return -1
|
52
76
|
}
|
@@ -54,7 +78,7 @@ Item {
|
|
54
78
|
}
|
55
79
|
|
56
80
|
function getTheme() {
|
57
|
-
if (!
|
81
|
+
if (!_isThemeMgrInitialized()) {
|
58
82
|
console.error("ThemeManager is not defined.")
|
59
83
|
return -1
|
60
84
|
}
|
@@ -64,33 +88,33 @@ Item {
|
|
64
88
|
// 本来打算写多主题支持的()
|
65
89
|
|
66
90
|
function toggleMode() {
|
67
|
-
if (!
|
91
|
+
if (!_isThemeMgrInitialized()) {
|
68
92
|
console.error("ThemeManager is not defined.")
|
69
93
|
return -1
|
70
94
|
}
|
71
|
-
|
95
|
+
let theme_mode;
|
72
96
|
if (!currentTheme.isDark) {
|
73
|
-
|
97
|
+
theme_mode = mode.Dark
|
74
98
|
} else {
|
75
|
-
|
99
|
+
theme_mode = mode.Light
|
76
100
|
}
|
77
|
-
setTheme(
|
101
|
+
setTheme(theme_mode)
|
78
102
|
}
|
79
103
|
|
80
104
|
// 切换主题
|
81
|
-
function setTheme(mode) {
|
82
|
-
if (!
|
105
|
+
function setTheme(theme_mode: mode) {
|
106
|
+
if (!_isThemeMgrInitialized()) {
|
83
107
|
console.error("ThemeManager is not defined.")
|
84
108
|
currentTheme = Qt.createQmlObject("import '../themes'; Light {}", themeManager)
|
85
109
|
return
|
86
110
|
}
|
87
111
|
|
88
112
|
// Call Python backend to toggle theme
|
89
|
-
ThemeManager.toggle_theme(
|
113
|
+
ThemeManager.toggle_theme(theme_mode)
|
90
114
|
|
91
115
|
// Get the actual theme name
|
92
116
|
var themeName = ThemeManager.get_theme_name()
|
93
|
-
if (themeName ===
|
117
|
+
if (themeName === mode.Auto) {
|
94
118
|
// Get the actual theme applied (Light or Dark)
|
95
119
|
themeName = ThemeManager.get_theme()
|
96
120
|
}
|
RinUI/themes/utils.qml
CHANGED
@@ -12,6 +12,10 @@ QtObject {
|
|
12
12
|
property var fontIconIndex: Icons.FluentIcons // 字体图标索引
|
13
13
|
|
14
14
|
property color primaryColor: "#605ed2" // 默认主题色
|
15
|
+
property QtObject colors: Theme.currentTheme.colors // 主题颜色
|
16
|
+
property QtObject appearance: Theme.currentTheme.appearance // 界面外观
|
17
|
+
property QtObject typography: Theme.currentTheme.typography // 字体
|
18
|
+
|
15
19
|
property int windowDragArea: 5 // 窗口可拖动范围 (px)
|
16
20
|
property int dialogMaximumWidth: 600 // 对话框最大宽度 (px)
|
17
21
|
property int dialogMinimumWidth: 320 // 对话框最小宽度 (px)
|
RinUI/windows/FluentWindow.qml
CHANGED
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
|
|
@@ -20,7 +21,8 @@ With simple configuration, you can quickly develop elegant UI interfaces in the
|
|
20
21
|
* Elegant Fluent Design controls (WIP)
|
21
22
|
* Dark and light mode, automatic switching
|
22
23
|
* Compatible with original QML control names
|
23
|
-
*
|
24
|
+
* i18n Internationalization
|
25
|
+
* Multi-programming language support (WIP)
|
24
26
|
* Theme system (WIP)
|
25
27
|
* Development documentation, [preview](https://ui.rinlit.cn/) now. (WIP)
|
26
28
|
|
@@ -36,6 +38,8 @@ With simple configuration, you can quickly develop elegant UI interfaces in the
|
|
36
38
|

|
37
39
|
</details>
|
38
40
|
|
41
|
+
> The image in the banner comes from Pixiv, PID: [125975786](https://www.pixiv.net/artworks/125975786)
|
42
|
+
|
39
43
|
## 🪄 Usage
|
40
44
|
|
41
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
|
|
@@ -35,7 +36,8 @@ With simple configuration, you can quickly develop elegant UI interfaces in the
|
|
35
36
|
* Elegant Fluent Design controls (WIP)
|
36
37
|
* Dark and light mode, automatic switching
|
37
38
|
* Compatible with original QML control names
|
38
|
-
*
|
39
|
+
* i18n Internationalization
|
40
|
+
* Multi-programming language support (WIP)
|
39
41
|
* Theme system (WIP)
|
40
42
|
* Development documentation, [preview](https://ui.rinlit.cn/) now. (WIP)
|
41
43
|
|
@@ -51,6 +53,8 @@ With simple configuration, you can quickly develop elegant UI interfaces in the
|
|
51
53
|

|
52
54
|
</details>
|
53
55
|
|
56
|
+
> The image in the banner comes from Pixiv, PID: [125975786](https://www.pixiv.net/artworks/125975786)
|
57
|
+
|
54
58
|
## 🪄 Usage
|
55
59
|
|
56
60
|
You can install RinUI via pip:
|
@@ -1,19 +1,19 @@
|
|
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
|
-
RinUI/components/ContextMenu.qml,sha256=
|
8
|
+
RinUI/components/ContextMenu.qml,sha256=GV2SOLNxhgKDHRpZoJU6fahDvJiP98NC2E1Ujosw4yA,5780
|
9
9
|
RinUI/components/FocusIndicator.qml,sha256=R54F-CtUEeNmtoFmCX2Wo-7dom6MAhiWqN8vFapzUPo,926
|
10
10
|
RinUI/components/IconWidget.qml,sha256=pJtNZYWxde-2_e0rALv_jZNByNx1Oir4wJ8hWmdKrns,1736
|
11
11
|
RinUI/components/Indicator.qml,sha256=yIC96KZo6vhXE1aEX7wz2m2iwb8KXBWCqgxKrsLomT8,2627
|
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,18 +42,23 @@ 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
|
48
49
|
RinUI/components/MenusAndToolbars/MenuItemGroup.qml,sha256=ywDv4KypNoTQbiDTeIedBj7Dfvcy9jdFtwwK7hSaozE,1057
|
49
50
|
RinUI/components/MenusAndToolbars/MenuSeparator.qml,sha256=Z2G339bFrwOzRpWSqqahjmgJL5u-k-sw3g1uAHXerxQ,270
|
51
|
+
RinUI/components/MenusAndToolbars/TextInputMenu.qml,sha256=Xiqh-gnDHhFY8JvaPgVc4fPiISU29uzrEck1K-P87PI,976
|
50
52
|
RinUI/components/MenusAndToolbars/ToolSeparator.qml,sha256=rZXXNnvKw3yZVptj1bOronPDkiYCId1ffAt-a3t-ea4,430
|
51
53
|
RinUI/components/Navigation/ErrorPage.qml,sha256=uQ3UBby1vP6-SBjw1_7aU6hRNXmcqNdBKzC-EuB6a7U,1087
|
52
54
|
RinUI/components/Navigation/NavigationBar.qml,sha256=RR8PjDNl0lqfwcvnx0EvooAnVx4db6Q8o1L03ghzdlE,5075
|
53
55
|
RinUI/components/Navigation/NavigationItem.qml,sha256=YzveFBTT4I-NVF40NSVD3GCOgP0qdK3aWMA_3IGxuP0,5947
|
54
56
|
RinUI/components/Navigation/NavigationSubItem.qml,sha256=Xap5EX41SWPOIzvd9FmTR4-zJIwHTe2OvestK_j_jso,3041
|
55
57
|
RinUI/components/Navigation/NavigationView.qml,sha256=8RQh88UbCBvxL9FQDnnMznCy0PR2kAE6-ppudzZQj_k,7496
|
56
|
-
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
|
57
62
|
RinUI/components/StatusAndInfo/InfoBadge.qml,sha256=AmyrUwPLP62x83mFlZu6aio7DFOtVK6mKhPVMVBjpQw,2457
|
58
63
|
RinUI/components/StatusAndInfo/InfoBar.qml,sha256=LlW1ObaCOyBs6P5j8oNUSDfGxiXnP6m_jv1HLpK6S-Q,7728
|
59
64
|
RinUI/components/StatusAndInfo/ProgressBar.qml,sha256=RAivKVM8C3JcQFjR6VZPz0H7XqWpSPq5G9qfnh2ABmQ,3515
|
@@ -61,25 +66,31 @@ RinUI/components/StatusAndInfo/Toast.qml,sha256=9T8i9JswzGEXZM8CeZbwWsILEbzymy2Z
|
|
61
66
|
RinUI/components/StatusAndInfo/ToolTip.qml,sha256=js0t8IJ6bnYt8JHHMQwS49MQOhaBjLNYP_libFbZROk,2757
|
62
67
|
RinUI/components/Text/SpinBox.qml,sha256=YC1CjlHauP081qtseFQuSDNCUsCnCgtjh8nfgPqCZfU,4229
|
63
68
|
RinUI/components/Text/Text.qml,sha256=-VaPy0W4d8mE6C1crSA0ADReKdA_NlghxaS5iV_8RYg,1758
|
64
|
-
RinUI/components/Text/TextArea.qml,sha256=
|
65
|
-
RinUI/components/Text/TextField.qml,sha256=
|
66
|
-
RinUI/components/Text/TextInput.qml,sha256=
|
69
|
+
RinUI/components/Text/TextArea.qml,sha256=BA2YdHVfslv2d1AfHlPp-fpAK5tkWp6KgpU3FGetS1Q,3823
|
70
|
+
RinUI/components/Text/TextField.qml,sha256=Jdh8RqyGUB35lSLnv_662651eJsZEllXwGoaUS82HxU,3635
|
71
|
+
RinUI/components/Text/TextInput.qml,sha256=FI-ru7-hxG5aDJwUkMTRKbTkSgGmSgKC1inzSpDmNHM,1658
|
67
72
|
RinUI/config/rin_ui.json,sha256=rDCS0TVFt1VowGlcW_jqOM81DWwkV7S8Z5rae2p4TSk,149
|
68
|
-
RinUI/core/__init__.py,sha256=
|
69
|
-
RinUI/core/config.py,sha256=
|
70
|
-
RinUI/core/launcher.py,sha256=
|
71
|
-
RinUI/core/theme.py,sha256=
|
72
|
-
RinUI/core/
|
73
|
-
RinUI/core/__pycache__/
|
74
|
-
RinUI/core/__pycache__/
|
75
|
-
RinUI/core/__pycache__/
|
73
|
+
RinUI/core/__init__.py,sha256=wNpVVuBWj3pX0eiq0P01QuN4oFxo_4bK5yuyj4vSO4Q,200
|
74
|
+
RinUI/core/config.py,sha256=0G1Wy2rT6b2FfRuJz3SHpoXiDnp7R012Al_9YYbdlz0,3851
|
75
|
+
RinUI/core/launcher.py,sha256=nZNa7Dt3LLhixODeleOof_KKwTojZi-6RSPLvaJtQE8,4745
|
76
|
+
RinUI/core/theme.py,sha256=cWTiVvCSIh5sLCZlZ1dB8VY0-fCrLULPVlj1TFjjKbU,11011
|
77
|
+
RinUI/core/translator.py,sha256=uFenyvJC-jD8S6Tm17OXeVQHp4kTwryHWGxqk9xbe44,975
|
78
|
+
RinUI/core/__pycache__/__init__.cpython-38.pyc,sha256=sEdnIYG9JymqK4ZnVJGwZZ-YopukgvFwAV3gLSvkQVw,433
|
79
|
+
RinUI/core/__pycache__/config.cpython-38.pyc,sha256=-LD5V93EHU-KlCDi3vBSEBr5yPkemkhFuygc9y1UXvA,4368
|
80
|
+
RinUI/core/__pycache__/launcher.cpython-38.pyc,sha256=yy-MEDwxSJCbyrOeACABF4eSK-_IHuV2Tl2zmhtyEuU,4788
|
81
|
+
RinUI/core/__pycache__/theme.cpython-38.pyc,sha256=h2oJQHNyjT12J4FG9uWED4gyMMqDma6P-vbxGCO3es0,9919
|
82
|
+
RinUI/core/__pycache__/translator.cpython-38.pyc,sha256=JAKIX3emlSjFSMZaI9sxMHJ19not7gEIyvmvSRjJeoo,1423
|
76
83
|
RinUI/hooks/__init__.py,sha256=zer67JRQ-h9uvQmutYU2Us5oBjSJnBVzgR1Sl_5aPF0,77
|
77
84
|
RinUI/hooks/hook-RinUI.py,sha256=9DW9x8zgpEsZpaAAUW-0LE_B69od1wBcUviVRnrAfMI,119
|
78
|
-
RinUI/
|
79
|
-
RinUI/
|
85
|
+
RinUI/languages/en_US.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16
|
86
|
+
RinUI/languages/en_US.ts,sha256=G4-J3m4FUwJRhYvJg9aqS4MYXVu6TQV_GvPBAJVrV-0,6804
|
87
|
+
RinUI/languages/zh_CN.qm,sha256=bQCxv9OfHL8xJbBZYXPZvpPJ6v_czMeVin5Kdnn7LSA,1697
|
88
|
+
RinUI/languages/zh_CN.ts,sha256=fKkkNsnSkFtPXpDiHWhoNnbmGGbTnGz81lrZYeSFVaE,6578
|
89
|
+
RinUI/themes/dark.qml,sha256=qg9pEbkoGGLgVdIaNR-9uC7vdvwPLayPGtwB0OXS_Ss,5938
|
90
|
+
RinUI/themes/light.qml,sha256=FhRke_jaFZPUon-slfVgPThp8eSgtnZMnUR53BaFcHQ,5886
|
80
91
|
RinUI/themes/qmldir,sha256=cpBqpZ_vfZyOwWzAT9MEEVruyJkSWi3RVV6Qj0RVrGI,125
|
81
|
-
RinUI/themes/theme.qml,sha256=
|
82
|
-
RinUI/themes/utils.qml,sha256=
|
92
|
+
RinUI/themes/theme.qml,sha256=zuMlMOn80U738znBR8_KCeMKYMXt3dKuvGreAm58FKI,4396
|
93
|
+
RinUI/themes/utils.qml,sha256=g7rx6WS_F4zZJneUIVCHv_4RUT4Hdh01XllZlAh1lfI,1712
|
83
94
|
RinUI/utils/Animation.qml,sha256=Z--MRYr-bZqKX_QyZ4c0Z74g72i0k7aPzTBEUhTfiGo,146
|
84
95
|
RinUI/utils/FloatLayer.qml,sha256=W-TaM8gCt6YWU46V_pDonyxNMlR-iEcg27FMl-FYV58,3323
|
85
96
|
RinUI/utils/FontIconLoader.qml,sha256=DEUH-GlcI5q0PbCsvsvq1t-uPzEZo0-A-Gqt5t1eoFg,307
|
@@ -89,17 +100,17 @@ RinUI/utils/Typography.qml,sha256=uScq2PNHI_pW-vcyp2SDLL1pkMyspD_ffrx0Qg2Ha7c,24
|
|
89
100
|
RinUI/utils/qmldir,sha256=0tTlmbIgNtRRNgqAJ2IAloJIAtwO6lXITV3ciaWLpCs,193
|
90
101
|
RinUI/windows/CtrlBtn.qml,sha256=R4c_ZQxv2SFNnuOsCnq0_dH3THEQkZVl41ZFkVG8IR0,3390
|
91
102
|
RinUI/windows/FluentPage.qml,sha256=UBhBZcQbO5hJNmXlOLlDVWSVYBlu73wa1CAKlxgjows,2840
|
92
|
-
RinUI/windows/FluentWindow.qml,sha256=
|
93
|
-
RinUI/windows/FluentWindowBase.qml,sha256=
|
94
|
-
RinUI/windows/TitleBar.qml,sha256=
|
103
|
+
RinUI/windows/FluentWindow.qml,sha256=FBsc2Wl16oS4KIuN4d0uMP35jSluq2y4l0DZnfWVdoM,856
|
104
|
+
RinUI/windows/FluentWindowBase.qml,sha256=kt9AG1_ACilx5cMhjMQ6OfBz8EPMjwOJBV5xJ04_mNo,4783
|
105
|
+
RinUI/windows/TitleBar.qml,sha256=ssCtj9QtXAQuL7zVn87KlaSnhiEUgMvsiwPBKVZeGpU,3877
|
95
106
|
RinUI/windows/qmldir,sha256=8zVLwFf2mHV3QKp13YnR6OkayRpZl7bHpxSdRdBthK4,212
|
96
107
|
RinUI/windows/window/ApplicationWindow.qml,sha256=sVgqmUEk0bh0QfmF5trs7-W3FaEdYUIYDx7Tv5Pdeww,196
|
97
108
|
RinUI/windows/window/Window.qml,sha256=hQ6aPNv37my-A1cB3EwrxKr8HeYzQqv2LFlS8XCdqto,3603
|
98
|
-
rinui-0.0.
|
99
|
-
rinui-0.0.
|
100
|
-
rinui-0.0.
|
101
|
-
rinui-0.0.
|
102
|
-
rinui-0.0.
|
103
|
-
rinui-0.0.
|
104
|
-
rinui-0.0.
|
105
|
-
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
|