pygamestudio 1.0.0.dev1__tar.gz → 1.0.0.dev2__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 (146) hide show
  1. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/PKG-INFO +27 -6
  2. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/README.md +25 -5
  3. pygamestudio-1.0.0.dev2/README_zh-CN.md +112 -0
  4. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/pyproject.toml +3 -2
  5. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/api/runtime/scene.py +49 -12
  6. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/i18n/languages/en.json +26 -1
  7. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/i18n/languages/zh_CN.json +27 -2
  8. pygamestudio-1.0.0.dev2/src/pygamestudio/common/res/images/browse.png +0 -0
  9. pygamestudio-1.0.0.dev2/src/pygamestudio/common/res/images/heart.png +0 -0
  10. pygamestudio-1.0.0.dev2/src/pygamestudio/common/res/images/line.png +0 -0
  11. pygamestudio-1.0.0.dev2/src/pygamestudio/common/res/images/maximize_disabled.png +0 -0
  12. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/qss/dark.qss +38 -1
  13. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/resources.qrc +4 -0
  14. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/resources_rc.py +313 -22
  15. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/templates/main_template.py +5 -4
  16. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/templates/project_template.pygs +5 -0
  17. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/utils/config.py +1 -1
  18. pygamestudio-1.0.0.dev2/src/pygamestudio/common/utils/constant.py +1 -0
  19. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/core/manager.py +6 -4
  20. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/object/base.py +12 -14
  21. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/object/canvas.py +1 -1
  22. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/object/ellipse.py +4 -6
  23. pygamestudio-1.0.0.dev2/src/pygamestudio/game/object/line.py +102 -0
  24. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/object/rect.py +5 -9
  25. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/object/text.py +4 -9
  26. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/about/window.py +4 -0
  27. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/search.py +3 -0
  28. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/tree.py +7 -7
  29. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/base/window.py +6 -2
  30. pygamestudio-1.0.0.dev2/src/pygamestudio/gui/build/desktop.py +351 -0
  31. pygamestudio-1.0.0.dev2/src/pygamestudio/gui/build/window.py +62 -0
  32. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/search.py +3 -0
  33. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/dialog.py +61 -42
  34. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/list.py +7 -6
  35. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/hierarchy/menu.py +3 -3
  36. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/hierarchy/search.py +3 -0
  37. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/hierarchy/tree.py +3 -3
  38. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/hierarchy/widget.py +3 -3
  39. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/layout/line.py +22 -22
  40. pygamestudio-1.0.0.dev2/src/pygamestudio/gui/scene/gizmo.py +172 -0
  41. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/scene/screen.py +33 -10
  42. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/settings/editor.py +17 -4
  43. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/settings/project.py +5 -1
  44. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/window.py +23 -7
  45. pygamestudio-1.0.0.dev1/src/pygamestudio/api/runtime/object.py +0 -0
  46. pygamestudio-1.0.0.dev1/src/pygamestudio/common/utils/constant.py +0 -1
  47. pygamestudio-1.0.0.dev1/src/pygamestudio/game/object/line.py +0 -175
  48. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/.github/FUNDING.yml +0 -0
  49. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/.gitignore +0 -0
  50. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/LICENSE +0 -0
  51. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/__init__.py +0 -0
  52. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/api/runtime/__init__.py +0 -0
  53. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/api/runtime/config.py +0 -0
  54. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/__init__.py +0 -0
  55. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/i18n/__init__.py +0 -0
  56. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/i18n/translator.py +0 -0
  57. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/add.png +0 -0
  58. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/add_item.png +0 -0
  59. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/canvas.png +0 -0
  60. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/check.png +0 -0
  61. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/clear.png +0 -0
  62. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/close.png +0 -0
  63. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/create_project.png +0 -0
  64. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/down_arrow.png +0 -0
  65. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/ellipse.png +0 -0
  66. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/error.png +0 -0
  67. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/expand_or_collapse_all.png +0 -0
  68. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/eye_closed.png +0 -0
  69. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/eye_off.png +0 -0
  70. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/eye_open.png +0 -0
  71. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/import_project.png +0 -0
  72. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/info.png +0 -0
  73. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/left_arrow.png +0 -0
  74. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/logo.png +0 -0
  75. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/maximize.png +0 -0
  76. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/minimize.png +0 -0
  77. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/normalize.png +0 -0
  78. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/project_icon.png +0 -0
  79. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/rect.png +0 -0
  80. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/refresh_asset.png +0 -0
  81. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/right_arrow.png +0 -0
  82. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/run.png +0 -0
  83. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/search.png +0 -0
  84. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/sort.png +0 -0
  85. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/text.png +0 -0
  86. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/tree_arrow_down.png +0 -0
  87. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/tree_arrow_right.png +0 -0
  88. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/up_arrow.png +0 -0
  89. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/images/warning.png +0 -0
  90. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/res/templates/editor_template.pygs +0 -0
  91. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/common/utils/path.py +0 -0
  92. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/__init__.py +0 -0
  93. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/core/__init__.py +0 -0
  94. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/object/button.py +0 -0
  95. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/game/object/type.py +0 -0
  96. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/__init__.py +0 -0
  97. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/about/__init__.py +0 -0
  98. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/delegate.py +0 -0
  99. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/menu.py +0 -0
  100. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/model.py +0 -0
  101. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/type.py +0 -0
  102. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/widget.py +0 -0
  103. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/asset/window.py +0 -0
  104. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/build/__init__.py +0 -0
  105. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/__init__.py +0 -0
  106. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/browser.py +0 -0
  107. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/logger.py +0 -0
  108. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/menu.py +0 -0
  109. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/type.py +0 -0
  110. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/widget.py +0 -0
  111. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/console/window.py +0 -0
  112. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/__init__.py +0 -0
  113. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/config.py +0 -0
  114. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/delegate.py +0 -0
  115. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/menu.py +0 -0
  116. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/model.py +0 -0
  117. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/search.py +0 -0
  118. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/type.py +0 -0
  119. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/widget.py +0 -0
  120. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/dashboard/window.py +0 -0
  121. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/hierarchy/__init__.py +0 -0
  122. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/hierarchy/delegate.py +0 -0
  123. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/hierarchy/window.py +0 -0
  124. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/__init__.py +0 -0
  125. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/button.py +0 -0
  126. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/checkbox.py +0 -0
  127. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/combobox.py +0 -0
  128. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/label.py +0 -0
  129. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/lineedit.py +0 -0
  130. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/picker.py +0 -0
  131. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/spinbox.py +0 -0
  132. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/component/textedit.py +0 -0
  133. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/container.py +0 -0
  134. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/layout/canvas.py +0 -0
  135. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/layout/ellipse.py +0 -0
  136. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/layout/rect.py +0 -0
  137. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/layout/text.py +0 -0
  138. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/widget.py +0 -0
  139. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/inspector/window.py +0 -0
  140. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/main.py +0 -0
  141. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/scene/__init__.py +0 -0
  142. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/scene/grid.py +0 -0
  143. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/scene/widget.py +0 -0
  144. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/scene/window.py +0 -0
  145. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/gui/settings/__init__.py +0 -0
  146. {pygamestudio-1.0.0.dev1 → pygamestudio-1.0.0.dev2}/src/pygamestudio/main.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.dev2
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
+ [README (简体中文)](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
+ [README (简体中文)](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
+ [README (English)](https://github.com/pygamestudio/pygamestudio)
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.dev2"
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,4 +1,5 @@
1
1
  import os
2
+ import re
2
3
  import json
3
4
  import pygame
4
5
  from pathlib import Path
@@ -115,7 +116,48 @@ class SceneLoader:
115
116
 
116
117
  _update(self._all_object_tree_struct, screen_surface)
117
118
 
118
- def _get_object_tree_struct(self, object_uuid, parent_object_tree_struct=None):
119
+ def _get_object_tree_struct_by_path(self, object_path):
120
+ def _get(name, target_item_index, current_item_index, recursion_time, part_number, object_tree_struct):
121
+ key = list(object_tree_struct.keys())[0]
122
+ value = list(object_tree_struct.values())[0]
123
+
124
+ if part_number < recursion_time:
125
+ return None
126
+ elif part_number == recursion_time:
127
+ if name == value['object'].name and target_item_index == current_item_index:
128
+ return {key: value}
129
+ else:
130
+ return None
131
+ else:
132
+ recursion_time += 1
133
+ for i, child_object_tree_struct in enumerate(value['children']):
134
+ result = _get(name, target_item_index, i, recursion_time, part_number, child_object_tree_struct)
135
+ if result:
136
+ return result
137
+
138
+ return None
139
+
140
+ path_parts = object_path.strip('/').split('/')
141
+ if not path_parts:
142
+ return None
143
+
144
+ for i, part in enumerate(path_parts):
145
+ match = re.fullmatch(r'([^\[\]]+)(?:\[(\d+)\])?', part.strip())
146
+ if not match:
147
+ return None
148
+
149
+ recursion_time = 0
150
+ name = match.group(1)
151
+ target_item_index = int(match.group(2)) if match.group(2) is not None else 0
152
+ object_tree_struct = _get(name, target_item_index, 0, recursion_time, i, self._all_object_tree_struct)
153
+
154
+ if i < len(path_parts)-1:
155
+ if object_tree_struct == None:
156
+ return None
157
+ else:
158
+ return object_tree_struct
159
+
160
+ def _get_object_tree_struct_by_uuid(self, object_uuid, parent_object_tree_struct=None):
119
161
  def _get(object_uuid, object_tree_struct):
120
162
  key = list(object_tree_struct.keys())[0]
121
163
  value = list(object_tree_struct.values())[0]
@@ -134,15 +176,13 @@ class SceneLoader:
134
176
  return _get(object_uuid, parent_object_tree_struct)
135
177
 
136
178
  def get_object_by_path(self, object_path:str):
137
- ...
138
-
179
+ object_tree_struct = self._get_object_tree_struct_by_path(object_path)
180
+ return list(object_tree_struct.values())[0]['object'] if object_tree_struct else None
181
+
139
182
  def get_object_by_uuid(self, object_uuid:str):
140
- object_tree_struct = self._get_object_tree_struct(object_uuid)
183
+ object_tree_struct = self._get_object_tree_struct_by_uuid(object_uuid)
141
184
  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
-
185
+
146
186
 
147
187
  scene_loader = SceneLoader()
148
188
 
@@ -153,7 +193,4 @@ def get_object_by_path(object_path:str) -> object:
153
193
  return scene_loader.get_object_by_path(object_path)
154
194
 
155
195
  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)
196
+ 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": {
@@ -177,5 +186,21 @@
177
186
 
178
187
  "about": {
179
188
  "version": "Version {}"
189
+ },
190
+
191
+ "build": {
192
+ "app_name": "App Name",
193
+ "app_name_placeholder": "Please enter the app name",
194
+ "app_icon": "App Icon",
195
+ "app_icon_placeholder": "Please choose the app icon (.png/.ico/.icns)",
196
+ "output_dir": "Output Dir",
197
+ "output_dir_placeholder": "Please choose the output dir",
198
+ "clean_cache": "Clean Cache",
199
+ "build": "Build",
200
+ "open_output_dir": "Open Output Dir",
201
+ "desktop_app": "Desktop App",
202
+ "stop": "Stop",
203
+ "select_app_icon": "Select App Icon",
204
+ "select_output_dir": "Select Output Dir"
180
205
  }
181
206
  }
@@ -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": {
@@ -177,5 +186,21 @@
177
186
 
178
187
  "about": {
179
188
  "version": "版本{}"
189
+ },
190
+
191
+ "build": {
192
+ "app_name": "应用名称",
193
+ "app_name_placeholder": "请输入应用名称",
194
+ "app_icon": "应用图标",
195
+ "app_icon_placeholder": "请选择应用图标 (.png/.ico/.icns)",
196
+ "output_dir": "输出目录",
197
+ "output_dir_placeholder": "请选择输出目录",
198
+ "clean_cache": "清除缓存",
199
+ "build": "打包",
200
+ "open_output_dir": "打开输出目录",
201
+ "desktop_app": "桌面应用",
202
+ "stop": "停止",
203
+ "select_app_icon": "选择应用图标",
204
+ "select_output_dir": "选择输出目录"
180
205
  }
181
206
  }
