├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── LICENSE
├── README.md
├── images
├── linux.png
├── window.png
└── windows.png
├── requirements.txt
├── src
├── __pycache__
│ └── window_ui.cpython-311.pyc
├── compiler
│ ├── compile.exe
│ └── unpack.exe
├── data
│ ├── context_menus.json
│ ├── default
│ │ ├── analog
│ │ │ ├── hourHand.png
│ │ │ ├── minuteHand.png
│ │ │ └── secondHand.png
│ │ ├── defaultImage.png
│ │ └── numbers
│ │ │ ├── 0.png
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ ├── 4.png
│ │ │ ├── 5.png
│ │ │ ├── 6.png
│ │ │ ├── 7.png
│ │ │ ├── 8.png
│ │ │ └── 9.png
│ ├── devices.json
│ ├── fprj
│ │ └── propertiesFprj.json
│ ├── gmf
│ │ └── propertiesGMF.json
│ ├── preview_data.json
│ ├── preview_sizes.json
│ ├── setting_items.json
│ ├── sources.json
│ └── stackWidgetAnim.json
├── locales
│ ├── en
│ │ ├── CONFIG.ini
│ │ └── LC_MESSAGES
│ │ │ ├── main.mo
│ │ │ ├── main.po
│ │ │ ├── properties.mo
│ │ │ ├── properties.po
│ │ │ ├── window.mo
│ │ │ └── window.po
│ ├── es
│ │ ├── CONFIG.ini
│ │ └── LC_MESSAGES
│ │ │ ├── main.mo
│ │ │ ├── main.po
│ │ │ ├── properties.mo
│ │ │ ├── properties.po
│ │ │ ├── window.mo
│ │ │ └── window.po
│ ├── it
│ │ ├── CONFIG.ini
│ │ └── LC_MESSAGES
│ │ │ ├── main.mo
│ │ │ ├── main.po
│ │ │ ├── properties.mo
│ │ │ ├── properties.po
│ │ │ ├── window.mo
│ │ │ └── window.po
│ ├── main.pot
│ ├── properties.pot
│ ├── pt
│ │ ├── CONFIG.ini
│ │ └── LC_MESSAGES
│ │ │ ├── main.mo
│ │ │ ├── main.po
│ │ │ ├── properties.mo
│ │ │ ├── properties.po
│ │ │ ├── window.mo
│ │ │ └── window.po
│ ├── ru
│ │ ├── CONFIG.ini
│ │ └── LC_MESSAGES
│ │ │ ├── main.mo
│ │ │ ├── main.po
│ │ │ ├── properties.mo
│ │ │ ├── properties.po
│ │ │ ├── window.mo
│ │ │ └── window.po
│ ├── uk
│ │ ├── CONFIG.ini
│ │ └── LC_MESSAGES
│ │ │ ├── main.mo
│ │ │ ├── main.po
│ │ │ ├── properties.mo
│ │ │ ├── properties.po
│ │ │ ├── window.mo
│ │ │ └── window.po
│ ├── window.pot
│ └── zh
│ │ ├── CONFIG.ini
│ │ └── LC_MESSAGES
│ │ ├── main.mo
│ │ ├── main.po
│ │ ├── properties.mo
│ │ ├── properties.po
│ │ ├── window.mo
│ │ └── window.po
├── main.py
├── plugins
│ └── libs
│ │ └── plugin_api
│ │ ├── __init__.py
│ │ └── main.py
├── resources
│ ├── Inter.ttf
│ ├── MiCreate.png
│ ├── MiCreate128x128.png
│ ├── MiCreate48x48.png
│ ├── MiCreate64x64.png
│ ├── MiFaceStudioInstaller.ico
│ ├── __pycache__
│ │ └── icons_rc.cpython-311.pyc
│ ├── checkbox_checked.svg
│ ├── checkbox_checked_disabled.svg
│ ├── checkbox_partial.svg
│ ├── checkbox_partial_disabled.svg
│ ├── checkbox_unchecked.svg
│ ├── checkbox_unchecked_disabled.svg
│ ├── close_dark.png
│ ├── close_dark.svg
│ ├── close_hover_dark.svg
│ ├── close_hover_light.svg
│ ├── close_light.png
│ ├── close_light.svg
│ ├── down-arrow.png
│ ├── herta.gif
│ ├── herta.wav
│ ├── icon.ico
│ ├── mb8.png
│ ├── radio_checked.svg
│ ├── radio_checked_disabled.svg
│ ├── radio_unchecked.svg
│ ├── radio_unchecked_disabled.svg
│ ├── resources.qrc
│ ├── resources_rc.py
│ ├── splash.png
│ ├── up-arrow.png
│ ├── window_dark.png
│ └── window_light.png
├── themes
│ └── Default
│ │ ├── config.ini
│ │ ├── data
│ │ ├── Dark
│ │ │ ├── colorScheme.json
│ │ │ └── style.qss
│ │ └── Light
│ │ │ ├── colorScheme.json
│ │ │ └── style.qss
│ │ └── icons
│ │ ├── Dark
│ │ ├── actions
│ │ │ └── 24
│ │ │ │ ├── align-horizontal-center.svg
│ │ │ │ ├── align-horizontal-left.svg
│ │ │ │ ├── align-horizontal-right.svg
│ │ │ │ ├── align-vertical-bottom.svg
│ │ │ │ ├── align-vertical-center.svg
│ │ │ │ ├── align-vertical-top.svg
│ │ │ │ ├── application-back.svg
│ │ │ │ ├── application-more.svg
│ │ │ │ ├── document-new.svg
│ │ │ │ ├── document-open.svg
│ │ │ │ ├── document-save.svg
│ │ │ │ ├── edit-copy.svg
│ │ │ │ ├── edit-cut.svg
│ │ │ │ ├── edit-delete.svg
│ │ │ │ ├── edit-paste.svg
│ │ │ │ ├── edit-redo.svg
│ │ │ │ ├── edit-undo.svg
│ │ │ │ ├── folder.svg
│ │ │ │ ├── go-bottom.svg
│ │ │ │ ├── go-top.svg
│ │ │ │ ├── insert-image.svg
│ │ │ │ ├── insert-object.svg
│ │ │ │ ├── media-playback-pause.svg
│ │ │ │ ├── media-playback-start.svg
│ │ │ │ ├── preferences-desktop.svg
│ │ │ │ ├── project-build.svg
│ │ │ │ ├── project-config.svg
│ │ │ │ ├── view-refresh.svg
│ │ │ │ ├── watchface-aod.svg
│ │ │ │ ├── zoom-in.svg
│ │ │ │ └── zoom-out.svg
│ │ ├── index.theme
│ │ └── mimetypes
│ │ │ └── 24
│ │ │ ├── application-logo.svg
│ │ │ ├── application-plugin.svg
│ │ │ ├── device-watch.svg
│ │ │ ├── project-icon.svg
│ │ │ ├── project-source.svg
│ │ │ ├── widget-analogdisplay.svg
│ │ │ ├── widget-arcprogress.svg
│ │ │ ├── widget-container.svg
│ │ │ ├── widget-digitalnumber.svg
│ │ │ ├── widget-image.svg
│ │ │ ├── widget-imagelist.svg
│ │ │ └── widget-pointer.svg
│ │ └── Light
│ │ ├── actions
│ │ └── 24
│ │ │ ├── align-horizontal-center.svg
│ │ │ ├── align-horizontal-left.svg
│ │ │ ├── align-horizontal-right.svg
│ │ │ ├── align-vertical-bottom.svg
│ │ │ ├── align-vertical-center.svg
│ │ │ ├── align-vertical-top.svg
│ │ │ ├── application-back.svg
│ │ │ ├── application-more.svg
│ │ │ ├── document-new.svg
│ │ │ ├── document-open.svg
│ │ │ ├── document-save.svg
│ │ │ ├── edit-copy.svg
│ │ │ ├── edit-cut.svg
│ │ │ ├── edit-delete.svg
│ │ │ ├── edit-paste.svg
│ │ │ ├── edit-redo.svg
│ │ │ ├── edit-undo.svg
│ │ │ ├── folder.svg
│ │ │ ├── go-bottom.svg
│ │ │ ├── go-top.svg
│ │ │ ├── insert-image.svg
│ │ │ ├── insert-object.svg
│ │ │ ├── media-playback-pause.svg
│ │ │ ├── media-playback-start.svg
│ │ │ ├── preferences-desktop.svg
│ │ │ ├── project-build.svg
│ │ │ ├── project-config.svg
│ │ │ ├── view-refresh.svg
│ │ │ ├── watchface-aod.svg
│ │ │ ├── zoom-in.svg
│ │ │ └── zoom-out.svg
│ │ ├── index.theme
│ │ └── mimetypes
│ │ └── 24
│ │ ├── application-logo.svg
│ │ ├── application-plugin.svg
│ │ ├── device-watch.svg
│ │ ├── project-icon.svg
│ │ ├── project-source.svg
│ │ ├── widget-analogdisplay.svg
│ │ ├── widget-arcprogress.svg
│ │ ├── widget-container.svg
│ │ ├── widget-digitalnumber.svg
│ │ ├── widget-image.svg
│ │ ├── widget-imagelist.svg
│ │ └── widget-pointer.svg
├── translate.py
├── utils
│ ├── binary.py
│ ├── data.py
│ ├── dialog.py
│ ├── exporter.py
│ ├── history.py
│ ├── menu.py
│ ├── plugin.py
│ ├── project.py
│ ├── theme.py
│ └── updater.py
├── widgets
│ ├── __pycache__
│ │ ├── canvas.cpython-311.pyc
│ │ └── properties.cpython-311.pyc
│ ├── canvas.py
│ ├── delegates.py
│ ├── editor.py
│ ├── explorer.py
│ ├── properties.py
│ └── stackedwidget.py
├── window.ui
├── window
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-311.pyc
│ │ └── __init__.cpython-312.pyc
│ ├── _rc
│ │ ├── __init__.py
│ │ ├── resource.py
│ │ └── title_bar
│ │ │ └── close.svg
│ ├── linux
│ │ ├── __init__.py
│ │ └── window_effect.py
│ ├── mac
│ │ ├── __init__.py
│ │ └── window_effect.py
│ ├── titlebar
│ │ ├── __init__.py
│ │ └── title_bar_buttons.py
│ ├── utils
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ ├── __init__.cpython-311.pyc
│ │ │ ├── __init__.cpython-312.pyc
│ │ │ ├── linux_utils.cpython-311.pyc
│ │ │ ├── mac_utils.cpython-311.pyc
│ │ │ ├── win32_utils.cpython-311.pyc
│ │ │ └── win32_utils.cpython-312.pyc
│ │ ├── linux_utils.py
│ │ ├── mac_utils.py
│ │ └── win32_utils.py
│ └── windows
│ │ ├── __init__.py
│ │ ├── c_structures.py
│ │ └── window_effect.py
└── window_ui.py
└── tools
└── plugin-toolkit.py
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Troubleshooting**
24 | - Log File/Error Message: [on Windows, log file is located at C:\Users\{username}\AppData\Local\Programs\Mi Create\data\app.log]
25 | - .fprj file
26 |
27 | **Screenshots**
28 | If applicable, add screenshots to help explain your problem.
29 |
30 | **Desktop (please complete the following information):**
31 | - OS: [e.g. Linux]
32 | - Version
33 |
34 | **Additional context**
35 | Add any other context about the problem here.
36 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | *.py,cover
50 | .hypothesis/
51 | .pytest_cache/
52 | cover/
53 |
54 | # Django stuff:
55 | *.log
56 | local_settings.py
57 | db.sqlite3
58 | db.sqlite3-journal
59 |
60 | # Flask stuff:
61 | instance/
62 | .webassets-cache
63 |
64 | # Scrapy stuff:
65 | .scrapy
66 |
67 | # Sphinx documentation
68 | docs/_build/
69 |
70 | # PyBuilder
71 | .pybuilder/
72 | target/
73 |
74 | # Jupyter Notebook
75 | .ipynb_checkpoints
76 |
77 | # IPython
78 | profile_default/
79 | ipython_config.py
80 |
81 | # pyenv
82 | # For a library or package, you might want to ignore these files since the code is
83 | # intended to run in multiple environments; otherwise, check them in:
84 | # .python-version
85 |
86 | # pipenv
87 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
88 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
89 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
90 | # install all needed dependencies.
91 | #Pipfile.lock
92 |
93 | # UV
94 | # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
95 | # This is especially recommended for binary packages to ensure reproducibility, and is more
96 | # commonly ignored for libraries.
97 | #uv.lock
98 |
99 | # poetry
100 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
101 | # This is especially recommended for binary packages to ensure reproducibility, and is more
102 | # commonly ignored for libraries.
103 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
104 | #poetry.lock
105 |
106 | # pdm
107 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
108 | #pdm.lock
109 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
110 | # in version control.
111 | # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
112 | .pdm.toml
113 | .pdm-python
114 | .pdm-build/
115 |
116 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
117 | __pypackages__/
118 |
119 | # Celery stuff
120 | celerybeat-schedule
121 | celerybeat.pid
122 |
123 | # SageMath parsed files
124 | *.sage.py
125 |
126 | # Environments
127 | .env
128 | .venv
129 | env/
130 | venv/
131 | ENV/
132 | env.bak/
133 | venv.bak/
134 |
135 | # Spyder project settings
136 | .spyderproject
137 | .spyproject
138 |
139 | # Rope project settings
140 | .ropeproject
141 |
142 | # mkdocs documentation
143 | /site
144 |
145 | # mypy
146 | .mypy_cache/
147 | .dmypy.json
148 | dmypy.json
149 |
150 | # Pyre type checker
151 | .pyre/
152 |
153 | # pytype static type analyzer
154 | .pytype/
155 |
156 | # Cython debug symbols
157 | cython_debug/
158 |
159 | # PyCharm
160 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
161 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
162 | # and can be added to the global gitignore or merged into this file. For a more nuclear
163 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
164 | #.idea/
165 |
166 | # PyPI configuration file
167 | .pypirc
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
Mi Create
3 | Unofficial watchface creator for Xiaomi Wearables. Compatible with all Xiaomi wearables made ~2021 and above
4 |
5 |
6 |
7 |
8 |
9 |
10 | 
11 |
12 | ## Features:
13 | - Simple & good looking
14 | - Easy to learn (especially for EasyFace users)
15 | - Support for .fprj projects
16 | - Experimental support for Chinese GMF (wfDef.json) projects
17 | - Quick AOD creation
18 | - Live watchface preview
19 | - Multilingual
20 |
21 | ## Installation:
22 |
23 | ### Windows
24 | Download the latest installer from the [releases](https://github.com/ooflet/Mi-Create/releases) tab. Please note only 64-bit versions of Windows 10 (1809 or later) and Windows 11 is supported.
25 |
26 | ### Linux
27 | Mi Create fully supports Linux, however there are no binaries for Linux. I do plan to distribute binaries on Linux once a fully stable and feature-rich release is out. If there are any Linux app maintainers who have experience in distributing applications, I would highly appreciate your help.
28 |
29 | ### MacOS
30 | Mi Create is not tested on MacOS. All code and libraries should support MacOS, but I make no guarantees.
31 |
32 | ## Running source code
33 | If you want to run from source:
34 | - Clone repo/download source code directly from GitHub
35 | - Install Python version 3.12 or above
36 | - Make a Python virtual environment (optional but recommended)
37 | - Install dependencies: `pip install -r requirements.txt` or `python -m pip install -r requirements.txt`
38 | - Execute main.py
39 |
40 | Executing from source however will not create log files, it will output logs to console.
41 |
42 | ## Troubleshooting
43 | Mi Create can end up running into a few bugs. Please report them with the main log file attached. If you have not changed the install location on Windows during setup, the main log file will be located at
44 | `C:\Users\{username}\AppData\Local\Programs\Mi Create\data\app.log`
45 |
46 | ## Testing
47 | You may test upcoming features in the "next" branch of Mi Create. Usually features in the next branch are not stable and ready to use, so keep this in mind when testing. If you're contributing a relatively minor feature or bug fix pull request the main branch, but if the feature is large and deserves its own major version, push it to the next branch.
48 |
49 | ## Help
50 | If you are looking for a tutorial on Mi Create, please view the documentation at https://ooflet.github.io/docs. If you have any further questions that are not covered by the documentation, feel free to ask on the [discussions](https://github.com/ooflet/Mi-Create/discussions) tab. Otherwise, if there is a bug or issue with Mi Create, submit an [issue](https://github.com/ooflet/Mi-Create/issues) report.
51 |
52 | ## Redistribution
53 |
54 | I do not mind the program being redistributed, however please link the Github repository somewhere whether it be the post or the description.
55 |
56 | Compiling for different platforms must be done using Nuitka, there are some specific compiled checks special for Nutika in the program. Plus, Nutika gives an added performance benefit.
57 |
58 |
59 | ## Licensing:
60 | Mi Create is licensed under the GPL-3 licence. [View what you can and can't do](https://gist.github.com/kn9ts/cbe95340d29fc1aaeaa5dd5c059d2e60)
61 | Please note that the compiler is made by a third party and is **NOT** open source.
62 |
--------------------------------------------------------------------------------
/images/linux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/images/linux.png
--------------------------------------------------------------------------------
/images/window.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/images/window.png
--------------------------------------------------------------------------------
/images/windows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/images/windows.png
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | PyQt6
2 | PyQt6-QScintilla
3 | BeautifulSoup4
4 | pillow
5 | lxml
6 | qt6-applications
7 | xmltodict
8 | requests
9 |
10 | pywin32; sys_platform == "win32"
11 |
12 | pyobjc-core; sys_platform == "darwin"
13 | pyobjc-framework-Cocoa; sys_platform == "darwin"
14 | pyobjc-framework-Quartz; sys_platform == "darwin"
15 |
--------------------------------------------------------------------------------
/src/__pycache__/window_ui.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/__pycache__/window_ui.cpython-311.pyc
--------------------------------------------------------------------------------
/src/compiler/compile.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/compiler/compile.exe
--------------------------------------------------------------------------------
/src/compiler/unpack.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/compiler/unpack.exe
--------------------------------------------------------------------------------
/src/data/context_menus.json:
--------------------------------------------------------------------------------
1 | {
2 | "default": {
3 | "Undo": {
4 | "inherit": "actionUndo"
5 | },
6 | "Redo": {
7 | "inherit": "actionRedo"
8 | },
9 | "sep1": {
10 | "specialType": "seperator"
11 | },
12 | "Paste": {
13 | "inherit": "actionPaste"
14 | },
15 | "sep2": {
16 | "specialType": "seperator"
17 | },
18 | "Zoom": {
19 | "inheritSubmenu": "menuZoom"
20 | }
21 | },
22 | "shape": {
23 | "Undo": {
24 | "inherit": "actionUndo"
25 | },
26 | "Redo": {
27 | "inherit": "actionRedo"
28 | },
29 | "sep1": {
30 | "specialType": "seperator"
31 | },
32 | "Cut": {
33 | "inherit": "actionCut"
34 | },
35 | "Copy": {
36 | "inherit": "actionCopy"
37 | },
38 | "Paste": {
39 | "inherit": "actionPaste"
40 | },
41 | "sep2": {
42 | "specialType": "seperator"
43 | },
44 | "Layers": {
45 | "inheritSubmenu": "menuLayers"
46 | },
47 | "sep3": {
48 | "specialType": "seperator"
49 | },
50 | "Delete": {
51 | "inherit": "actionDelete"
52 | }
53 | },
54 | "fprj": {
55 | "Image": {
56 | "icon": "widget-image",
57 | "id": "widget"
58 | },
59 | "Image List": {
60 | "icon": "widget-imagelist",
61 | "id": "widget_imagelist"
62 | },
63 | "sep1": {
64 | "specialType": "seperator"
65 | },
66 | "Digital Number": {
67 | "icon": "widget-digitalnumber",
68 | "id": "widget_num"
69 | },
70 | "Analog Display": {
71 | "icon": "widget-analogdisplay",
72 | "id": "widget_analog"
73 | },
74 | "Arc Progress": {
75 | "icon": "widget-arcprogress",
76 | "id": "widget_arc"
77 | },
78 | "sep2": {
79 | "specialType": "seperator"
80 | },
81 | "Container": {
82 | "icon": "widget-container",
83 | "id": "widget_container"
84 | }
85 | },
86 | "gmf": {
87 | "Image": {
88 | "icon": "widget-image",
89 | "id": "widget"
90 | },
91 | "Image List": {
92 | "icon": "widget-imagelist",
93 | "id": "widget_imagelist"
94 | },
95 | "sep1": {
96 | "specialType": "seperator"
97 | },
98 | "Digital Number": {
99 | "icon": "widget-digitalnumber",
100 | "id": "widget_num"
101 | },
102 | "Pointer": {
103 | "icon": "widget-pointer",
104 | "id": "widget_pointer"
105 | }
106 | }
107 | }
--------------------------------------------------------------------------------
/src/data/default/analog/hourHand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/analog/hourHand.png
--------------------------------------------------------------------------------
/src/data/default/analog/minuteHand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/analog/minuteHand.png
--------------------------------------------------------------------------------
/src/data/default/analog/secondHand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/analog/secondHand.png
--------------------------------------------------------------------------------
/src/data/default/defaultImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/defaultImage.png
--------------------------------------------------------------------------------
/src/data/default/numbers/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/0.png
--------------------------------------------------------------------------------
/src/data/default/numbers/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/1.png
--------------------------------------------------------------------------------
/src/data/default/numbers/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/2.png
--------------------------------------------------------------------------------
/src/data/default/numbers/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/3.png
--------------------------------------------------------------------------------
/src/data/default/numbers/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/4.png
--------------------------------------------------------------------------------
/src/data/default/numbers/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/5.png
--------------------------------------------------------------------------------
/src/data/default/numbers/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/6.png
--------------------------------------------------------------------------------
/src/data/default/numbers/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/7.png
--------------------------------------------------------------------------------
/src/data/default/numbers/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/8.png
--------------------------------------------------------------------------------
/src/data/default/numbers/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/data/default/numbers/9.png
--------------------------------------------------------------------------------
/src/data/devices.json:
--------------------------------------------------------------------------------
1 | {
2 | "xiaomi_color": {
3 | "string": "Xiaomi Watch Color",
4 | "width": 454,
5 | "height": 454,
6 | "radius": 227
7 | },
8 | "xiaomi_color_sport": {
9 | "string": "Xiaomi Watch Color Sport",
10 | "width": 454,
11 | "height": 454,
12 | "radius": 227
13 | },
14 | "xiaomi_color_2/s1/s2": {
15 | "string": "Xiaomi Watch S1/S2/Color 2",
16 | "width": 466,
17 | "height": 466,
18 | "radius": 233
19 | },
20 | "xiaomi_watch_s1_pro": {
21 | "string": "Xiaomi Watch S1 Pro",
22 | "width": 480,
23 | "height": 480,
24 | "radius": 240
25 | },
26 | "xiaomi_watch_s3": {
27 | "string": "Xiaomi Watch S3",
28 | "width": 466,
29 | "height": 466,
30 | "radius": 233
31 | },
32 | "xiaomi_watch_s4": {
33 | "string": "Xiaomi Watch S4",
34 | "width": 466,
35 | "height": 466,
36 | "radius": 233
37 | },
38 | "redmi/poco_watch": {
39 | "string": "Redmi/Poco Watch",
40 | "width": 320,
41 | "height": 360,
42 | "radius": 60
43 | },
44 | "redmi_watch_2_lite": {
45 | "string": "Redmi Watch 2 Lite",
46 | "width": 320,
47 | "height": 360,
48 | "radius": 60
49 | },
50 | "redmi_watch_3": {
51 | "string": "Redmi Watch 3",
52 | "width": 390,
53 | "height": 450,
54 | "radius": 86
55 | },
56 | "redmi_watch_3_active": {
57 | "string": "Redmi Watch 3 Active",
58 | "width": 240,
59 | "height": 280,
60 | "radius": 55
61 | },
62 | "redmi_watch_4": {
63 | "string": "Redmi Watch 4",
64 | "width": 390,
65 | "height": 450,
66 | "radius": 90
67 | },
68 | "redmi_watch_5": {
69 | "string": "Redmi Watch 5",
70 | "width": 432,
71 | "height": 514,
72 | "radius": 103
73 | },
74 | "redmi_watch_5_active": {
75 | "string": "Redmi Watch 5 Active",
76 | "width": 320,
77 | "height": 385,
78 | "radius": 82
79 | },
80 | "redmi_watch_5_lite": {
81 | "string": "Redmi Watch 5 Lite",
82 | "width": 410,
83 | "height": 502,
84 | "radius": 110
85 | },
86 | "redmi_band_pro": {
87 | "string": "Redmi Band Pro",
88 | "width": 194,
89 | "height": 368,
90 | "radius": 28
91 | },
92 | "xiaomi_band_7_pro": {
93 | "string": "Xiaomi Band 7 Pro",
94 | "width": 280,
95 | "height": 456,
96 | "radius": 28
97 | },
98 | "xiaomi_band_8": {
99 | "string": "Xiaomi Band 8",
100 | "width": 192,
101 | "height": 490,
102 | "radius": 100
103 | },
104 | "xiaomi_band_8_pro": {
105 | "string": "Xiaomi Band 8 Pro",
106 | "width": 336,
107 | "height": 480,
108 | "radius": 48
109 | },
110 | "xiaomi_band_9": {
111 | "string": "Xiaomi Band 9",
112 | "width": 192,
113 | "height": 490,
114 | "radius": 100
115 | },
116 | "xiaomi_band_9_pro": {
117 | "string": "Xiaomi Band 9 Pro",
118 | "width": 336,
119 | "height": 480,
120 | "radius": 48
121 | },
122 | "70mai_saphir": {
123 | "string": "70mai Saphir",
124 | "width": 368,
125 | "height": 448,
126 | "radius": 60
127 | }
128 | }
--------------------------------------------------------------------------------
/src/data/preview_data.json:
--------------------------------------------------------------------------------
1 | {
2 | "Hour": "10",
3 | "Hour High": "1",
4 | "Hour Low": "0",
5 | "Minute": "08",
6 | "Minute High": "0",
7 | "Minute Low": "8",
8 | "Second": "56",
9 | "Second High": "5",
10 | "Second Low": "6",
11 | "Day": "21",
12 | "Day High": "2",
13 | "Day Low": "1",
14 | "Month": "05",
15 | "Month High": "0",
16 | "Month Low": "5",
17 | "Year": "2025",
18 | "Year 1": "2",
19 | "Year 2": "0",
20 | "Year 3": "2",
21 | "Year 4": "5",
22 | "Heart rate": "68",
23 | "Heart rate Min": "61",
24 | "Heart rate Max": "84",
25 | "Weather temp": "24",
26 | "Weather temp (C)": "24",
27 | "Weather temp (F)": "75",
28 | "TodayTemperatureMin": "18",
29 | "TodayTemperatureMax": "31",
30 | "Current step count": "7645",
31 | "Current step (percent)": "95",
32 | "Current step (kilometer)": "24.7",
33 | "Active Calorie": "465",
34 | "Active Calorie (percent)": "77",
35 | "Stand Up value": "8",
36 | "Stand Up percent": "65",
37 | "Sleep Duration": "8.7",
38 | "Battery percent": "80",
39 | "Battery percente": "80",
40 | "Week": "2"
41 | }
42 |
--------------------------------------------------------------------------------
/src/data/preview_sizes.json:
--------------------------------------------------------------------------------
1 | {
2 | "xiaomi_color": [246, 246],
3 | "xiaomi_color_sport": [246, 246],
4 | "xiaomi_color_2/s1/s2": [246, 246],
5 | "xiaomi_watch_s1_pro": [280, 280],
6 | "xiaomi_watch_s3": [326, 326],
7 | "xiaomi_watch_s4": [326, 326],
8 | "xiaomi_band_7_pro": [220, 358],
9 | "redmi/poco_watch": [178, 178],
10 | "redmi_watch_2_lite": [178, 178],
11 | "redmi_watch_3": [234, 270],
12 | "redmi_watch_3_active": [156, 182],
13 | "redmi_watch_4": [234, 270],
14 | "redmi_watch_5": [432, 514],
15 | "redmi_watch_5_active": [180, 216],
16 | "redmi_watch_5_lite": [244, 298],
17 | "redmi_band_pro": [110, 208],
18 | "xiaomi_band_8": [122, 310],
19 | "xiaomi_band_8_pro": [230, 328],
20 | "xiaomi_band_9": [122, 310],
21 | "xiaomi_band_9_pro": [230, 328]
22 | }
23 |
--------------------------------------------------------------------------------
/src/data/setting_items.json:
--------------------------------------------------------------------------------
1 | {
2 | "General": {
3 | "Theme": {
4 | "string": "Theme",
5 | "type": "list",
6 | "value": "Default Dark",
7 | "options": []
8 | },
9 | "Language": {
10 | "string": "Language",
11 | "type": "list",
12 | "value": "English",
13 | "options": []
14 | },
15 | "CheckUpdate": {
16 | "string": "Check for Updates",
17 | "type": "bool",
18 | "value": true
19 | }
20 | },
21 | "Canvas": {
22 | "Snap": {
23 | "string": "Snap to Guides",
24 | "type": "bool",
25 | "value": true
26 | },
27 | "ClipDeviceShape": {
28 | "string": "Clip to Device Shape",
29 | "type": "bool",
30 | "value": true
31 | },
32 | "ShowDeviceOutline": {
33 | "string": "Show Device Outline",
34 | "type": "bool",
35 | "value": false,
36 | "changeState": ["ClipDeviceShape", "disabled", false]
37 | },
38 | "Antialiasing": {
39 | "string": "Antialiasing",
40 | "type": "bool",
41 | "value": true
42 | },
43 | "Interpolation": {
44 | "string": "Image Interpolation",
45 | "type": "list",
46 | "value": "Bilinear",
47 | "options": ["Bilinear", "Nearest Neighbour"]
48 | }
49 | }
50 | }
--------------------------------------------------------------------------------
/src/data/stackWidgetAnim.json:
--------------------------------------------------------------------------------
1 | {
2 | "QStackedWidget":[
3 | {
4 | "name":"sidebar",
5 | "transitionAnimation":[
6 | {
7 | "slide":[
8 | {
9 | "active":true,
10 | "duration": 500,
11 | "direction": "horizontal",
12 | "easingCurve": "OutQuint"
13 | }
14 | ]
15 | }
16 | ]
17 | }
18 | ]
19 | }
--------------------------------------------------------------------------------
/src/locales/en/CONFIG.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | language = English
3 | authorMessage = none
4 | contact = none
--------------------------------------------------------------------------------
/src/locales/en/LC_MESSAGES/main.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/en/LC_MESSAGES/main.mo
--------------------------------------------------------------------------------
/src/locales/en/LC_MESSAGES/main.po:
--------------------------------------------------------------------------------
1 | # Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2024-01-02 11:15+1100\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: en\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.4\n"
17 |
18 | msgid "You have unsaved project(s) open. Save and quit?"
19 | msgstr "You have unsaved project(s) open. Save and quit?"
20 |
21 | msgid "An urgent update {version} was released! The app will now update."
22 | msgstr "An urgent update {version} was released! The app will now update."
23 |
24 | msgid "A new update has been found (v{version}). Would you like to update now?"
25 | msgstr ""
26 | "A new update has been found (v{version}). Would you like to update now?"
27 |
28 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
29 | msgstr ""
30 | "Widget {shape} not implemented in ObjectIcon(), please report as issue."
31 |
32 | msgid "Failed to obtain currentItem"
33 | msgstr "Failed to obtain currentItem"
34 |
35 | msgid ""
36 | "No object found in widget list that has the name of currently selected "
37 | "graphics item: "
38 | msgstr ""
39 | "No object found in widget list that has the name of currently selected "
40 | "graphics item: "
41 |
42 | msgid "Error occured during property update: Object not found!"
43 | msgstr "Error occurred during property update: Object not found!"
44 |
45 | msgid "Unable to find"
46 | msgstr "Unable to find"
47 |
48 | msgid "Select Folder..."
49 | msgstr "Select Folder..."
50 |
51 | msgid "Are you sure you want to reset all dock widget positions?"
52 | msgstr "Are you sure you want to reset all dock widget positions?"
53 |
54 | msgid ""
55 | "Are you sure you want to create your project in the directory of this "
56 | "program?"
57 | msgstr ""
58 | "Are you sure you want to create your project in the directory of this "
59 | "program?"
60 |
61 | msgid "Failed to createNewWorkspace: "
62 | msgstr "Failed to createNewWorkspace: "
63 |
64 | msgid "Cannot open project: "
65 | msgstr "Cannot open project: "
66 |
67 | msgid "Failed to create a new project: "
68 | msgstr "Failed to create a new project: "
69 |
70 | msgid "Open Project..."
71 | msgstr "Open Project..."
72 |
73 | msgid "Failed to open project: "
74 | msgstr "Failed to open project: "
75 |
76 | msgid "Failed to save: "
77 | msgstr "Failed to save: "
78 |
79 | msgid "Failed to save project: "
80 | msgstr "Failed to save project: "
81 |
82 | msgid "Project saved at "
83 | msgstr "Project saved at "
84 |
85 | msgid "Save project before building?"
86 | msgstr "Save project before building?"
87 |
--------------------------------------------------------------------------------
/src/locales/en/LC_MESSAGES/properties.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/en/LC_MESSAGES/properties.mo
--------------------------------------------------------------------------------
/src/locales/en/LC_MESSAGES/properties.po:
--------------------------------------------------------------------------------
1 | # Property Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2024-01-05 17:30+1100\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: en\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.4\n"
17 |
18 | msgid "General"
19 | msgstr ""
20 |
21 | msgid "Widget Type"
22 | msgstr ""
23 |
24 | msgid "Name"
25 | msgstr ""
26 |
27 | msgid "Position"
28 | msgstr ""
29 |
30 | msgid "Width"
31 | msgstr ""
32 |
33 | msgid "Height"
34 | msgstr ""
35 |
36 | msgid "Appearance"
37 | msgstr ""
38 |
39 | msgid "Opacity"
40 | msgstr ""
41 |
42 | msgid "Visibility Trigger"
43 | msgstr ""
44 |
45 | msgid "Hour Hand Smooth"
46 | msgstr ""
47 |
48 | msgid "Minute Hand Smooth"
49 | msgstr ""
50 |
51 | msgid "Analog Properties"
52 | msgstr ""
53 |
54 | msgid "Background"
55 | msgstr ""
56 |
57 | msgid "Image"
58 | msgstr ""
59 |
60 | msgid "Anchor Point"
61 | msgstr ""
62 |
63 | msgid "Hour Hand"
64 | msgstr ""
65 |
66 | msgid "Minute Hand"
67 | msgstr ""
68 |
69 | msgid "Second Hand"
70 | msgstr ""
71 |
72 | msgid "Progress Bar"
73 | msgstr ""
74 |
75 | msgid "Radius"
76 | msgstr ""
77 |
78 | msgid "Thickness"
79 | msgstr ""
80 |
81 | msgid "Start Angle"
82 | msgstr ""
83 |
84 | msgid "End Angle"
85 | msgstr ""
86 |
87 | msgid "Range"
88 | msgstr ""
89 |
90 | msgid "Minimum Value"
91 | msgstr ""
92 |
93 | msgid "Maximum Value"
94 | msgstr ""
95 |
96 | msgid "Minimum Step Value"
97 | msgstr ""
98 |
99 | msgid "Step Value"
100 | msgstr ""
101 |
102 | msgid "Data"
103 | msgstr ""
104 |
105 | msgid "Data Source"
106 | msgstr ""
107 |
108 | msgid "Max Value Source"
109 | msgstr ""
110 |
111 | msgid "Images"
112 | msgstr ""
113 |
114 | msgid "Default Index"
115 | msgstr ""
116 |
117 | msgid "Digits"
118 | msgstr ""
119 |
120 | msgid "Spacing"
121 | msgstr ""
122 |
123 | msgid "Blanking"
124 | msgstr ""
125 |
--------------------------------------------------------------------------------
/src/locales/en/LC_MESSAGES/window.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/en/LC_MESSAGES/window.mo
--------------------------------------------------------------------------------
/src/locales/en/LC_MESSAGES/window.po:
--------------------------------------------------------------------------------
1 | # Window Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-05 14:27+1100\n"
8 | "PO-Revision-Date: 2024-01-05 14:27+1100\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: en\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.4\n"
17 |
18 | msgid "Mi Create"
19 | msgstr ""
20 |
21 | msgid "Save..."
22 | msgstr ""
23 |
24 | msgid "Save as..."
25 | msgstr ""
26 |
27 | msgid "About Mi Create"
28 | msgstr ""
29 |
30 | msgid "Settings"
31 | msgstr ""
32 |
33 | msgid "Build..."
34 | msgstr ""
35 |
36 | msgid "Build"
37 | msgstr ""
38 |
39 | msgid "Explorer"
40 | msgstr ""
41 |
42 | msgid "Attributes"
43 | msgstr ""
44 |
45 | msgid "Exit"
46 | msgstr ""
47 |
48 | msgid "Edit"
49 | msgstr ""
50 |
51 | msgid "File"
52 | msgstr ""
53 |
54 | msgid "Layout"
55 | msgstr ""
56 |
57 | msgid "New..."
58 | msgstr ""
59 |
60 | msgid "New File"
61 | msgstr ""
62 |
63 | msgid "Open..."
64 | msgstr ""
65 |
66 | msgid "Open File"
67 | msgstr ""
68 |
69 | msgid "Undo"
70 | msgstr ""
71 |
72 | msgid "Redo"
73 | msgstr ""
74 |
75 | msgid "About Qt"
76 | msgstr ""
77 |
78 | msgid "Third Party Notices"
79 | msgstr ""
80 |
81 | msgid "Unpack..."
82 | msgstr ""
83 |
84 | msgid "Cut"
85 | msgstr ""
86 |
87 | msgid "Copy"
88 | msgstr ""
89 |
90 | msgid "Paste"
91 | msgstr ""
92 |
93 | msgid "Project Source Code"
94 | msgstr ""
95 |
96 | msgid "Resize Images"
97 | msgstr ""
98 |
99 | msgid "Image"
100 | msgstr ""
101 |
102 | msgid "Image List"
103 | msgstr ""
104 |
105 | msgid "Digital Number"
106 | msgstr ""
107 |
108 | msgid "Analog Display"
109 | msgstr ""
110 |
111 | msgid "Arc Progress"
112 | msgstr ""
113 |
114 | msgid "Documentation"
115 | msgstr ""
116 |
117 | msgid ""
118 | "
Open Project...
"
121 | msgstr ""
122 |
123 | msgid "Welcome"
124 | msgstr ""
125 |
126 | msgid ""
127 | "
New "
129 | "Project...
"
130 | msgstr ""
131 |
132 | msgid "Help"
133 | msgstr ""
134 |
135 | msgid "About"
136 | msgstr ""
137 |
138 | msgid "View"
139 | msgstr ""
140 |
141 | msgid "Toolbars"
142 | msgstr ""
143 |
144 | msgid "Tools"
145 | msgstr ""
146 |
147 | msgid "Create"
148 | msgstr ""
149 |
150 | msgid "Project"
151 | msgstr ""
152 |
153 | msgid "Properties"
154 | msgstr ""
155 |
156 | msgid "File Toolbar"
157 | msgstr ""
158 |
159 | msgid "toolBar_2"
160 | msgstr ""
161 |
162 | msgid "toolBar"
163 | msgstr ""
164 |
165 | msgid "New Project..."
166 | msgstr ""
167 |
168 | msgid "Select device"
169 | msgstr ""
170 |
171 | msgid "Project name"
172 | msgstr ""
173 |
174 | msgid "Create project..."
175 | msgstr ""
176 |
177 | msgid "Project location"
178 | msgstr ""
179 |
180 | msgid "Build Project..."
181 | msgstr ""
182 |
183 | msgid "Configure project..."
184 | msgstr ""
185 |
186 | msgid "Watchface name"
187 | msgstr ""
188 |
189 | msgid "Watchface thumbnail"
190 | msgstr ""
191 |
192 | msgid "Build project..."
193 | msgstr ""
194 |
195 | msgid "Building project..."
196 | msgstr ""
197 |
198 | msgid "Build results..."
199 | msgstr ""
200 |
201 | msgid "Select resource..."
202 | msgstr ""
203 |
204 | msgid "..."
205 | msgstr ""
206 |
207 | msgid "Search:"
208 | msgstr ""
209 |
--------------------------------------------------------------------------------
/src/locales/es/CONFIG.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | language = Español
3 | authorMessage = frankh93
4 | contact = none
--------------------------------------------------------------------------------
/src/locales/es/LC_MESSAGES/main.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/es/LC_MESSAGES/main.mo
--------------------------------------------------------------------------------
/src/locales/es/LC_MESSAGES/main.po:
--------------------------------------------------------------------------------
1 | # Main Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-04-25 14:03-0600\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: es_MX\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.6\n"
17 |
18 | msgid "You have unsaved project(s) open. Save and quit?"
19 | msgstr "Tienes abierto proyectos sin guardar. ¿Guardar y salir?"
20 |
21 | msgid "An urgent update {version} was released! The app will now update."
22 | msgstr ""
23 | "¡Una versión urgente {version} fue lanzada! La aplicación se actualizará."
24 |
25 | msgid "A new update has been found ({version}). Would you like to update now?"
26 | msgstr ""
27 | "Una nueva actualización fue encontrada ({version}). ¿Te gustaría actualizar "
28 | "ahora?"
29 |
30 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
31 | msgstr ""
32 | "Widget {shape} no está implementado en ObjectIcon(), por favor repórtalo "
33 | "como un problema."
34 |
35 | msgid "Failed to obtain currentItem"
36 | msgstr "Error al obtener currentItem"
37 |
38 | msgid ""
39 | "No object found in widget list that has the name of currently selected "
40 | "graphics item: "
41 | msgstr ""
42 | "No se ha encontrado el objeto in la lista de widgets con el nombre del "
43 | "elemento gráfico seleccionado: "
44 |
45 | msgid "Error occured during property update: Object not found!"
46 | msgstr ""
47 | "Ha ocurrido un error al actualizar la propiedad: ¡No se encontró el objeto!"
48 |
49 | msgid "Unable to find"
50 | msgstr "No se puede encontrar"
51 |
52 | msgid "Select Folder..."
53 | msgstr "Seleccionar carpeta..."
54 |
55 | msgid "Add Image..."
56 | msgstr "Añadir imagen..."
57 |
58 | msgid "Are you sure you want to reset all dock widget positions?"
59 | msgstr ""
60 | "¿Estás seguro que quieres reestablecer todas las posiciones de los widgets "
61 | "en el dock?"
62 |
63 | msgid ""
64 | "Are you sure you want to create your project in the directory of this "
65 | "program?"
66 | msgstr ""
67 | "¿Estás seguro que quieres crear tu proyecto en la carpeta de este programa?"
68 |
69 | msgid "Failed to createNewWorkspace: "
70 | msgstr "Fallo al createNewWorkspace: "
71 |
72 | msgid "Cannot open project: "
73 | msgstr "No se puede abrir proyecto: "
74 |
75 | msgid "Failed to create a new project: "
76 | msgstr "Error al crear un nuevo proyecto: "
77 |
78 | msgid "Open Project..."
79 | msgstr "Abrir proyecto..."
80 |
81 | msgid "Failed to open project: "
82 | msgstr "Error al abrir proyecto: "
83 |
84 | msgid "Failed to save: "
85 | msgstr "Error al guardar: "
86 |
87 | msgid "Failed to save project: "
88 | msgstr "Error al guardar proyecto: "
89 |
90 | msgid "Project saved at "
91 | msgstr "Proyecto guardado en "
92 |
93 | msgid "Save project before building?"
94 | msgstr "¿Guardar proyecto antes de compilar?"
95 |
96 | msgid "Create Widget"
97 | msgstr "Crear widget"
98 |
99 | msgid "Please set the watchface's name and thumbnail before building!"
100 | msgstr ""
101 | "Por favor, elige el nombre y la miniatura de la esfera de reloj antes de "
102 | "compilar!"
103 |
104 | msgid ""
105 | "This watch does not support ID assignment, custom IDs will not be applied."
106 | msgstr ""
107 | "Este dispositivo no admite la asignación de ID, no se aplicará el ID "
108 | "personalizado."
109 |
110 | msgid "Wine was not found."
111 | msgstr "No se encontró Wine."
112 |
113 | msgid "Building watchface..."
114 | msgstr "Compilando esfera de reloj..."
115 |
116 | msgid "Watchface built successfully at "
117 | msgstr "Esfera de reloj compilada correctamente en: "
118 |
--------------------------------------------------------------------------------
/src/locales/es/LC_MESSAGES/properties.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/es/LC_MESSAGES/properties.mo
--------------------------------------------------------------------------------
/src/locales/es/LC_MESSAGES/properties.po:
--------------------------------------------------------------------------------
1 | # Property Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-04-25 13:37-0600\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: es_MX\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.6\n"
17 |
18 | msgid "Theme"
19 | msgstr "Tema"
20 |
21 | msgid "Language"
22 | msgstr "Idioma"
23 |
24 | msgid "Check for Updates"
25 | msgstr "Comprobar actualizaciones"
26 |
27 | msgid "Canvas"
28 | msgstr "Espacio de trabajo"
29 |
30 | msgid "Snap to Guides"
31 | msgstr "Ajustar a las guías"
32 |
33 | msgid "Clip to Device Shape"
34 | msgstr "Recortar a forma del dispositivo"
35 |
36 | msgid "Show Device Outline"
37 | msgstr "Mostrar contorno del dispisitivo"
38 |
39 | msgid "Antialiasing"
40 | msgstr "Antialias"
41 |
42 | msgid "Image Interpolation"
43 | msgstr "Interpolación de imagenes"
44 |
45 | msgid "Plugins"
46 | msgstr "Complementos"
47 |
48 | msgid "General"
49 | msgstr "General"
50 |
51 | msgid "Widget Type"
52 | msgstr "Tipo de Widget"
53 |
54 | msgid "Name"
55 | msgstr "Nombre"
56 |
57 | msgid "Position"
58 | msgstr "Posición"
59 |
60 | msgid "Width"
61 | msgstr "Ancho"
62 |
63 | msgid "Height"
64 | msgstr "Alto"
65 |
66 | msgid "Appearance"
67 | msgstr "Apariencia"
68 |
69 | msgid "Opacity"
70 | msgstr "Opacidad"
71 |
72 | msgid "Visibility Trigger"
73 | msgstr "Activador de visibilidad"
74 |
75 | msgid "Hour Hand Smooth"
76 | msgstr "Suavizar manecilla de horas"
77 |
78 | msgid "Minute Hand Smooth"
79 | msgstr "Suavizar manecilla de minutos"
80 |
81 | msgid "Analog Properties"
82 | msgstr "Propiedades de reloj análogico"
83 |
84 | msgid "Background"
85 | msgstr "Fondo"
86 |
87 | msgid "Image"
88 | msgstr "Imagen"
89 |
90 | msgid "Alignment"
91 | msgstr "Alineación"
92 |
93 | msgid "Anchor Point"
94 | msgstr "Punto de anclaje"
95 |
96 | msgid "Hour Hand"
97 | msgstr "Manecilla de horas"
98 |
99 | msgid "Minute Hand"
100 | msgstr "Manecilla de minutos"
101 |
102 | msgid "Second Hand"
103 | msgstr "Manecilla de segundos"
104 |
105 | msgid "Progress Bar"
106 | msgstr "Barra de progreso"
107 |
108 | msgid "Radius"
109 | msgstr "Radio"
110 |
111 | msgid "Thickness"
112 | msgstr "Grosor"
113 |
114 | msgid "Start Angle"
115 | msgstr "Angulo inicial"
116 |
117 | msgid "End Angle"
118 | msgstr "Angulo final"
119 |
120 | msgid "Range"
121 | msgstr "Rango"
122 |
123 | msgid "Minimum Value"
124 | msgstr "Valor mínimo"
125 |
126 | msgid "Maximum Value"
127 | msgstr "Valor máximo"
128 |
129 | msgid "Minimum Step Value"
130 | msgstr "Valor de salto mínimo"
131 |
132 | msgid "Step Value"
133 | msgstr "Valor de salto"
134 |
135 | msgid "Data"
136 | msgstr "Datos"
137 |
138 | msgid "Data Source"
139 | msgstr "Origen de datos"
140 |
141 | msgid "Max Value Source"
142 | msgstr "Origen de valor máximo"
143 |
144 | msgid "Images"
145 | msgstr "Imágenes"
146 |
147 | msgid "Default Index"
148 | msgstr "Índice por defecto"
149 |
150 | msgid "Digits"
151 | msgstr "Dígitos"
152 |
153 | msgid "Spacing"
154 | msgstr "Espaciado"
155 |
156 | msgid "Hide Zeroes"
157 | msgstr "Ocultar ceros"
158 |
159 | msgid "Image List"
160 | msgstr "Lista de imágenes"
161 |
162 | msgid "Image Count"
163 | msgstr "Numero de imágenes"
164 |
165 | msgid "Index"
166 | msgstr "Índice"
167 |
168 | msgid "Show Decimals"
169 | msgstr "Mostrar decimales"
170 |
171 | msgid "Number"
172 | msgstr "Numero"
173 |
174 | msgid "Negative Sign"
175 | msgstr "Signo negativo"
176 |
177 | msgid "Decimal Point"
178 | msgstr "Punto decimal"
179 |
180 | msgid "Decimal"
181 | msgstr "Decimal"
182 |
183 | msgid "Start X"
184 | msgstr "Inicio X"
185 |
186 | msgid "Start Y"
187 | msgstr "Inicio Y"
188 |
189 | msgid "End X"
190 | msgstr "Fin X"
191 |
192 | msgid "End Y"
193 | msgstr "Fin Y"
194 |
195 | msgid "Flat Ends"
196 | msgstr "Puntas planas"
197 |
--------------------------------------------------------------------------------
/src/locales/es/LC_MESSAGES/window.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/es/LC_MESSAGES/window.mo
--------------------------------------------------------------------------------
/src/locales/it/CONFIG.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | language = Italiano
3 | authorMessage = none
4 | contact = none
5 |
--------------------------------------------------------------------------------
/src/locales/it/LC_MESSAGES/main.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/it/LC_MESSAGES/main.mo
--------------------------------------------------------------------------------
/src/locales/it/LC_MESSAGES/main.po:
--------------------------------------------------------------------------------
1 | # Main Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-01-26 11:34+1100\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: it\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.0.1\n"
17 |
18 | msgid "You have unsaved project(s) open. Save and quit?"
19 | msgstr "Hai progetti aperti non salvati. Vuoi salvarli e uscire?"
20 |
21 | msgid "An urgent update {version} was released! The app will now update."
22 | msgstr ""
23 | "È stato rilasciato un aggiornamento urgente {version}! L'applicazione verrà "
24 | "ora aggiornata."
25 |
26 | msgid "A new update has been found ({version}). Would you like to update now?"
27 | msgstr ""
28 | "È stato trovato un nuovo aggiornamento ({version}). Vuoi aggiornare ora?"
29 |
30 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
31 | msgstr ""
32 | "Il widget {shape} non è implementato in ObjectIcon(), segnala il problema."
33 |
34 | msgid "Failed to obtain currentItem"
35 | msgstr "Impossibile ottenere l'elemento corrente"
36 |
37 | msgid ""
38 | "No object found in widget list that has the name of currently selected "
39 | "graphics item: "
40 | msgstr ""
41 | "Nessun oggetto trovato nell'elenco dei widget che abbia il nome "
42 | "dell'elemento grafico attualmente selezionato: "
43 |
44 | msgid "Error occured during property update: Object not found!"
45 | msgstr ""
46 | "Si è verificato un errore durante l'aggiornamento della proprietà: oggetto "
47 | "non trovato!"
48 |
49 | msgid "Unable to find"
50 | msgstr "Non trovato!"
51 |
52 | msgid "Select Folder..."
53 | msgstr "Seleziona cartella..."
54 |
55 | msgid "Add Image..."
56 | msgstr "Aggiungi immagine..."
57 |
58 | msgid "Are you sure you want to reset all dock widget positions?"
59 | msgstr "Vuoi davvero reimpostare tutte le posizioni dei widget ?"
60 |
61 | msgid ""
62 | "Are you sure you want to create your project in the directory of this "
63 | "program?"
64 | msgstr ""
65 | "Sei sicuro di voler creare il tuo progetto nella cartella di questo "
66 | "programma ?"
67 |
68 | msgid "Failed to createNewWorkspace: "
69 | msgstr "Impossibile creare una nuova area di lavoro: "
70 |
71 | msgid "Cannot open project: "
72 | msgstr "Impossibile aprire il progetto: "
73 |
74 | msgid "Failed to create a new project: "
75 | msgstr "Impossibile creare un nuovo progetto: "
76 |
77 | msgid "Open Project..."
78 | msgstr "Progetto aperto..."
79 |
80 | msgid "Failed to open project: "
81 | msgstr "Impossibile aprire il progetto: "
82 |
83 | msgid "Failed to save: "
84 | msgstr "Impossibile salvare: "
85 |
86 | msgid "Failed to save project: "
87 | msgstr "Impossibile salvare il progetto: "
88 |
89 | msgid "Project saved at "
90 | msgstr "Progetto salvato in "
91 |
92 | msgid "Save project before building?"
93 | msgstr "Salvare il progetto prima di compilare ?"
94 |
95 | msgid "Create Widget"
96 | msgstr "Crea widget"
97 |
98 | msgid "Please set the watchface's name and thumbnail before building!"
99 | msgstr ""
100 | "Impostare il nome e la miniatura della superficie dell'orologio prima della "
101 | "costruzione!"
102 |
103 | msgid ""
104 | "This watch does not support ID assignment, custom IDs will not be applied."
105 | msgstr ""
106 | "Questo orologio non supporta l'assegnazione di ID; gli ID personalizzati non "
107 | "verranno applicati."
108 |
109 | msgid "Wine was not found."
110 | msgstr "Il programma Wine non è stato trovato."
111 |
112 | msgid "Building watchface..."
113 | msgstr "Costruire la superficie dell'orologio..."
114 |
115 | msgid "Watchface built successfully at "
116 | msgstr "Interfaccia orologio costruita con successo a "
117 |
--------------------------------------------------------------------------------
/src/locales/it/LC_MESSAGES/properties.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/it/LC_MESSAGES/properties.mo
--------------------------------------------------------------------------------
/src/locales/it/LC_MESSAGES/properties.po:
--------------------------------------------------------------------------------
1 | # Property Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-01-25 21:52+1100\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: it\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.0.1\n"
17 |
18 | msgid "Theme"
19 | msgstr "Tema"
20 |
21 | msgid "Language"
22 | msgstr "Lingua"
23 |
24 | msgid "Check for Updates"
25 | msgstr "Verifica aggiornamenti"
26 |
27 | msgid "Canvas"
28 | msgstr "Strutturali"
29 |
30 | msgid "Snap to Guides"
31 | msgstr "Aggancia alle guide"
32 |
33 | msgid "Clip to Device Shape"
34 | msgstr "Ritaglia alla forma del dispositivo"
35 |
36 | msgid "Show Device Outline"
37 | msgstr "Mostra il contorno del dispositivo"
38 |
39 | msgid "Antialiasing"
40 | msgstr "Antialiasing (anti scalettatura)"
41 |
42 | msgid "Image Interpolation"
43 | msgstr "Interpolazione dell'immagine"
44 |
45 | msgid "Plugins"
46 | msgstr "Plugin"
47 |
48 | msgid "General"
49 | msgstr "Generali"
50 |
51 | msgid "Widget Type"
52 | msgstr "Tipo di widget"
53 |
54 | msgid "Name"
55 | msgstr "Nome"
56 |
57 | msgid "Position"
58 | msgstr "Posizione"
59 |
60 | msgid "Width"
61 | msgstr "Larghezza"
62 |
63 | msgid "Height"
64 | msgstr "Altezza"
65 |
66 | msgid "Appearance"
67 | msgstr "Apparenza"
68 |
69 | msgid "Opacity"
70 | msgstr "Opacità"
71 |
72 | msgid "Visibility Trigger"
73 | msgstr "Trigger di visibilità"
74 |
75 | msgid "Hour Hand Smooth"
76 | msgstr "Lancetta delle ore movimento continuo"
77 |
78 | msgid "Minute Hand Smooth"
79 | msgstr "Lancetta dei minuti movimento continuo"
80 |
81 | msgid "Analog Properties"
82 | msgstr "Proprietà analogiche"
83 |
84 | msgid "Background"
85 | msgstr "Sfondo"
86 |
87 | msgid "Image"
88 | msgstr "Imagine"
89 |
90 | msgid "Alignment"
91 | msgstr "Allineamento"
92 |
93 | msgid "Anchor Point"
94 | msgstr "Punto di ancoraggio"
95 |
96 | msgid "Hour Hand"
97 | msgstr "Lancetta delle ore"
98 |
99 | msgid "Minute Hand"
100 | msgstr "Lancetta dei minuti"
101 |
102 | msgid "Second Hand"
103 | msgstr "Lancetta dei secondi"
104 |
105 | msgid "Progress Bar"
106 | msgstr "Barra di avanzamento"
107 |
108 | msgid "Radius"
109 | msgstr "Raggio"
110 |
111 | msgid "Thickness"
112 | msgstr "Spessore"
113 |
114 | msgid "Start Angle"
115 | msgstr "Angolo di partenza"
116 |
117 | msgid "End Angle"
118 | msgstr "Angolo finale"
119 |
120 | msgid "Range"
121 | msgstr "Intervallo"
122 |
123 | msgid "Minimum Value"
124 | msgstr "Valore minimo"
125 |
126 | msgid "Maximum Value"
127 | msgstr "Valore massimo"
128 |
129 | msgid "Minimum Step Value"
130 | msgstr "Valore minimo del passo"
131 |
132 | msgid "Step Value"
133 | msgstr "Valore del passo"
134 |
135 | msgid "Data"
136 | msgstr "Dati"
137 |
138 | msgid "Data Source"
139 | msgstr "Fonte dati"
140 |
141 | msgid "Max Value Source"
142 | msgstr "Valore massimo fote"
143 |
144 | msgid "Images"
145 | msgstr "Immagini"
146 |
147 | msgid "Default Index"
148 | msgstr "Indice predefinito"
149 |
150 | msgid "Digits"
151 | msgstr "Cifre"
152 |
153 | msgid "Spacing"
154 | msgstr "Spaziatura"
155 |
156 | msgid "Hide Zeroes"
157 | msgstr "Nascondi gli zeri"
158 |
159 | msgid "Image List"
160 | msgstr "Elenco immagini"
161 |
162 | msgid "Image Count"
163 | msgstr "Conteggio delle immagini"
164 |
165 | msgid "Index"
166 | msgstr "Indice"
167 |
168 | msgid "Show Decimals"
169 | msgstr "Mostra decimali"
170 |
171 | msgid "Number"
172 | msgstr "Numero"
173 |
174 | msgid "Negative Sign"
175 | msgstr "Segno negativo"
176 |
177 | msgid "Decimal Point"
178 | msgstr "Punto decimale"
179 |
180 | msgid "Decimal"
181 | msgstr "Decimale"
182 |
183 | msgid "Start X"
184 | msgstr "Inizio X"
185 |
186 | msgid "Start Y"
187 | msgstr "Inizio Y"
188 |
189 | msgid "End X"
190 | msgstr "Fine X"
191 |
192 | msgid "End Y"
193 | msgstr "Fine Y"
194 |
195 | msgid "Flat Ends"
196 | msgstr "Estremità piatte"
197 |
--------------------------------------------------------------------------------
/src/locales/it/LC_MESSAGES/window.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/it/LC_MESSAGES/window.mo
--------------------------------------------------------------------------------
/src/locales/main.pot:
--------------------------------------------------------------------------------
1 | # Main Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
9 | "Last-Translator: FULL NAME \n"
10 | "Language-Team: LANGUAGE \n"
11 | "MIME-Version: 1.0\n"
12 | "Content-Type: text/plain; charset=cp1252\n"
13 | "Content-Transfer-Encoding: 8bit\n"
14 | "Generated-By: pygettext.py 1.5\n"
15 |
16 | msgid "You have unsaved project(s) open. Save and quit?"
17 | msgstr ""
18 |
19 | msgid "An urgent update {version} was released! The app will now update."
20 | msgstr ""
21 |
22 | msgid "A new update has been found ({version}). Would you like to update now?"
23 | msgstr ""
24 |
25 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
26 | msgstr ""
27 |
28 | msgid "Failed to obtain currentItem"
29 | msgstr ""
30 |
31 | msgid "No object found in widget list that has the name of currently selected graphics item: "
32 | msgstr ""
33 |
34 | msgid "Error occured during property update: Object not found!"
35 | msgstr ""
36 |
37 | msgid "Unable to find"
38 | msgstr ""
39 |
40 | msgid "Select Folder..."
41 | msgstr ""
42 |
43 | msgid "Add Image..."
44 | msgstr ""
45 |
46 | msgid "Are you sure you want to reset all dock widget positions?"
47 | msgstr ""
48 |
49 | msgid "Are you sure you want to create your project in the directory of this program?"
50 | msgstr ""
51 |
52 | msgid "Failed to createNewWorkspace: "
53 | msgstr ""
54 |
55 | msgid "Cannot open project: "
56 | msgstr ""
57 |
58 | msgid "Failed to create a new project: "
59 | msgstr ""
60 |
61 | msgid "Open Project..."
62 | msgstr ""
63 |
64 | msgid "Failed to open project: "
65 | msgstr ""
66 |
67 | msgid "Failed to save: "
68 | msgstr ""
69 |
70 | msgid "Failed to save project: "
71 | msgstr ""
72 |
73 | msgid "Project saved at "
74 | msgstr ""
75 |
76 | msgid "Save project before building?"
77 | msgstr ""
78 |
79 | msgid "Create Widget"
80 | msgstr ""
81 |
82 | msgid "Please set the watchface's name and thumbnail before building!"
83 | msgstr ""
84 |
85 | msgid "This watch does not support ID assignment, custom IDs will not be applied."
86 | msgstr ""
87 |
88 | msgid "Wine was not found."
89 | msgstr ""
90 |
91 | msgid "Building watchface..."
92 | msgstr ""
93 |
94 | msgid "Watchface built successfully at "
95 | msgstr ""
--------------------------------------------------------------------------------
/src/locales/properties.pot:
--------------------------------------------------------------------------------
1 | # Property Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
9 | "Last-Translator: FULL NAME \n"
10 | "Language-Team: LANGUAGE \n"
11 | "MIME-Version: 1.0\n"
12 | "Content-Type: text/plain; charset=cp1252\n"
13 | "Content-Transfer-Encoding: 8bit\n"
14 | "Generated-By: pygettext.py 1.5\n"
15 |
16 | msgid "Theme"
17 | msgstr ""
18 |
19 | msgid "Language"
20 | msgstr ""
21 |
22 | msgid "Check for Updates"
23 | msgstr ""
24 |
25 | msgid "Canvas"
26 | msgstr ""
27 |
28 | msgid "Snap to Guides"
29 | msgstr ""
30 |
31 | msgid "Clip to Device Shape"
32 | msgstr ""
33 |
34 | msgid "Show Device Outline"
35 | msgstr ""
36 |
37 | msgid "Antialiasing"
38 | msgstr ""
39 |
40 | msgid "Image Interpolation"
41 | msgstr ""
42 |
43 | msgid "Plugins"
44 | msgstr ""
45 |
46 | msgid "General"
47 | msgstr ""
48 |
49 | msgid "Widget Type"
50 | msgstr ""
51 |
52 | msgid "Name"
53 | msgstr ""
54 |
55 | msgid "Position"
56 | msgstr ""
57 |
58 | msgid "Width"
59 | msgstr ""
60 |
61 | msgid "Height"
62 | msgstr ""
63 |
64 | msgid "Appearance"
65 | msgstr ""
66 |
67 | msgid "Opacity"
68 | msgstr ""
69 |
70 | msgid "Visibility Trigger"
71 | msgstr ""
72 |
73 | msgid "Hour Hand Smooth"
74 | msgstr ""
75 |
76 | msgid "Minute Hand Smooth"
77 | msgstr ""
78 |
79 | msgid "Analog Properties"
80 | msgstr ""
81 |
82 | msgid "Background"
83 | msgstr ""
84 |
85 | msgid "Image"
86 | msgstr ""
87 |
88 | msgid "Alignment"
89 | msgstr ""
90 |
91 | msgid "Anchor Point"
92 | msgstr ""
93 |
94 | msgid "Hour Hand"
95 | msgstr ""
96 |
97 | msgid "Minute Hand"
98 | msgstr ""
99 |
100 | msgid "Second Hand"
101 | msgstr ""
102 |
103 | msgid "Progress Bar"
104 | msgstr ""
105 |
106 | msgid "Radius"
107 | msgstr ""
108 |
109 | msgid "Thickness"
110 | msgstr ""
111 |
112 | msgid "Start Angle"
113 | msgstr ""
114 |
115 | msgid "End Angle"
116 | msgstr ""
117 |
118 | msgid "Range"
119 | msgstr ""
120 |
121 | msgid "Minimum Value"
122 | msgstr ""
123 |
124 | msgid "Maximum Value"
125 | msgstr ""
126 |
127 | msgid "Minimum Step Value"
128 | msgstr ""
129 |
130 | msgid "Step Value"
131 | msgstr ""
132 |
133 | msgid "Data"
134 | msgstr ""
135 |
136 | msgid "Data Source"
137 | msgstr ""
138 |
139 | msgid "Max Value Source"
140 | msgstr ""
141 |
142 | msgid "Images"
143 | msgstr ""
144 |
145 | msgid "Default Index"
146 | msgstr ""
147 |
148 | msgid "Digits"
149 | msgstr ""
150 |
151 | msgid "Spacing"
152 | msgstr ""
153 |
154 | msgid "Hide Zeroes"
155 | msgstr ""
156 |
157 | msgid "Image List"
158 | msgstr ""
159 |
160 | msgid "Image Count"
161 | msgstr ""
162 |
163 | msgid "Index"
164 | msgstr ""
165 |
166 | msgid "Show Decimals"
167 | msgstr ""
168 |
169 | msgid "Number"
170 | msgstr ""
171 |
172 | msgid "Negative Sign"
173 | msgstr ""
174 |
175 | msgid "Decimal Point"
176 | msgstr ""
177 |
178 | msgid "Decimal"
179 | msgstr ""
180 |
181 | msgid "Start X"
182 | msgstr ""
183 |
184 | msgid "Start Y"
185 | msgstr ""
186 |
187 | msgid "End X"
188 | msgstr ""
189 |
190 | msgid "End Y"
191 | msgstr ""
192 |
193 | msgid "Flat Ends"
194 | msgstr ""
--------------------------------------------------------------------------------
/src/locales/pt/CONFIG.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | language = Portuguese
3 | authorMessage = European Portuguese (Portugal)
4 | contact = @billabongbruno
--------------------------------------------------------------------------------
/src/locales/pt/LC_MESSAGES/main.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/pt/LC_MESSAGES/main.mo
--------------------------------------------------------------------------------
/src/locales/pt/LC_MESSAGES/main.po:
--------------------------------------------------------------------------------
1 | # Main Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-04-29 22:43+0100\n"
9 | "Last-Translator: billabongbruno\n"
10 | "Language-Team: billabongbruno\n"
11 | "Language: pt_PT\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.6\n"
17 |
18 | msgid "You have unsaved project(s) open. Save and quit?"
19 | msgstr "Tem um ou mais projetos não guardados abertos. Guardar e sair?"
20 |
21 | msgid "An urgent update {version} was released! The app will now update."
22 | msgstr ""
23 | "Foi lançada uma atualização urgente {version}! A aplicação será agora "
24 | "atualizada."
25 |
26 | msgid "A new update has been found ({version}). Would you like to update now?"
27 | msgstr ""
28 | "Foi encontrada uma nova atualização ({version}). Gostaria de atualizar agora?"
29 |
30 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
31 | msgstr ""
32 | "Widget {shape} não implementado em ObjectIcon(), por favor comunique o "
33 | "problema."
34 |
35 | msgid "Failed to obtain currentItem"
36 | msgstr "Falha ao obter currentItem"
37 |
38 | msgid ""
39 | "No object found in widget list that has the name of currently selected "
40 | "graphics item: "
41 | msgstr ""
42 | "Não foi encontrado nenhum objeto na lista de widgets que tenha o nome do "
43 | "item gráfico atualmente selecionado: "
44 |
45 | msgid "Error occured during property update: Object not found!"
46 | msgstr ""
47 | "Ocorreu um erro durante a atualização da propriedade: Objeto não encontrado!"
48 |
49 | msgid "Unable to find"
50 | msgstr "Não foi possível encontrar"
51 |
52 | msgid "Select Folder..."
53 | msgstr "Selecionar pasta..."
54 |
55 | msgid "Add Image..."
56 | msgstr "Adicionar imagem..."
57 |
58 | msgid "Are you sure you want to reset all dock widget positions?"
59 | msgstr ""
60 | "Tem a certeza de que pretende repor todas as posições dos widgets de "
61 | "ancoragem?"
62 |
63 | msgid ""
64 | "Are you sure you want to create your project in the directory of this "
65 | "program?"
66 | msgstr ""
67 | "Tem a certeza de que pretende criar o seu projeto na pasta deste programa?"
68 |
69 | msgid "Failed to createNewWorkspace: "
70 | msgstr "Falha a createNewWorkspace: "
71 |
72 | msgid "Cannot open project: "
73 | msgstr "Não é possível abrir o projeto: "
74 |
75 | msgid "Failed to create a new project: "
76 | msgstr "Falha ao criar um novo projeto: "
77 |
78 | msgid "Open Project..."
79 | msgstr "Abrir projeto..."
80 |
81 | msgid "Failed to open project: "
82 | msgstr "Falha ao abrir o projeto: "
83 |
84 | msgid "Failed to save: "
85 | msgstr "Não foi possível guardar: "
86 |
87 | msgid "Failed to save project: "
88 | msgstr "Não foi possível guardar o projeto: "
89 |
90 | msgid "Project saved at "
91 | msgstr "Projeto guardado em "
92 |
93 | msgid "Save project before building?"
94 | msgstr "Guardar o projeto antes de o construir?"
95 |
96 | msgid "Create Widget"
97 | msgstr "Criar Widget"
98 |
99 | msgid "Please set the watchface's name and thumbnail before building!"
100 | msgstr "Por favor defina o nome do mostrador e miniatura antes de construir!"
101 |
102 | msgid ""
103 | "This watch does not support ID assignment, custom IDs will not be applied."
104 | msgstr ""
105 | "Este relógio não suporta a atribuição de ID, os IDs personalizados não serão "
106 | "aplicados."
107 |
108 | msgid "Wine was not found."
109 | msgstr "Não foi encontrado o Wine."
110 |
111 | msgid "Building watchface..."
112 | msgstr "A criar o mostrador."
113 |
114 | msgid "Watchface built successfully at "
115 | msgstr "Mostrador criado com sucesso em "
116 |
--------------------------------------------------------------------------------
/src/locales/pt/LC_MESSAGES/properties.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/pt/LC_MESSAGES/properties.mo
--------------------------------------------------------------------------------
/src/locales/pt/LC_MESSAGES/properties.po:
--------------------------------------------------------------------------------
1 | # Property Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-04-29 22:43+0100\n"
9 | "Last-Translator: billabongbruno\n"
10 | "Language-Team: billabongbruno\n"
11 | "Language: pt_PT\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.6\n"
17 |
18 | msgid "Theme"
19 | msgstr "Tema"
20 |
21 | msgid "Language"
22 | msgstr "Idioma"
23 |
24 | msgid "Check for Updates"
25 | msgstr "Verificar atualizações"
26 |
27 | msgid "Canvas"
28 | msgstr "Tela"
29 |
30 | msgid "Snap to Guides"
31 | msgstr "Ajustar a guias"
32 |
33 | msgid "Clip to Device Shape"
34 | msgstr "Ajustar a forma do dispositivo"
35 |
36 | msgid "Show Device Outline"
37 | msgstr "Mostrar delimitador do dispositivo"
38 |
39 | msgid "Antialiasing"
40 | msgstr "Antialiasing"
41 |
42 | msgid "Image Interpolation"
43 | msgstr "Interpolação de imagem"
44 |
45 | msgid "Plugins"
46 | msgstr "Plugins"
47 |
48 | msgid "General"
49 | msgstr "Geral"
50 |
51 | msgid "Widget Type"
52 | msgstr "Tipo de Widget"
53 |
54 | msgid "Name"
55 | msgstr "Nome"
56 |
57 | msgid "Position"
58 | msgstr "Posição"
59 |
60 | msgid "Width"
61 | msgstr "Largura"
62 |
63 | msgid "Height"
64 | msgstr "Altura"
65 |
66 | msgid "Appearance"
67 | msgstr "Aparência"
68 |
69 | msgid "Opacity"
70 | msgstr "Opacidade"
71 |
72 | msgid "Visibility Trigger"
73 | msgstr "Acionador de visibilidade"
74 |
75 | msgid "Hour Hand Smooth"
76 | msgstr "Ponteiro das horas suave"
77 |
78 | msgid "Minute Hand Smooth"
79 | msgstr "Ponteiro dos minutos suave"
80 |
81 | msgid "Analog Properties"
82 | msgstr "Propriedades do analógico"
83 |
84 | msgid "Background"
85 | msgstr "Fundo"
86 |
87 | msgid "Image"
88 | msgstr "Imagem"
89 |
90 | msgid "Alignment"
91 | msgstr "Alinhamento"
92 |
93 | msgid "Anchor Point"
94 | msgstr "Ponto de ancoragem"
95 |
96 | msgid "Hour Hand"
97 | msgstr "Ponteiro das horas"
98 |
99 | msgid "Minute Hand"
100 | msgstr "Ponteiro dos minutos"
101 |
102 | msgid "Second Hand"
103 | msgstr "Ponteiro dos segundos"
104 |
105 | msgid "Progress Bar"
106 | msgstr "Barra de progresso"
107 |
108 | msgid "Radius"
109 | msgstr "Raio"
110 |
111 | msgid "Thickness"
112 | msgstr "Espessura"
113 |
114 | msgid "Start Angle"
115 | msgstr "Ângulo inicial"
116 |
117 | msgid "End Angle"
118 | msgstr "Ângulo final"
119 |
120 | msgid "Range"
121 | msgstr "Intervalo"
122 |
123 | msgid "Minimum Value"
124 | msgstr "Valor mínimo"
125 |
126 | msgid "Maximum Value"
127 | msgstr "Valor máximo"
128 |
129 | msgid "Minimum Step Value"
130 | msgstr "Valor mínimo do passo"
131 |
132 | msgid "Step Value"
133 | msgstr "Valor do passo"
134 |
135 | msgid "Data"
136 | msgstr "Dados"
137 |
138 | msgid "Data Source"
139 | msgstr "Origem dos dados"
140 |
141 | msgid "Max Value Source"
142 | msgstr "Valor máximo da origem"
143 |
144 | msgid "Images"
145 | msgstr "Imagens"
146 |
147 | msgid "Default Index"
148 | msgstr "Índice Padrão"
149 |
150 | msgid "Digits"
151 | msgstr "Dígitos"
152 |
153 | msgid "Spacing"
154 | msgstr "Espaçamento"
155 |
156 | msgid "Hide Zeroes"
157 | msgstr "Esconder zeros"
158 |
159 | msgid "Image List"
160 | msgstr "Lista de imagens"
161 |
162 | msgid "Image Count"
163 | msgstr "Contador de imagens"
164 |
165 | msgid "Index"
166 | msgstr "Índice"
167 |
168 | msgid "Show Decimals"
169 | msgstr "Mostrar decimais"
170 |
171 | msgid "Number"
172 | msgstr "Número"
173 |
174 | msgid "Negative Sign"
175 | msgstr "Sinal negativo"
176 |
177 | msgid "Decimal Point"
178 | msgstr "Ponto decimal"
179 |
180 | msgid "Decimal"
181 | msgstr "Decimal"
182 |
183 | msgid "Start X"
184 | msgstr "Coordenada X inicial"
185 |
186 | msgid "Start Y"
187 | msgstr "Coordenada Y inicial"
188 |
189 | msgid "End X"
190 | msgstr "Coordenada X final"
191 |
192 | msgid "End Y"
193 | msgstr "Coordenada Y final"
194 |
195 | msgid "Flat Ends"
196 | msgstr "Bordas lisas"
197 |
--------------------------------------------------------------------------------
/src/locales/pt/LC_MESSAGES/window.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/pt/LC_MESSAGES/window.mo
--------------------------------------------------------------------------------
/src/locales/ru/CONFIG.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | language = Русский
3 | authorMessage = Переведено с помощью DeepL, испр. sgg
4 | contact = none
5 |
--------------------------------------------------------------------------------
/src/locales/ru/LC_MESSAGES/main.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/ru/LC_MESSAGES/main.mo
--------------------------------------------------------------------------------
/src/locales/ru/LC_MESSAGES/main.po:
--------------------------------------------------------------------------------
1 | # Main Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.1\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-01-26 11:37+1100\n"
9 | "Last-Translator: Serhii Horichenko \n"
10 | "Language-Team: \n"
11 | "Language: ru\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
16 | "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
17 | "Generated-By: pygettext.py 1.5\n"
18 | "X-Generator: Poedit 3.0.1\n"
19 |
20 | msgid "You have unsaved project(s) open. Save and quit?"
21 | msgstr "Открыт(ы) несохраненный(-ные) проект(ы). Сохранить и выйти?"
22 |
23 | msgid "An urgent update {version} was released! The app will now update."
24 | msgstr "Выпущено срочное обновление {version}! Приложение будет обновлено."
25 |
26 | msgid "A new update has been found ({version}). Would you like to update now?"
27 | msgstr "Найдено новое обновление ({version}). Хотите установить сейчас?"
28 |
29 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
30 | msgstr ""
31 | "Виджет {shape} не реализован в ObjectIcon(). Пожалуйста, сообщите об этом "
32 | "как о проблеме."
33 |
34 | msgid "Failed to obtain currentItem"
35 | msgstr "Не удалось получить currentItem"
36 |
37 | msgid ""
38 | "No object found in widget list that has the name of currently selected "
39 | "graphics item: "
40 | msgstr ""
41 | "В списке виджетов не найдено объекта с именем выбранного в данный момент "
42 | "графического элемента: "
43 |
44 | msgid "Error occured during property update: Object not found!"
45 | msgstr "Возникла ошибка при обновлении свойств: Объект не найден!"
46 |
47 | msgid "Unable to find"
48 | msgstr "Найти не удалось"
49 |
50 | msgid "Select Folder..."
51 | msgstr "Выберите папку..."
52 |
53 | msgid "Add Image..."
54 | msgstr "Добавить изображение..."
55 |
56 | msgid "Are you sure you want to reset all dock widget positions?"
57 | msgstr "Вы уверены, что хотите сбросить все позиции виджетов?"
58 |
59 | msgid ""
60 | "Are you sure you want to create your project in the directory of this "
61 | "program?"
62 | msgstr "Вы уверены, что хотите создать свой проект в каталоге этой программы?"
63 |
64 | msgid "Failed to createNewWorkspace: "
65 | msgstr "Не удалось создать новое рабочее пространство: "
66 |
67 | msgid "Cannot open project: "
68 | msgstr "Невозможно открыть проект: "
69 |
70 | msgid "Failed to create a new project: "
71 | msgstr "Не удалось создать новый проект: "
72 |
73 | msgid "Open Project..."
74 | msgstr "Открыть проект..."
75 |
76 | msgid "Failed to open project: "
77 | msgstr "Не удалось открыть проект: "
78 |
79 | msgid "Failed to save: "
80 | msgstr "Не удалось сохранить: "
81 |
82 | msgid "Failed to save project: "
83 | msgstr "Не удалось сохранить проект: "
84 |
85 | msgid "Project saved at "
86 | msgstr "Проект сохранен в "
87 |
88 | msgid "Save project before building?"
89 | msgstr "Сохранить проект до начала сборки?"
90 |
91 | msgid "Create Widget"
92 | msgstr "Создать виджет"
93 |
94 | msgid "Please set the watchface's name and thumbnail before building!"
95 | msgstr ""
96 | "Пожалуйста, задайте имя и миниатюру часового интерфейса перед созданием!"
97 |
98 | msgid ""
99 | "This watch does not support ID assignment, custom IDs will not be applied."
100 | msgstr ""
101 | "Эти часы не поддерживают присвоение идентификаторов, пользовательские "
102 | "идентификаторы не будут применяться."
103 |
104 | msgid "Wine was not found."
105 | msgstr "Программа «Wine» не найдена."
106 |
107 | msgid "Building watchface..."
108 | msgstr "Сборка часового циферблата..."
109 |
110 | msgid "Watchface built successfully at "
111 | msgstr "Часовой механизм успешно собран на "
112 |
--------------------------------------------------------------------------------
/src/locales/ru/LC_MESSAGES/properties.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/ru/LC_MESSAGES/properties.mo
--------------------------------------------------------------------------------
/src/locales/ru/LC_MESSAGES/window.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/ru/LC_MESSAGES/window.mo
--------------------------------------------------------------------------------
/src/locales/uk/CONFIG.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | language = Українська
3 | authorMessage = Переклад: Serhii Horichenko
4 | contact = mail@sgg.im
5 |
6 |
--------------------------------------------------------------------------------
/src/locales/uk/LC_MESSAGES/main.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/uk/LC_MESSAGES/main.mo
--------------------------------------------------------------------------------
/src/locales/uk/LC_MESSAGES/main.po:
--------------------------------------------------------------------------------
1 | # Main Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-01-26 11:48+1100\n"
9 | "Last-Translator: Serhii Horichenko \n"
10 | "Language-Team: \n"
11 | "Language: uk\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
16 | "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
17 | "Generated-By: pygettext.py 1.5\n"
18 | "X-Generator: Poedit 3.0.1\n"
19 |
20 | msgid "You have unsaved project(s) open. Save and quit?"
21 | msgstr "У Вас є відкриті незбережені дані. Зберегти та вийти?"
22 |
23 | msgid "An urgent update {version} was released! The app will now update."
24 | msgstr "Вийшло термінове оновлення {version}! Програму буде оновлено."
25 |
26 | msgid "A new update has been found ({version}). Would you like to update now?"
27 | msgstr "Знайдено оновлення ({version}). Встановити оновлення зараз?"
28 |
29 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
30 | msgstr ""
31 | "Віджет {shape} у ObjectIcon() не реалізований. Повідомте як про проблему."
32 |
33 | msgid "Failed to obtain currentItem"
34 | msgstr "Збій отримання поточного елементу currentItem"
35 |
36 | msgid ""
37 | "No object found in widget list that has the name of currently selected "
38 | "graphics item: "
39 | msgstr ""
40 | "У списку віджетів не знайдено жодного об'єкта з назвою обраного графічного "
41 | "елемента: "
42 |
43 | msgid "Error occured during property update: Object not found!"
44 | msgstr "Під час оновлення властивостей виникла помилка: Об'єкт не знайдений!"
45 |
46 | msgid "Unable to find"
47 | msgstr "Знайти не вийшло"
48 |
49 | msgid "Select Folder..."
50 | msgstr "Обрати теку..."
51 |
52 | msgid "Add Image..."
53 | msgstr "Додати зображення..."
54 |
55 | msgid "Are you sure you want to reset all dock widget positions?"
56 | msgstr "Ви дійсно хочете скинути усі позиції віджета?"
57 |
58 | msgid ""
59 | "Are you sure you want to create your project in the directory of this "
60 | "program?"
61 | msgstr "Ви дійсно хочете створити свій проєкт у теці цієї програми?"
62 |
63 | msgid "Failed to createNewWorkspace: "
64 | msgstr "Збій створення нового робочого простору: "
65 |
66 | msgid "Cannot open project: "
67 | msgstr "Неможливо відкрити проєкт: "
68 |
69 | msgid "Failed to create a new project: "
70 | msgstr "Збій створення нового проєкту: "
71 |
72 | msgid "Open Project..."
73 | msgstr "Відкрити проєкт..."
74 |
75 | msgid "Failed to open project: "
76 | msgstr "Збій відкриття проєкту: "
77 |
78 | msgid "Failed to save: "
79 | msgstr "Збій збереження: "
80 |
81 | msgid "Failed to save project: "
82 | msgstr "Збій збереження проєкту: "
83 |
84 | msgid "Project saved at "
85 | msgstr "Проєкт збережений о "
86 |
87 | msgid "Save project before building?"
88 | msgstr "Зберегти проєкт перед збиранням?"
89 |
90 | msgid "Create Widget"
91 | msgstr "Створити віджет"
92 |
93 | msgid "Please set the watchface's name and thumbnail before building!"
94 | msgstr "Будь ласка, встановіть ім'я та мініатюру циферблата перед побудовою!"
95 |
96 | msgid ""
97 | "This watch does not support ID assignment, custom IDs will not be applied."
98 | msgstr ""
99 | "Цей годинник не підтримує присвоєння ідентифікатора, користувацькі "
100 | "ідентифікатори не застосовуються."
101 |
102 | msgid "Wine was not found."
103 | msgstr "Програму Wine не знайдено."
104 |
105 | msgid "Building watchface..."
106 | msgstr "Побудова циферблату годинника..."
107 |
108 | msgid "Watchface built successfully at "
109 | msgstr "Циферблат годинника успішно побудований на "
110 |
--------------------------------------------------------------------------------
/src/locales/uk/LC_MESSAGES/properties.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/uk/LC_MESSAGES/properties.mo
--------------------------------------------------------------------------------
/src/locales/uk/LC_MESSAGES/properties.po:
--------------------------------------------------------------------------------
1 | # Property Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-01-25 21:48+1100\n"
9 | "Last-Translator: Serhii Horichenko \n"
10 | "Language-Team: \n"
11 | "Language: uk\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
16 | "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
17 | "Generated-By: pygettext.py 1.5\n"
18 | "X-Generator: Poedit 3.0.1\n"
19 |
20 | msgid "Theme"
21 | msgstr "Тема"
22 |
23 | msgid "Language"
24 | msgstr "Мова"
25 |
26 | msgid "Check for Updates"
27 | msgstr "Перевірити оновлення"
28 |
29 | msgid "Canvas"
30 | msgstr "Полотно"
31 |
32 | msgid "Snap to Guides"
33 | msgstr "Притягувати до сітки"
34 |
35 | msgid "Clip to Device Shape"
36 | msgstr "Обрізати під контур пристрою"
37 |
38 | msgid "Show Device Outline"
39 | msgstr "Показати контур пристрою"
40 |
41 | msgid "Antialiasing"
42 | msgstr "Сглажування"
43 |
44 | msgid "Image Interpolation"
45 | msgstr "Інтерполяція зображення"
46 |
47 | msgid "Plugins"
48 | msgstr "Плагіни"
49 |
50 | msgid "General"
51 | msgstr "Основне"
52 |
53 | msgid "Widget Type"
54 | msgstr "Тип віджету"
55 |
56 | msgid "Name"
57 | msgstr "Назва"
58 |
59 | msgid "Position"
60 | msgstr "Розташування"
61 |
62 | msgid "Width"
63 | msgstr "Ширина"
64 |
65 | msgid "Height"
66 | msgstr "Висота"
67 |
68 | msgid "Appearance"
69 | msgstr "Вигляд"
70 |
71 | msgid "Opacity"
72 | msgstr "Прозорість"
73 |
74 | msgid "Visibility Trigger"
75 | msgstr "Перемикач видимості"
76 |
77 | msgid "Hour Hand Smooth"
78 | msgstr "Зглажування стрілки годин"
79 |
80 | msgid "Minute Hand Smooth"
81 | msgstr "Зглажування стрілки хвилин"
82 |
83 | msgid "Analog Properties"
84 | msgstr "Аналогові властивості"
85 |
86 | msgid "Background"
87 | msgstr "Тло"
88 |
89 | msgid "Image"
90 | msgstr "Зображення"
91 |
92 | msgid "Alignment"
93 | msgstr "Вирівнювання"
94 |
95 | msgid "Anchor Point"
96 | msgstr "Точка прив'язки"
97 |
98 | msgid "Hour Hand"
99 | msgstr "Стрілка годин"
100 |
101 | msgid "Minute Hand"
102 | msgstr "Стрілка хвилин"
103 |
104 | msgid "Second Hand"
105 | msgstr "Стрілка секунд"
106 |
107 | msgid "Progress Bar"
108 | msgstr "Шкала"
109 |
110 | msgid "Radius"
111 | msgstr "Радіус"
112 |
113 | msgid "Thickness"
114 | msgstr "Товщина"
115 |
116 | msgid "Start Angle"
117 | msgstr "Початковий кут"
118 |
119 | msgid "End Angle"
120 | msgstr "Кінцевий кут"
121 |
122 | msgid "Range"
123 | msgstr "Діапазон"
124 |
125 | msgid "Minimum Value"
126 | msgstr "Мінімальне значення"
127 |
128 | msgid "Maximum Value"
129 | msgstr "Максимальне значення"
130 |
131 | msgid "Minimum Step Value"
132 | msgstr "Значення мінімального кроку"
133 |
134 | msgid "Step Value"
135 | msgstr "Значення кроку"
136 |
137 | msgid "Data"
138 | msgstr "Дані"
139 |
140 | msgid "Data Source"
141 | msgstr "Джерело даних"
142 |
143 | msgid "Max Value Source"
144 | msgstr "Джерело максимального значення"
145 |
146 | msgid "Images"
147 | msgstr "Зображення"
148 |
149 | msgid "Default Index"
150 | msgstr "Типовий індекс"
151 |
152 | msgid "Digits"
153 | msgstr "Цифри"
154 |
155 | msgid "Spacing"
156 | msgstr "Відступи"
157 |
158 | msgid "Hide Zeroes"
159 | msgstr "Сховати нулі"
160 |
161 | msgid "Image List"
162 | msgstr "Список зображень"
163 |
164 | msgid "Image Count"
165 | msgstr "Кількість зображень"
166 |
167 | msgid "Index"
168 | msgstr "Індекс"
169 |
170 | msgid "Show Decimals"
171 | msgstr "Показувати десяткові"
172 |
173 | msgid "Number"
174 | msgstr "Число"
175 |
176 | msgid "Negative Sign"
177 | msgstr "Від'ємний знак"
178 |
179 | msgid "Decimal Point"
180 | msgstr "Десятковий знак"
181 |
182 | msgid "Decimal"
183 | msgstr "Десяткові"
184 |
185 | msgid "Start X"
186 | msgstr "Початок X"
187 |
188 | msgid "Start Y"
189 | msgstr "Початок Y"
190 |
191 | msgid "End X"
192 | msgstr "Кінець X"
193 |
194 | msgid "End Y"
195 | msgstr "Кінець Y"
196 |
197 | msgid "Flat Ends"
198 | msgstr "Плоскі кінці"
199 |
--------------------------------------------------------------------------------
/src/locales/uk/LC_MESSAGES/window.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/uk/LC_MESSAGES/window.mo
--------------------------------------------------------------------------------
/src/locales/zh/CONFIG.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | language = 简体中文
3 | authorMessage = 翻译使用 DeepL
4 | contact = none
--------------------------------------------------------------------------------
/src/locales/zh/LC_MESSAGES/main.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/zh/LC_MESSAGES/main.mo
--------------------------------------------------------------------------------
/src/locales/zh/LC_MESSAGES/main.po:
--------------------------------------------------------------------------------
1 | # Main Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-01-26 11:49+1100\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: zh_CN\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Generated-By: pygettext.py 1.5\n"
16 | "X-Generator: Poedit 3.0.1\n"
17 |
18 | msgid "You have unsaved project(s) open. Save and quit?"
19 | msgstr "您打开了未保存的项目。要保存并退出吗?"
20 |
21 | msgid "An urgent update {version} was released! The app will now update."
22 | msgstr "发布了紧急更新 {version}!应用程序将立即更新。"
23 |
24 | msgid "A new update has been found ({version}). Would you like to update now?"
25 | msgstr "发现新的更新 ({version})。您想现在更新吗?"
26 |
27 | msgid "Widget {shape} not implemented in ObjectIcon(), please report as issue."
28 | msgstr "ObjectIcon() 中未实现 Widget {shape},请报告问题至作者GitHub。"
29 |
30 | msgid "Failed to obtain currentItem"
31 | msgstr "获取 currentItem 失败"
32 |
33 | msgid ""
34 | "No object found in widget list that has the name of currently selected "
35 | "graphics item: "
36 | msgstr "在组件列表中未发现与当前选定图形项目名称相同的对象: "
37 |
38 | msgid "Error occured during property update: Object not found!"
39 | msgstr "更新属性时发生错误: 未找到对象!"
40 |
41 | msgid "Unable to find"
42 | msgstr "无法找到"
43 |
44 | msgid "Select Folder..."
45 | msgstr "选择文件夹..."
46 |
47 | msgid "Add Image..."
48 | msgstr "添加图片..."
49 |
50 | msgid "Are you sure you want to reset all dock widget positions?"
51 | msgstr "您确定要重置所有基座组件的位置吗?"
52 |
53 | msgid ""
54 | "Are you sure you want to create your project in the directory of this "
55 | "program?"
56 | msgstr "您确定要在该程序的目录下创建项目吗?"
57 |
58 | msgid "Failed to createNewWorkspace: "
59 | msgstr "创建新工作空间失败: "
60 |
61 | msgid "Cannot open project: "
62 | msgstr "无法打开项目: "
63 |
64 | msgid "Failed to create a new project: "
65 | msgstr "创建新项目失败: "
66 |
67 | msgid "Open Project..."
68 | msgstr "打开项目..."
69 |
70 | msgid "Failed to open project: "
71 | msgstr "打开项目失败: "
72 |
73 | msgid "Failed to save: "
74 | msgstr "保存失败: "
75 |
76 | msgid "Failed to save project: "
77 | msgstr "保存项目失败: "
78 |
79 | msgid "Project saved at "
80 | msgstr "项目保存在 "
81 |
82 | msgid "Save project before building?"
83 | msgstr "在构建之前保存项目?"
84 |
85 | msgid "Create Widget"
86 | msgstr "创建小组件"
87 |
88 | msgid "Please set the watchface's name and thumbnail before building!"
89 | msgstr "请在构建前设置表面的名称和缩略图!"
90 |
91 | msgid ""
92 | "This watch does not support ID assignment, custom IDs will not be applied."
93 | msgstr "此表不支持 ID 分配,因此不会应用自定义 ID。"
94 |
95 | msgid "Wine was not found."
96 | msgstr "未找到 Wine 程序。"
97 |
98 | msgid "Building watchface..."
99 | msgstr "构建表盘中..."
100 |
101 | msgid "Watchface built successfully at "
102 | msgstr "表盘构建成功于 "
103 |
--------------------------------------------------------------------------------
/src/locales/zh/LC_MESSAGES/properties.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/zh/LC_MESSAGES/properties.mo
--------------------------------------------------------------------------------
/src/locales/zh/LC_MESSAGES/properties.po:
--------------------------------------------------------------------------------
1 | # Property Translation for Mi Create.
2 | # FIRST AUTHOR , 2024.
3 | #
4 | msgid ""
5 | msgstr ""
6 | "Project-Id-Version: 1.0\n"
7 | "POT-Creation-Date: 2024-01-02 11:05+1100\n"
8 | "PO-Revision-Date: 2025-01-25 21:43+1100\n"
9 | "Last-Translator: \n"
10 | "Language-Team: \n"
11 | "Language: zh_CN\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16 | "Generated-By: pygettext.py 1.5\n"
17 | "X-Generator: Poedit 3.0.1\n"
18 |
19 | msgid "Theme"
20 | msgstr "主题"
21 |
22 | msgid "Language"
23 | msgstr "语言"
24 |
25 | msgid "Check for Updates"
26 | msgstr "检查更新"
27 |
28 | msgid "Canvas"
29 | msgstr "画布"
30 |
31 | msgid "Snap to Guides"
32 | msgstr "磁性对齐"
33 |
34 | msgid "Clip to Device Shape"
35 | msgstr "裁剪至设备屏幕"
36 |
37 | msgid "Show Device Outline"
38 | msgstr "显示屏幕轮廓"
39 |
40 | msgid "Antialiasing"
41 | msgstr "抗锯齿"
42 |
43 | msgid "Image Interpolation"
44 | msgstr "图像插值模式"
45 |
46 | msgid "Plugins"
47 | msgstr "插件"
48 |
49 | msgid "General"
50 | msgstr "常规"
51 |
52 | msgid "Widget Type"
53 | msgstr "组件类型"
54 |
55 | msgid "Name"
56 | msgstr "名称"
57 |
58 | msgid "Position"
59 | msgstr "位置"
60 |
61 | msgid "Width"
62 | msgstr "宽度"
63 |
64 | msgid "Height"
65 | msgstr "高度"
66 |
67 | msgid "Appearance"
68 | msgstr "样式"
69 |
70 | msgid "Opacity"
71 | msgstr "不透明度"
72 |
73 | msgid "Visibility Trigger"
74 | msgstr "显示控制"
75 |
76 | msgid "Hour Hand Smooth"
77 | msgstr "时针线性随动"
78 |
79 | msgid "Minute Hand Smooth"
80 | msgstr "分针线性随动"
81 |
82 | msgid "Analog Properties"
83 | msgstr "模拟时钟属性"
84 |
85 | msgid "Background"
86 | msgstr "背景"
87 |
88 | msgid "Image"
89 | msgstr "图像"
90 |
91 | msgid "Alignment"
92 | msgstr "对齐"
93 |
94 | msgid "Anchor Point"
95 | msgstr "锚点"
96 |
97 | msgid "Hour Hand"
98 | msgstr "时针"
99 |
100 | msgid "Minute Hand"
101 | msgstr "分针"
102 |
103 | msgid "Second Hand"
104 | msgstr "秒针"
105 |
106 | msgid "Progress Bar"
107 | msgstr "进度条"
108 |
109 | msgid "Radius"
110 | msgstr "半径"
111 |
112 | msgid "Thickness"
113 | msgstr "厚度"
114 |
115 | msgid "Start Angle"
116 | msgstr "起始角度"
117 |
118 | msgid "End Angle"
119 | msgstr "结束角度"
120 |
121 | msgid "Range"
122 | msgstr "范围"
123 |
124 | msgid "Minimum Value"
125 | msgstr "最小值"
126 |
127 | msgid "Maximum Value"
128 | msgstr "最大值"
129 |
130 | msgid "Minimum Step Value"
131 | msgstr "默认最大值"
132 |
133 | msgid "Step Value"
134 | msgstr "最低阈值级"
135 |
136 | msgid "Data"
137 | msgstr "数据"
138 |
139 | msgid "Data Source"
140 | msgstr "数据源"
141 |
142 | msgid "Max Value Source"
143 | msgstr "最大值数据源"
144 |
145 | msgid "Images"
146 | msgstr "图片"
147 |
148 | msgid "Default Index"
149 | msgstr "默认索引"
150 |
151 | msgid "Digits"
152 | msgstr "数字"
153 |
154 | msgid "Spacing"
155 | msgstr "间距"
156 |
157 | msgid "Hide Zeroes"
158 | msgstr "隐藏零"
159 |
160 | msgid "Image List"
161 | msgstr "图片列表"
162 |
163 | msgid "Image Count"
164 | msgstr "图片数量"
165 |
166 | msgid "Index"
167 | msgstr "指数"
168 |
169 | msgid "Show Decimals"
170 | msgstr "显示小数"
171 |
172 | msgid "Number"
173 | msgstr "数字"
174 |
175 | msgid "Negative Sign"
176 | msgstr "负号"
177 |
178 | msgid "Decimal Point"
179 | msgstr "小数点"
180 |
181 | msgid "Decimal"
182 | msgstr "十进制"
183 |
184 | msgid "Start X"
185 | msgstr "开始 X"
186 |
187 | msgid "Start Y"
188 | msgstr "开始 Y"
189 |
190 | msgid "End X"
191 | msgstr "结束 X"
192 |
193 | msgid "End Y"
194 | msgstr "结束 Y"
195 |
196 | msgid "Flat Ends"
197 | msgstr "平头"
198 |
--------------------------------------------------------------------------------
/src/locales/zh/LC_MESSAGES/window.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/locales/zh/LC_MESSAGES/window.mo
--------------------------------------------------------------------------------
/src/plugins/libs/plugin_api/__init__.py:
--------------------------------------------------------------------------------
1 | from .main import PluginAPI
--------------------------------------------------------------------------------
/src/plugins/libs/plugin_api/main.py:
--------------------------------------------------------------------------------
1 | import os
2 | import shutil
3 |
4 | main_window = None
5 | plugin_loader = None
6 |
7 | class PluginAPI:
8 | def __init__(self):
9 | self.main_window = main_window
10 | self.plugin_loader = plugin_loader
11 |
12 | def init_globals(self, window, loader):
13 | global main_window
14 | global plugin_loader
15 | main_window = window
16 | plugin_loader = loader
17 |
18 | def get_api_version(self):
19 | return "1.0"
20 |
21 | def get_main_window(self):
22 | return self.main_window
23 |
24 | def get_installed_plugins(self):
25 | self.plugin_loader.listPlugins()
26 |
27 | def reload_plugins(self):
28 | self.plugin_loader.loadPlugins()
29 |
30 | def show_dialog(self, type, message):
31 | self.main_window.showDialog(type, message)
32 |
33 | def install_library(self, wheel):
34 | libs_folder = os.path.join(self.plugin_loader.folder, "libs")
35 | shutil.unpack_archive(wheel, libs_folder, "zip")
36 |
37 | def delete_library(self, library_name):
38 | libs_folder = os.path.join(self.plugin_loader.folder, "libs")
39 | module_path = os.path.join(libs_folder, library_name)
40 | if os.path.exists(module_path):
41 | shutil.rmtree(module_path)
42 |
--------------------------------------------------------------------------------
/src/resources/Inter.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/Inter.ttf
--------------------------------------------------------------------------------
/src/resources/MiCreate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/MiCreate.png
--------------------------------------------------------------------------------
/src/resources/MiCreate128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/MiCreate128x128.png
--------------------------------------------------------------------------------
/src/resources/MiCreate48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/MiCreate48x48.png
--------------------------------------------------------------------------------
/src/resources/MiCreate64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/MiCreate64x64.png
--------------------------------------------------------------------------------
/src/resources/MiFaceStudioInstaller.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/MiFaceStudioInstaller.ico
--------------------------------------------------------------------------------
/src/resources/__pycache__/icons_rc.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/__pycache__/icons_rc.cpython-311.pyc
--------------------------------------------------------------------------------
/src/resources/checkbox_checked.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
57 |
--------------------------------------------------------------------------------
/src/resources/checkbox_checked_disabled.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
57 |
--------------------------------------------------------------------------------
/src/resources/checkbox_partial.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
59 |
--------------------------------------------------------------------------------
/src/resources/checkbox_partial_disabled.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
59 |
--------------------------------------------------------------------------------
/src/resources/checkbox_unchecked.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
52 |
--------------------------------------------------------------------------------
/src/resources/checkbox_unchecked_disabled.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
52 |
--------------------------------------------------------------------------------
/src/resources/close_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/close_dark.png
--------------------------------------------------------------------------------
/src/resources/close_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
47 |
--------------------------------------------------------------------------------
/src/resources/close_hover_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
54 |
--------------------------------------------------------------------------------
/src/resources/close_hover_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
54 |
--------------------------------------------------------------------------------
/src/resources/close_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/close_light.png
--------------------------------------------------------------------------------
/src/resources/close_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
47 |
--------------------------------------------------------------------------------
/src/resources/down-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/down-arrow.png
--------------------------------------------------------------------------------
/src/resources/herta.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/herta.gif
--------------------------------------------------------------------------------
/src/resources/herta.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/herta.wav
--------------------------------------------------------------------------------
/src/resources/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/icon.ico
--------------------------------------------------------------------------------
/src/resources/mb8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/mb8.png
--------------------------------------------------------------------------------
/src/resources/radio_checked.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
59 |
--------------------------------------------------------------------------------
/src/resources/radio_checked_disabled.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
59 |
--------------------------------------------------------------------------------
/src/resources/radio_unchecked.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
53 |
--------------------------------------------------------------------------------
/src/resources/radio_unchecked_disabled.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
53 |
--------------------------------------------------------------------------------
/src/resources/resources.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | Inter.ttf
4 |
5 |
6 | close_dark.png
7 | close_dark.svg
8 | close_hover_dark.svg
9 | window_dark.png
10 |
11 |
12 | close_light.png
13 | close_light.svg
14 | close_hover_light.svg
15 | window_light.png
16 |
17 |
18 | down-arrow.png
19 | up-arrow.png
20 | radio_checked.svg
21 | radio_checked_disabled.svg
22 | radio_unchecked.svg
23 | radio_unchecked_disabled.svg
24 | checkbox_partial.svg
25 | checkbox_partial_disabled.svg
26 | checkbox_checked_disabled.svg
27 | checkbox_unchecked_disabled.svg
28 | checkbox_checked.svg
29 | checkbox_unchecked.svg
30 |
31 |
32 | MiCreate.png
33 | splash.png
34 | MiCreate48x48.png
35 | MiCreate64x64.png
36 | MiCreate128x128.png
37 | mb8.png
38 |
39 |
40 | herta.gif
41 | herta.wav
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/resources/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/splash.png
--------------------------------------------------------------------------------
/src/resources/up-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/up-arrow.png
--------------------------------------------------------------------------------
/src/resources/window_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/window_dark.png
--------------------------------------------------------------------------------
/src/resources/window_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/resources/window_light.png
--------------------------------------------------------------------------------
/src/themes/Default/config.ini:
--------------------------------------------------------------------------------
1 | [config]
2 | themeName = Default
3 |
4 | [theme]
5 | baseStyle = Fusion
6 | dataFolder = data
7 | colorSchemes = ["Dark", "Light"]
8 | iconFolder = icons
--------------------------------------------------------------------------------
/src/themes/Default/data/Dark/colorScheme.json:
--------------------------------------------------------------------------------
1 | {
2 | "Base": {
3 | "WindowText": [
4 | 255,
5 | 255,
6 | 255
7 | ],
8 | "Button": [
9 | 44,
10 | 46,
11 | 53
12 | ],
13 | "Light": [
14 | 100,
15 | 100,
16 | 100
17 | ],
18 | "Midlight": [
19 | 90,
20 | 90,
21 | 90
22 | ],
23 | "Mid": [
24 | 50,
25 | 50,
26 | 50
27 | ],
28 | "Dark": [
29 | 23,
30 | 24,
31 | 30
32 | ],
33 | "Text": [
34 | 255,
35 | 255,
36 | 255
37 | ],
38 | "BrightText": [
39 | 0,
40 | 0,
41 | 0
42 | ],
43 | "ButtonText": [
44 | 255,
45 | 255,
46 | 255
47 | ],
48 | "Base": [
49 | 20,
50 | 21,
51 | 26
52 | ],
53 | "Window": [
54 | 30,
55 | 33,
56 | 41
57 | ],
58 | "Shadow": [
59 | 20,
60 | 20,
61 | 20
62 | ],
63 | "Accent": [
64 | 20,
65 | 21,
66 | 26
67 | ],
68 | "Highlight": [
69 | 42,
70 | 130,
71 | 218
72 | ],
73 | "HighlightedText": [
74 | 255,
75 | 255,
76 | 255
77 | ],
78 | "Link": [
79 | 85,
80 | 170,
81 | 255
82 | ],
83 | "AlternateBase": [
84 | 63,
85 | 66,
86 | 75
87 | ],
88 | "ToolTipBase": [
89 | 53,
90 | 53,
91 | 53
92 | ],
93 | "ToolTipText": [
94 | 255,
95 | 255,
96 | 255
97 | ],
98 | "LinkVisited": [
99 | 80,
100 | 80,
101 | 80
102 | ]
103 | },
104 | "Disabled": {
105 | "WindowText": [
106 | 127,
107 | 127,
108 | 127
109 | ],
110 | "Text": [
111 | 127,
112 | 127,
113 | 127
114 | ],
115 | "ButtonText": [
116 | 127,
117 | 127,
118 | 127
119 | ],
120 | "Highlight": [
121 | 80,
122 | 80,
123 | 80
124 | ],
125 | "HighlightedText": [
126 | 127,
127 | 127,
128 | 127
129 | ]
130 | }
131 | }
--------------------------------------------------------------------------------
/src/themes/Default/data/Light/colorScheme.json:
--------------------------------------------------------------------------------
1 | {
2 | "Base": {
3 | "WindowText": [
4 | 0,
5 | 0,
6 | 0
7 | ],
8 | "Button": [
9 | 240,
10 | 240,
11 | 240
12 | ],
13 | "Light": [
14 | 180,
15 | 180,
16 | 180
17 | ],
18 | "Midlight": [
19 | 200,
20 | 200,
21 | 200
22 | ],
23 | "Dark": [
24 | 225,
25 | 225,
26 | 225
27 | ],
28 | "Text": [
29 | 0,
30 | 0,
31 | 0
32 | ],
33 | "BrightText": [
34 | 0,
35 | 0,
36 | 0
37 | ],
38 | "ButtonText": [
39 | 0,
40 | 0,
41 | 0
42 | ],
43 | "Base": [
44 | 245,
45 | 245,
46 | 245
47 | ],
48 | "Window": [
49 | 255,
50 | 255,
51 | 255
52 | ],
53 | "Shadow": [
54 | 20,
55 | 20,
56 | 20
57 | ],
58 | "Highlight": [
59 | 121,
60 | 196,
61 | 252
62 | ],
63 | "HighlightedText": [
64 | 0,
65 | 0,
66 | 0
67 | ],
68 | "Link": [
69 | 0,
70 | 162,
71 | 232
72 | ],
73 | "AlternateBase": [
74 | 235,
75 | 235,
76 | 235
77 | ],
78 | "ToolTipBase": [
79 | 240,
80 | 240,
81 | 240
82 | ],
83 | "ToolTipText": [
84 | 0,
85 | 0,
86 | 0
87 | ],
88 | "LinkVisited": [
89 | 222,
90 | 222,
91 | 222
92 | ]
93 | },
94 | "Disabled": {
95 | "WindowText": [
96 | 115,
97 | 115,
98 | 115
99 | ],
100 | "Text": [
101 | 115,
102 | 115,
103 | 115
104 | ],
105 | "ButtonText": [
106 | 115,
107 | 115,
108 | 115
109 | ],
110 | "Highlight": [
111 | 190,
112 | 190,
113 | 190
114 | ],
115 | "HighlightedText": [
116 | 115,
117 | 115,
118 | 115
119 | ]
120 | }
121 | }
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/align-horizontal-center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/align-horizontal-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/align-horizontal-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/align-vertical-bottom.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/align-vertical-center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/align-vertical-top.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/application-back.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/application-more.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/document-new.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/document-open.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/document-save.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/edit-copy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/edit-cut.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/edit-delete.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/edit-paste.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/edit-redo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/edit-undo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/folder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/go-bottom.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/go-top.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/insert-image.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/insert-object.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/media-playback-pause.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/media-playback-start.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/preferences-desktop.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/project-build.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/project-config.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/view-refresh.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/watchface-aod.svg:
--------------------------------------------------------------------------------
1 |
2 |
37 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/zoom-in.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/actions/24/zoom-out.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/index.theme:
--------------------------------------------------------------------------------
1 | [Icon Theme]
2 | Name=Dark
3 | Comment=Dark icons from lucide.dev
4 |
5 | # Directory List
6 | Directories=actions/24,mimetypes/24
7 |
8 | [actions/24]
9 | Size=24
10 | Type=Scalable
11 | MinSize=1
12 | MaxSize=256
13 | Context=Actions
14 |
15 | [mimetypes/24]
16 | Size=24
17 | Type=Scalable
18 | MinSize=1
19 | MaxSize=256
20 | Context=MimeTypes
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/application-plugin.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/device-watch.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/project-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/project-source.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/widget-analogdisplay.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/widget-arcprogress.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/widget-container.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/widget-digitalnumber.svg:
--------------------------------------------------------------------------------
1 |
2 |
42 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/widget-image.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/widget-imagelist.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Dark/mimetypes/24/widget-pointer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/align-horizontal-center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/align-horizontal-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/align-horizontal-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/align-vertical-bottom.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/align-vertical-center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/align-vertical-top.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/application-back.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/application-more.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/document-new.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/document-open.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/document-save.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/edit-copy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/edit-cut.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/edit-delete.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/edit-paste.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/edit-redo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/edit-undo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/folder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/go-bottom.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/go-top.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/insert-image.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/insert-object.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/media-playback-pause.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/media-playback-start.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/preferences-desktop.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/project-build.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/project-config.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/view-refresh.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/watchface-aod.svg:
--------------------------------------------------------------------------------
1 |
2 |
37 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/zoom-in.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/actions/24/zoom-out.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/index.theme:
--------------------------------------------------------------------------------
1 | [Icon Theme]
2 | Name=Light
3 | Comment=Light icons from lucide.dev
4 |
5 | # Directory List
6 | Directories=actions/24,mimetypes/24
7 |
8 | [actions/24]
9 | Size=24
10 | Type=Scalable
11 | MinSize=1
12 | MaxSize=256
13 | Context=Actions
14 |
15 | [mimetypes/24]
16 | Size=24
17 | Type=Scalable
18 | MinSize=1
19 | MaxSize=256
20 | Context=MimeTypes
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/application-plugin.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/device-watch.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/project-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/project-source.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/widget-analogdisplay.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/widget-arcprogress.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/widget-container.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/widget-digitalnumber.svg:
--------------------------------------------------------------------------------
1 |
2 |
42 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/widget-image.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/widget-imagelist.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/themes/Default/icons/Light/mimetypes/24/widget-pointer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/translate.py:
--------------------------------------------------------------------------------
1 | from PyQt6.QtCore import QCoreApplication
2 | import gettext
3 |
4 | windowTranslate = gettext.gettext
5 | propertyTranslate = gettext.gettext
6 |
7 | class Translator():
8 | @staticmethod
9 | def loadLanguage(language):
10 | windowTranslation = gettext.translation('window', localedir='locales', languages=[language])
11 | windowTranslation.install()
12 | global windowTranslate
13 | windowTranslate = windowTranslation.gettext
14 |
15 | propertyTranslation = gettext.translation('properties', localedir='locales', languages=[language])
16 | propertyTranslation.install()
17 | global propertyTranslate
18 | propertyTranslate = propertyTranslation.gettext
19 |
20 | @staticmethod
21 | def translate(context, key):
22 | if not "Ctrl" in key:
23 | if context == "property":
24 | return propertyTranslate(key)
25 | else:
26 | return windowTranslate(key)
27 | else:
28 | return key
29 |
30 | class QCoreApplication(Translator): # easily replace existing translate function
31 | def __init__(self): # when using Qt Designer
32 | super().__init__()
33 |
--------------------------------------------------------------------------------
/src/utils/binary.py:
--------------------------------------------------------------------------------
1 | from mmap import mmap, ACCESS_READ
2 |
3 | class WatchfaceBinary:
4 | def __init__(self, path):
5 | with open(path, "+rb") as binary:
6 | self.binary = mmap(binary.fileno(), 0)
7 |
8 | def setId(self, id):
9 | if len(id) == 9:
10 | self.binary[40:49] = bytes(id, encoding='ascii')
11 | self.binary.flush()
12 | else:
13 | raise ValueError("ID must be 9 numbers long!")
--------------------------------------------------------------------------------
/src/utils/menu.py:
--------------------------------------------------------------------------------
1 | # Context Menus
2 | # ooflet
3 |
4 | import sys
5 | import json
6 |
7 | from PyQt6.QtWidgets import QMenu
8 | from PyQt6.QtGui import QIcon
9 | from PyQt6.QtCore import QSize
10 |
11 | sys.path.append("..")
12 |
13 | from translate import Translator
14 |
15 | # Context Menu System notes:
16 | #
17 | # Context menu items allow for "inheritance" from the main window, basically
18 | # reusing already created menu items
19 |
20 | with open("data/context_menus.json") as file:
21 | contextMenus = json.load(file)
22 |
23 | class ContextMenu(QMenu):
24 | def __init__(self, type, ui):
25 | self.ids = {}
26 | super().__init__()
27 | def createContextMenu(menu, actions):
28 | for actionName, properties in actions.items():
29 | if properties.get("submenu"):
30 | subMenu = menu.addMenu(actionName)
31 | createContextMenu(subMenu, properties["subMenu"])
32 | elif properties.get("inherit"):
33 | menu.addAction(getattr(ui, properties["inherit"]))
34 | elif properties.get("inheritSubmenu"):
35 | menu.addMenu(getattr(ui, properties["inheritSubmenu"]))
36 | elif properties.get("specialType"):
37 | if properties.get("specialType") == "seperator":
38 | menu.addSeparator()
39 | else:
40 | action = menu.addAction(actionName)
41 | if properties.get("icon"):
42 | icon = QIcon().fromTheme(properties["icon"])
43 | action.setIcon(icon)
44 |
45 | if properties.get("id"):
46 | print(properties["id"])
47 | self.ids[action] = properties["id"]
48 |
49 | createContextMenu(self, contextMenus[type])
--------------------------------------------------------------------------------
/src/utils/theme.py:
--------------------------------------------------------------------------------
1 | # Theme Manager
2 | # ooflet
3 |
4 | import os
5 |
6 | from PyQt6.QtGui import QPalette, QColor, QIcon, QPixmap, QPainter
7 | from PyQt6.QtWidgets import QMessageBox, QProxyStyle
8 | from PyQt6.QtCore import Qt
9 | import logging
10 | import configparser
11 | import json
12 |
13 | themeDirectory = "themes"
14 |
15 | class Theme:
16 | def __init__(self):
17 | self.themes = {}
18 | self.themeNames = []
19 | self.currentWelcomePage = ""
20 |
21 | config = configparser.ConfigParser()
22 | logging.info("Initializing Themes")
23 | for file in os.listdir(themeDirectory):
24 | themeFolder = os.path.join(themeDirectory, file)
25 | if os.path.isdir(themeFolder):
26 | logging.debug("Themes directory found: "+themeFolder)
27 | config.read_file(open(os.path.join(themeFolder, "config.ini"), encoding="utf8"))
28 | self.themes[config.get('config', 'themeName')] = {
29 | "themeName": config.get('config', 'themeName'),
30 | "directory": themeFolder,
31 | "baseStyle": config.get('theme', 'baseStyle'),
32 | "colorSchemes": json.loads(config.get('theme', 'colorSchemes')),
33 | "dataFolder": os.path.join(themeFolder, config.get('theme', 'dataFolder')),
34 | "iconFolder": os.path.join(themeFolder, config.get('theme', 'iconFolder'))
35 | }
36 | for scheme in json.loads(config.get('theme', 'colorSchemes')):
37 | self.themeNames.append(f"{config.get('config', 'themeName')} {scheme}")
38 |
39 | def loadTheme(self, app, themeName):
40 | themeName = themeName.split(" ")
41 |
42 | if not self.themes.get(themeName[0]):
43 | return False
44 | theme = self.themes[themeName[0]]
45 |
46 | dataFolder = os.path.join(theme["dataFolder"], themeName[1])
47 |
48 | with open(os.path.join(dataFolder, "colorScheme.json")) as file:
49 | colorSchemeJson = json.loads(file.read())
50 |
51 | stylesheet = os.path.join(dataFolder, "style.qss")
52 |
53 | palette = QPalette()
54 |
55 | scheme = themeName[1]
56 | for colorGroup, colors in colorSchemeJson.items():
57 | for colorRole, color in colors.items():
58 | if colorGroup == "Disabled":
59 | palette.setColor(QPalette.ColorGroup.Disabled, getattr(QPalette.ColorRole, colorRole), QColor(color[0], color[1], color[2]))
60 | else:
61 | palette.setColor(getattr(QPalette.ColorRole, colorRole), QColor(color[0], color[1], color[2]))
62 |
63 | app.setPalette(palette)
64 |
65 | palette = QPalette()
66 |
67 | QIcon().setThemeSearchPaths([theme["iconFolder"]])
68 | QIcon().setThemeName(themeName[1])
69 |
70 | if theme["baseStyle"] != "none":
71 | app.setStyle(theme["baseStyle"])
72 |
73 | with open(stylesheet) as stylesheetFile:
74 | app.setStyleSheet(stylesheetFile.read())
75 |
76 | return True
--------------------------------------------------------------------------------
/src/utils/updater.py:
--------------------------------------------------------------------------------
1 | # Updater for Mi Create
2 | # tostr 2024
3 |
4 | import os
5 | import sys
6 | import requests
7 | import tempfile
8 | import threading
9 | import subprocess
10 |
11 | from PyQt6.QtCore import pyqtSignal
12 | from PyQt6.QtWidgets import QVBoxLayout, QDialog, QProgressBar, QLabel
13 |
14 | class Updater(QDialog):
15 | updateProgress = pyqtSignal(int)
16 | def __init__(self):
17 | super().__init__()
18 | self.installComplete = False
19 |
20 | self.setFixedSize(400, 75)
21 |
22 | self.text = QLabel(self)
23 | self.progressBar = QProgressBar(self)
24 |
25 | self.widgetLayout = QVBoxLayout()
26 | self.widgetLayout.addWidget(self.text, 0)
27 | self.widgetLayout.addWidget(self.progressBar, 1)
28 |
29 | self.setLayout(self.widgetLayout)
30 |
31 | self.updateProgress.connect(lambda progress: self.progressBar.setValue(progress))
32 |
33 | self.downloadThread = threading.Thread(target=self.startDownload, args=[self.startInstall])
34 | self.downloadThread.daemon = True
35 | self.downloadThread.start()
36 |
37 | self.show()
38 |
39 | def startDownload(self, callback):
40 | url = "https://github.com/ooflet/Mi-Create/releases/latest/download/setup.exe"
41 | filename = os.path.basename(url)
42 | filename = filename.replace('?', '_')
43 |
44 | self.text.setText("Downloading...")
45 | self.progressBar.setRange(0, 0)
46 |
47 | temp_folder = tempfile.gettempdir()
48 | self.temp_file = os.path.join(temp_folder, filename)
49 |
50 | total_size = 0
51 | block_size = 1024
52 | current_size = 0
53 |
54 | with requests.get(url, stream=True) as r:
55 | total_size = int(r.headers.get("content-length", 0))
56 | self.progressBar.setRange(0, total_size)
57 | r.raise_for_status()
58 | with open(self.temp_file, "wb") as f:
59 | for chunk in r.iter_content(chunk_size=block_size):
60 | current_size += len(chunk)
61 | self.text.setText(f"Downloading... {round(current_size/1000000)} MB/{round(total_size/1000000)} MB")
62 | self.updateProgress.emit(current_size)
63 | f.write(chunk)
64 |
65 | callback()
66 |
67 | def updateValue(self, progress):
68 | self.progressBar.setValue(progress)
69 |
70 | def startInstall(self):
71 | self.progressBar.setRange(0, 0)
72 | self.installComplete = True
73 | self.progressBar.deleteLater()
74 | self.text.deleteLater()
75 | try:
76 | subprocess.run(self.temp_file)
77 | except:
78 | pass
79 | sys.exit(0)
--------------------------------------------------------------------------------
/src/widgets/__pycache__/canvas.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/widgets/__pycache__/canvas.cpython-311.pyc
--------------------------------------------------------------------------------
/src/widgets/__pycache__/properties.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/widgets/__pycache__/properties.cpython-311.pyc
--------------------------------------------------------------------------------
/src/widgets/delegates.py:
--------------------------------------------------------------------------------
1 | from PyQt6.QtCore import Qt
2 | from PyQt6.QtWidgets import QStyledItemDelegate, QStyleOptionViewItem
3 |
4 | class ResourcesDelegate(QStyledItemDelegate):
5 | def __init__(self, parent):
6 | super().__init__(parent)
7 |
8 | def initStyleOption(self, option, index):
9 | option.decorationPosition = QStyleOptionViewItem.Position.Top
10 | option.decorationAlignment = Qt.AlignmentFlag.AlignCenter
11 | return super().initStyleOption(option, index)
--------------------------------------------------------------------------------
/src/widgets/editor.py:
--------------------------------------------------------------------------------
1 | # Code Editor for Mi Create
2 | # ooflet
3 |
4 | # Responsible for the embedded code editor for editing XML projects and Lua/JS programs
5 | # Powered by the Scintilla source code editing component
6 | # Uses QScintilla bindings provided by Riverbank Computing's PyQt project
7 |
8 | from PyQt6.QtWidgets import QFrame
9 | from PyQt6.QtGui import QColor, QFont, QPalette
10 | from PyQt6.Qsci import QsciScintilla, QsciLexerXML, QsciLexerJSON
11 |
12 | class XMLLexer(QsciLexerXML):
13 | def __init__(self, parent):
14 | super().__init__(parent)
15 | self.setFont(QFont("Courier New", 10))
16 | self.setColor(QColor(255,255,255), 0)
17 | self.setColor(QColor(78, 140, 191), 1)
18 | self.setColor(QColor(22, 195, 222), 2)
19 | self.setColor(QColor(83, 188, 237), 3)
20 | self.setColor(QColor(255, 255, 255), 4)
21 | self.setColor(QColor(255, 255, 255), 5)
22 | self.setColor(QColor(206, 145, 120), 6)
23 | self.setColor(QColor(255, 255, 255), 7)
24 | self.setColor(QColor(255, 255, 255), 8)
25 | self.setColor(QColor(255, 255, 255), 9)
26 | self.setColor(QColor(255, 255, 255), 10)
27 | self.setColor(QColor(170, 170, 170), 11)
28 | self.setColor(QColor(170, 170, 170), 12)
29 | self.setColor(QColor(170, 170, 170), 13)
30 |
31 | class JsonLexer(QsciLexerJSON):
32 | def __init__(self, parent):
33 | super().__init__(parent)
34 | self.setFont(QFont("Courier New", 10))
35 | self.setColor(QColor(255,255,255), 0)
36 | self.setColor(QColor(78, 140, 191), 1)
37 | self.setColor(QColor(22, 195, 222), 2)
38 | self.setColor(QColor(83, 188, 237), 3)
39 | self.setColor(QColor(255, 255, 255), 4)
40 | self.setColor(QColor(255, 255, 255), 5)
41 | self.setColor(QColor(206, 145, 120), 6)
42 | self.setColor(QColor(255, 255, 255), 7)
43 | self.setColor(QColor(255, 255, 255), 8)
44 | self.setColor(QColor(255, 255, 255), 9)
45 | self.setColor(QColor(255, 255, 255), 10)
46 | self.setColor(QColor(170, 170, 170), 11)
47 | self.setColor(QColor(170, 170, 170), 12)
48 | self.setColor(QColor(170, 170, 170), 13)
49 |
50 |
51 | class Editor(QsciScintilla):
52 | def __init__(self, parent, palette, lexer):
53 | super().__init__(parent)
54 |
55 | self.setFrameShape(QFrame.Shape.NoFrame)
56 |
57 | self.setLexer(lexer(self))
58 | self.setFont(QFont("Courier New", 10))
59 |
60 | # End of Line
61 | self.setEolMode(QsciScintilla.EolMode.EolWindows)
62 | self.setEolVisibility(False)
63 |
64 | # Caret
65 | self.setCaretLineVisible(True)
66 | self.setCaretForegroundColor(palette.color(QPalette.ColorRole.Text))
67 | self.setCaretLineBackgroundColor(palette.color(QPalette.ColorRole.AlternateBase))
68 |
69 | # Indentation
70 | self.setIndentationsUseTabs(False)
71 | self.setTabWidth(4)
72 | self.setIndentationGuides(True)
73 | self.setTabIndents(True)
74 | self.setAutoIndent(True)
75 |
76 | # Line num margin
77 | self.setMarginType(0, QsciScintilla.MarginType.NumberMargin)
78 | self.setMarginWidth(0, "0000")
79 | self.setMarginsBackgroundColor(palette.color(QPalette.ColorRole.Dark))
80 | self.setMarginsForegroundColor(palette.color(QPalette.ColorRole.Text))
--------------------------------------------------------------------------------
/src/widgets/explorer.py:
--------------------------------------------------------------------------------
1 | # Explorer Widget for Mi Create
2 | # ooflet
3 |
4 | from PyQt6.QtWidgets import QTreeWidget, QTreeWidgetItem, QFrame, QMessageBox, QPushButton
5 | from PyQt6.QtGui import QContextMenuEvent, QIcon, QStandardItemModel
6 | from PyQt6.QtCore import Qt, QSize, pyqtSignal, QModelIndex, QPoint
7 |
8 | from translate import Translator
9 | from utils.menu import ContextMenu
10 |
11 | class Explorer(QTreeWidget):
12 | itemReordered = pyqtSignal(int)
13 | def __init__(self, parent, objectIcon, ui):
14 | super().__init__(parent)
15 | self.items = {}
16 | self.objectIcon = objectIcon
17 | self.mainWindowUI = ui
18 | self.dropPos = None
19 | self.setSelectionMode(QTreeWidget.SelectionMode.ExtendedSelection)
20 | self.setEditTriggers(QTreeWidget.EditTrigger.NoEditTriggers)
21 | self.setHorizontalScrollMode(QTreeWidget.ScrollMode.ScrollPerPixel)
22 | self.setVerticalScrollMode(QTreeWidget.ScrollMode.ScrollPerPixel)
23 | self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
24 | self.setFrameShape(QFrame.Shape.NoFrame)
25 | self.setDragDropMode(QTreeWidget.DragDropMode.InternalMove)
26 | self.setUniformRowHeights(True)
27 | self.setHeaderHidden(True)
28 | self.setAnimated(True)
29 | self.clear()
30 |
31 | self.customContextMenuRequested.connect(self.contextMenuEvent)
32 |
33 | def dragMoveEvent(self, event):
34 | self.setDropIndicatorShown(True)
35 | super(QTreeWidget, self).dragMoveEvent(event)
36 |
37 | if self.dropIndicatorPosition() != self.DropIndicatorPosition.OnItem:
38 | # dropping anywhere but on item is disabled
39 | # will fix behaviour when the time comes
40 | self.setDropIndicatorShown(False)
41 | event.ignore()
42 |
43 | def dropEvent(self, event):
44 | dropIndex = self.indexAt(event.position().toPoint()).row()
45 | self.itemReordered.emit(dropIndex)
46 |
47 | def contextMenuEvent(self, pos):
48 | if len(self.selectedItems()) > 0:
49 | pos = self.mapToGlobal(pos)
50 | menu = ContextMenu("shape", self.mainWindowUI)
51 | menu.exec(pos)
52 |
53 | def updateExplorer(self, project):
54 | self.clear()
55 | self.items = {}
56 | def createItem(item):
57 | if not self.objectIcon.icon.get(item.getProperty("widget_type")):
58 | #self.showDialogue("error", f"Widget {item['@Shape']} not implemented in self.objectIcon, please report as issue.")
59 | return
60 | object = QTreeWidgetItem(root)
61 | object.setText(0, item.getProperty("widget_name"))
62 | object.setSizeHint(0, QSize(18, 18))
63 | object.setIcon(0, QIcon.fromTheme(self.objectIcon.icon[item.getProperty("widget_type")]))
64 | object.setFlags(object.flags() | Qt.ItemFlag.ItemIsEditable)
65 | object.setData(0, 100, item.getProperty("widget_type"))
66 | object.setData(0, 101, item.getProperty("widget_name"))
67 | self.items[item.getProperty("widget_name")] = object
68 |
69 | icon = QIcon().fromTheme("device-watch")
70 | name = None
71 | if project.currentTheme == "aod":
72 | name = Translator.translate("", "Always on Display")
73 | elif project.getTitle() == "":
74 | name = Translator.translate("", "Watchface")
75 | else:
76 | name = project.getTitle()
77 | root = QTreeWidgetItem(self)
78 | root.setText(0, name)
79 | root.setIcon(0, icon)
80 | root.setData(0, 100, "00")
81 | root.setFlags(root.flags() | Qt.ItemFlag.ItemIsEditable)
82 | if project.getAllWidgets() != None:
83 | for x in project.getAllWidgets():
84 | createItem(x)
85 |
86 |
87 | self.expandAll()
--------------------------------------------------------------------------------
/src/window/__init__.py:
--------------------------------------------------------------------------------
1 | """
2 | PyQt6-Frameless-Window
3 | ======================
4 | A cross-platform frameless window based on pyqt6, support Win32, Linux and macOS.
5 |
6 | Documentation is available in the docstrings and
7 | online at https://pyqt-frameless-window.readthedocs.io.
8 |
9 | Examples are available at https://github.com/zhiyiYo/PyQt-Frameless-Window/tree/PyQt6/examples.
10 |
11 | Forked version used for Mi Create - ooflet
12 |
13 | :copyright: (c) 2021 by zhiyiYo.
14 | :license: GPLv3, see LICENSE for more details.
15 | """
16 |
17 | __version__ = "0.3.9"
18 | __author__ = "zhiyiYo"
19 |
20 | import sys
21 |
22 | from PyQt6.QtWidgets import QDialog, QMainWindow
23 |
24 | from .titlebar import TitleBar, TitleBarButton, SvgTitleBarButton, StandardTitleBar, TitleBarBase
25 |
26 | if sys.platform == "win32":
27 | from .windows import AcrylicWindow
28 | from .windows import WindowsFramelessWindow as FramelessWindow
29 | from .windows import WindowsWindowEffect as WindowEffect
30 | elif sys.platform == "darwin":
31 | from .mac import AcrylicWindow
32 | from .mac import MacFramelessWindow as FramelessWindow
33 | from .mac import MacWindowEffect as WindowEffect
34 | else:
35 | from .linux import LinuxFramelessWindow as FramelessWindow
36 | from .linux import LinuxWindowEffect as WindowEffect
37 |
38 | AcrylicWindow = FramelessWindow
39 |
40 |
41 | class FramelessDialog(QDialog, FramelessWindow):
42 | """ Frameless dialog """
43 |
44 | def __init__(self, parent=None):
45 | super().__init__(parent)
46 | self.titleBar.minBtn.hide()
47 | self.titleBar.maxBtn.hide()
48 | self.titleBar.setObjectName("dialogTitleBar")
49 | self.titleBar.setDoubleClickEnabled(False)
50 | self.windowEffect.disableMaximizeButton(self.winId())
51 |
52 |
53 | class QMainWindow(QMainWindow, FramelessWindow):
54 | """ Frameless main window """
55 |
56 | def __init__(self, parent=None):
57 | super().__init__(parent)
58 | self.titleBar.setObjectName("windowTitleBar")
--------------------------------------------------------------------------------
/src/window/__pycache__/__init__.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/__pycache__/__init__.cpython-311.pyc
--------------------------------------------------------------------------------
/src/window/__pycache__/__init__.cpython-312.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/__pycache__/__init__.cpython-312.pyc
--------------------------------------------------------------------------------
/src/window/_rc/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/_rc/__init__.py
--------------------------------------------------------------------------------
/src/window/_rc/resource.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Resource object code
4 | #
5 | # Created by: The Resource Compiler for PyQt5 (Qt v5.15.2)
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 | from PyQt6 import QtCore
10 |
11 | qt_resource_data = b"\
12 | \x00\x00\x01\x0e\
13 | \x3c\
14 | \x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x34\x35\x70\x74\x22\
15 | \x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x30\x70\x74\x22\x20\x76\
16 | \x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x76\x69\x65\
17 | \x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x35\x2e\x38\x37\x35\
18 | \x20\x31\x30\x2e\x35\x38\x33\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
19 | \x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
20 | \x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x3e\x0d\x0a\x20\x3c\
21 | \x67\x20\x66\x69\x6c\x6c\x3d\x22\x6e\x6f\x6e\x65\x22\x20\x73\x74\
22 | \x72\x6f\x6b\x65\x3d\x22\x23\x30\x30\x30\x22\x20\x73\x74\x72\x6f\
23 | \x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x22\x2e\x31\x37\x36\x33\x39\
24 | \x22\x3e\x0d\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x6d\
25 | \x36\x2e\x31\x32\x39\x35\x20\x33\x2e\x36\x36\x30\x31\x20\x33\x2e\
26 | \x32\x36\x33\x32\x20\x33\x2e\x32\x36\x33\x32\x7a\x22\x2f\x3e\x0d\
27 | \x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x6d\x39\x2e\x33\
28 | \x39\x32\x37\x20\x33\x2e\x36\x36\x30\x31\x2d\x33\x2e\x32\x36\x33\
29 | \x32\x20\x33\x2e\x32\x36\x33\x32\x7a\x22\x2f\x3e\x0d\x0a\x20\x3c\
30 | \x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
31 | "
32 |
33 | qt_resource_name = b"\
34 | \x00\x10\
35 | \x0a\xb5\xe4\x07\
36 | \x00\x71\
37 | \x00\x66\x00\x72\x00\x61\x00\x6d\x00\x65\x00\x6c\x00\x65\x00\x73\x00\x73\x00\x77\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\
38 | \x00\x09\
39 | \x06\x98\x8e\xa7\
40 | \x00\x63\
41 | \x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
42 | "
43 |
44 | qt_resource_struct_v1 = b"\
45 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
46 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
47 | \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
48 | "
49 |
50 | qt_resource_struct_v2 = b"\
51 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
52 | \x00\x00\x00\x00\x00\x00\x00\x00\
53 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
54 | \x00\x00\x00\x00\x00\x00\x00\x00\
55 | \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
56 | \x00\x00\x01\x85\xf7\x5b\x66\x29\
57 | "
58 |
59 | qt_version = [int(v) for v in QtCore.qVersion().split('.')]
60 | if qt_version < [5, 8, 0]:
61 | rcc_version = 1
62 | qt_resource_struct = qt_resource_struct_v1
63 | else:
64 | rcc_version = 2
65 | qt_resource_struct = qt_resource_struct_v2
66 |
67 | def qInitResources():
68 | QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
69 |
70 | def qCleanupResources():
71 | QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
72 |
73 | qInitResources()
74 |
--------------------------------------------------------------------------------
/src/window/_rc/title_bar/close.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/src/window/linux/window_effect.py:
--------------------------------------------------------------------------------
1 | # coding:utf-8
2 |
3 | class LinuxWindowEffect:
4 | """ Linux window effect """
5 |
6 | def __init__(self, window):
7 | self.window = window
8 |
9 | def setAcrylicEffect(self, hWnd, gradientColor="F2F2F230", isEnableShadow=True, animationId=0):
10 | """ set acrylic effect for window
11 |
12 | Parameter
13 | ----------
14 | hWnd: int or `sip.voidptr`
15 | window handle
16 |
17 | gradientColor: str
18 | hexadecimal acrylic mixed color, corresponding to RGBA components
19 |
20 | isEnableShadow: bool
21 | whether to enable window shadow
22 |
23 | animationId: int
24 | turn on blur animation or not
25 | """
26 | pass
27 |
28 | def setMicaEffect(self, hWnd, isDarkMode=False, isAlt=False):
29 | """ Add mica effect to the window (Win11 only)
30 |
31 | Parameters
32 | ----------
33 | hWnd: int or `sip.voidptr`
34 | Window handle
35 |
36 | isDarkMode: bool
37 | whether to use dark mode mica effect
38 |
39 | isAlt: bool
40 | whether to use mica alt effect
41 | """
42 | pass
43 |
44 | def setAeroEffect(self, hWnd):
45 | """ add Aero effect to the window
46 |
47 | Parameter
48 | ----------
49 | hWnd: int or `sip.voidptr`
50 | Window handle
51 | """
52 | pass
53 |
54 | def setTransparentEffect(self, hWnd):
55 | """ set transparent effect for window
56 |
57 | Parameters
58 | ----------
59 | hWnd : int or `sip.voidptr`
60 | Window handle
61 | """
62 | pass
63 |
64 | def removeBackgroundEffect(self, hWnd):
65 | """ Remove background effect
66 |
67 | Parameters
68 | ----------
69 | hWnd : int or `sip.voidptr`
70 | Window handle
71 | """
72 | pass
73 |
74 | def addShadowEffect(self, hWnd):
75 | """ add shadow to window
76 |
77 | Parameter
78 | ----------
79 | hWnd: int or `sip.voidptr`
80 | Window handle
81 | """
82 | pass
83 |
84 | def addMenuShadowEffect(self, hWnd):
85 | """ add shadow to menu
86 |
87 | Parameter
88 | ----------
89 | hWnd: int or `sip.voidptr`
90 | Window handle
91 | """
92 | pass
93 |
94 | @staticmethod
95 | def removeMenuShadowEffect(hWnd):
96 | """ Remove shadow from pop-up menu
97 |
98 | Parameters
99 | ----------
100 | hWnd: int or `sip.voidptr`
101 | Window handle
102 | """
103 | pass
104 |
105 | def removeShadowEffect(self, hWnd):
106 | """ Remove shadow from the window
107 |
108 | Parameters
109 | ----------
110 | hWnd: int or `sip.voidptr`
111 | Window handle
112 | """
113 | pass
114 |
115 | @staticmethod
116 | def addWindowAnimation(hWnd):
117 | """ Enables the maximize and minimize animation of the window
118 |
119 | Parameters
120 | ----------
121 | hWnd : int or `sip.voidptr`
122 | Window handle
123 | """
124 | pass
125 |
126 | @staticmethod
127 | def disableMaximizeButton(hWnd):
128 | """ Disable the maximize button of window
129 |
130 | Parameters
131 | ----------
132 | hWnd : int or `sip.voidptr`
133 | Window handle
134 | """
135 |
136 | def enableBlurBehindWindow(self, hWnd):
137 | """ enable the blur effect behind the whole client
138 |
139 | Parameters
140 | ----------
141 | hWnd: int or `sip.voidptr`
142 | Window handle
143 | """
144 | pass
--------------------------------------------------------------------------------
/src/window/utils/__init__.py:
--------------------------------------------------------------------------------
1 | # coding:utf-8
2 | import sys
3 |
4 | if sys.platform == "win32":
5 | from .win32_utils import WindowsMoveResize as MoveResize
6 | elif sys.platform == "darwin":
7 | from .mac_utils import MacMoveResize as MoveResize
8 | else:
9 | from .linux_utils import LinuxMoveResize as MoveResize
10 |
11 |
12 | def startSystemMove(window, globalPos):
13 | """ resize window
14 |
15 | Parameters
16 | ----------
17 | window: QWidget
18 | window
19 |
20 | globalPos: QPoint
21 | the global point of mouse release event
22 | """
23 | MoveResize.startSystemMove(window, globalPos)
24 |
25 |
26 | def starSystemResize(window, globalPos, edges):
27 | """ resize window
28 |
29 | Parameters
30 | ----------
31 | window: QWidget
32 | window
33 |
34 | globalPos: QPoint
35 | the global point of mouse release event
36 |
37 | edges: `Qt.Edges`
38 | window edges
39 | """
40 | MoveResize.starSystemResize(window, globalPos, edges)
41 |
--------------------------------------------------------------------------------
/src/window/utils/__pycache__/__init__.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/utils/__pycache__/__init__.cpython-311.pyc
--------------------------------------------------------------------------------
/src/window/utils/__pycache__/__init__.cpython-312.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/utils/__pycache__/__init__.cpython-312.pyc
--------------------------------------------------------------------------------
/src/window/utils/__pycache__/linux_utils.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/utils/__pycache__/linux_utils.cpython-311.pyc
--------------------------------------------------------------------------------
/src/window/utils/__pycache__/mac_utils.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/utils/__pycache__/mac_utils.cpython-311.pyc
--------------------------------------------------------------------------------
/src/window/utils/__pycache__/win32_utils.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/utils/__pycache__/win32_utils.cpython-311.pyc
--------------------------------------------------------------------------------
/src/window/utils/__pycache__/win32_utils.cpython-312.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ooflet/Mi-Create/a84dba4206e9871c57aa0455e7c74b35538e6642/src/window/utils/__pycache__/win32_utils.cpython-312.pyc
--------------------------------------------------------------------------------
/src/window/utils/linux_utils.py:
--------------------------------------------------------------------------------
1 | # coding: utf-8
2 |
3 | class LinuxMoveResize:
4 | """ Tool class for moving and resizing window """
5 |
6 | @classmethod
7 | def startSystemMove(cls, window, globalPos):
8 | """ move window """
9 | window.windowHandle().startSystemMove()
10 |
11 | @classmethod
12 | def starSystemResize(cls, window, globalPos, edges):
13 | """ resize window
14 |
15 | Parameters
16 | ----------
17 | window: QWidget
18 | window
19 |
20 | globalPos: QPoint
21 | the global point of mouse release event
22 |
23 | edges: `Qt.Edges`
24 | window edges
25 | """
26 | window.windowHandle().startSystemResize(edges)
27 |
--------------------------------------------------------------------------------
/src/window/utils/mac_utils.py:
--------------------------------------------------------------------------------
1 | # coding:utf-8
2 | from ctypes import c_void_p
3 |
4 | import Cocoa
5 | import objc
6 | from PyQt6.QtCore import QT_VERSION_STR
7 | from PyQt6.QtWidgets import QWidget
8 | from Quartz.CoreGraphics import (CGEventCreateMouseEvent,
9 | kCGEventLeftMouseDown, kCGMouseButtonLeft)
10 |
11 | QT_VERSION = tuple(int(v) for v in QT_VERSION_STR.split('.'))
12 |
13 |
14 | class MacMoveResize:
15 | """ Tool class for moving and resizing Mac OS window """
16 |
17 | @staticmethod
18 | def startSystemMove(window: QWidget, globalPos):
19 | """ resize window
20 |
21 | Parameters
22 | ----------
23 | window: QWidget
24 | window
25 |
26 | globalPos: QPoint
27 | the global point of mouse release event
28 | """
29 | if QT_VERSION >= (5, 15, 0):
30 | window.windowHandle().startSystemMove()
31 | return
32 |
33 | nsWindow = getNSWindow(window.winId())
34 |
35 | # send click event
36 | cgEvent = CGEventCreateMouseEvent(
37 | None, kCGEventLeftMouseDown, (globalPos.x(), globalPos.y()), kCGMouseButtonLeft)
38 | clickEvent = Cocoa.NSEvent.eventWithCGEvent_(cgEvent)
39 |
40 | if clickEvent:
41 | nsWindow.performWindowDragWithEvent_(clickEvent)
42 |
43 | # CFRelease(cgEvent)
44 |
45 | @classmethod
46 | def starSystemResize(cls, window, globalPos, edges):
47 | """ resize window
48 |
49 | Parameters
50 | ----------
51 | window: QWidget
52 | window
53 |
54 | globalPos: QPoint
55 | the global point of mouse release event
56 |
57 | edges: `Qt.Edges`
58 | window edges
59 | """
60 | pass
61 |
62 |
63 | def getNSWindow(winId):
64 | """ convert window handle to NSWindow
65 |
66 | Parameters
67 | ----------
68 | winId: int or `sip.voidptr`
69 | window handle
70 | """
71 | view = objc.objc_object(c_void_p=c_void_p(int(winId)))
72 | return view.window()
73 |
--------------------------------------------------------------------------------
/tools/plugin-toolkit.py:
--------------------------------------------------------------------------------
1 | # Plugin Toolkit
2 | # Create and package plugins
3 |
4 | import os
5 | import shutil
6 | import argparse
7 | import configparser
8 |
9 | config_template = """[config]
10 | name = {name}
11 | script = plugin.py
12 | icon = none
13 | version = 1.0
14 | author = {author}
15 | description = Description
16 |
17 | [plugin_api]
18 | api_version = 1.0
19 | supported_platforms = ["Windows", "Linux", "Darwin"]
20 | """
21 |
22 | script_template = """# PluginAPI communicates between the plugin and Mi Create
23 | # It is located in the libs folder in your plugins folder
24 | # This allows you to patch the API on runtime
25 | # However this is not recommended
26 | from plugin_api import PluginAPI
27 |
28 | class Plugin:
29 | def __init__(self):
30 | # Init function gets called upon plugin load immediately
31 | # It does not take into account whether or not the plugin is disabled
32 | self.api = PluginAPI()
33 | self.api.show_dialog("info", "Plugin has been initialized!")
34 |
35 | def register(self):
36 | # Function is called upon plugin initialization
37 | # This function is only called when the plugin is not disabled
38 | self.api.show_dialog("info", f"Hello World! We are running on PluginAPI version {self.api.get_api_version()}")
39 |
40 | def unregister(self):
41 | # Function called upon disabling a plugin
42 | # This function only calls when the user disables the plugin
43 | self.api.show_dialog("info", "Plugin has been disabled!")
44 | """
45 |
46 | def create_plugin(path, name, author):
47 | print(f"Creating plugin at: {path} with name: {name}")
48 | folder_path = os.path.join(path, name)
49 | os.mkdir(os.path.join(path, name))
50 | with open(os.path.join(folder_path, "config.ini"), "w+") as config:
51 | config.write(config_template.format(name=name, author=author))
52 | with open(os.path.join(folder_path, "plugin.py"), 'w+') as script:
53 | script.write(script_template)
54 |
55 | def package_plugin(path, output):
56 | print(f"Packaging plugin at: {path} to: {output}")
57 | config = configparser.ConfigParser()
58 | config.read_file(open(os.path.join(path, "config.ini"), encoding="utf8"))
59 | name = config.get("config", "name")
60 | os.chdir(output)
61 | shutil.make_archive(os.path.join(output, name), "zip", path)
62 | os.rename(os.path.join(output, f"{name}.zip"), f"{name}.plg")
63 |
64 | def main():
65 | parser = argparse.ArgumentParser(description="Plugin toolkit")
66 |
67 | # Define subcommands
68 | subparsers = parser.add_subparsers(dest="command", required=True)
69 |
70 | # Create subcommand
71 | create_parser = subparsers.add_parser("create", help="create a plugin scaffold")
72 | create_parser.add_argument("path", type=str, help="path to the directory to create")
73 | create_parser.add_argument("name", type=str, help="name of the plugin")
74 | create_parser.add_argument("author", type=str, help="author of the plugin")
75 |
76 | # Package subcommand
77 | package_parser = subparsers.add_parser("package", help="package a plugin")
78 | package_parser.add_argument("path", type=str, help="path to the plugin to package")
79 | package_parser.add_argument("output", type=str, help="path to where the packaged plugin will output")
80 |
81 | args = parser.parse_args()
82 |
83 | # Execute based on the command
84 | if args.command == "create":
85 | create_plugin(args.path, args.name, args.author)
86 | elif args.command == "package":
87 | package_plugin(args.path, args.output)
88 |
89 | if __name__ == "__main__":
90 | main()
--------------------------------------------------------------------------------