pygamestudio 1.0.0.dev1__tar.gz → 1.0.0.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/PKG-INFO +27 -6
  2. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/README.md +25 -5
  3. pygamestudio-1.0.0.dev3/README_zh-CN.md +112 -0
  4. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/pyproject.toml +3 -2
  5. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/api/runtime/config.py +3 -2
  6. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/api/runtime/scene.py +60 -16
  7. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/i18n/languages/en.json +52 -4
  8. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/i18n/languages/zh_CN.json +53 -5
  9. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/i18n/translator.py +3 -4
  10. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/fonts/SIMHEI.ttf +0 -0
  11. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/images/browse.png +0 -0
  12. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/images/heart.png +0 -0
  13. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/images/image.png +0 -0
  14. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/images/line.png +0 -0
  15. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/images/maximize_disabled.png +0 -0
  16. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/qss/dark.qss +56 -2
  17. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/qss/light.qss +563 -0
  18. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/resources.qrc +5 -0
  19. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/resources_rc.py +382 -22
  20. pygamestudio-1.0.0.dev3/src/pygamestudio/common/res/templates/editor_template.pygs +4 -0
  21. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/templates/main_template.py +5 -4
  22. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/templates/project_template.pygs +5 -0
  23. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/utils/config.py +2 -1
  24. pygamestudio-1.0.0.dev3/src/pygamestudio/common/utils/constant.py +1 -0
  25. pygamestudio-1.0.0.dev3/src/pygamestudio/common/utils/path.py +16 -0
  26. pygamestudio-1.0.0.dev3/src/pygamestudio/common/utils/theme.py +18 -0
  27. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/core/manager.py +27 -6
  28. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/object/base.py +15 -14
  29. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/object/canvas.py +1 -1
  30. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/object/ellipse.py +7 -9
  31. pygamestudio-1.0.0.dev3/src/pygamestudio/game/object/image.py +119 -0
  32. pygamestudio-1.0.0.dev3/src/pygamestudio/game/object/line.py +102 -0
  33. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/object/rect.py +7 -13
  34. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/object/text.py +34 -14
  35. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/object/type.py +2 -1
  36. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/about/window.py +4 -0
  37. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/search.py +5 -0
  38. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/tree.py +7 -7
  39. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/base/window.py +7 -14
  40. pygamestudio-1.0.0.dev3/src/pygamestudio/gui/build/desktop.py +351 -0
  41. pygamestudio-1.0.0.dev3/src/pygamestudio/gui/build/window.py +62 -0
  42. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/browser.py +47 -8
  43. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/search.py +5 -0
  44. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/window.py +4 -1
  45. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/delegate.py +15 -3
  46. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/dialog.py +64 -42
  47. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/list.py +7 -6
  48. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/search.py +2 -0
  49. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/hierarchy/menu.py +6 -3
  50. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/hierarchy/search.py +5 -0
  51. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/hierarchy/tree.py +5 -4
  52. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/hierarchy/widget.py +6 -3
  53. pygamestudio-1.0.0.dev3/src/pygamestudio/gui/inspector/component/lineedit.py +188 -0
  54. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/container.py +41 -12
  55. pygamestudio-1.0.0.dev3/src/pygamestudio/gui/inspector/layout/image.py +108 -0
  56. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/layout/line.py +22 -22
  57. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/layout/text.py +17 -6
  58. pygamestudio-1.0.0.dev3/src/pygamestudio/gui/scene/gizmo.py +179 -0
  59. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/scene/grid.py +86 -23
  60. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/scene/screen.py +67 -14
  61. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/scene/window.py +8 -5
  62. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/settings/editor.py +62 -4
  63. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/settings/project.py +17 -3
  64. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/window.py +33 -11
  65. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/main.py +5 -0
  66. pygamestudio-1.0.0.dev1/src/pygamestudio/api/runtime/object.py +0 -0
  67. pygamestudio-1.0.0.dev1/src/pygamestudio/common/res/templates/editor_template.pygs +0 -3
  68. pygamestudio-1.0.0.dev1/src/pygamestudio/common/utils/constant.py +0 -1
  69. pygamestudio-1.0.0.dev1/src/pygamestudio/common/utils/path.py +0 -4
  70. pygamestudio-1.0.0.dev1/src/pygamestudio/game/object/line.py +0 -175
  71. pygamestudio-1.0.0.dev1/src/pygamestudio/gui/inspector/component/lineedit.py +0 -19
  72. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/.github/FUNDING.yml +0 -0
  73. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/.gitignore +0 -0
  74. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/LICENSE +0 -0
  75. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/__init__.py +0 -0
  76. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/api/runtime/__init__.py +0 -0
  77. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/__init__.py +0 -0
  78. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/i18n/__init__.py +0 -0
  79. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/add.png +0 -0
  80. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/add_item.png +0 -0
  81. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/canvas.png +0 -0
  82. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/check.png +0 -0
  83. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/clear.png +0 -0
  84. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/close.png +0 -0
  85. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/create_project.png +0 -0
  86. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/down_arrow.png +0 -0
  87. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/ellipse.png +0 -0
  88. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/error.png +0 -0
  89. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/expand_or_collapse_all.png +0 -0
  90. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/eye_closed.png +0 -0
  91. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/eye_off.png +0 -0
  92. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/eye_open.png +0 -0
  93. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/import_project.png +0 -0
  94. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/info.png +0 -0
  95. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/left_arrow.png +0 -0
  96. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/logo.png +0 -0
  97. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/maximize.png +0 -0
  98. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/minimize.png +0 -0
  99. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/normalize.png +0 -0
  100. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/project_icon.png +0 -0
  101. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/rect.png +0 -0
  102. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/refresh_asset.png +0 -0
  103. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/right_arrow.png +0 -0
  104. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/run.png +0 -0
  105. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/search.png +0 -0
  106. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/sort.png +0 -0
  107. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/text.png +0 -0
  108. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/tree_arrow_down.png +0 -0
  109. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/tree_arrow_right.png +0 -0
  110. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/up_arrow.png +0 -0
  111. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/common/res/images/warning.png +0 -0
  112. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/__init__.py +0 -0
  113. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/core/__init__.py +0 -0
  114. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/game/object/button.py +0 -0
  115. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/__init__.py +0 -0
  116. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/about/__init__.py +0 -0
  117. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/delegate.py +0 -0
  118. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/menu.py +0 -0
  119. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/model.py +0 -0
  120. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/type.py +0 -0
  121. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/widget.py +0 -0
  122. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/asset/window.py +0 -0
  123. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/build/__init__.py +0 -0
  124. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/__init__.py +0 -0
  125. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/logger.py +0 -0
  126. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/menu.py +0 -0
  127. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/type.py +0 -0
  128. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/console/widget.py +0 -0
  129. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/__init__.py +0 -0
  130. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/config.py +0 -0
  131. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/menu.py +0 -0
  132. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/model.py +0 -0
  133. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/type.py +0 -0
  134. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/widget.py +0 -0
  135. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/dashboard/window.py +0 -0
  136. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/hierarchy/__init__.py +0 -0
  137. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/hierarchy/delegate.py +0 -0
  138. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/hierarchy/window.py +0 -0
  139. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/__init__.py +0 -0
  140. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/component/button.py +0 -0
  141. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/component/checkbox.py +0 -0
  142. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/component/combobox.py +0 -0
  143. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/component/label.py +0 -0
  144. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/component/picker.py +0 -0
  145. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/component/spinbox.py +0 -0
  146. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/component/textedit.py +0 -0
  147. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/layout/canvas.py +0 -0
  148. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/layout/ellipse.py +0 -0
  149. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/layout/rect.py +0 -0
  150. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/widget.py +0 -0
  151. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/inspector/window.py +0 -0
  152. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/main.py +0 -0
  153. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/scene/__init__.py +0 -0
  154. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/scene/widget.py +0 -0
  155. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev3}/src/pygamestudio/gui/settings/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pygamestudio
