setiastrosuitepro 1.6.1.post1__py3-none-any.whl → 1.6.4__py3-none-any.whl

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.

Potentially problematic release.


This version of setiastrosuitepro might be problematic. Click here for more details.

Files changed (139) hide show
  1. setiastro/images/Background_startup.jpg +0 -0
  2. setiastro/images/rotatearbitrary.png +0 -0
  3. setiastro/qml/ResourceMonitor.qml +126 -0
  4. setiastro/saspro/__main__.py +162 -25
  5. setiastro/saspro/_generated/build_info.py +2 -1
  6. setiastro/saspro/abe.py +62 -11
  7. setiastro/saspro/aberration_ai.py +3 -3
  8. setiastro/saspro/add_stars.py +5 -2
  9. setiastro/saspro/astrobin_exporter.py +3 -0
  10. setiastro/saspro/astrospike_python.py +3 -1
  11. setiastro/saspro/autostretch.py +4 -2
  12. setiastro/saspro/backgroundneutral.py +60 -9
  13. setiastro/saspro/batch_convert.py +3 -0
  14. setiastro/saspro/batch_renamer.py +3 -0
  15. setiastro/saspro/blemish_blaster.py +3 -0
  16. setiastro/saspro/blink_comparator_pro.py +474 -251
  17. setiastro/saspro/cheat_sheet.py +50 -15
  18. setiastro/saspro/clahe.py +27 -1
  19. setiastro/saspro/comet_stacking.py +103 -38
  20. setiastro/saspro/convo.py +3 -0
  21. setiastro/saspro/copyastro.py +3 -0
  22. setiastro/saspro/cosmicclarity.py +70 -45
  23. setiastro/saspro/crop_dialog_pro.py +28 -1
  24. setiastro/saspro/curve_editor_pro.py +18 -0
  25. setiastro/saspro/debayer.py +3 -0
  26. setiastro/saspro/doc_manager.py +40 -17
  27. setiastro/saspro/fitsmodifier.py +3 -0
  28. setiastro/saspro/frequency_separation.py +8 -2
  29. setiastro/saspro/function_bundle.py +18 -16
  30. setiastro/saspro/generate_translations.py +715 -1
  31. setiastro/saspro/ghs_dialog_pro.py +3 -0
  32. setiastro/saspro/graxpert.py +3 -0
  33. setiastro/saspro/gui/main_window.py +364 -92
  34. setiastro/saspro/gui/mixins/dock_mixin.py +119 -7
  35. setiastro/saspro/gui/mixins/file_mixin.py +7 -0
  36. setiastro/saspro/gui/mixins/geometry_mixin.py +105 -5
  37. setiastro/saspro/gui/mixins/menu_mixin.py +29 -0
  38. setiastro/saspro/gui/mixins/toolbar_mixin.py +33 -10
  39. setiastro/saspro/gui/statistics_dialog.py +47 -0
  40. setiastro/saspro/halobgon.py +29 -3
  41. setiastro/saspro/histogram.py +3 -0
  42. setiastro/saspro/history_explorer.py +2 -0
  43. setiastro/saspro/i18n.py +22 -10
  44. setiastro/saspro/image_combine.py +3 -0
  45. setiastro/saspro/image_peeker_pro.py +3 -0
  46. setiastro/saspro/imageops/stretch.py +5 -13
  47. setiastro/saspro/isophote.py +3 -0
  48. setiastro/saspro/legacy/numba_utils.py +64 -47
  49. setiastro/saspro/linear_fit.py +3 -0
  50. setiastro/saspro/live_stacking.py +13 -2
  51. setiastro/saspro/mask_creation.py +3 -0
  52. setiastro/saspro/mfdeconv.py +5 -0
  53. setiastro/saspro/morphology.py +30 -5
  54. setiastro/saspro/multiscale_decomp.py +713 -256
  55. setiastro/saspro/nbtorgb_stars.py +12 -2
  56. setiastro/saspro/numba_utils.py +148 -47
  57. setiastro/saspro/ops/scripts.py +77 -17
  58. setiastro/saspro/ops/settings.py +1 -43
  59. setiastro/saspro/perfect_palette_picker.py +1 -0
  60. setiastro/saspro/pixelmath.py +6 -2
  61. setiastro/saspro/plate_solver.py +1 -0
  62. setiastro/saspro/remove_green.py +18 -1
  63. setiastro/saspro/remove_stars.py +136 -162
  64. setiastro/saspro/remove_stars_preset.py +55 -13
  65. setiastro/saspro/resources.py +36 -10
  66. setiastro/saspro/rgb_combination.py +1 -0
  67. setiastro/saspro/rgbalign.py +4 -4
  68. setiastro/saspro/save_options.py +1 -0
  69. setiastro/saspro/selective_color.py +79 -20
  70. setiastro/saspro/sfcc.py +50 -8
  71. setiastro/saspro/shortcuts.py +94 -21
  72. setiastro/saspro/signature_insert.py +3 -0
  73. setiastro/saspro/stacking_suite.py +924 -446
  74. setiastro/saspro/star_alignment.py +291 -331
  75. setiastro/saspro/star_spikes.py +116 -32
  76. setiastro/saspro/star_stretch.py +38 -1
  77. setiastro/saspro/stat_stretch.py +35 -3
  78. setiastro/saspro/status_log_dock.py +1 -1
  79. setiastro/saspro/subwindow.py +63 -2
  80. setiastro/saspro/supernovaasteroidhunter.py +3 -0
  81. setiastro/saspro/swap_manager.py +77 -42
  82. setiastro/saspro/translations/all_source_strings.json +4726 -0
  83. setiastro/saspro/translations/ar_translations.py +4096 -0
  84. setiastro/saspro/translations/de_translations.py +441 -446
  85. setiastro/saspro/translations/es_translations.py +278 -32
  86. setiastro/saspro/translations/fr_translations.py +280 -32
  87. setiastro/saspro/translations/hi_translations.py +3803 -0
  88. setiastro/saspro/translations/integrate_translations.py +38 -1
  89. setiastro/saspro/translations/it_translations.py +1211 -145
  90. setiastro/saspro/translations/ja_translations.py +556 -307
  91. setiastro/saspro/translations/pt_translations.py +3316 -3322
  92. setiastro/saspro/translations/ru_translations.py +3082 -0
  93. setiastro/saspro/translations/saspro_ar.qm +0 -0
  94. setiastro/saspro/translations/saspro_ar.ts +16019 -0
  95. setiastro/saspro/translations/saspro_de.qm +0 -0
  96. setiastro/saspro/translations/saspro_de.ts +14428 -133
  97. setiastro/saspro/translations/saspro_es.qm +0 -0
  98. setiastro/saspro/translations/saspro_es.ts +11503 -7821
  99. setiastro/saspro/translations/saspro_fr.qm +0 -0
  100. setiastro/saspro/translations/saspro_fr.ts +11168 -7812
  101. setiastro/saspro/translations/saspro_hi.qm +0 -0
  102. setiastro/saspro/translations/saspro_hi.ts +14855 -0
  103. setiastro/saspro/translations/saspro_it.qm +0 -0
  104. setiastro/saspro/translations/saspro_it.ts +14347 -7821
  105. setiastro/saspro/translations/saspro_ja.qm +0 -0
  106. setiastro/saspro/translations/saspro_ja.ts +14860 -137
  107. setiastro/saspro/translations/saspro_pt.qm +0 -0
  108. setiastro/saspro/translations/saspro_pt.ts +14904 -137
  109. setiastro/saspro/translations/saspro_ru.qm +0 -0
  110. setiastro/saspro/translations/saspro_ru.ts +11835 -0
  111. setiastro/saspro/translations/saspro_sw.qm +0 -0
  112. setiastro/saspro/translations/saspro_sw.ts +15237 -0
  113. setiastro/saspro/translations/saspro_uk.qm +0 -0
  114. setiastro/saspro/translations/saspro_uk.ts +15248 -0
  115. setiastro/saspro/translations/saspro_zh.qm +0 -0
  116. setiastro/saspro/translations/saspro_zh.ts +10581 -7812
  117. setiastro/saspro/translations/sw_translations.py +3897 -0
  118. setiastro/saspro/translations/uk_translations.py +3929 -0
  119. setiastro/saspro/translations/zh_translations.py +283 -32
  120. setiastro/saspro/versioning.py +36 -5
  121. setiastro/saspro/view_bundle.py +20 -17
  122. setiastro/saspro/wavescale_hdr.py +22 -1
  123. setiastro/saspro/wavescalede.py +23 -1
  124. setiastro/saspro/whitebalance.py +39 -3
  125. setiastro/saspro/widgets/minigame/game.js +991 -0
  126. setiastro/saspro/widgets/minigame/index.html +53 -0
  127. setiastro/saspro/widgets/minigame/style.css +241 -0
  128. setiastro/saspro/widgets/resource_monitor.py +263 -0
  129. setiastro/saspro/widgets/spinboxes.py +18 -0
  130. setiastro/saspro/widgets/wavelet_utils.py +52 -20
  131. setiastro/saspro/wimi.py +100 -80
  132. setiastro/saspro/wims.py +33 -33
  133. setiastro/saspro/window_shelf.py +2 -2
  134. {setiastrosuitepro-1.6.1.post1.dist-info → setiastrosuitepro-1.6.4.dist-info}/METADATA +15 -4
  135. {setiastrosuitepro-1.6.1.post1.dist-info → setiastrosuitepro-1.6.4.dist-info}/RECORD +139 -115
  136. {setiastrosuitepro-1.6.1.post1.dist-info → setiastrosuitepro-1.6.4.dist-info}/WHEEL +0 -0
  137. {setiastrosuitepro-1.6.1.post1.dist-info → setiastrosuitepro-1.6.4.dist-info}/entry_points.txt +0 -0
  138. {setiastrosuitepro-1.6.1.post1.dist-info → setiastrosuitepro-1.6.4.dist-info}/licenses/LICENSE +0 -0
  139. {setiastrosuitepro-1.6.1.post1.dist-info → setiastrosuitepro-1.6.4.dist-info}/licenses/license.txt +0 -0