@@ -120,6 +120,19 @@ QComboBox::down-arrow {
120
120
  height: 10px;
121
121
  }
122
122
 
123
+ QComboBox QAbstractItemView {
124
+ background-color: #1e1e1e;
125
+ color: #cccccc;
126
+ border: 1px solid #3c3c3c;
127
+ selection-background-color: #007acc;
128
+ selection-color: #ffffff;
129
+ outline: 0px;
130
+ }
131
+
132
+ QComboBox QAbstractItemView::item:selected {
133
+ background-color: #007acc;
134
+ }
135
+
123
136
  QMenu {
124
137
  background-color: #1e1e1e;
125
138
  color: #cccccc;
@@ -128,7 +141,7 @@ QMenu {
128
141
  }
129
142
 
130
143
  QMenu::item {
131
- padding: 5px 30px 5px 30px;
144
+ padding: 5px 20px 5px 20px;
132
145
  border: 1px solid transparent;
133
146
  }
134
147
 
@@ -141,6 +154,11 @@ QMenu::item:selected {
141
154
  color: #ffffff;
142
155
  }
143
156
 
157
+ QMenu::icon {
158
+ position: relative;
159
+ left: 15px;
160
+ }
161
+
144
162
  QMenu::separator {
145
163
  height: 1px;
146
164
  background-color: #3c3c3c;
@@ -322,6 +340,21 @@ QListWidget::item {
322
340
  height: 30px;
323
341
  }
324
342
 
343
+ QProgressBar {
344
+ border: 1px solid lightgray;
345
+ border-radius: 3px;
346
+ text-align: center;
347
+ background-color: qlineargradient(x1:1, y1:0, x2:1, y2:0.4, stop:0 white, stop:1 #dedede);
348
+ color: #1e1e1e;
349
+ font-weight: bold;
350
+ height: 10px;
351
+ }
352
+
353
+ QProgressBar::chunk {
354
+ background-color: qlineargradient(x1:1, y1:0, x2:1, y2:0.4, stop:0 white, stop:1 #007acc);
355
+ border-radius: 2px;
356
+ }
357
+
325
358
  /* ----- Window Base ----- */
326
359
  QWidget#windowBaseCentralWidget {
327
360
  border-radius: 9px;
@@ -484,6 +517,10 @@ QWidget#inspector QPushButton:pressed {
484
517
  border-radius: 5px;
485
518
  }
486
519
 
520
+ QWidget#inspectorContainer QLineEdit:disabled {
521
+ color: gray;
522
+ }
523
+
487
524
  QWidget#inspectorContainer QLabel {
488
525
  background-color: #282828;
489
526
  }
@@ -2,6 +2,7 @@
2
2
  <qresource prefix="/">
3
3
  <file>images/add_item.png</file>
4
4
  <file>images/add.png</file>
5
+ <file>images/browse.png</file>
5
6
  <file>images/canvas.png</file>
6
7
  <file>images/check.png</file>
7
8
  <file>images/clear.png</file>
@@ -14,11 +15,14 @@
14
15
  <file>images/eye_closed.png</file>
15
16
  <file>images/eye_off.png</file>
16
17
  <file>images/eye_open.png</file>
18
+ <file>images/heart.png</file>
17
19
  <file>images/import_project.png</file>
18
20
  <file>images/info.png</file>
19
21
  <file>images/left_arrow.png</file>
22
+ <file>images/line.png</file>
20
23
  <file>images/logo.png</file>
21
24
  <file>images/maximize.png</file>
25
+ <file>images/maximize_disabled.png</file>
22
26
  <file>images/minimize.png</file>
23
27
  <file>images/normalize.png</file>
24
28
  <file>images/project_icon.png</file>