spf1020 1.0.48__tar.gz
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.
- spf1020-1.0.48/EULA.txt +157 -0
- spf1020-1.0.48/LICENSE +29 -0
- spf1020-1.0.48/MANIFEST.in +3 -0
- spf1020-1.0.48/PKG-INFO +84 -0
- spf1020-1.0.48/README.md +60 -0
- spf1020-1.0.48/pyproject.toml +33 -0
- spf1020-1.0.48/setup.cfg +4 -0
- spf1020-1.0.48/spf1020/EULA.txt +157 -0
- spf1020-1.0.48/spf1020/__init__.py +231 -0
- spf1020-1.0.48/spf1020/__main__.py +22 -0
- spf1020-1.0.48/spf1020/actions.py +164 -0
- spf1020-1.0.48/spf1020/app.py +44 -0
- spf1020-1.0.48/spf1020/branding.py +59 -0
- spf1020-1.0.48/spf1020/clipboard.py +60 -0
- spf1020-1.0.48/spf1020/context_menu.py +59 -0
- spf1020-1.0.48/spf1020/context_menu_presets.py +106 -0
- spf1020-1.0.48/spf1020/cursor.py +38 -0
- spf1020-1.0.48/spf1020/dialogs/__init__.py +32 -0
- spf1020-1.0.48/spf1020/dialogs/about.py +32 -0
- spf1020-1.0.48/spf1020/dialogs/color_font.py +141 -0
- spf1020-1.0.48/spf1020/dialogs/eula_viewer.py +58 -0
- spf1020-1.0.48/spf1020/dialogs/file.py +231 -0
- spf1020-1.0.48/spf1020/dialogs/input.py +121 -0
- spf1020-1.0.48/spf1020/dialogs/message.py +47 -0
- spf1020-1.0.48/spf1020/dialogs/terms.py +105 -0
- spf1020-1.0.48/spf1020/event.py +68 -0
- spf1020-1.0.48/spf1020/file_drop.py +163 -0
- spf1020-1.0.48/spf1020/forms.py +179 -0
- spf1020-1.0.48/spf1020/help_menu.py +60 -0
- spf1020-1.0.48/spf1020/layout/__init__.py +13 -0
- spf1020-1.0.48/spf1020/layout/base.py +54 -0
- spf1020-1.0.48/spf1020/layout/grid.py +102 -0
- spf1020-1.0.48/spf1020/layout/panel.py +114 -0
- spf1020-1.0.48/spf1020/layout/split.py +290 -0
- spf1020-1.0.48/spf1020/layout/stack.py +292 -0
- spf1020-1.0.48/spf1020/layout/traverse.py +63 -0
- spf1020-1.0.48/spf1020/layout/view_switcher.py +60 -0
- spf1020-1.0.48/spf1020/legal.py +75 -0
- spf1020-1.0.48/spf1020/menubar.py +49 -0
- spf1020-1.0.48/spf1020/modal.py +56 -0
- spf1020-1.0.48/spf1020/native/__init__.py +4 -0
- spf1020-1.0.48/spf1020/native/comctl.py +62 -0
- spf1020-1.0.48/spf1020/native/gdi.py +323 -0
- spf1020-1.0.48/spf1020/native/gdiplus.py +143 -0
- spf1020-1.0.48/spf1020/native/uxtheme.py +19 -0
- spf1020-1.0.48/spf1020/native/win32.py +1051 -0
- spf1020-1.0.48/spf1020/settings.py +87 -0
- spf1020-1.0.48/spf1020/shell.py +47 -0
- spf1020-1.0.48/spf1020/splash.py +94 -0
- spf1020-1.0.48/spf1020/taskbar.py +230 -0
- spf1020-1.0.48/spf1020/theme/__init__.py +33 -0
- spf1020-1.0.48/spf1020/theme/apply.py +52 -0
- spf1020-1.0.48/spf1020/theme/colors.py +141 -0
- spf1020-1.0.48/spf1020/theme/switcher.py +153 -0
- spf1020-1.0.48/spf1020/tooltip.py +161 -0
- spf1020-1.0.48/spf1020/tray.py +236 -0
- spf1020-1.0.48/spf1020/ui_bridge.py +118 -0
- spf1020-1.0.48/spf1020/validation.py +52 -0
- spf1020-1.0.48/spf1020/widgets/__init__.py +73 -0
- spf1020-1.0.48/spf1020/widgets/app_header.py +171 -0
- spf1020-1.0.48/spf1020/widgets/base.py +125 -0
- spf1020-1.0.48/spf1020/widgets/button.py +105 -0
- spf1020-1.0.48/spf1020/widgets/card.py +18 -0
- spf1020-1.0.48/spf1020/widgets/checkbox.py +55 -0
- spf1020-1.0.48/spf1020/widgets/date_picker.py +108 -0
- spf1020-1.0.48/spf1020/widgets/divider.py +101 -0
- spf1020-1.0.48/spf1020/widgets/dropdown.py +82 -0
- spf1020-1.0.48/spf1020/widgets/float_field.py +48 -0
- spf1020-1.0.48/spf1020/widgets/groupbox.py +216 -0
- spf1020-1.0.48/spf1020/widgets/imageview.py +199 -0
- spf1020-1.0.48/spf1020/widgets/input_style.py +44 -0
- spf1020-1.0.48/spf1020/widgets/item_list.py +126 -0
- spf1020-1.0.48/spf1020/widgets/label.py +139 -0
- spf1020-1.0.48/spf1020/widgets/listbox.py +111 -0
- spf1020-1.0.48/spf1020/widgets/loading.py +55 -0
- spf1020-1.0.48/spf1020/widgets/logview.py +97 -0
- spf1020-1.0.48/spf1020/widgets/preview_pane.py +70 -0
- spf1020-1.0.48/spf1020/widgets/progress.py +123 -0
- spf1020-1.0.48/spf1020/widgets/radio.py +110 -0
- spf1020-1.0.48/spf1020/widgets/scroll_pane.py +383 -0
- spf1020-1.0.48/spf1020/widgets/segment_bar.py +75 -0
- spf1020-1.0.48/spf1020/widgets/slider.py +59 -0
- spf1020-1.0.48/spf1020/widgets/spin.py +163 -0
- spf1020-1.0.48/spf1020/widgets/statusline.py +42 -0
- spf1020-1.0.48/spf1020/widgets/tableview.py +839 -0
- spf1020-1.0.48/spf1020/widgets/tabs.py +157 -0
- spf1020-1.0.48/spf1020/widgets/textarea.py +59 -0
- spf1020-1.0.48/spf1020/widgets/textbox.py +46 -0
- spf1020-1.0.48/spf1020/widgets/thumbnail_grid.py +284 -0
- spf1020-1.0.48/spf1020/widgets/toolbar.py +71 -0
- spf1020-1.0.48/spf1020/widgets/treeview.py +145 -0
- spf1020-1.0.48/spf1020/window.py +827 -0
- spf1020-1.0.48/spf1020/window_chrome.py +172 -0
- spf1020-1.0.48/spf1020/window_state.py +47 -0
- spf1020-1.0.48/spf1020.egg-info/PKG-INFO +84 -0
- spf1020-1.0.48/spf1020.egg-info/SOURCES.txt +96 -0
- spf1020-1.0.48/spf1020.egg-info/dependency_links.txt +1 -0
- spf1020-1.0.48/spf1020.egg-info/top_level.txt +1 -0
spf1020-1.0.48/EULA.txt
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
SPF1020 — END USER LICENSE AGREEMENT (EULA)
|
|
2
|
+
Version 1.1 — October 2026
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 Giakou Silverfall. All rights reserved.
|
|
5
|
+
|
|
6
|
+
This End User License Agreement ("Agreement") applies to SPF1020 (Windows UI
|
|
7
|
+
framework), including source code, binaries, documentation, examples, and
|
|
8
|
+
associated branding (collectively, the "Software").
|
|
9
|
+
|
|
10
|
+
BY USING, COPYING, OR DISTRIBUTING THE SOFTWARE, YOU AGREE TO THIS AGREEMENT.
|
|
11
|
+
IF YOU DO NOT AGREE, DO NOT USE OR DISTRIBUTE THE SOFTWARE.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
1. OWNERSHIP AND RESERVED RIGHTS
|
|
15
|
+
|
|
16
|
+
The Software is owned by Giakou Silverfall and is protected by copyright,
|
|
17
|
+
trademark, and other laws. Giakou Silverfall is the sole author and copyright
|
|
18
|
+
holder of SPF1020.
|
|
19
|
+
|
|
20
|
+
No ownership, copyright, patent, trademark, or other intellectual property
|
|
21
|
+
right in the Software is transferred to you. All rights not expressly granted
|
|
22
|
+
here are reserved by Giakou Silverfall.
|
|
23
|
+
|
|
24
|
+
The names "SPF1020", "Sofia's Python Framework", and related logos or branding
|
|
25
|
+
identify Giakou Silverfall's product. You may not use them in a way that
|
|
26
|
+
suggests you own or originated the Software.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
2. FREE USE (NO CHARGE)
|
|
30
|
+
|
|
31
|
+
Giakou Silverfall grants you a royalty-free license to use the Software as
|
|
32
|
+
described in this Agreement. You are not required to pay a fee to use or
|
|
33
|
+
redistribute unmodified copies in accordance with Section 3.
|
|
34
|
+
|
|
35
|
+
"Free to use" does not mean the Software is open source, public domain, or
|
|
36
|
+
owned by you or the community. It remains proprietary to Giakou Silverfall.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
3. PERMITTED USE
|
|
40
|
+
|
|
41
|
+
You may:
|
|
42
|
+
|
|
43
|
+
(a) Use the Software on any number of computers for any lawful purpose,
|
|
44
|
+
including building, selling, or giving away your own applications.
|
|
45
|
+
|
|
46
|
+
(b) Distribute unmodified copies of the Software (including via source
|
|
47
|
+
repositories, package indexes such as PyPI, or bundled with your
|
|
48
|
+
application), provided that each copy includes this Agreement (or a
|
|
49
|
+
clear reference and link to it), all copyright notices remain intact,
|
|
50
|
+
and recipients are informed that SPF1020 is owned by Giakou Silverfall.
|
|
51
|
+
|
|
52
|
+
(c) Bundle unmodified SPF1020 with an application you distribute, as long as
|
|
53
|
+
recipients are not misled about who owns SPF1020 and your application
|
|
54
|
+
is clearly identified as separate from SPF1020.
|
|
55
|
+
|
|
56
|
+
(d) Make changes to the Software solely for your private use on your own
|
|
57
|
+
systems, without distributing those changes, subject to Section 4.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
4. MODIFICATIONS AND DERIVATIVE WORKS OF SPF1020
|
|
61
|
+
|
|
62
|
+
If you modify the Software (including forks, patches, or combined works that
|
|
63
|
+
embed or adapt substantial parts of SPF1020):
|
|
64
|
+
|
|
65
|
+
(a) Giakou Silverfall retains all ownership of SPF1020 and the original
|
|
66
|
+
Software. Your changes do not make the Software, or SPF1020 as a whole,
|
|
67
|
+
yours.
|
|
68
|
+
|
|
69
|
+
(b) You may not claim that you created, authored, or own SPF1020, the
|
|
70
|
+
framework as a whole, or Giakou Silverfall's original code, even if you
|
|
71
|
+
modified some files.
|
|
72
|
+
|
|
73
|
+
(c) You may not distribute modified SPF1020 (or any part presented as a
|
|
74
|
+
framework, library, or substitute for SPF1020) under your name, your
|
|
75
|
+
brand, or a name that suggests you originated it.
|
|
76
|
+
|
|
77
|
+
(d) You may not relicense the Software (original or modified) under open
|
|
78
|
+
source terms (such as MIT, GPL, or Apache) or present it as open source
|
|
79
|
+
or public domain.
|
|
80
|
+
|
|
81
|
+
(e) You may not remove, hide, or alter copyright notices, this Agreement,
|
|
82
|
+
license text, version identifiers, or branding that identifies SPF1020
|
|
83
|
+
and Giakou Silverfall.
|
|
84
|
+
|
|
85
|
+
(f) You may not publish modified SPF1020 to package indexes, app stores, or
|
|
86
|
+
download sites under another package or product name in a manner that
|
|
87
|
+
could confuse users about authorship or ownership.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
5. PROHIBITED CONDUCT (MISREPRESENTATION AND "STEALING")
|
|
91
|
+
|
|
92
|
+
You may not:
|
|
93
|
+
|
|
94
|
+
(a) Pass off SPF1020, or substantially similar code derived from it, as your
|
|
95
|
+
own original work, product, or framework.
|
|
96
|
+
|
|
97
|
+
(b) Strip attribution and redistribute the Software or derivatives.
|
|
98
|
+
|
|
99
|
+
(c) Use SPF1020's name, reputation, or documentation to imply endorsement of
|
|
100
|
+
your derivative without permission.
|
|
101
|
+
|
|
102
|
+
(d) Grant sublicenses or rights in the Software that contradict this Agreement.
|
|
103
|
+
|
|
104
|
+
(e) Use the Software in violation of applicable law.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
6. YOUR APPLICATIONS (SEPARATE FROM SPF1020)
|
|
108
|
+
|
|
109
|
+
Software that you write yourself using SPF1020 (your "Application") remains
|
|
110
|
+
yours. You may license and distribute your Application on your own terms,
|
|
111
|
+
including for profit.
|
|
112
|
+
|
|
113
|
+
This Agreement does not claim ownership of your Application's original code,
|
|
114
|
+
assets, or branding. It only governs the SPF1020 components you use or bundle.
|
|
115
|
+
|
|
116
|
+
If you distribute your Application with SPF1020 included, the copy of SPF1020
|
|
117
|
+
must stay unmodified and must remain subject to this Agreement. Your About
|
|
118
|
+
dialog, documentation, or notices should not state or imply that you own
|
|
119
|
+
SPF1020; you may credit Giakou Silverfall and SPF1020 as the UI framework used.
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
7. ATTRIBUTION
|
|
123
|
+
|
|
124
|
+
When you redistribute unmodified SPF1020 or bundle it with an Application, you
|
|
125
|
+
should include visible credit where reasonable (for example: About dialog,
|
|
126
|
+
README, or "Built with SPF1020 by Giakou Silverfall"). At minimum, copyright
|
|
127
|
+
notices and this Agreement must remain intact as required in Section 3.
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
8. NO WARRANTY
|
|
131
|
+
|
|
132
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
133
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
134
|
+
FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
9. LIMITATION OF LIABILITY
|
|
138
|
+
|
|
139
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE COPYRIGHT HOLDER SHALL NOT BE
|
|
140
|
+
LIABLE FOR ANY DAMAGES ARISING FROM USE OF THE SOFTWARE.
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
10. TERMINATION
|
|
144
|
+
|
|
145
|
+
Your rights under this Agreement end automatically if you breach it. Sections
|
|
146
|
+
1, 4, 5, 6 (as to SPF1020), 7, 8, 9, and 11 survive termination.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
11. GENERAL
|
|
150
|
+
|
|
151
|
+
This Agreement is the entire agreement regarding SPF1020. If a court finds any
|
|
152
|
+
part unenforceable, the rest remains in effect.
|
|
153
|
+
|
|
154
|
+
This Agreement is not legal advice. For commercial or legal questions, consult
|
|
155
|
+
a qualified attorney in your jurisdiction.
|
|
156
|
+
|
|
157
|
+
Questions about licensing: Giakou Silverfall — giakou_silverfall@hotmail.com
|
spf1020-1.0.48/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
SPF1020 — License summary (not a substitute for EULA.txt)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Giakou Silverfall. All rights reserved.
|
|
4
|
+
|
|
5
|
+
FREE TO USE
|
|
6
|
+
You may use SPF1020 at no charge for any lawful purpose, including commercial
|
|
7
|
+
applications you build with it.
|
|
8
|
+
|
|
9
|
+
YOU MAY
|
|
10
|
+
• Use and redistribute unmodified SPF1020 with copyright and EULA intact
|
|
11
|
+
• Bundle unmodified SPF1020 with your application
|
|
12
|
+
• Own and license your own application code on your terms
|
|
13
|
+
|
|
14
|
+
YOU MAY NOT
|
|
15
|
+
• Claim that you created, authored, or own SPF1020
|
|
16
|
+
• Remove or alter copyright, license, or branding notices
|
|
17
|
+
• Distribute modified SPF1020 as your own framework, product, or replacement
|
|
18
|
+
• Relicense SPF1020 (original or modified) as open source or public domain
|
|
19
|
+
• Use the SPF1020 name or branding to imply you originated the framework
|
|
20
|
+
|
|
21
|
+
MODIFICATIONS
|
|
22
|
+
Private changes on your own machines are allowed; you still do not own SPF1020.
|
|
23
|
+
Public distribution of modified SPF1020 as a framework is not allowed.
|
|
24
|
+
|
|
25
|
+
Full legally binding terms: EULA.txt in this repository.
|
|
26
|
+
|
|
27
|
+
Licensing contact: Giakou Silverfall — giakou_silverfall@hotmail.com
|
|
28
|
+
|
|
29
|
+
Third-party components: see THIRD_PARTY_NOTICES.txt
|
spf1020-1.0.48/PKG-INFO
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: spf1020
|
|
3
|
+
Version: 1.0.48
|
|
4
|
+
Summary: Sofia's Python Framework — Windows desktop UI (Giakou Silverfall). Free to use; proprietary — see EULA.txt.
|
|
5
|
+
Author: Giakou Silverfall
|
|
6
|
+
License: Proprietary — see EULA.txt; free to use, all rights reserved by Giakou Silverfall
|
|
7
|
+
Keywords: gui,win32,windows,desktop,ui,framework
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Win32 (MS Windows)
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: Other/Proprietary License
|
|
12
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
19
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
# SPF1020
|
|
26
|
+
|
|
27
|
+
**Sofia's Python Framework** — a proprietary, **Windows-only** desktop UI library for Python 3.10+.
|
|
28
|
+
|
|
29
|
+
Built with **ctypes + Win32** (no PyQt, no Qt binaries). **Free to use** for your apps; framework copyright and terms remain with **Giakou Silverfall**. See **`EULA.txt`** in the package.
|
|
30
|
+
|
|
31
|
+
## Requirements
|
|
32
|
+
|
|
33
|
+
- Windows 10 or later
|
|
34
|
+
- Python 3.10+
|
|
35
|
+
|
|
36
|
+
## Install (when published on PyPI)
|
|
37
|
+
|
|
38
|
+
```bat
|
|
39
|
+
pip install spf1020
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
From a source checkout:
|
|
43
|
+
|
|
44
|
+
```bat
|
|
45
|
+
pip install -e .
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Minimal example
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from spf1020 import Application, LayoutRoot, Window, VBox, Label, Button
|
|
52
|
+
|
|
53
|
+
app = Application()
|
|
54
|
+
window = Window(app, title="Hello SPF1020", width=480, height=320)
|
|
55
|
+
|
|
56
|
+
root = VBox(padding=16, spacing=12)
|
|
57
|
+
root.add(Label(window, 0, 0, 200, 24, text="Hello from Win32."))
|
|
58
|
+
root.add(
|
|
59
|
+
Button(window, 0, 0, 120, 32, text="Close", on_click=window.close),
|
|
60
|
+
height=32,
|
|
61
|
+
)
|
|
62
|
+
LayoutRoot(window, root)
|
|
63
|
+
app.run()
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## What you get
|
|
67
|
+
|
|
68
|
+
- Layouts (`VBox`, `HBox`, `Grid`, `SplitPane`, `ScrollPane`, …)
|
|
69
|
+
- Widgets (buttons, fields, tables, trees, tabs, images, progress, …)
|
|
70
|
+
- Dialogs (file/folder pickers, messages, color/font, input)
|
|
71
|
+
- Themes, menus, shortcuts (`Action`), system tray, taskbar progress
|
|
72
|
+
- Thread-safe UI updates (`UiBridge`)
|
|
73
|
+
|
|
74
|
+
Demos and reference shells live in the full repository under `examples/` (not all are shipped inside the wheel).
|
|
75
|
+
|
|
76
|
+
## License
|
|
77
|
+
|
|
78
|
+
**Proprietary — not open source.** Use is governed by **`EULA.txt`**. Summary: **`LICENSE`** in the repository root.
|
|
79
|
+
|
|
80
|
+
You may build and distribute **your own closed-source applications** with SPF1020. You may **not** claim ownership of SPF1020 or redistribute **modified** SPF1020 as your own framework.
|
|
81
|
+
|
|
82
|
+
## Publishing this package
|
|
83
|
+
|
|
84
|
+
Maintainers: see **`docs/distribution_checklist.md`** (PyPI section) and **`docs/licensing.md`**.
|
spf1020-1.0.48/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# SPF1020
|
|
2
|
+
|
|
3
|
+
**Sofia's Python Framework** — a proprietary, **Windows-only** desktop UI library for Python 3.10+.
|
|
4
|
+
|
|
5
|
+
Built with **ctypes + Win32** (no PyQt, no Qt binaries). **Free to use** for your apps; framework copyright and terms remain with **Giakou Silverfall**. See **`EULA.txt`** in the package.
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
- Windows 10 or later
|
|
10
|
+
- Python 3.10+
|
|
11
|
+
|
|
12
|
+
## Install (when published on PyPI)
|
|
13
|
+
|
|
14
|
+
```bat
|
|
15
|
+
pip install spf1020
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
From a source checkout:
|
|
19
|
+
|
|
20
|
+
```bat
|
|
21
|
+
pip install -e .
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Minimal example
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from spf1020 import Application, LayoutRoot, Window, VBox, Label, Button
|
|
28
|
+
|
|
29
|
+
app = Application()
|
|
30
|
+
window = Window(app, title="Hello SPF1020", width=480, height=320)
|
|
31
|
+
|
|
32
|
+
root = VBox(padding=16, spacing=12)
|
|
33
|
+
root.add(Label(window, 0, 0, 200, 24, text="Hello from Win32."))
|
|
34
|
+
root.add(
|
|
35
|
+
Button(window, 0, 0, 120, 32, text="Close", on_click=window.close),
|
|
36
|
+
height=32,
|
|
37
|
+
)
|
|
38
|
+
LayoutRoot(window, root)
|
|
39
|
+
app.run()
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## What you get
|
|
43
|
+
|
|
44
|
+
- Layouts (`VBox`, `HBox`, `Grid`, `SplitPane`, `ScrollPane`, …)
|
|
45
|
+
- Widgets (buttons, fields, tables, trees, tabs, images, progress, …)
|
|
46
|
+
- Dialogs (file/folder pickers, messages, color/font, input)
|
|
47
|
+
- Themes, menus, shortcuts (`Action`), system tray, taskbar progress
|
|
48
|
+
- Thread-safe UI updates (`UiBridge`)
|
|
49
|
+
|
|
50
|
+
Demos and reference shells live in the full repository under `examples/` (not all are shipped inside the wheel).
|
|
51
|
+
|
|
52
|
+
## License
|
|
53
|
+
|
|
54
|
+
**Proprietary — not open source.** Use is governed by **`EULA.txt`**. Summary: **`LICENSE`** in the repository root.
|
|
55
|
+
|
|
56
|
+
You may build and distribute **your own closed-source applications** with SPF1020. You may **not** claim ownership of SPF1020 or redistribute **modified** SPF1020 as your own framework.
|
|
57
|
+
|
|
58
|
+
## Publishing this package
|
|
59
|
+
|
|
60
|
+
Maintainers: see **`docs/distribution_checklist.md`** (PyPI section) and **`docs/licensing.md`**.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "spf1020"
|
|
3
|
+
version = "1.0.48"
|
|
4
|
+
description = "Sofia's Python Framework — Windows desktop UI (Giakou Silverfall). Free to use; proprietary — see EULA.txt."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.10"
|
|
7
|
+
authors = [{ name = "Giakou Silverfall" }]
|
|
8
|
+
license = { text = "Proprietary — see EULA.txt; free to use, all rights reserved by Giakou Silverfall" }
|
|
9
|
+
keywords = ["gui", "win32", "windows", "desktop", "ui", "framework"]
|
|
10
|
+
classifiers = [
|
|
11
|
+
"Development Status :: 4 - Beta",
|
|
12
|
+
"Environment :: Win32 (MS Windows)",
|
|
13
|
+
"Intended Audience :: Developers",
|
|
14
|
+
"License :: Other/Proprietary License",
|
|
15
|
+
"Operating System :: Microsoft :: Windows",
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Programming Language :: Python :: 3.10",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
"Programming Language :: Python :: 3.13",
|
|
21
|
+
"Topic :: Software Development :: Libraries",
|
|
22
|
+
"Topic :: Software Development :: User Interfaces",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[build-system]
|
|
26
|
+
requires = ["setuptools>=61"]
|
|
27
|
+
build-backend = "setuptools.build_meta"
|
|
28
|
+
|
|
29
|
+
[tool.setuptools.packages.find]
|
|
30
|
+
include = ["spf1020*"]
|
|
31
|
+
|
|
32
|
+
[tool.setuptools.package-data]
|
|
33
|
+
spf1020 = ["EULA.txt"]
|
spf1020-1.0.48/setup.cfg
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
SPF1020 — END USER LICENSE AGREEMENT (EULA)
|
|
2
|
+
Version 1.1 — October 2026
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 Giakou Silverfall. All rights reserved.
|
|
5
|
+
|
|
6
|
+
This End User License Agreement ("Agreement") applies to SPF1020 (Windows UI
|
|
7
|
+
framework), including source code, binaries, documentation, examples, and
|
|
8
|
+
associated branding (collectively, the "Software").
|
|
9
|
+
|
|
10
|
+
BY USING, COPYING, OR DISTRIBUTING THE SOFTWARE, YOU AGREE TO THIS AGREEMENT.
|
|
11
|
+
IF YOU DO NOT AGREE, DO NOT USE OR DISTRIBUTE THE SOFTWARE.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
1. OWNERSHIP AND RESERVED RIGHTS
|
|
15
|
+
|
|
16
|
+
The Software is owned by Giakou Silverfall and is protected by copyright,
|
|
17
|
+
trademark, and other laws. Giakou Silverfall is the sole author and copyright
|
|
18
|
+
holder of SPF1020.
|
|
19
|
+
|
|
20
|
+
No ownership, copyright, patent, trademark, or other intellectual property
|
|
21
|
+
right in the Software is transferred to you. All rights not expressly granted
|
|
22
|
+
here are reserved by Giakou Silverfall.
|
|
23
|
+
|
|
24
|
+
The names "SPF1020", "Sofia's Python Framework", and related logos or branding
|
|
25
|
+
identify Giakou Silverfall's product. You may not use them in a way that
|
|
26
|
+
suggests you own or originated the Software.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
2. FREE USE (NO CHARGE)
|
|
30
|
+
|
|
31
|
+
Giakou Silverfall grants you a royalty-free license to use the Software as
|
|
32
|
+
described in this Agreement. You are not required to pay a fee to use or
|
|
33
|
+
redistribute unmodified copies in accordance with Section 3.
|
|
34
|
+
|
|
35
|
+
"Free to use" does not mean the Software is open source, public domain, or
|
|
36
|
+
owned by you or the community. It remains proprietary to Giakou Silverfall.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
3. PERMITTED USE
|
|
40
|
+
|
|
41
|
+
You may:
|
|
42
|
+
|
|
43
|
+
(a) Use the Software on any number of computers for any lawful purpose,
|
|
44
|
+
including building, selling, or giving away your own applications.
|
|
45
|
+
|
|
46
|
+
(b) Distribute unmodified copies of the Software (including via source
|
|
47
|
+
repositories, package indexes such as PyPI, or bundled with your
|
|
48
|
+
application), provided that each copy includes this Agreement (or a
|
|
49
|
+
clear reference and link to it), all copyright notices remain intact,
|
|
50
|
+
and recipients are informed that SPF1020 is owned by Giakou Silverfall.
|
|
51
|
+
|
|
52
|
+
(c) Bundle unmodified SPF1020 with an application you distribute, as long as
|
|
53
|
+
recipients are not misled about who owns SPF1020 and your application
|
|
54
|
+
is clearly identified as separate from SPF1020.
|
|
55
|
+
|
|
56
|
+
(d) Make changes to the Software solely for your private use on your own
|
|
57
|
+
systems, without distributing those changes, subject to Section 4.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
4. MODIFICATIONS AND DERIVATIVE WORKS OF SPF1020
|
|
61
|
+
|
|
62
|
+
If you modify the Software (including forks, patches, or combined works that
|
|
63
|
+
embed or adapt substantial parts of SPF1020):
|
|
64
|
+
|
|
65
|
+
(a) Giakou Silverfall retains all ownership of SPF1020 and the original
|
|
66
|
+
Software. Your changes do not make the Software, or SPF1020 as a whole,
|
|
67
|
+
yours.
|
|
68
|
+
|
|
69
|
+
(b) You may not claim that you created, authored, or own SPF1020, the
|
|
70
|
+
framework as a whole, or Giakou Silverfall's original code, even if you
|
|
71
|
+
modified some files.
|
|
72
|
+
|
|
73
|
+
(c) You may not distribute modified SPF1020 (or any part presented as a
|
|
74
|
+
framework, library, or substitute for SPF1020) under your name, your
|
|
75
|
+
brand, or a name that suggests you originated it.
|
|
76
|
+
|
|
77
|
+
(d) You may not relicense the Software (original or modified) under open
|
|
78
|
+
source terms (such as MIT, GPL, or Apache) or present it as open source
|
|
79
|
+
or public domain.
|
|
80
|
+
|
|
81
|
+
(e) You may not remove, hide, or alter copyright notices, this Agreement,
|
|
82
|
+
license text, version identifiers, or branding that identifies SPF1020
|
|
83
|
+
and Giakou Silverfall.
|
|
84
|
+
|
|
85
|
+
(f) You may not publish modified SPF1020 to package indexes, app stores, or
|
|
86
|
+
download sites under another package or product name in a manner that
|
|
87
|
+
could confuse users about authorship or ownership.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
5. PROHIBITED CONDUCT (MISREPRESENTATION AND "STEALING")
|
|
91
|
+
|
|
92
|
+
You may not:
|
|
93
|
+
|
|
94
|
+
(a) Pass off SPF1020, or substantially similar code derived from it, as your
|
|
95
|
+
own original work, product, or framework.
|
|
96
|
+
|
|
97
|
+
(b) Strip attribution and redistribute the Software or derivatives.
|
|
98
|
+
|
|
99
|
+
(c) Use SPF1020's name, reputation, or documentation to imply endorsement of
|
|
100
|
+
your derivative without permission.
|
|
101
|
+
|
|
102
|
+
(d) Grant sublicenses or rights in the Software that contradict this Agreement.
|
|
103
|
+
|
|
104
|
+
(e) Use the Software in violation of applicable law.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
6. YOUR APPLICATIONS (SEPARATE FROM SPF1020)
|
|
108
|
+
|
|
109
|
+
Software that you write yourself using SPF1020 (your "Application") remains
|
|
110
|
+
yours. You may license and distribute your Application on your own terms,
|
|
111
|
+
including for profit.
|
|
112
|
+
|
|
113
|
+
This Agreement does not claim ownership of your Application's original code,
|
|
114
|
+
assets, or branding. It only governs the SPF1020 components you use or bundle.
|
|
115
|
+
|
|
116
|
+
If you distribute your Application with SPF1020 included, the copy of SPF1020
|
|
117
|
+
must stay unmodified and must remain subject to this Agreement. Your About
|
|
118
|
+
dialog, documentation, or notices should not state or imply that you own
|
|
119
|
+
SPF1020; you may credit Giakou Silverfall and SPF1020 as the UI framework used.
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
7. ATTRIBUTION
|
|
123
|
+
|
|
124
|
+
When you redistribute unmodified SPF1020 or bundle it with an Application, you
|
|
125
|
+
should include visible credit where reasonable (for example: About dialog,
|
|
126
|
+
README, or "Built with SPF1020 by Giakou Silverfall"). At minimum, copyright
|
|
127
|
+
notices and this Agreement must remain intact as required in Section 3.
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
8. NO WARRANTY
|
|
131
|
+
|
|
132
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
133
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
134
|
+
FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
9. LIMITATION OF LIABILITY
|
|
138
|
+
|
|
139
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE COPYRIGHT HOLDER SHALL NOT BE
|
|
140
|
+
LIABLE FOR ANY DAMAGES ARISING FROM USE OF THE SOFTWARE.
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
10. TERMINATION
|
|
144
|
+
|
|
145
|
+
Your rights under this Agreement end automatically if you breach it. Sections
|
|
146
|
+
1, 4, 5, 6 (as to SPF1020), 7, 8, 9, and 11 survive termination.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
11. GENERAL
|
|
150
|
+
|
|
151
|
+
This Agreement is the entire agreement regarding SPF1020. If a court finds any
|
|
152
|
+
part unenforceable, the rest remains in effect.
|
|
153
|
+
|
|
154
|
+
This Agreement is not legal advice. For commercial or legal questions, consult
|
|
155
|
+
a qualified attorney in your jurisdiction.
|
|
156
|
+
|
|
157
|
+
Questions about licensing: Giakou Silverfall — giakou_silverfall@hotmail.com
|