3
- Version: 1.0.0.dev1
3
+ Version: 1.0.0.dev3
4
4
  Summary: Let's create pygame visually!
5
5
  Project-URL: Documentation, https://pygamestudio.com/tutorial/installation
6
6
  Project-URL: Homepage, https://pygamestudio.com
@@ -23,6 +23,7 @@ Requires-Python: >=3.9
23
23
  Requires-Dist: numpy>=1.26.0
24
24
  Requires-Dist: platformdirs>=3.5.1
25
25
  Requires-Dist: pygame-ce>=2.5.6
26
+ Requires-Dist: pyinstaller>=6.18.0
26
27
  Requires-Dist: pyside6>=6.10.0
27
28
  Description-Content-Type: text/markdown
28
29
 
@@ -35,9 +36,11 @@ Description-Content-Type: text/markdown
35
36
  <img src="https://static.pepy.tech/personalized-badge/pygamestudio?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads" />
36
37
  <img src="https://img.shields.io/pypi/v/pygamestudio.svg?maxAge=86400">
37
38
  <img src="https://img.shields.io/badge/python-3-red.svg" />
38
- </div>
39
+ <br>
40
+ <br>
39
41
 
40
- <br>
42
+ English&nbsp; | &nbsp;[简体中文](https://github.com/pygamestudio/pygamestudio/blob/main/README_zh-CN.md)
43
+ </div>
41
44
 
42
45
  **Pygame Studio** is a visual editor built specifically for **pygame-ce**, designed to help users create pygame-ce projects visually, making it easier for beginners, students, and hobby developers to get started with pygame development.
43
46
 
@@ -60,6 +63,12 @@ After installation, run the following command in your terminal to launch the edi
60
63
  pygamestudio
61
64
  ```
62
65
 
66
+ You may also use the shortcut command:
67
+
68
+ ```bash
69
+ pygs
70
+ ```
71
+
63
72
  If the Pygame Studio editor launches successfully, the installation is complete.
64
73
 
65
74
  <img src="https://i-blog.csdnimg.cn/direct/2824782c7b4d4f2fb9f5650bab6ce87e.png" width="600"/>
@@ -73,6 +82,7 @@ If the Pygame Studio editor launches successfully, the installation is complete.
73
82
  | PySide6 | >=6.10.0 |
74
83
  | platformdirs | >=3.5.1 |
75
84
  | numpy | >=1.26.0 |
85
+ | pyinstaller | >=6.18.0 |
76
86
 
77
87
  <br>
78
88
 
@@ -83,22 +93,28 @@ If the Pygame Studio editor launches successfully, the installation is complete.
83
93
  pygamestudio
84
94
  ```
85
95
 
96
+ Or use the shortcut command:
97
+
98
+ ```bash
99
+ pygs
100
+ ```
101
+
86
102
  <br>
87
103
 
88
104
  **2.** Click the "Create" button to create a new project.
89
105
 
90
- <img src="https://i-blog.csdnimg.cn/direct/a627d1820d3145dda30bbd7857fd17b3.png" width="600"/>
106
+ <img src="https://i-blog.csdnimg.cn/direct/e60511fa4e344e1faf36fe41f160fa4e.png" width="600"/>
91
107
 
92
108
 
93
109
  Once created, the game project will be displayed in the Dashboard.
94
110
 
95
- <img src="https://i-blog.csdnimg.cn/direct/b1ef0d71e0f04265b1e77151032e7847.png" width="600"/>
111
+ <img src="https://i-blog.csdnimg.cn/direct/167b961ee6c14c0e8ceccdaf81706f57.png" width="600"/>
96
112
 
97
113
  <br>
98
114
 
99
115
  **3.** Double-click the created project to open the editing window and start your creation.
100
116
 
101
- <img src="https://i-blog.csdnimg.cn/direct/72f5ae9b15694ffbac8b14db81223ca2.png" width="800"/>
117
+ <img src="https://i-blog.csdnimg.cn/direct/28198f7ded9143f58f866c9a7e8d6dd2.png" width="800"/>
102
118
 
103
119
  <br>
104
120
 
@@ -107,6 +123,11 @@ Once created, the game project will be displayed in the Dashboard.
107
123
 
108
124
  <br>
109
125
 
126
+ # Release Notes
127
+ 🔗 visit https://pygamestudio.com/updates_and_support/release_notes
128
+
129
+ <br>
130
+
110
131
  # Key Features
111
132
  - **Open Source & Free Forever**: Released under the MIT LICENSE, free to use and modify for all purposes.
112
133
  - **Easy Installation**: Simply run `pip install pygamestudio` to install the editor.
@@ -7,9 +7,11 @@
7
7
  <img src="https://static.pepy.tech/personalized-badge/pygamestudio?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads" />
8
8
  <img src="https://img.shields.io/pypi/v/pygamestudio.svg?maxAge=86400">
9
9
  <img src="https://img.shields.io/badge/python-3-red.svg" />
10
- </div>
10
+ <br>
11
+ <br>
11
12
 
12
- <br>
13
+ English&nbsp; | &nbsp;[简体中文](https://github.com/pygamestudio/pygamestudio/blob/main/README_zh-CN.md)
14
+ </div>
13
15
 
14
16
  **Pygame Studio** is a visual editor built specifically for **pygame-ce**, designed to help users create pygame-ce projects visually, making it easier for beginners, students, and hobby developers to get started with pygame development.
15
17
 
@@ -32,6 +34,12 @@ After installation, run the following command in your terminal to launch the edi
32
34
  pygamestudio
33
35
  ```
34
36
 
37
+ You may also use the shortcut command:
38
+
39
+ ```bash
40
+ pygs
41
+ ```
42
+
35
43
  If the Pygame Studio editor launches successfully, the installation is complete.
36
44
 
37
45
  <img src="https://i-blog.csdnimg.cn/direct/2824782c7b4d4f2fb9f5650bab6ce87e.png" width="600"/>
@@ -45,6 +53,7 @@ If the Pygame Studio editor launches successfully, the installation is complete.
45
53
  | PySide6 | >=6.10.0 |
46
54
  | platformdirs | >=3.5.1 |
47
55
  | numpy | >=1.26.0 |
56
+ | pyinstaller | >=6.18.0 |
48
57
 
49
58
  <br>
50
59
 
@@ -55,22 +64,28 @@ If the Pygame Studio editor launches successfully, the installation is complete.
55
64
  pygamestudio
56
65
  ```
57
66
 
67
+ Or use the shortcut command:
68
+
69
+ ```bash
70
+ pygs
71
+ ```
72
+
58
73
  <br>
59
74
 
60
75
  **2.** Click the "Create" button to create a new project.
61
76
 
62
- <img src="https://i-blog.csdnimg.cn/direct/a627d1820d3145dda30bbd7857fd17b3.png" width="600"/>
77
+ <img src="https://i-blog.csdnimg.cn/direct/e60511fa4e344e1faf36fe41f160fa4e.png" width="600"/>
63
78
 
64
79
 
65
80
  Once created, the game project will be displayed in the Dashboard.
66
81
 
67
- <img src="https://i-blog.csdnimg.cn/direct/b1ef0d71e0f04265b1e77151032e7847.png" width="600"/>
82
+ <img src="https://i-blog.csdnimg.cn/direct/167b961ee6c14c0e8ceccdaf81706f57.png" width="600"/>
68
83
 
69
84
  <br>
70
85
 
71
86
  **3.** Double-click the created project to open the editing window and start your creation.
72
87
 
73
- <img src="https://i-blog.csdnimg.cn/direct/72f5ae9b15694ffbac8b14db81223ca2.png" width="800"/>
88
+ <img src="https://i-blog.csdnimg.cn/direct/28198f7ded9143f58f866c9a7e8d6dd2.png" width="800"/>
74
89
 
75
90
  <br>
76
91
 
@@ -79,6 +94,11 @@ Once created, the game project will be displayed in the Dashboard.
79
94
 
80
95
  <br>
81
96
 
97
+ # Release Notes
98
+ 🔗 visit https://pygamestudio.com/updates_and_support/release_notes
99
+
100
+ <br>
101
+
82
102
  # Key Features
83
103
  - **Open Source & Free Forever**: Released under the MIT LICENSE, free to use and modify for all purposes.
84
104
  - **Easy Installation**: Simply run `pip install pygamestudio` to install the editor.
@@ -0,0 +1,112 @@
1
+ <div align="center"><img src="https://i-blog.csdnimg.cn/direct/ce0f186a9ade4295bfa9367ceecba0e2.png" width="300"></div>
2
+ <div dir="auto" align="center">
3
+ <img src="https://img.shields.io/badge/Pygame Studio-Open Source-green.svg" />
4
+ <img src="https://img.shields.io/badge/For-pygame_ce-dark.svg" />
5
+ <img src="https://img.shields.io/badge/Language-Python-purple.svg" />
6
+ <img src="https://img.shields.io/badge/License-MIT-orange.svg" />
7
+ <img src="https://static.pepy.tech/personalized-badge/pygamestudio?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads" />
8
+ <img src="https://img.shields.io/pypi/v/pygamestudio.svg?maxAge=86400">
9
+ <img src="https://img.shields.io/badge/python-3-red.svg" />
10
+ <br>
11
+ <br>
12
+
13
+ [English](https://github.com/pygamestudio/pygamestudio) &nbsp;|&nbsp; 简体中文
14
+ </div>
15
+
16
+ **Pygame Studio** 是专为 **pygame-ce** 打造的可视化编辑器,支持以可视化方式制作 pygame-ce 项目,让编程新手、在校学生以及业余开发者都能更轻松地入门 Pygame 游戏开发。
17
+
18
+ <br>
19
+
20
+ # 安装教程
21
+ 你可以通过 pip 快速安装 Pygame Studio(请确保已安装 Python 3.9 及以上版本):
22
+
23
+ ```bash
24
+ pip install --upgrade pygamestudio
25
+ ```
26
+
27
+ > **注意:** 当前版本均为开发测试版,请务必加上 --upgrade 参数,确保安装最新开发版,而非本地缓存的旧版本。
28
+
29
+ <br>
30
+
31
+ 安装完成后,在终端执行以下命令即可启动编辑器,同时验证安装是否成功:
32
+
33
+ ```bash
34
+ pygamestudio
35
+ ```
36
+
37
+ 也可以使用以下快捷命令:
38
+
39
+ ```bash
40
+ pygs
41
+ ```
42
+
43
+ 若 Pygame Studio 编辑器成功显示,即代表安装成功。
44
+
45
+ <img src="https://i-blog.csdnimg.cn/direct/2824782c7b4d4f2fb9f5650bab6ce87e.png" width="600"/>
46
+
47
+ <br>
48
+
49
+ # 依赖库
50
+ | 库名称 | 要求版本 |
51
+ |-----|-----|
52
+ | pygame-ce | >=2.5.6 |
53
+ | PySide6 | >=6.10.0 |
54
+ | platformdirs | >=3.5.1 |
55
+ | numpy | >=1.26.0 |
56
+ | pyinstaller | >=6.18.0 |
57
+
58
+ <br>
59
+
60
+ # 快速上手
61
+ **1.** 输入以下命令启动 Pygame Studio:
62
+
63
+ ```bash
64
+ pygamestudio
65
+ ```
66
+
67
+ 也可以使用以下快捷命令:
68
+
69
+ ```bash
70
+ pygs
71
+ ```
72
+
73
+ <br>
74
+
75
+ **2.** 点击「创建」按钮新建项目。
76
+
77
+ <img src="https://i-blog.csdnimg.cn/direct/e60511fa4e344e1faf36fe41f160fa4e.png" width="600"/>
78
+
79
+
80
+ 创建完成后,游戏项目会展示在项目面板中。
81
+
82
+ <img src="https://i-blog.csdnimg.cn/direct/167b961ee6c14c0e8ceccdaf81706f57.png" width="600"/>
83
+
84
+ <br>
85
+
86
+ **3.** 双击已创建的项目,即可打开编辑窗口,开始你的游戏创作。
87
+
88
+ <img src="https://i-blog.csdnimg.cn/direct/28198f7ded9143f58f866c9a7e8d6dd2.png" width="800"/>
89
+
90
+ <br>
91
+
92
+ # 在线文档
93
+ 🔗 请访问 https://pygamestudio.com
94
+
95
+ <br>
96
+
97
+ # 更新日志
98
+ 🔗 请访问 https://pygamestudio.com/updates_and_support/release_notes
99
+
100
+ <br>
101
+
102
+ # 核心特点
103
+ - **永久开源免费**:基于 MIT 开源协议发布,可自由使用、二次修改。
104
+ - **极简安装方式**:只需执行 `pip install pygamestudio` 即可完成安装。
105
+ - **轻量跨平台**:启动速度快、无臃肿引擎,完美适配 Windows、macOS、Linux 三大系统。
106
+ - **可视化拖拽编辑**:以可视化拖拽方式开发 pygame-ce 游戏项目。
107
+ - **初学者友好**:非常适合 Python 初学者、学生和业余开发者学习与创作。
108
+
109
+ <br>
110
+
111
+ # 开源协议
112
+ Pygame Studio 基于 MIT 开源协议。
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pygamestudio"
7
- version = "1.0.0.dev1"
7
+ version = "1.0.0.dev3"
8
8
  authors = [{ name="Louis Ren", email="louis@pygamestudio.com" }]
9
9
  description = "Let's create pygame visually!"
10
10
  readme = "README.md"
@@ -28,7 +28,8 @@ dependencies = [
28
28
  "pygame-ce>=2.5.6",
29
29
  "PySide6>=6.10.0",
30
30
  "platformdirs>=3.5.1",
31
- "numpy>=1.26.0"
31
+ "numpy>=1.26.0",
32
+ "pyinstaller>=6.18.0"
32
33
  ]
33
34
 
34
35
  [project.urls]
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import json
3
3
  from pathlib import Path
4
+ from pygamestudio.common.i18n.translator import Translator as T
4
5
 
5
6
 
6
7
  def get_project_config():
@@ -8,11 +9,11 @@ def get_project_config():
8
9
  project_config_file_path = project_path / 'project.pygs'
9
10
 
10
11
  if not project_config_file_path.exists():
11
- raise RuntimeError('没有在项目根目录下找到project.pygs配置文件')
12
+ raise RuntimeError(T.tr('api.no_project_pygs', 'Failed to find config file project.pygs in the project root directory.'))
12
13
 
13
14
  try:
14
15
  with open(project_config_file_path, 'r', encoding='utf-8') as f:
15
16
  project_config = json.load(f)
16
17
  return project_config
17
18
  except Exception as e:
18
- raise RuntimeError(f'project.pygs配置加载失败:{e}')
19
+ raise RuntimeError(T.tr('api.fail_to_load_project_pygs', 'Failed to load config file project.pygs: {}').format(str(e)))
@@ -1,14 +1,17 @@
1
1
  import os
2
+ import re
2
3
  import json
3
4
  import pygame
4
5
  from pathlib import Path
5
- from pygamestudio.api.runtime.config import get_project_config
6
-
7
6
  from pygamestudio.game.object.type import *
8
7
  from pygamestudio.game.object.rect import *
9
8
  from pygamestudio.game.object.canvas import *
10
9
  from pygamestudio.game.object.text import *
11
10
  from pygamestudio.game.object.ellipse import *
11
+ from pygamestudio.game.object.line import *
12
+ from pygamestudio.game.object.image import *
13
+ from pygamestudio.api.runtime.config import get_project_config
14
+ from pygamestudio.common.i18n.translator import Translator as T
12
15
 
13
16
 
14
17
  class SceneLoader:
@@ -29,7 +32,7 @@ class SceneLoader:
29
32
  scene_path = Path(os.environ.get('PROJECT_PATH')) / project_config['asset']['current_scene']
30
33
 
31
34
  if not Path(scene_path).exists():
32
- raise RuntimeError(f'没有在scene文件夹下找到名为{scene_path}的场景文件')
35
+ raise RuntimeError(T.tr('api.no_scene_path', 'The scene path {} does not exist.').format(scene_path))
33
36
 
34
37
  self._all_object_tree_struct = {}
35
38
  self._current_scene_path = scene_path
@@ -74,7 +77,10 @@ class SceneLoader:
74
77
  obj = ObjectText(self, object_data, is_for_api=True)
75
78
  elif object_type == OBJECT_ELLIPSE:
76
79
  obj = ObjectEllipse(self, object_data, is_for_api=True)
77
-
80
+ elif object_type == OBJECT_LINE:
81
+ obj = ObjectLine(self, object_data, is_for_api=True)
82
+ elif object_type == OBJECT_IMAGE:
83
+ obj = ObjectImage(self, object_data, is_for_api=True)
78
84
  return obj
79
85
 
80
86
  def _add_object_tree_struct(self, parent_uuid, object_tree_struct_to_add):
@@ -115,7 +121,50 @@ class SceneLoader:
115
121
 
116
122
  _update(self._all_object_tree_struct, screen_surface)
117
123
 
118
- def _get_object_tree_struct(self, object_uuid, parent_object_tree_struct=None):
124
+ def _get_object_tree_struct_by_path(self, object_path):
125
+ def _get(name, target_item_index, current_item_index, recursion_time, part_number, object_tree_struct):
126
+ key = list(object_tree_struct.keys())[0]
127
+ value = list(object_tree_struct.values())[0]
128
+
129
+ if part_number < recursion_time:
130
+ return None
131
+ elif part_number == recursion_time:
132
+ if target_item_index == current_item_index and name == value['object'].name:
133
+ return {key: value}
134
+ elif target_item_index is None and name == value['object'].name:
135
+ return {key: value}
136
+ else:
137
+ return None
138
+ else:
139
+ recursion_time += 1
140
+ for i, child_object_tree_struct in enumerate(value['children']):
141
+ result = _get(name, target_item_index, i, recursion_time, part_number, child_object_tree_struct)
142
+ if result:
143
+ return result
144
+
145
+ return None
146
+
147
+ path_parts = object_path.strip('/').split('/')
148
+ if not path_parts:
149
+ return None
150
+
151
+ for i, part in enumerate(path_parts):
152
+ match = re.fullmatch(r'([^\[\]]+)(?:\[(\d+)\])?', part.strip())
153
+ if not match:
154
+ return None
155
+
156
+ recursion_time = 0
157
+ name = match.group(1)
158
+ target_item_index = int(match.group(2)) if match.group(2) is not None else None
159
+ object_tree_struct = _get(name, target_item_index, 0, recursion_time, i, self._all_object_tree_struct)
160
+
161
+ if i < len(path_parts)-1:
162
+ if object_tree_struct == None:
163
+ return None
164
+ else:
165
+ return object_tree_struct
166
+
167
+ def _get_object_tree_struct_by_uuid(self, object_uuid, parent_object_tree_struct=None):
119
168
  def _get(object_uuid, object_tree_struct):
120
169
  key = list(object_tree_struct.keys())[0]
121
170
  value = list(object_tree_struct.values())[0]
@@ -134,15 +183,13 @@ class SceneLoader:
134
183
  return _get(object_uuid, parent_object_tree_struct)
135
184
 
136
185
  def get_object_by_path(self, object_path:str):
137
- ...
138
-
186
+ object_tree_struct = self._get_object_tree_struct_by_path(object_path)
187
+ return list(object_tree_struct.values())[0]['object'] if object_tree_struct else None
188
+
139
189
  def get_object_by_uuid(self, object_uuid:str):
140
- object_tree_struct = self._get_object_tree_struct(object_uuid)
190
+ object_tree_struct = self._get_object_tree_struct_by_uuid(object_uuid)
141
191
  return object_tree_struct[object_uuid]['object'] if object_tree_struct else None
142
-
143
- def get_object_by_name(self, object_name:str):
144
- ...
145
-
192
+
146
193
 
147
194
  scene_loader = SceneLoader()
148
195
 
@@ -153,7 +200,4 @@ def get_object_by_path(object_path:str) -> object:
153
200
  return scene_loader.get_object_by_path(object_path)
154
201
 
155
202
  def get_object_by_uuid(object_uuid:str) -> object:
156
- return scene_loader.get_object_by_uuid(object_uuid)
157
-
158
- def get_object_by_name(object_name:str) -> object:
159
- return scene_loader.get_object_by_name(object_name)
203
+ return scene_loader.get_object_by_uuid(object_uuid)
@@ -13,6 +13,8 @@
13
13
  "question_delete_hierarchy_item_content": "Sure to delete the selected item(s)?",
14
14
  "question_delete_project_content": "Sure to delete the project?",
15
15
  "question_overwrite_content": "Sure to overwrite the following duplicate resources?\n{}",
16
+ "question_stop_build": "Sure to stop the building?",
17
+ "question_stop_build_close_window": "Sure to stop the building and close the window?",
16
18
  "information_title": "Info",
17
19
  "information_os_content": "Unsupported Operating System",
18
20
  "critical_title": "Error",
@@ -24,6 +26,12 @@
24
26
  "critical_rename_content": "Failed to rename: {}",
25
27
  "critical_open_project": "Failed to open the project. Couldn't find project.pygs.",
26
28
  "critical_find_project": "Couldn't find the project.",
29
+ "critical_delete_project": "Couldn't delete the project: {}",
30
+ "critical_main_not_found": "main.py is not found. Please make sure main.py is in the project root directory.",
31
+ "critical_app_icon_not_exist": "App icon not exist",
32
+ "critical_no_output_dir": "Please choose the output dir",
33
+ "critical_output_dir_not_exist": "Output dir does not exist",
34
+ "critical_fail_to_build": "Failed to build the project. Please check the log.",
27
35
  "to_be_released": "To be released!"
28
36
  },
29
37
 
@@ -70,7 +78,8 @@
70
78
  "documentation": "Documentation",
71
79
  "release_notes": "Release Notes",
72
80
  "github_repository": "Github Repository",
73
- "about_pygamestudio": "About Pygame Stuido"
81
+ "about_pygamestudio": "About Pygame Studio",
82
+ "support_pygamestudio": "Support Pygame Studio"
74
83
  },
75
84
 
76
85
  "item": {
@@ -78,7 +87,8 @@
78
87
  "line": "Line",
79
88
  "rect": "Rect",
80
89
  "ellipse": "Ellipse",
81
- "text": "Text"
90
+ "text": "Text",
91
+ "image": "Image"
82
92
  },
83
93
 
84
94
  "gm": {
@@ -103,6 +113,7 @@
103
113
 
104
114
  "scene": {
105
115
  "scene": "Scene",
116
+ "scene_saved": "Scene saved",
106
117
  "run_project": "Run Project {}",
107
118
  "failed_to_run_project": "Failed to Run Project {}: {}"
108
119
  },
@@ -140,7 +151,11 @@
140
151
  "italic": "Italic",
141
152
  "underline": "Underline",
142
153
  "strikethrough": "Strikethrough",
143
- "select_color": "Select Color"
154
+ "select_color": "Select Color",
155
+ "image_path": "Image Path",
156
+ "select_image": "Select Image",
157
+ "font_path": "Font Path",
158
+ "format": "Format"
144
159
  },
145
160
 
146
161
  "dashboard": {
@@ -172,10 +187,43 @@
172
187
  "screen_width": "Screen Width",
173
188
  "screen_height": "Screen Height",
174
189
  "general": "General",
175
- "language": "Language"
190
+ "language": "Language",
191
+ "theme": "Theme"
176
192
  },
177
193
 
178
194
  "about": {
179
195
  "version": "Version {}"
196
+ },
197
+
198
+ "build": {
199
+ "app_name": "App Name",
200
+ "app_name_placeholder": "Please enter the app name",
201
+ "app_icon": "App Icon",
202
+ "app_icon_placeholder": "Please choose the app icon (.png/.ico/.icns)",
203
+ "output_dir": "Output Dir",
204
+ "output_dir_placeholder": "Please choose the output dir",
205
+ "clean_cache": "Clean Cache",
206
+ "build": "Build",
207
+ "open_output_dir": "Open Output Dir",
208
+ "desktop_app": "Desktop App",
209
+ "stop": "Stop",
210
+ "select_app_icon": "Select App Icon",
211
+ "select_output_dir": "Select Output Dir"
212
+ },
213
+
214
+ "theme": {
215
+ "dark": "Dark",
216
+ "light": "Light"
217
+ },
218
+
219
+ "api": {
220
+ "no_scene_path": "The scene path {} does not exist.",
221
+ "no_project_pygs": "Failed to find config file project.pygs in the project root directory.",
222
+ "fail_to_load_project_pygs": "Failed to load config file project.pygs: {}"
223
+ },
224
+
225
+ "translator": {
226
+ "no_lang_code_json": "Couldn't find {}.json",
227
+ "fail_to_load_lang_code_json": "Failed to load {}.json: {}"
180
228
  }
181
229
  }