@@ -1,7 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
- """
3
- Chinese (Simplified) translations for Seti Astro Suite Pro.
4
- """
5
2
 
6
3
  TRANSLATIONS_ZH = {
7
4
  "ABEDialog": {
@@ -59,8 +56,33 @@ TRANSLATIONS_ZH = {
59
56
  "Post-alignment failed: {0}": "后对齐失败:{0}",
60
57
  },
61
58
  "AstroSuiteProMainWindow": {
59
+ "Loading a project will close current views and replace desktop shortcuts.\nContinue?": "加载项目将关闭当前视图并替换桌面快捷方式。\n继续吗?",
60
+ "Toggle Display Auto-Stretch": "切换显示自动拉伸",
61
+ "Invert the Image": "反转图像",
62
+ "Focus the command search bar; Enter runs first match": "聚焦命令搜索栏;Enter运行首个匹配",
63
+ "Duplicate Image": "复制图像",
64
+ "Copy Zoom and Pan": "复制缩放和平移",
65
+ "Apply that image to the other as a mask": "将该图像作为蒙版应用于另一图像",
66
+ "Zoom to 100% (1:1)": "缩放至100% (1:1)",
67
+ "Switch to previously active view": "切换到上一个活动视图",
68
+ "Switch to next active view": "切换到下一个活动视图",
69
+ "Create a desktop shortcut for that action": "为此操作创建桌面快捷方式",
70
+ "Headless apply the shortcut's command/preset to a view": "无头应用快捷方式的命令/预设到视图",
71
+ "Multi-select shortcut buttons": "多选快捷按钮",
72
+ "Move selected shortcut buttons": "移动选定的快捷按钮",
73
+ "Select all shortcut buttons": "选择所有快捷按钮",
74
+ "Open files dialog": "打开文件对话框",
75
+ "Add dragged view as a new layer (on top)": "将拖动的视图添加为新图层(顶部)",
76
+ "Attach dragged image as mask to the selected layer": "将拖动的图像作为蒙版附加到选定图层",
77
+ "Draw a crop rectangle": "绘制裁剪矩形",
78
+ "Resize crop rectangle": "调整裁剪矩形大小",
79
+ "Rotate crop rectangle": "旋转裁剪矩形",
80
+ "View Bundles": "查看捆绑包",
81
+ "Function Bundles": "功能捆绑包",
82
+ "Delete selected shortcut buttons": "删除选定的快捷按钮",
62
83
  "&About": "关于(&A)",
63
84
  "&Edit": "编辑(&E)",
85
+ "&Exit": "退出(&X)",
64
86
  "&File": "文件(&F)",
65
87
  "&Functions": "功能(&U)",
66
88
  "&Geometry": "几何变换(&G)",
@@ -75,26 +97,10 @@ TRANSLATIONS_ZH = {
75
97
  "&Tools": "工具(&T)",
76
98
  "&View": "视图(&V)",
77
99
  "&What's In My...": "我的图像中有什么...(&W)",
78
- "About...": "关于...",
79
- "Clear All Shortcuts": "清除所有快捷方式",
80
- "Clear List": "清除列表",
81
- "Export Shortcuts...": "导出快捷方式...",
82
- "Group A": "组 A",
83
- "Group B": "组 B",
84
- "Group C": "组 C",
85
- "Group D": "组 D",
86
- "Import Shortcuts...": "导入快捷方式...",
87
- "Keyboard Shortcut Cheat Sheet...": "键盘快捷键速查表...",
88
- "No recent images": "没有最近的图像",
89
- "No recent projects": "没有最近的项目",
90
- "None": "无",
91
- "Open Recent Images": "最近的图像",
92
- "Open Recent Projects": "最近的项目",
93
- "Preferences...": "首选项...",
94
- "&Exit": "退出(&X)",
95
100
  "1:1": "1:1",
96
101
  "ABE...": "自动背景提取...",
97
102
  "Aberration Correction (AI)...": "像差校正(AI)...",
103
+ "About...": "关于...",
98
104
  "Add Stars...": "添加星点...",
99
105
  "Add diffraction spikes to detected stars": "为检测到的星点添加衍射尖峰",
100
106
  "Add signatures/overlays and bake them into the active image": "添加签名/叠加层并烘焙到当前图像",
@@ -128,17 +134,23 @@ TRANSLATIONS_ZH = {
128
134
  "Cascade Views": "层叠视图",
129
135
  "Cascade all subwindows": "层叠所有子窗口",
130
136
  "Check for Updates...": "检查更新...",
137
+ "Clear All Shortcuts": "清除所有快捷方式",
131
138
  "Clear All Views": "关闭所有视图",
139
+ "Clear Console": "Clear Console",
140
+ "Clear List": "清除列表",
132
141
  "Close all views and clear shortcuts": "关闭所有视图并清除快捷方式",
133
142
  "Close all views and documents, keep desktop shortcuts": "关闭所有视图和文档,保留桌面快捷方式",
134
143
  "Combine narrowband to RGB with optional OSC stars": "将窄带合成RGB(可选OSC星点)",
135
144
  "Combine three mono images into RGB": "将三张单色图像合成RGB",
136
145
  "Compare a stack of images by blinking": "通过闪烁比较图像堆叠",
146
+ "Console / Status": "Console / Status",
137
147
  "Continuum Subtract (NB - scaled broadband)": "连续谱减除(窄带 - 缩放宽带)",
138
148
  "Continuum Subtract...": "连续谱减除...",
139
149
  "Contrast Limited Adaptive Histogram Equalization": "对比度限制自适应直方图均衡化",
140
150
  "Convolution / Deconvolution...": "卷积/反卷积...",
151
+ "Copy All": "Copy All",
141
152
  "Copy Astrometric Solution...": "复制天体测量解...",
153
+ "Copy Selected": "Copy Selected",
142
154
  "Copy View (zoom/pan)": "复制视图(缩放/平移)",
143
155
  "Cosmic Clarity": "宇宙清晰度",
144
156
  "Cosmic Clarity Satellite...": "宇宙清晰度卫星...",
@@ -162,6 +174,8 @@ TRANSLATIONS_ZH = {
162
174
  "Erosion, dilation, opening, and closing.": "腐蚀、膨胀、开运算和闭运算。",
163
175
  "Evaluate expressions using open view names": "使用打开的视图名称计算表达式",
164
176
  "Exoplanet Detector...": "系外行星检测器...",
177
+ "Explorer": "Explorer",
178
+ "Export Shortcuts...": "导出快捷方式...",
165
179
  "Extract Luminance": "提取亮度",
166
180
  "Extract R/G/B as three mono documents": "提取R/G/B为三个单色文档",
167
181
  "FITS Header Batch Modifier...": "FITS头批量修改器...",
@@ -180,6 +194,10 @@ TRANSLATIONS_ZH = {
180
194
  "GLIMR -- Isophote Modeler...": "GLIMR -- 等光度线建模器...",
181
195
  "Generalized hyperbolic stretch (α/beta/gamma, LP/HP, pivot)": "广义双曲线拉伸(α/beta/γ、低通/高通、中心点)",
182
196
  "Geometry": "几何变换",
197
+ "Group A": "组 A",
198
+ "Group B": "组 B",
199
+ "Group C": "组 C",
200
+ "Group D": "组 D",
183
201
  "Halo-B-Gon...": "光晕消除...",
184
202
  "Hard (target 0.50, σ 2)": "强硬 (目标 0.50, σ 2)",
185
203
  "Hard-Display-Stretch": "强硬显示拉伸",
@@ -191,12 +209,14 @@ TRANSLATIONS_ZH = {
191
209
  "Image Combine...": "图像合并...",
192
210
  "Image Inspector and Focal Plane Analysis": "图像检查器和焦平面分析",
193
211
  "Image Peeker...": "图像查看器...",
212
+ "Import Shortcuts...": "导入快捷方式...",
194
213
  "Inspect and restore from the slot's history": "检查并从插槽历史恢复",
195
214
  "Inspect star PSF/HFR and flux histograms (SEP)": "检查星点PSF/HFR和通量直方图(SEP)",
196
215
  "Interactive blemish removal on the active view": "在当前视图上交互式移除瑕疵",
197
216
  "Invert": "反转",
198
217
  "Invert Mask": "反转蒙版",
199
218
  "Invert image colors": "反转图像颜色",
219
+ "Keyboard Shortcut Cheat Sheet...": "键盘快捷键速查表...",
200
220
  "Linear Fit...": "线性拟合...",
201
221
  "Link Pan/Zoom": "链接平移/缩放",
202
222
  "Link RGB channels": "链接 RGB 通道",
@@ -215,8 +235,13 @@ TRANSLATIONS_ZH = {
215
235
  "NB->RGB Stars...": "窄带->RGB星点...",
216
236
  "Neutralize background color balance using a sampled region": "使用采样区域中和背景色彩平衡",
217
237
  "New Project": "新建项目",
238
+ "No recent images": "没有最近的图像",
239
+ "No recent projects": "没有最近的项目",
240
+ "None": "无",
218
241
  "Normal (target 0.30, σ 5)": "正常 (目标 0.30, σ 5)",
219
242
  "Open Convolution / Deconvolution": "打开卷积/反卷积",
243
+ "Open Recent Images": "最近的图像",
244
+ "Open Recent Projects": "最近的项目",
220
245
  "Open SFCC (Pickles + Filters + Sensor QE)": "打开 SFCC (Pickles + 滤镜 + 传感器 QE)",
221
246
  "Open Scripts Folder...": "打开脚本文件夹...",
222
247
  "Open Scripts Forum (Discord)...": "打开脚本论坛 (Discord)...",
@@ -234,6 +259,7 @@ TRANSLATIONS_ZH = {
234
259
  "Pixel Math...": "像素数学...",
235
260
  "Plan targets by altitude, transit time, and lunar separation": "按高度、过中天时间和月球角距规划目标",
236
261
  "Plate Solver...": "天体测量...",
262
+ "Preferences...": "首选项...",
237
263
  "Presets": "预设",
238
264
  "RGB Align...": "RGB对齐...",
239
265
  "RGB Combination...": "RGB合成...",
@@ -266,6 +292,7 @@ TRANSLATIONS_ZH = {
266
292
  "Save all views, histories, and shortcuts to a .sas file": "将所有视图、历史和快捷方式保存到.sas文件",
267
293
  "Save the active image": "保存当前图像",
268
294
  "Script Editor...": "脚本编辑器...",
295
+ "Select All Lines": "Select All Lines",
269
296
  "Selective Color Correction...": "选择性色彩校正...",
270
297
  "Set Sigma...": "设置西格玛...",
271
298
  "Set Target Median...": "设置目标中值...",
@@ -283,12 +310,15 @@ TRANSLATIONS_ZH = {
283
310
  "Stacking! Darks, Flats, Lights, Calibration, Drizzle, and more!!": "堆叠!暗场、平场、亮场、校准、Drizzle等等!!",
284
311
  "Star Stretch...": "星点拉伸...",
285
312
  "Star Stuff": "星点处理",
313
+ "Start a new project? This closes all views and clears desktop shortcuts.": "开始新项目?这将关闭所有视图并清除桌面快捷方式。",
286
314
  "Statistical Stretch...": "统计拉伸...",
315
+ "Statistics...": "统计...",
287
316
  "Stellar Alignment...": "星点对齐...",
288
317
  "Stellar Register...": "星点注册...",
289
318
  "Stretch the image using median/SD statistics": "使用中值/标准差统计拉伸图像",
290
319
  "Subtract per-channel minimum.\nClick: active view\nAlt+Drag: drop onto a view": "减去每通道最小值。\n点击:当前视图\nAlt+拖动:放置到视图上",
291
320
  "Supernova / Asteroid Hunter...": "超新星/小行星猎人...",
321
+ "System Monitor": "System Monitor",
292
322
  "Tile Horizontally": "水平平铺",
293
323
  "Tile Vertically": "垂直平铺",
294
324
  "Tile Views": "平铺视图",
@@ -1091,6 +1121,14 @@ TRANSLATIONS_ZH = {
1091
1121
  "Show System Log Panel": "显示系统日志面板",
1092
1122
  "System Log": "系统日志",
1093
1123
  },
1124
+ "DraggableToolBar": {
1125
+ "Create Desktop Shortcut": "Create Desktop Shortcut",
1126
+ "Hide this icon": "Hide this icon",
1127
+ "Lock Toolbar Icons": "Lock Toolbar Icons",
1128
+ "Reset hidden icons": "Reset hidden icons",
1129
+ "Show hidden…": "Show hidden…",
1130
+ "Tip: Alt+Drag to create": "Tip: Alt+Drag to create",
1131
+ },
1094
1132
  "ExoPlanetWindow": {
1095
1133
  "1: Load Raw Subs…": "1: 加载原始子帧…",
1096
1134
  "1a: Calibrate && Align Subs": "1a: 校准并对齐子帧",
@@ -1186,6 +1224,17 @@ TRANSLATIONS_ZH = {
1186
1224
  "Push HF": "推送高频",
1187
1225
  "Push LF": "推送低频",
1188
1226
  },
1227
+ "FunctionBundleDialog": {
1228
+ "Apply to Active View": "Apply to Active View",
1229
+ "Apply to View Bundle…": "Apply to View Bundle…",
1230
+ "Clear Steps": "Clear Steps",
1231
+ "Compress to Chip": "Compress to Chip",
1232
+ "Drag Bundle": "Drag Bundle",
1233
+ "Edit Preset…": "Edit Preset…",
1234
+ "Remove Selected": "Remove Selected",
1235
+ "▲ Move Up": "▲ Move Up",
1236
+ "▼ Move Down": "▼ Move Down",
1237
+ },
1189
1238
  "GeometryMixin": {
1190
1239
  "Active view has no image.": "活动视图没有图像。",
1191
1240
  "Enter scaling factor (e.g., 0.5 for 50%, 2 for 200%):": "输入缩放因子(例如,0.5 表示 50%,2 表示 200%):",
@@ -1528,7 +1577,7 @@ TRANSLATIONS_ZH = {
1528
1577
  "Status: ASTAP timed out.": "状态:ASTAP 超时。",
1529
1578
  "Status: Astrometry.net failed ({0}).": "状态:Astrometry.net 失败 ({0})。",
1530
1579
  "Status: Building WCS header from calibration…": "状态:正在从校准构建 WCS 头信息…",
1531
- "Status: Downloading WCS file (with SIP) from Astrometry.net…": "状态:正在从 Astrometry.net 下载 WCS 文件(带 SIP)…" ,
1580
+ "Status: Downloading WCS file (with SIP) from Astrometry.net…": "状态:正在从 Astrometry.net 下载 WCS 文件(带 SIP)…",
1532
1581
  "Status: Job assigned (ID {0}).": "状态:任务已分配 (ID {0})。",
1533
1582
  "Status: Logging in to Astrometry.net…": "状态:正在登录 Astrometry.net…",
1534
1583
  "Status: Login canceled (no API key).": "状态:登录已取消(无 API 密钥)。",
@@ -1701,32 +1750,48 @@ TRANSLATIONS_ZH = {
1701
1750
  "ASTAP executable:": "ASTAP 可执行文件:",
1702
1751
  "Astrometry.net API key:": "Astrometry.net API 密钥:",
1703
1752
  "Check Now…": "立即检查…",
1753
+ "Chinese": "简体中文",
1704
1754
  "Choose Background…": "选择背景…",
1705
1755
  "Clear": "清除",
1706
1756
  "Compute autostretch on a 16-bit histogram (smoother gradients).": "在 16 位直方图上计算自动拉伸(更平滑的渐变)。",
1707
1757
  "Cosmic Clarity folder:": "Cosmic Clarity 文件夹:",
1708
1758
  "Customize…": "自定义…",
1709
1759
  "Edit custom colors and font": "编辑自定义颜色和字体",
1760
+ "English": "英语",
1761
+ "French": "法语",
1762
+ "German": "德语",
1710
1763
  "GraXpert executable:": "GraXpert 可执行文件:",
1711
1764
  "High-quality autostretch (16-bit; better gradients)": "高质量自动拉伸(16 位;更好的渐变)",
1765
+ "Italian": "意大利语",
1766
+ "Japanese": "日语",
1767
+ "Language changed. Please manually restart the application to apply the new language.": "语言已更改。请手动重启应用以应用新语言。",
1768
+ "Language:": "语言:",
1712
1769
  "Pick a PNG or JPG to use as the application background": "选取一张 PNG 或 JPG 作为应用程序背景",
1770
+ "Portuguese": "葡萄牙语",
1713
1771
  "Remove custom background and restore default": "移除自定义背景并恢复默认",
1772
+ "Restart required": "需要重启",
1714
1773
  "Restore default updates URL": "恢复默认更新 URL",
1715
1774
  "Run an update check immediately": "立即运行更新检查",
1716
1775
  "Save desktop shortcuts on exit": "退出时保存桌面快捷方式",
1717
- "StarNet executable:": "StarNet 可执行文件:",
1718
- "English": "英语",
1719
- "French": "法语",
1720
- "Italian": "意大利语",
1721
1776
  "Spanish": "西班牙语",
1722
- "Language:": "语言:",
1723
- "Theme:": "主题:",
1724
- "German": "德语",
1725
- "Portuguese": "葡萄牙语",
1726
- "Japanese": "日语",
1727
- "Chinese": "简体中文",
1728
- "Restart required": "需要重启",
1777
+ "StarNet executable:": "StarNet 可执行文件:",
1729
1778
  "The application will now restart to apply the language change.": "应用程序现在将重新启动以应用语言更改。",
1779
+ "Theme:": "主题:",
1780
+ },
1781
+ "ShortcutButton": {
1782
+ "Clear Preset": "Clear Preset",
1783
+ "Delete": "Delete",
1784
+ "Edit Preset (JSON)": "Edit Preset (JSON)",
1785
+ "Edit Preset…": "Edit Preset…",
1786
+ "Invalid JSON": "Invalid JSON",
1787
+ "Name:": "Name:",
1788
+ "Preset must be a JSON object": "Preset must be a JSON object",
1789
+ "Preset saved": "Preset saved",
1790
+ "Preset stored on shortcut.": "Preset stored on shortcut.",
1791
+ "Preset:": "Preset:",
1792
+ "Rename Shortcut": "Rename Shortcut",
1793
+ "Rename…": "Rename…",
1794
+ "Run": "Run",
1730
1795
  },
1731
1796
  "SignatureInsertDialogPro": {
1732
1797
  "Signature / Insert": "签名 / 插入",
@@ -3183,6 +3248,16 @@ TRANSLATIONS_ZH = {
3183
3248
  "Strength:": "强度:",
3184
3249
  "Target median:": "目标中值:",
3185
3250
  },
3251
+ "StatisticsDialog": {
3252
+ "App Statistics": "应用统计",
3253
+ "Close": "关闭",
3254
+ "Days": "天",
3255
+ "Hours": "小时",
3256
+ "Images Opened:": "打开的图像:",
3257
+ "Minutes": "分钟",
3258
+ "Time Spent:": "花费时间:",
3259
+ "Tools Opened:": "打开的工具:",
3260
+ },
3186
3261
  "StatusLogWindow": {
3187
3262
  "Clear": "清除",
3188
3263
  "Stacking Suite Log": "堆叠套件日志",
@@ -3479,6 +3554,18 @@ TRANSLATIONS_ZH = {
3479
3554
  "You are running the latest version": "您正在运行最新版本",
3480
3555
  "You're already running the latest version.": "您已经运行的是最新版本。",
3481
3556
  },
3557
+ "ViewBundleDialog": {
3558
+ "Add Directory (Recursive)…": "Add Directory (Recursive)…",
3559
+ "Add Files…": "Add Files…",
3560
+ "Add from Open…": "Add from Open…",
3561
+ "Clear Views": "Clear Views",
3562
+ "Compress to Chip": "Compress to Chip",
3563
+ "Delete": "Delete",
3564
+ "Duplicate": "Duplicate",
3565
+ "New Bundle": "New Bundle",
3566
+ "Remove Selected": "Remove Selected",
3567
+ "View Bundles": "View Bundles",
3568
+ },
3482
3569
  "WhatsInMyImage": {
3483
3570
  "Analyze Image": "分析图像",
3484
3571
  "Analyzing...": "正在分析...",
@@ -3588,6 +3675,10 @@ TRANSLATIONS_ZH = {
3588
3675
  "Waxing": "盈",
3589
3676
  "What's In My Sky": "我的天空中有什么",
3590
3677
  },
3678
+ "WindowShelf": {
3679
+ "Minimized Views": "Minimized Views",
3680
+ "Untitled": "Untitled",
3681
+ },
3591
3682
  "_AstrobinIdDelegate": {
3592
3683
  "Enter AstroBin ID": "输入 AstroBin ID",
3593
3684
  "Invalid ID format": "ID 格式无效",
@@ -3656,4 +3747,164 @@ TRANSLATIONS_ZH = {
3656
3747
  "Success": "成功",
3657
3748
  "View in Aladin": "在 Aladin 中查看",
3658
3749
  },
3750
+ "WIMIDialog": {
3751
+ "Add Text": "添加文本",
3752
+ "Clear Annotations": "清除注释",
3753
+ "Clear Results": "清除结果",
3754
+ "Copy Object Information": "复制对象信息",
3755
+ "Delete Selected Items": "删除所选项目",
3756
+ "Delete Selected Object(s)": "删除所选对象",
3757
+ "Legend": "图例",
3758
+ "Open Website": "打开网站",
3759
+ "Select Annotation Color": "选择注释颜色",
3760
+ "Select Annotation Font": "选择注释字体",
3761
+ "Select Color": "选择颜色",
3762
+ "Select Font": "选择字体",
3763
+ "Show Annotation Tools": "显示注释工具",
3764
+ "Show Object Names": "显示对象名称",
3765
+ "Show Visible Objects Only": "仅显示可见对象",
3766
+ "Undo": "撤销",
3767
+ "Zoom to Object": "缩放到对象",
3768
+ "Copy RA/Dec to Clipboard": "复制 RA/Dec 到剪贴板",
3769
+ "Save Plate Solved Fits": "保存已解析的 FITS",
3770
+ "RA: N/A": "赤经: N/A",
3771
+ "Dec: N/A": "赤纬: N/A",
3772
+ "Orientation: N/A°": "方向: N/A°",
3773
+ "Mini Preview": "迷你预览",
3774
+ "Zoom In": "放大",
3775
+ "Zoom Out": "缩小",
3776
+ "Save Annotated Image": "保存带注释的图像",
3777
+ "Save Collage of Objects": "保存对象拼贴",
3778
+ "3D Distance Model": "3D 距离模型",
3779
+ "H-R Diagram": "赫罗图 (H-R Diagram)",
3780
+ "Objects Found: 0": "找到的对象: 0",
3781
+ "Right Click a Row for More Options": "右键单击一行以获取更多选项",
3782
+ "Ctrl+Click to add items, Alt+Click to measure distance": "按住 Ctrl+单击以添加项目,按住 Alt+单击以测量距离",
3783
+ "Draw Ellipse": "绘制椭圆",
3784
+ "Freehand (Lasso)": "手绘 (套索)",
3785
+ "Draw Rectangle": "绘制矩形",
3786
+ "Draw Arrow": "绘制箭头",
3787
+ "Place Celestial Compass": "放置天体罗盘",
3788
+ "Advanced Search Parameters": "高级搜索参数",
3789
+ "Object Type": "对象类型",
3790
+ "Description": "描述",
3791
+ "Toggle All": "切换全部",
3792
+ "Save List…": "保存列表…",
3793
+ "Load List…": "加载列表…",
3794
+ "Search Defined Region": "搜索定义区域",
3795
+ "Search Entire Image": "搜索整个图像",
3796
+ "Minor Planets / Comets": "小行星 / 彗星",
3797
+ "Database: not downloaded": "数据库: 未下载",
3798
+ "Download Catalog": "下载目录",
3799
+ "Search Minor Bodies": "搜索小天体",
3800
+ "Search scope:": "搜索范围:",
3801
+ "Defined Region": "定义区域",
3802
+ "Entire Image": "整个图像",
3803
+ "Asteroid H \u2264": "小行星 H \u2264",
3804
+ "Max asteroids:": "最大小行星数:",
3805
+ "Comet H \u2264": "彗星 H \u2264",
3806
+ "Max comets:": "最大彗星数:",
3807
+ "Target (optional):": "目标 (可选):",
3808
+ "Count Objects Brighter Than Limits": "统计亮度超过限制的对象",
3809
+ "Time offset (hours):": "时间偏移 (小时):",
3810
+ "Caution - Deep Vizier Search": "注意 - 深度 Vizier 搜索",
3811
+ "Search M.A.S.T Database": "搜索 M.A.S.T 数据库",
3812
+ "Load Image File": "加载图像文件",
3813
+ "Load from View": "从视图加载",
3814
+ "AutoStretch": "AutoStretch",
3815
+ "Shift+Click to define a search region": "Shift+单击定义搜索区域",
3816
+ "Query Simbad": "查询 Simbad",
3817
+ "Save CSV": "保存 CSV",
3818
+ "Advanced Search": "高级搜索",
3819
+ "Status: Ready": "状态: 就绪",
3820
+ },
3821
+ "WhatsInMySkyDialog": {
3822
+ "What's In My Sky": "我的天空有什么",
3823
+ "Latitude:": "纬度:",
3824
+ "Longitude (E+, W−):": "经度 (E+, W−):",
3825
+ "Date (YYYY-MM-DD):": "日期 (YYYY-MM-DD):",
3826
+ "Time (HH:MM):": "时间 (HH:MM):",
3827
+ "Time Zone:": "时区:",
3828
+ "Min Altitude (0–90°):": "最小高度 (0–90°):",
3829
+ "Catalog Filters:": "星表过滤器:",
3830
+ "Degrees": "度",
3831
+ "H:M:S / D:M:S": "时:分:秒 / 度:分:秒",
3832
+ "RA/Dec Format:": "赤经/赤纬格式:",
3833
+ "Calculate": "计算",
3834
+ "Status: Idle": "状态: 空闲",
3835
+ "Local Sidereal Time: 0.000": "本地恒星时: 0.000",
3836
+ "Lunar Phase: N/A": "月相: N/A",
3837
+ "Name": "名称",
3838
+ "RA": "赤经",
3839
+ "Dec": "赤纬",
3840
+ "Altitude": "高度",
3841
+ "Azimuth": "方位角",
3842
+ "Minutes to Transit": "中天时间 (分钟)",
3843
+ "Before/After Transit": "中天前/后",
3844
+ "Degrees from Moon": "离月亮角度",
3845
+ "Alt Name": "别名",
3846
+ "Type": "类型",
3847
+ "Magnitude": "星等",
3848
+ "Size (arcmin)": "大小 (角分)",
3849
+ "Add Custom Object": "添加自定义天体",
3850
+ "Save to CSV": "保存为 CSV",
3851
+ "Settings": "设置",
3852
+ "Enter number of objects to display:": "输入显示天体数量:",
3853
+ "Enter object name:": "输入天体名称:",
3854
+ "Enter RA (deg):": "输入赤经 (度):",
3855
+ "Enter Dec (deg):": "输入赤纬 (度):",
3856
+ "Added custom object: {}": "已添加自定义天体: {}",
3857
+ "Could not update catalog:\n{}": "无法更新目录:\n{}",
3858
+ "Save CSV File": "保存 CSV 文件",
3859
+ "CSV files (*.csv);;All Files (*)": "CSV 文件 (*.csv);;所有文件 (*)",
3860
+ "Data saved to {}": "数据已保存至 {}",
3861
+ "Invalid input: {}": "输入无效: {}",
3862
+ " Please verify your longitude/timezone.": " 请验证您的经度/时区。",
3863
+ "Inputs look consistent.": "输入看起来一致。",
3864
+ "Calculating…": "计算中…",
3865
+ "Lunar Phase: {}% illuminated": "月相: {}% 照明",
3866
+ "Status: {}": "状态: {}",
3867
+ },
3868
+ "ViewBundleDialog": {
3869
+ "View Bundles": "视图捆绑包",
3870
+ "Choose views to add:": "选择要添加的视图:",
3871
+ "Select all open views": "选择所有打开的视图",
3872
+ "New Bundle": "新捆绑包",
3873
+ "Duplicate": "复制",
3874
+ "Delete": "删除",
3875
+ "Clear Views": "清除视图",
3876
+ "Remove Selected": "移除选中",
3877
+ "Add from Open…": "从打开中添加…",
3878
+ "Add Files…": "添加文件…",
3879
+ "Add Directory (Recursive)…": "添加目录 (递归)…",
3880
+ "Compress to Chip": "压缩为芯片",
3881
+ "Drop views here to add • Drop shortcuts here to apply to THIS bundle": "拖放视图到此添加 • 拖放快捷方式到此应用到此捆绑包",
3882
+ "Bundles": "捆绑包",
3883
+ "Views in Selected Bundle": "选中捆绑包中的视图",
3884
+ "Delete Chip": "删除芯片",
3885
+ "Drag to move · Ctrl+drag to apply · Drop views/shortcuts here": "拖动移动 · Ctrl+拖动应用 · 拖放视图/快捷方式到此",
3886
+ },
3887
+ "FunctionBundleDialog": {
3888
+ "Function Bundles": "功能捆绑包",
3889
+ "New": "新建",
3890
+ "Duplicate": "复制",
3891
+ "Delete": "删除",
3892
+ "Drop shortcuts here to add steps": "拖放快捷方式到此添加步骤",
3893
+ "Edit Preset…": "编辑预设…",
3894
+ "Remove Selected": "移除选中",
3895
+ "Clear Steps": "清除步骤",
3896
+ "▲ Move Up": "▲ 上移",
3897
+ "▼ Move Down": "▼ 下移",
3898
+ "Drag Bundle": "拖动捆绑包",
3899
+ "Apply to Active View": "应用到活动视图",
3900
+ "Apply to View Bundle…": "应用到视图捆绑包…",
3901
+ "Compress to Chip": "压缩为芯片",
3902
+ "Delete Chip": "删除芯片",
3903
+ },
3904
+ "BatchRenamerDialog": {
3905
+ "Clear Selections": "清除选择",
3906
+ },
3907
+ "ShortcutButton": {
3908
+ "Delete": "删除",
3909
+ },
3659
3910
  }
@@ -1,19 +1,20 @@
1
+ # src/setiastro/saspro/versioning.py
1
2
  from __future__ import annotations
2
3
  import os
3
4
  import sys
4
5
  from pathlib import Path
5
6
 
6
-
7
7
  def _read_pyproject_version(start: Path) -> str | None:
8
8
  """
9
9
  Walk upward from 'start' looking for pyproject.toml,
10
10
  return [tool.poetry].version if found.
11
11
  """
12
+ # Python 3.11+: tomllib; Python 3.10: tomli
12
13
  try:
13
- import tomllib as _toml # Python 3.11+
14
+ import tomllib as _toml # type: ignore
14
15
  except Exception:
15
16
  try:
16
- import tomli as _toml # Python 3.10
17
+ import tomli as _toml # type: ignore
17
18
  except Exception:
18
19
  _toml = None
19
20
 
@@ -40,7 +41,37 @@ def _read_pyproject_version(start: Path) -> str | None:
40
41
  cur = cur.parent
41
42
  return None
42
43
 
43
-
44
44
  def get_app_version(dist_name: str = "setiastrosuitepro") -> str:
45
+ """
46
+ Single source of truth for SASpro version.
47
+
48
+ Order:
49
+ 0) build_info.py (best for PyInstaller frozen builds)
50
+ 1) installed distribution metadata (best for pip installs)
51
+ 2) pyproject.toml (best for running from source checkout)
52
+ 3) safe fallback
53
+ """
54
+ # 0) build_info (PyInstaller-friendly)
55
+ try:
56
+ from ._generated.build_info import APP_VERSION
57
+ if isinstance(APP_VERSION, str) and APP_VERSION.strip() and APP_VERSION.strip() != "0.0.0":
58
+ return APP_VERSION.strip()
59
+ except Exception:
60
+ pass
61
+
62
+ # 1) Installed package metadata
63
+ try:
64
+ from importlib.metadata import version as _dist_version
65
+ v = _dist_version(dist_name)
66
+ if v and v != "0.1.0":
67
+ return v
68
+ except Exception:
69
+ pass
70
+
71
+ # 2) Source tree pyproject.toml
72
+ here = Path(__file__).resolve()
73
+ v2 = _read_pyproject_version(here.parent)
74
+ if v2:
75
+ return v2
45
76
 
46
- return "1.6.1"
77
+ return "0.0.0"
@@ -174,7 +174,7 @@ class BundleChip(QWidget):
174
174
  v.setSpacing(0)
175
175
  self._title = QLabel(self._name)
176
176
  self._title.setObjectName("chipTitle")
177
- self._hint = QLabel("Drag to move · Ctrl+drag to apply · Drop views/shortcuts here")
177
+ self._hint = QLabel(self._panel.tr("Drag to move · Ctrl+drag to apply · Drop views/shortcuts here"))
178
178
  self._hint.setObjectName("chipHint")
179
179
  v.addWidget(self._title, 0, Qt.AlignmentFlag.AlignCenter)
180
180
  v.addWidget(self._hint, 0, Qt.AlignmentFlag.AlignCenter)
@@ -265,7 +265,7 @@ class BundleChip(QWidget):
265
265
 
266
266
  def contextMenuEvent(self, ev):
267
267
  m = QMenu(self)
268
- act_del = m.addAction("Delete Chip")
268
+ act_del = m.addAction(self._panel.tr("Delete Chip"))
269
269
  act = m.exec(ev.globalPos())
270
270
  if act is act_del:
271
271
  try:
@@ -378,16 +378,17 @@ class SelectViewsDialog(QDialog):
378
378
  super().__init__(parent)
379
379
  self.setWindowTitle("Add Views to Bundle")
380
380
  self.setWindowFlag(Qt.WindowType.Window, True)
381
+ self.setWindowModality(Qt.WindowModality.NonModal)
381
382
  self.setModal(False)
382
383
  #self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose, True)
383
384
  self._boxes: list[QCheckBox] = []
384
385
 
385
386
  v = QVBoxLayout(self)
386
- v.addWidget(QLabel("Choose views to add:"))
387
+ v.addWidget(QLabel(self.tr("Choose views to add:")))
387
388
  v.setSpacing(6)
388
389
 
389
390
  # NEW: "Select all" checkbox
390
- self._select_all = QCheckBox("Select all open views")
391
+ self._select_all = QCheckBox(self.tr("Select all open views"))
391
392
  self._select_all.toggled.connect(self._on_select_all_toggled)
392
393
  v.addWidget(self._select_all)
393
394
 
@@ -509,7 +510,9 @@ class ViewBundleDialog(QDialog):
509
510
  def __init__(self, parent: QWidget | None = None):
510
511
  super().__init__(parent)
511
512
  _pin_on_top_mac(self)
512
- self.setWindowTitle("View Bundles")
513
+ self.setWindowTitle(self.tr("View Bundles"))
514
+ self.setWindowFlag(Qt.WindowType.Window, True)
515
+ self.setWindowModality(Qt.WindowModality.NonModal)
513
516
  self.setModal(False)
514
517
  self.resize(900, 540)
515
518
  self.setAcceptDrops(True)
@@ -535,28 +538,28 @@ class ViewBundleDialog(QDialog):
535
538
  self.docs.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
536
539
  self.docs.customContextMenuRequested.connect(self._docs_context_menu)
537
540
  self.docs.itemDoubleClicked.connect(self._docs_item_activated)
538
- self.btn_new = QPushButton("New Bundle")
539
- self.btn_dup = QPushButton("Duplicate")
540
- self.btn_del = QPushButton("Delete")
541
- self.btn_clear = QPushButton("Clear Views")
542
- self.btn_remove_sel = QPushButton("Remove Selected")
543
- self.btn_add_from_open = QPushButton("Add from Open…")
544
- self.btn_add_files = QPushButton("Add Files…")
545
- self.btn_add_dir = QPushButton("Add Directory (Recursive)…")
546
- self.btn_compress = QPushButton("Compress to Chip")
547
- self.drop_hint = QLabel("Drop views here to add • Drop shortcuts here to apply to THIS bundle")
541
+ self.btn_new = QPushButton(self.tr("New Bundle"))
542
+ self.btn_dup = QPushButton(self.tr("Duplicate"))
543
+ self.btn_del = QPushButton(self.tr("Delete"))
544
+ self.btn_clear = QPushButton(self.tr("Clear Views"))
545
+ self.btn_remove_sel = QPushButton(self.tr("Remove Selected"))
546
+ self.btn_add_from_open = QPushButton(self.tr("Add from Open…"))
547
+ self.btn_add_files = QPushButton(self.tr("Add Files…"))
548
+ self.btn_add_dir = QPushButton(self.tr("Add Directory (Recursive)…"))
549
+ self.btn_compress = QPushButton(self.tr("Compress to Chip"))
550
+ self.drop_hint = QLabel(self.tr("Drop views here to add • Drop shortcuts here to apply to THIS bundle"))
548
551
  self.drop_hint.setAlignment(Qt.AlignmentFlag.AlignCenter)
549
552
  self.drop_hint.setStyleSheet("color:#aaa; padding:6px; border:1px dashed #666; border-radius:6px;")
550
553
 
551
554
  left = QVBoxLayout()
552
- left.addWidget(QLabel("Bundles"))
555
+ left.addWidget(QLabel(self.tr("Bundles")))
553
556
  left.addWidget(self.list, 1)
554
557
  row = QHBoxLayout()
555
558
  row.addWidget(self.btn_new); row.addWidget(self.btn_dup); row.addWidget(self.btn_del)
556
559
  left.addLayout(row)
557
560
 
558
561
  right = QVBoxLayout()
559
- right.addWidget(QLabel("Views in Selected Bundle"))
562
+ right.addWidget(QLabel(self.tr("Views in Selected Bundle")))
560
563
  right.addWidget(self.docs, 1)
561
564
 
562
565
  rrow = QHBoxLayout()