├── .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 | linux 7 | linux 8 |

9 | 10 | ![window](images/window.png) 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 | 16 | 36 | 38 | 42 | 50 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /src/resources/checkbox_checked_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 50 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /src/resources/checkbox_partial.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 50 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/resources/checkbox_partial_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 50 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/resources/checkbox_unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/resources/checkbox_unchecked_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 50 | 51 | 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 | 16 | 36 | 38 | 42 | 51 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/resources/radio_checked_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 51 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/resources/radio_unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /src/resources/radio_unchecked_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 51 | 52 | 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 | 15 | 17 | 36 | 41 | 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 | 15 | 17 | 36 | 41 | 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 | 2 | 3 | 4 | 5 | 6 | 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() --------------------------------------------------------------------------------