@@ -13,6 +13,8 @@
13
13
  "question_delete_hierarchy_item_content": "是否删除选中的对象?",
14
14
  "question_delete_project_content": "是否删除该项目?",
15
15
  "question_overwrite_content": "是否覆盖以下重复资源?\n{}",
16
+ "question_stop_build": "是否停止打包?",
17
+ "question_stop_build_close_window": "是否停止打包并关闭窗口?",
16
18
  "information_title": "提示",
17
19
  "information_os_content": "不支持的操作系统",
18
20
  "critical_title": "错误",
@@ -24,6 +26,12 @@
24
26
  "critical_rename_content": "重命名失败:{}",
25
27
  "critical_open_project": "打开项目失败,找不到project.pygs。",
26
28
  "critical_find_project": "找不到该项目。",
29
+ "critical_delete_project": "无法删除项目:{}",
30
+ "critical_app_icon_not_exist": "图标文件不存在",
31
+ "critical_no_output_dir": "请选择输出目录",
32
+ "critical_output_dir_not_exist": "输出目录不存在",
33
+ "critical_main_not_found": "没有找到main.py,请确保main.py位于项目根目录下。",
34
+ "critical_fail_to_build": "项目打包失败,请检查日志。",
27
35
  "to_be_released": "即将发布,敬请期待!"
28
36
  },
29
37
 
@@ -66,11 +74,12 @@
66
74
  "undo": "撤销",
67
75
  "redo": "重做",
68
76
  "run": "运行",
69
- "build": "构建",
77
+ "build": "打包",
70
78
  "documentation": "在线文档",
71
79
  "release_notes": "更新日志",
72
80
  "github_repository": "GitHub仓库",
73
- "about_pygamestudio": "关于Pygame Studio"
81
+ "about_pygamestudio": "关于Pygame Studio",
82
+ "support_pygamestudio": "支持Pygame Studio"
74
83
  },
75
84
 
76
85
  "item": {
@@ -78,7 +87,8 @@
78
87
  "line": "线条",
79
88
  "rect": "矩形",
80
89
  "ellipse": "椭圆",
81
- "text": "文本"
90
+ "text": "文本",
91
+ "image": "图片"
82
92
  },
83
93
 
84
94
  "gm": {
@@ -103,6 +113,7 @@
103
113
 
104
114
  "scene": {
105
115
  "scene": "场景编辑器",
116
+ "scene_saved": "场景已保存",
106
117
  "run_project": "运行项目{}",
107
118
  "failed_to_run_project": "项目{}运行失败:{}"
108
119
  },
@@ -140,7 +151,11 @@
140
151
  "italic": "斜体",
141
152
  "underline": "下划线",
142
153
  "strikethrough": "删除线",
143
- "select_color": "选择颜色"
154
+ "select_color": "选择颜色",
155
+ "image_path": "图片路径",
156
+ "font_path": "字体路径",
157
+ "select_image": "选择图片",
158
+ "format": "格式"
144
159
  },
145
160
 
146
161
  "dashboard": {
@@ -172,10 +187,43 @@
172
187
  "screen_width": "窗口宽度",
173
188
  "screen_height": "窗口高度",
174
189
  "general": "通用",
175
- "language": "语言"
190
+ "language": "语言",
191
+ "theme": "主题"
176
192
  },
177
193
 
178
194
  "about": {
179
195
  "version": "版本{}"
196
+ },
197
+
198
+ "build": {
199
+ "app_name": "应用名称",
200
+ "app_name_placeholder": "请输入应用名称",
201
+ "app_icon": "应用图标",
202
+ "app_icon_placeholder": "请选择应用图标 (.png/.ico/.icns)",
203
+ "output_dir": "输出目录",
204
+ "output_dir_placeholder": "请选择输出目录",
205
+ "clean_cache": "清除缓存",
206
+ "build": "打包",
207
+ "open_output_dir": "打开输出目录",
208
+ "desktop_app": "桌面应用",
209
+ "stop": "停止",
210
+ "select_app_icon": "选择应用图标",
211
+ "select_output_dir": "选择输出目录"
212
+ },
213
+
214
+ "theme": {
215
+ "dark": "深色",
216
+ "light": "浅色"
217
+ },
218
+
219
+ "api": {
220
+ "no_scene_path": "场景路径{}不存在。",
221
+ "no_project_pygs": "没有在项目根目录下找到project.pygs配置文件",
222
+ "fail_to_load_project_pygs": "配置文件project.pygs加载失败:{}"
223
+ },
224
+
225
+ "translator": {
226
+ "no_lang_code_json": "无法找到文件{}.json",
227
+ "fail_to_load_lang_code_json": "无法加载{}.json:{}"
180
228
  }
181
229
  }