setiastrosuitepro 1.6.7__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.
- setiastro/__init__.py +2 -0
- setiastro/data/SASP_data.fits +0 -0
- setiastro/data/catalogs/List_of_Galaxies_with_Distances_Gly.csv +488 -0
- setiastro/data/catalogs/astrobin_filters.csv +890 -0
- setiastro/data/catalogs/astrobin_filters_page1_local.csv +51 -0
- setiastro/data/catalogs/cali2.csv +63 -0
- setiastro/data/catalogs/cali2color.csv +65 -0
- setiastro/data/catalogs/celestial_catalog - original.csv +16471 -0
- setiastro/data/catalogs/celestial_catalog.csv +24031 -0
- setiastro/data/catalogs/detected_stars.csv +24784 -0
- setiastro/data/catalogs/fits_header_data.csv +46 -0
- setiastro/data/catalogs/test.csv +8 -0
- setiastro/data/catalogs/updated_celestial_catalog.csv +16471 -0
- setiastro/images/Astro_Spikes.png +0 -0
- setiastro/images/Background_startup.jpg +0 -0
- setiastro/images/HRDiagram.png +0 -0
- setiastro/images/LExtract.png +0 -0
- setiastro/images/LInsert.png +0 -0
- setiastro/images/Oxygenation-atm-2.svg.png +0 -0
- setiastro/images/RGB080604.png +0 -0
- setiastro/images/abeicon.png +0 -0
- setiastro/images/aberration.png +0 -0
- setiastro/images/acv_icon.png +0 -0
- setiastro/images/andromedatry.png +0 -0
- setiastro/images/andromedatry_satellited.png +0 -0
- setiastro/images/annotated.png +0 -0
- setiastro/images/aperture.png +0 -0
- setiastro/images/astrosuite.ico +0 -0
- setiastro/images/astrosuite.png +0 -0
- setiastro/images/astrosuitepro.icns +0 -0
- setiastro/images/astrosuitepro.ico +0 -0
- setiastro/images/astrosuitepro.png +0 -0
- setiastro/images/background.png +0 -0
- setiastro/images/background2.png +0 -0
- setiastro/images/benchmark.png +0 -0
- setiastro/images/big_moon_stabilizer_timeline.png +0 -0
- setiastro/images/big_moon_stabilizer_timeline_clean.png +0 -0
- setiastro/images/blaster.png +0 -0
- setiastro/images/blink.png +0 -0
- setiastro/images/clahe.png +0 -0
- setiastro/images/collage.png +0 -0
- setiastro/images/colorwheel.png +0 -0
- setiastro/images/contsub.png +0 -0
- setiastro/images/convo.png +0 -0
- setiastro/images/copyslot.png +0 -0
- setiastro/images/cosmic.png +0 -0
- setiastro/images/cosmicsat.png +0 -0
- setiastro/images/crop1.png +0 -0
- setiastro/images/cropicon.png +0 -0
- setiastro/images/curves.png +0 -0
- setiastro/images/cvs.png +0 -0
- setiastro/images/debayer.png +0 -0
- setiastro/images/denoise_cnn_custom.png +0 -0
- setiastro/images/denoise_cnn_graph.png +0 -0
- setiastro/images/disk.png +0 -0
- setiastro/images/dse.png +0 -0
- setiastro/images/exoicon.png +0 -0
- setiastro/images/eye.png +0 -0
- setiastro/images/first_quarter.png +0 -0
- setiastro/images/fliphorizontal.png +0 -0
- setiastro/images/flipvertical.png +0 -0
- setiastro/images/font.png +0 -0
- setiastro/images/freqsep.png +0 -0
- setiastro/images/full_moon.png +0 -0
- setiastro/images/functionbundle.png +0 -0
- setiastro/images/graxpert.png +0 -0
- setiastro/images/green.png +0 -0
- setiastro/images/gridicon.png +0 -0
- setiastro/images/halo.png +0 -0
- setiastro/images/hdr.png +0 -0
- setiastro/images/histogram.png +0 -0
- setiastro/images/hubble.png +0 -0
- setiastro/images/imagecombine.png +0 -0
- setiastro/images/invert.png +0 -0
- setiastro/images/isophote.png +0 -0
- setiastro/images/isophote_demo_figure.png +0 -0
- setiastro/images/isophote_demo_image.png +0 -0
- setiastro/images/isophote_demo_model.png +0 -0
- setiastro/images/isophote_demo_residual.png +0 -0
- setiastro/images/jwstpupil.png +0 -0
- setiastro/images/last_quarter.png +0 -0
- setiastro/images/linearfit.png +0 -0
- setiastro/images/livestacking.png +0 -0
- setiastro/images/mask.png +0 -0
- setiastro/images/maskapply.png +0 -0
- setiastro/images/maskcreate.png +0 -0
- setiastro/images/maskremove.png +0 -0
- setiastro/images/morpho.png +0 -0
- setiastro/images/mosaic.png +0 -0
- setiastro/images/multiscale_decomp.png +0 -0
- setiastro/images/nbtorgb.png +0 -0
- setiastro/images/neutral.png +0 -0
- setiastro/images/new_moon.png +0 -0
- setiastro/images/nuke.png +0 -0
- setiastro/images/openfile.png +0 -0
- setiastro/images/pedestal.png +0 -0
- setiastro/images/pen.png +0 -0
- setiastro/images/pixelmath.png +0 -0
- setiastro/images/platesolve.png +0 -0
- setiastro/images/ppp.png +0 -0
- setiastro/images/pro.png +0 -0
- setiastro/images/project.png +0 -0
- setiastro/images/psf.png +0 -0
- setiastro/images/redo.png +0 -0
- setiastro/images/redoicon.png +0 -0
- setiastro/images/rescale.png +0 -0
- setiastro/images/rgbalign.png +0 -0
- setiastro/images/rgbcombo.png +0 -0
- setiastro/images/rgbextract.png +0 -0
- setiastro/images/rotate180.png +0 -0
- setiastro/images/rotatearbitrary.png +0 -0
- setiastro/images/rotateclockwise.png +0 -0
- setiastro/images/rotatecounterclockwise.png +0 -0
- setiastro/images/satellite.png +0 -0
- setiastro/images/script.png +0 -0
- setiastro/images/selectivecolor.png +0 -0
- setiastro/images/simbad.png +0 -0
- setiastro/images/slot0.png +0 -0
- setiastro/images/slot1.png +0 -0
- setiastro/images/slot2.png +0 -0
- setiastro/images/slot3.png +0 -0
- setiastro/images/slot4.png +0 -0
- setiastro/images/slot5.png +0 -0
- setiastro/images/slot6.png +0 -0
- setiastro/images/slot7.png +0 -0
- setiastro/images/slot8.png +0 -0
- setiastro/images/slot9.png +0 -0
- setiastro/images/spcc.png +0 -0
- setiastro/images/spin_precession_vs_lunar_distance.png +0 -0
- setiastro/images/spinner.gif +0 -0
- setiastro/images/stacking.png +0 -0
- setiastro/images/staradd.png +0 -0
- setiastro/images/staralign.png +0 -0
- setiastro/images/starnet.png +0 -0
- setiastro/images/starregistration.png +0 -0
- setiastro/images/starspike.png +0 -0
- setiastro/images/starstretch.png +0 -0
- setiastro/images/statstretch.png +0 -0
- setiastro/images/supernova.png +0 -0
- setiastro/images/uhs.png +0 -0
- setiastro/images/undoicon.png +0 -0
- setiastro/images/upscale.png +0 -0
- setiastro/images/viewbundle.png +0 -0
- setiastro/images/waning_crescent_1.png +0 -0
- setiastro/images/waning_crescent_2.png +0 -0
- setiastro/images/waning_crescent_3.png +0 -0
- setiastro/images/waning_crescent_4.png +0 -0
- setiastro/images/waning_crescent_5.png +0 -0
- setiastro/images/waning_gibbous_1.png +0 -0
- setiastro/images/waning_gibbous_2.png +0 -0
- setiastro/images/waning_gibbous_3.png +0 -0
- setiastro/images/waning_gibbous_4.png +0 -0
- setiastro/images/waning_gibbous_5.png +0 -0
- setiastro/images/waxing_crescent_1.png +0 -0
- setiastro/images/waxing_crescent_2.png +0 -0
- setiastro/images/waxing_crescent_3.png +0 -0
- setiastro/images/waxing_crescent_4.png +0 -0
- setiastro/images/waxing_crescent_5.png +0 -0
- setiastro/images/waxing_gibbous_1.png +0 -0
- setiastro/images/waxing_gibbous_2.png +0 -0
- setiastro/images/waxing_gibbous_3.png +0 -0
- setiastro/images/waxing_gibbous_4.png +0 -0
- setiastro/images/waxing_gibbous_5.png +0 -0
- setiastro/images/whitebalance.png +0 -0
- setiastro/images/wimi_icon_256x256.png +0 -0
- setiastro/images/wimilogo.png +0 -0
- setiastro/images/wims.png +0 -0
- setiastro/images/wrench_icon.png +0 -0
- setiastro/images/xisfliberator.png +0 -0
- setiastro/qml/ResourceMonitor.qml +128 -0
- setiastro/saspro/__init__.py +20 -0
- setiastro/saspro/__main__.py +964 -0
- setiastro/saspro/_generated/__init__.py +7 -0
- setiastro/saspro/_generated/build_info.py +3 -0
- setiastro/saspro/abe.py +1379 -0
- setiastro/saspro/abe_preset.py +196 -0
- setiastro/saspro/aberration_ai.py +910 -0
- setiastro/saspro/aberration_ai_preset.py +224 -0
- setiastro/saspro/accel_installer.py +218 -0
- setiastro/saspro/accel_workers.py +30 -0
- setiastro/saspro/acv_exporter.py +379 -0
- setiastro/saspro/add_stars.py +627 -0
- setiastro/saspro/astrobin_exporter.py +1010 -0
- setiastro/saspro/astrospike.py +153 -0
- setiastro/saspro/astrospike_python.py +1841 -0
- setiastro/saspro/autostretch.py +198 -0
- setiastro/saspro/backgroundneutral.py +639 -0
- setiastro/saspro/batch_convert.py +328 -0
- setiastro/saspro/batch_renamer.py +522 -0
- setiastro/saspro/blemish_blaster.py +494 -0
- setiastro/saspro/blink_comparator_pro.py +3149 -0
- setiastro/saspro/bundles.py +61 -0
- setiastro/saspro/bundles_dock.py +114 -0
- setiastro/saspro/cheat_sheet.py +213 -0
- setiastro/saspro/clahe.py +371 -0
- setiastro/saspro/comet_stacking.py +1442 -0
- setiastro/saspro/common_tr.py +107 -0
- setiastro/saspro/config.py +38 -0
- setiastro/saspro/config_bootstrap.py +40 -0
- setiastro/saspro/config_manager.py +316 -0
- setiastro/saspro/continuum_subtract.py +1620 -0
- setiastro/saspro/convo.py +1403 -0
- setiastro/saspro/convo_preset.py +414 -0
- setiastro/saspro/copyastro.py +190 -0
- setiastro/saspro/cosmicclarity.py +1593 -0
- setiastro/saspro/cosmicclarity_preset.py +407 -0
- setiastro/saspro/crop_dialog_pro.py +1005 -0
- setiastro/saspro/crop_preset.py +189 -0
- setiastro/saspro/curve_editor_pro.py +2608 -0
- setiastro/saspro/curves_preset.py +375 -0
- setiastro/saspro/debayer.py +673 -0
- setiastro/saspro/debug_utils.py +29 -0
- setiastro/saspro/dnd_mime.py +35 -0
- setiastro/saspro/doc_manager.py +2727 -0
- setiastro/saspro/exoplanet_detector.py +2258 -0
- setiastro/saspro/file_utils.py +284 -0
- setiastro/saspro/fitsmodifier.py +748 -0
- setiastro/saspro/fix_bom.py +32 -0
- setiastro/saspro/free_torch_memory.py +48 -0
- setiastro/saspro/frequency_separation.py +1352 -0
- setiastro/saspro/function_bundle.py +1596 -0
- setiastro/saspro/generate_translations.py +3092 -0
- setiastro/saspro/ghs_dialog_pro.py +728 -0
- setiastro/saspro/ghs_preset.py +284 -0
- setiastro/saspro/graxpert.py +638 -0
- setiastro/saspro/graxpert_preset.py +287 -0
- setiastro/saspro/gui/__init__.py +0 -0
- setiastro/saspro/gui/main_window.py +8928 -0
- setiastro/saspro/gui/mixins/__init__.py +33 -0
- setiastro/saspro/gui/mixins/dock_mixin.py +375 -0
- setiastro/saspro/gui/mixins/file_mixin.py +450 -0
- setiastro/saspro/gui/mixins/geometry_mixin.py +503 -0
- setiastro/saspro/gui/mixins/header_mixin.py +441 -0
- setiastro/saspro/gui/mixins/mask_mixin.py +421 -0
- setiastro/saspro/gui/mixins/menu_mixin.py +391 -0
- setiastro/saspro/gui/mixins/theme_mixin.py +367 -0
- setiastro/saspro/gui/mixins/toolbar_mixin.py +1824 -0
- setiastro/saspro/gui/mixins/update_mixin.py +323 -0
- setiastro/saspro/gui/mixins/view_mixin.py +477 -0
- setiastro/saspro/gui/statistics_dialog.py +47 -0
- setiastro/saspro/halobgon.py +492 -0
- setiastro/saspro/header_viewer.py +448 -0
- setiastro/saspro/headless_utils.py +88 -0
- setiastro/saspro/histogram.py +760 -0
- setiastro/saspro/history_explorer.py +941 -0
- setiastro/saspro/i18n.py +168 -0
- setiastro/saspro/image_combine.py +421 -0
- setiastro/saspro/image_peeker_pro.py +1608 -0
- setiastro/saspro/imageops/__init__.py +37 -0
- setiastro/saspro/imageops/mdi_snap.py +292 -0
- setiastro/saspro/imageops/scnr.py +36 -0
- setiastro/saspro/imageops/starbasedwhitebalance.py +210 -0
- setiastro/saspro/imageops/stretch.py +236 -0
- setiastro/saspro/isophote.py +1186 -0
- setiastro/saspro/layers.py +208 -0
- setiastro/saspro/layers_dock.py +714 -0
- setiastro/saspro/lazy_imports.py +193 -0
- setiastro/saspro/legacy/__init__.py +2 -0
- setiastro/saspro/legacy/image_manager.py +2360 -0
- setiastro/saspro/legacy/numba_utils.py +3676 -0
- setiastro/saspro/legacy/xisf.py +1213 -0
- setiastro/saspro/linear_fit.py +537 -0
- setiastro/saspro/live_stacking.py +1854 -0
- setiastro/saspro/log_bus.py +5 -0
- setiastro/saspro/logging_config.py +460 -0
- setiastro/saspro/luminancerecombine.py +510 -0
- setiastro/saspro/main_helpers.py +201 -0
- setiastro/saspro/mask_creation.py +1090 -0
- setiastro/saspro/masks_core.py +56 -0
- setiastro/saspro/mdi_widgets.py +353 -0
- setiastro/saspro/memory_utils.py +666 -0
- setiastro/saspro/metadata_patcher.py +75 -0
- setiastro/saspro/mfdeconv.py +3909 -0
- setiastro/saspro/mfdeconv_earlystop.py +71 -0
- setiastro/saspro/mfdeconvcudnn.py +3312 -0
- setiastro/saspro/mfdeconvsport.py +2459 -0
- setiastro/saspro/minorbodycatalog.py +567 -0
- setiastro/saspro/morphology.py +411 -0
- setiastro/saspro/multiscale_decomp.py +1751 -0
- setiastro/saspro/nbtorgb_stars.py +541 -0
- setiastro/saspro/numba_utils.py +3145 -0
- setiastro/saspro/numba_warmup.py +141 -0
- setiastro/saspro/ops/__init__.py +9 -0
- setiastro/saspro/ops/command_help_dialog.py +623 -0
- setiastro/saspro/ops/command_runner.py +217 -0
- setiastro/saspro/ops/commands.py +1594 -0
- setiastro/saspro/ops/script_editor.py +1105 -0
- setiastro/saspro/ops/scripts.py +1476 -0
- setiastro/saspro/ops/settings.py +637 -0
- setiastro/saspro/parallel_utils.py +554 -0
- setiastro/saspro/pedestal.py +121 -0
- setiastro/saspro/perfect_palette_picker.py +1105 -0
- setiastro/saspro/pipeline.py +110 -0
- setiastro/saspro/pixelmath.py +1604 -0
- setiastro/saspro/plate_solver.py +2480 -0
- setiastro/saspro/project_io.py +797 -0
- setiastro/saspro/psf_utils.py +136 -0
- setiastro/saspro/psf_viewer.py +631 -0
- setiastro/saspro/pyi_rthook_astroquery.py +95 -0
- setiastro/saspro/remove_green.py +331 -0
- setiastro/saspro/remove_stars.py +1599 -0
- setiastro/saspro/remove_stars_preset.py +446 -0
- setiastro/saspro/resources.py +570 -0
- setiastro/saspro/rgb_combination.py +208 -0
- setiastro/saspro/rgb_extract.py +19 -0
- setiastro/saspro/rgbalign.py +727 -0
- setiastro/saspro/runtime_imports.py +7 -0
- setiastro/saspro/runtime_torch.py +754 -0
- setiastro/saspro/save_options.py +73 -0
- setiastro/saspro/selective_color.py +1614 -0
- setiastro/saspro/sfcc.py +1530 -0
- setiastro/saspro/shortcuts.py +3125 -0
- setiastro/saspro/signature_insert.py +1106 -0
- setiastro/saspro/stacking_suite.py +19069 -0
- setiastro/saspro/star_alignment.py +7383 -0
- setiastro/saspro/star_alignment_preset.py +329 -0
- setiastro/saspro/star_metrics.py +49 -0
- setiastro/saspro/star_spikes.py +769 -0
- setiastro/saspro/star_stretch.py +542 -0
- setiastro/saspro/stat_stretch.py +554 -0
- setiastro/saspro/status_log_dock.py +78 -0
- setiastro/saspro/subwindow.py +3523 -0
- setiastro/saspro/supernovaasteroidhunter.py +1719 -0
- setiastro/saspro/swap_manager.py +134 -0
- setiastro/saspro/torch_backend.py +89 -0
- setiastro/saspro/torch_rejection.py +434 -0
- setiastro/saspro/translations/all_source_strings.json +4726 -0
- setiastro/saspro/translations/ar_translations.py +4096 -0
- setiastro/saspro/translations/de_translations.py +3728 -0
- setiastro/saspro/translations/es_translations.py +4169 -0
- setiastro/saspro/translations/fr_translations.py +4090 -0
- setiastro/saspro/translations/hi_translations.py +3803 -0
- setiastro/saspro/translations/integrate_translations.py +271 -0
- setiastro/saspro/translations/it_translations.py +4728 -0
- setiastro/saspro/translations/ja_translations.py +3834 -0
- setiastro/saspro/translations/pt_translations.py +3847 -0
- setiastro/saspro/translations/ru_translations.py +3082 -0
- setiastro/saspro/translations/saspro_ar.qm +0 -0
- setiastro/saspro/translations/saspro_ar.ts +16019 -0
- setiastro/saspro/translations/saspro_de.qm +0 -0
- setiastro/saspro/translations/saspro_de.ts +14548 -0
- setiastro/saspro/translations/saspro_es.qm +0 -0
- setiastro/saspro/translations/saspro_es.ts +16202 -0
- setiastro/saspro/translations/saspro_fr.qm +0 -0
- setiastro/saspro/translations/saspro_fr.ts +15870 -0
- setiastro/saspro/translations/saspro_hi.qm +0 -0
- setiastro/saspro/translations/saspro_hi.ts +14855 -0
- setiastro/saspro/translations/saspro_it.qm +0 -0
- setiastro/saspro/translations/saspro_it.ts +19046 -0
- setiastro/saspro/translations/saspro_ja.qm +0 -0
- setiastro/saspro/translations/saspro_ja.ts +14980 -0
- setiastro/saspro/translations/saspro_pt.qm +0 -0
- setiastro/saspro/translations/saspro_pt.ts +15024 -0
- setiastro/saspro/translations/saspro_ru.qm +0 -0
- setiastro/saspro/translations/saspro_ru.ts +11835 -0
- setiastro/saspro/translations/saspro_sw.qm +0 -0
- setiastro/saspro/translations/saspro_sw.ts +15237 -0
- setiastro/saspro/translations/saspro_uk.qm +0 -0
- setiastro/saspro/translations/saspro_uk.ts +15248 -0
- setiastro/saspro/translations/saspro_zh.qm +0 -0
- setiastro/saspro/translations/saspro_zh.ts +15289 -0
- setiastro/saspro/translations/sw_translations.py +3897 -0
- setiastro/saspro/translations/uk_translations.py +3929 -0
- setiastro/saspro/translations/zh_translations.py +3910 -0
- setiastro/saspro/versioning.py +77 -0
- setiastro/saspro/view_bundle.py +1558 -0
- setiastro/saspro/wavescale_hdr.py +648 -0
- setiastro/saspro/wavescale_hdr_preset.py +101 -0
- setiastro/saspro/wavescalede.py +683 -0
- setiastro/saspro/wavescalede_preset.py +230 -0
- setiastro/saspro/wcs_update.py +374 -0
- setiastro/saspro/whitebalance.py +540 -0
- setiastro/saspro/widgets/__init__.py +48 -0
- setiastro/saspro/widgets/common_utilities.py +306 -0
- setiastro/saspro/widgets/graphics_views.py +122 -0
- setiastro/saspro/widgets/image_utils.py +518 -0
- setiastro/saspro/widgets/minigame/game.js +991 -0
- setiastro/saspro/widgets/minigame/index.html +53 -0
- setiastro/saspro/widgets/minigame/style.css +241 -0
- setiastro/saspro/widgets/preview_dialogs.py +280 -0
- setiastro/saspro/widgets/resource_monitor.py +313 -0
- setiastro/saspro/widgets/spinboxes.py +290 -0
- setiastro/saspro/widgets/themed_buttons.py +13 -0
- setiastro/saspro/widgets/wavelet_utils.py +331 -0
- setiastro/saspro/wimi.py +7367 -0
- setiastro/saspro/wims.py +588 -0
- setiastro/saspro/window_shelf.py +185 -0
- setiastro/saspro/xisf.py +1213 -0
- setiastrosuitepro-1.6.7.dist-info/METADATA +279 -0
- setiastrosuitepro-1.6.7.dist-info/RECORD +394 -0
- setiastrosuitepro-1.6.7.dist-info/WHEEL +4 -0
- setiastrosuitepro-1.6.7.dist-info/entry_points.txt +6 -0
- setiastrosuitepro-1.6.7.dist-info/licenses/LICENSE +674 -0
- setiastrosuitepro-1.6.7.dist-info/licenses/license.txt +2580 -0
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
# pro/resources.py
|
|
2
|
+
"""
|
|
3
|
+
Centralized resource paths for Seti Astro Suite Pro.
|
|
4
|
+
|
|
5
|
+
This module provides a single source of truth for all icon and resource paths,
|
|
6
|
+
handling both PyInstaller frozen builds and development environments.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
from setiastro.saspro.resources import Icons, Resources
|
|
10
|
+
|
|
11
|
+
icon = QIcon(Icons.WRENCH)
|
|
12
|
+
data_path = Resources.SASP_DATA
|
|
13
|
+
"""
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
import os
|
|
16
|
+
import sys
|
|
17
|
+
from functools import lru_cache
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _get_base_path() -> str:
|
|
21
|
+
"""Get base path for resources (PyInstaller, installed package, or development)."""
|
|
22
|
+
if hasattr(sys, '_MEIPASS'):
|
|
23
|
+
return sys._MEIPASS
|
|
24
|
+
|
|
25
|
+
# First, check if we're running from source (setiastrosuitepro.py exists)
|
|
26
|
+
# This takes priority when running the script directly from source
|
|
27
|
+
try:
|
|
28
|
+
# Check if we can find it via __main__ module (most reliable)
|
|
29
|
+
if '__main__' in sys.modules:
|
|
30
|
+
main_module = sys.modules['__main__']
|
|
31
|
+
if hasattr(main_module, '__file__') and main_module.__file__:
|
|
32
|
+
main_file = main_module.__file__
|
|
33
|
+
main_dir = os.path.dirname(os.path.abspath(main_file))
|
|
34
|
+
|
|
35
|
+
# Case 1: Running setiastrosuitepro.py directly
|
|
36
|
+
if os.path.basename(main_file) == 'setiastrosuitepro.py':
|
|
37
|
+
images_dir = os.path.join(main_dir, 'images')
|
|
38
|
+
if os.path.exists(images_dir):
|
|
39
|
+
return main_dir
|
|
40
|
+
|
|
41
|
+
# Case 2: Running as module (python -m setiastro.saspro)
|
|
42
|
+
# __main__.py is at src/setiastro/saspro/__main__.py
|
|
43
|
+
# Need to go up 4 levels to reach project root
|
|
44
|
+
if os.path.basename(main_file) == '__main__.py':
|
|
45
|
+
# Walk up from __main__.py to find project root with images/
|
|
46
|
+
search_dir = main_dir
|
|
47
|
+
for _ in range(6): # Don't go too far up
|
|
48
|
+
images_dir = os.path.join(search_dir, 'images')
|
|
49
|
+
if os.path.exists(images_dir):
|
|
50
|
+
return search_dir
|
|
51
|
+
parent = os.path.dirname(search_dir)
|
|
52
|
+
if parent == search_dir: # Reached filesystem root
|
|
53
|
+
break
|
|
54
|
+
search_dir = parent
|
|
55
|
+
|
|
56
|
+
# Check current working directory for setiastrosuitepro.py
|
|
57
|
+
# This handles the case where user runs: python setiastrosuitepro.py
|
|
58
|
+
cwd = os.getcwd()
|
|
59
|
+
main_script = os.path.join(cwd, 'setiastrosuitepro.py')
|
|
60
|
+
if os.path.exists(main_script):
|
|
61
|
+
images_dir = os.path.join(cwd, 'images')
|
|
62
|
+
if os.path.exists(images_dir):
|
|
63
|
+
return cwd
|
|
64
|
+
|
|
65
|
+
# Also check parent directories (in case we're in a subdirectory)
|
|
66
|
+
# Walk up from current file location looking for images/ directory
|
|
67
|
+
current_file = os.path.abspath(__file__)
|
|
68
|
+
search_dir = os.path.dirname(current_file)
|
|
69
|
+
for _ in range(6): # Don't go too far up
|
|
70
|
+
images_dir = os.path.join(search_dir, 'images')
|
|
71
|
+
if os.path.exists(images_dir):
|
|
72
|
+
return search_dir
|
|
73
|
+
parent = os.path.dirname(search_dir)
|
|
74
|
+
if parent == search_dir: # Reached filesystem root
|
|
75
|
+
break
|
|
76
|
+
search_dir = parent
|
|
77
|
+
except Exception:
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
# Development: resources are in package directory (src/setiastro/images/)
|
|
81
|
+
# File is at: src/setiastro/saspro/resources.py
|
|
82
|
+
# Check if images/ exists in the setiastro package directory
|
|
83
|
+
current_file = os.path.abspath(__file__)
|
|
84
|
+
# Go up from resources.py -> saspro -> setiastro (package directory)
|
|
85
|
+
package_dir = os.path.dirname(os.path.dirname(current_file))
|
|
86
|
+
images_dir = os.path.join(package_dir, 'images')
|
|
87
|
+
if os.path.exists(images_dir):
|
|
88
|
+
return package_dir
|
|
89
|
+
|
|
90
|
+
# Fallback: try project root (for backward compatibility)
|
|
91
|
+
# Go up from resources.py -> saspro -> setiastro -> src -> project root
|
|
92
|
+
base = os.path.dirname(os.path.dirname(package_dir))
|
|
93
|
+
images_dir = os.path.join(base, 'images')
|
|
94
|
+
if os.path.exists(images_dir):
|
|
95
|
+
return base
|
|
96
|
+
|
|
97
|
+
# Fallback: try going up one more level (in case structure is different)
|
|
98
|
+
base = os.path.dirname(base)
|
|
99
|
+
if os.path.exists(os.path.join(base, 'images')):
|
|
100
|
+
return base
|
|
101
|
+
|
|
102
|
+
# Check if we're in an installed package (last resort)
|
|
103
|
+
# When installed via pip, the package is in site-packages
|
|
104
|
+
try:
|
|
105
|
+
import setiastro
|
|
106
|
+
package_dir = os.path.dirname(os.path.abspath(setiastro.__file__))
|
|
107
|
+
# Check if images/ exists at package root level (for pip-installed packages)
|
|
108
|
+
# The images/ directory should be at the same level as setiastro/ in site-packages
|
|
109
|
+
package_parent = os.path.dirname(package_dir)
|
|
110
|
+
images_dir = os.path.join(package_parent, 'images')
|
|
111
|
+
if os.path.exists(images_dir):
|
|
112
|
+
return package_parent
|
|
113
|
+
|
|
114
|
+
# Also check if images/ is inside the package directory
|
|
115
|
+
images_in_package = os.path.join(package_dir, 'images')
|
|
116
|
+
if os.path.exists(images_in_package):
|
|
117
|
+
return package_dir
|
|
118
|
+
except (ImportError, AttributeError):
|
|
119
|
+
pass
|
|
120
|
+
|
|
121
|
+
# Last resort: return the calculated path anyway
|
|
122
|
+
return os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(current_file))))
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _resource_path(filename: str) -> str:
|
|
126
|
+
base = _get_base_path()
|
|
127
|
+
fn = filename
|
|
128
|
+
|
|
129
|
+
is_img = fn.lower().endswith(('.png','.ico','.gif','.icns','.svg','.jpg','.jpeg','.bmp'))
|
|
130
|
+
if is_img:
|
|
131
|
+
candidates = [
|
|
132
|
+
os.path.join(base, 'images', fn),
|
|
133
|
+
os.path.join(base, 'setiastro', 'images', fn),
|
|
134
|
+
os.path.join(base, 'setiastro', 'saspro', 'images', fn),
|
|
135
|
+
]
|
|
136
|
+
for p in candidates:
|
|
137
|
+
if os.path.exists(p):
|
|
138
|
+
return p
|
|
139
|
+
|
|
140
|
+
# data / other files
|
|
141
|
+
candidates = [
|
|
142
|
+
os.path.join(base, fn),
|
|
143
|
+
os.path.join(base, 'setiastro', fn),
|
|
144
|
+
os.path.join(base, 'setiastro', 'saspro', fn),
|
|
145
|
+
]
|
|
146
|
+
for p in candidates:
|
|
147
|
+
if os.path.exists(p):
|
|
148
|
+
return p
|
|
149
|
+
|
|
150
|
+
return os.path.join(base, fn)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class Icons:
|
|
154
|
+
"""
|
|
155
|
+
Centralized icon paths.
|
|
156
|
+
|
|
157
|
+
All paths are computed lazily and cached.
|
|
158
|
+
Access via class attributes: Icons.WRENCH, Icons.HISTOGRAM, etc.
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
# Application
|
|
162
|
+
APP = property(lambda self: _resource_path('astrosuitepro.png'))
|
|
163
|
+
APP_ICO = property(lambda self: _resource_path('astrosuitepro.ico'))
|
|
164
|
+
BACKGROUND = property(lambda self: _resource_path('background.png'))
|
|
165
|
+
|
|
166
|
+
# Processing tools
|
|
167
|
+
GREEN = property(lambda self: _resource_path('green.png'))
|
|
168
|
+
NEUTRAL = property(lambda self: _resource_path('neutral.png'))
|
|
169
|
+
WHITE_BALANCE = property(lambda self: _resource_path('whitebalance.png'))
|
|
170
|
+
MORPHOLOGY = property(lambda self: _resource_path('morpho.png'))
|
|
171
|
+
CLAHE = property(lambda self: _resource_path('clahe.png'))
|
|
172
|
+
HDR = property(lambda self: _resource_path('hdr.png'))
|
|
173
|
+
INVERT = property(lambda self: _resource_path('invert.png'))
|
|
174
|
+
|
|
175
|
+
# Star operations
|
|
176
|
+
STARNET = property(lambda self: _resource_path('starnet.png'))
|
|
177
|
+
STAR_ADD = property(lambda self: _resource_path('staradd.png'))
|
|
178
|
+
STAR_ALIGN = property(lambda self: _resource_path('staralign.png'))
|
|
179
|
+
STAR_REGISTRATION = property(lambda self: _resource_path('starregistration.png'))
|
|
180
|
+
STAR_SPIKE = property(lambda self: _resource_path('starspike.png'))
|
|
181
|
+
ASTRO_SPIKE = property(lambda self: _resource_path('Astro_Spikes.png'))
|
|
182
|
+
STAR_STRETCH = property(lambda self: _resource_path('starstretch.png'))
|
|
183
|
+
|
|
184
|
+
# Luminance
|
|
185
|
+
L_EXTRACT = property(lambda self: _resource_path('LExtract.png'))
|
|
186
|
+
L_INSERT = property(lambda self: _resource_path('LInsert.png'))
|
|
187
|
+
|
|
188
|
+
# Slots (0-9)
|
|
189
|
+
SLOT_0 = property(lambda self: _resource_path('slot0.png'))
|
|
190
|
+
SLOT_1 = property(lambda self: _resource_path('slot1.png'))
|
|
191
|
+
SLOT_2 = property(lambda self: _resource_path('slot2.png'))
|
|
192
|
+
SLOT_3 = property(lambda self: _resource_path('slot3.png'))
|
|
193
|
+
SLOT_4 = property(lambda self: _resource_path('slot4.png'))
|
|
194
|
+
SLOT_5 = property(lambda self: _resource_path('slot5.png'))
|
|
195
|
+
SLOT_6 = property(lambda self: _resource_path('slot6.png'))
|
|
196
|
+
SLOT_7 = property(lambda self: _resource_path('slot7.png'))
|
|
197
|
+
SLOT_8 = property(lambda self: _resource_path('slot8.png'))
|
|
198
|
+
SLOT_9 = property(lambda self: _resource_path('slot9.png'))
|
|
199
|
+
|
|
200
|
+
# RGB operations
|
|
201
|
+
RGB_COMBO = property(lambda self: _resource_path('rgbcombo.png'))
|
|
202
|
+
RGB_EXTRACT = property(lambda self: _resource_path('rgbextract.png'))
|
|
203
|
+
RGB_ALIGN = property(lambda self: _resource_path('rgbalign.png'))
|
|
204
|
+
COPY_SLOT = property(lambda self: _resource_path('copyslot.png'))
|
|
205
|
+
|
|
206
|
+
# External tools
|
|
207
|
+
GRAXPERT = property(lambda self: _resource_path('graxpert.png'))
|
|
208
|
+
COSMIC = property(lambda self: _resource_path('cosmic.png'))
|
|
209
|
+
COSMIC_SAT = property(lambda self: _resource_path('cosmicsat.png'))
|
|
210
|
+
|
|
211
|
+
# Image operations
|
|
212
|
+
CROP = property(lambda self: _resource_path('cropicon.png'))
|
|
213
|
+
OPEN_FILE = property(lambda self: _resource_path('openfile.png'))
|
|
214
|
+
ABE = property(lambda self: _resource_path('abeicon.png'))
|
|
215
|
+
BLASTER = property(lambda self: _resource_path('blaster.png'))
|
|
216
|
+
|
|
217
|
+
# Undo/Redo
|
|
218
|
+
UNDO = property(lambda self: _resource_path('undoicon.png'))
|
|
219
|
+
REDO = property(lambda self: _resource_path('redoicon.png'))
|
|
220
|
+
|
|
221
|
+
# Transformations
|
|
222
|
+
FLIP_HORIZONTAL = property(lambda self: _resource_path('fliphorizontal.png'))
|
|
223
|
+
FLIP_VERTICAL = property(lambda self: _resource_path('flipvertical.png'))
|
|
224
|
+
ROTATE_CW = property(lambda self: _resource_path('rotateclockwise.png'))
|
|
225
|
+
ROTATE_CCW = property(lambda self: _resource_path('rotatecounterclockwise.png'))
|
|
226
|
+
ROTATE_180 = property(lambda self: _resource_path('rotate180.png'))
|
|
227
|
+
ROTATE_ANY = property(lambda self: _resource_path('rotatearbitrary.png'))
|
|
228
|
+
RESCALE = property(lambda self: _resource_path('rescale.png'))
|
|
229
|
+
|
|
230
|
+
# Masks
|
|
231
|
+
MASK_CREATE = property(lambda self: _resource_path('maskcreate.png'))
|
|
232
|
+
MASK_APPLY = property(lambda self: _resource_path('maskapply.png'))
|
|
233
|
+
MASK_REMOVE = property(lambda self: _resource_path('maskremove.png'))
|
|
234
|
+
|
|
235
|
+
# Analysis
|
|
236
|
+
PIXEL_MATH = property(lambda self: _resource_path('pixelmath.png'))
|
|
237
|
+
HISTOGRAM = property(lambda self: _resource_path('histogram.png'))
|
|
238
|
+
MOSAIC = property(lambda self: _resource_path('mosaic.png'))
|
|
239
|
+
PLATE_SOLVE = property(lambda self: _resource_path('platesolve.png'))
|
|
240
|
+
PSF = property(lambda self: _resource_path('psf.png'))
|
|
241
|
+
ISOPHOTE = property(lambda self: _resource_path('isophote.png'))
|
|
242
|
+
|
|
243
|
+
# Stacking
|
|
244
|
+
STACKING = property(lambda self: _resource_path('stacking.png'))
|
|
245
|
+
LIVE_STACKING = property(lambda self: _resource_path('livestacking.png'))
|
|
246
|
+
IMAGE_COMBINE = property(lambda self: _resource_path('imagecombine.png'))
|
|
247
|
+
|
|
248
|
+
# Moon phase (WIMS)
|
|
249
|
+
MOON_NEW = property(lambda self: _resource_path('new_moon.png'))
|
|
250
|
+
MOON_WAXING_CRES_1 = property(lambda self: _resource_path('waxing_crescent_1.png'))
|
|
251
|
+
MOON_WAXING_CRES_2 = property(lambda self: _resource_path('waxing_crescent_2.png'))
|
|
252
|
+
MOON_WAXING_CRES_3 = property(lambda self: _resource_path('waxing_crescent_3.png'))
|
|
253
|
+
MOON_WAXING_CRES_4 = property(lambda self: _resource_path('waxing_crescent_4.png'))
|
|
254
|
+
MOON_WAXING_CRES_5 = property(lambda self: _resource_path('waxing_crescent_5.png'))
|
|
255
|
+
|
|
256
|
+
MOON_FIRST_QUARTER = property(lambda self: _resource_path('first_quarter.png'))
|
|
257
|
+
|
|
258
|
+
MOON_WAXING_GIB_1 = property(lambda self: _resource_path('waxing_gibbous_1.png'))
|
|
259
|
+
MOON_WAXING_GIB_2 = property(lambda self: _resource_path('waxing_gibbous_2.png'))
|
|
260
|
+
MOON_WAXING_GIB_3 = property(lambda self: _resource_path('waxing_gibbous_3.png'))
|
|
261
|
+
MOON_WAXING_GIB_4 = property(lambda self: _resource_path('waxing_gibbous_4.png'))
|
|
262
|
+
MOON_WAXING_GIB_5 = property(lambda self: _resource_path('waxing_gibbous_5.png'))
|
|
263
|
+
|
|
264
|
+
MOON_FULL = property(lambda self: _resource_path('full_moon.png'))
|
|
265
|
+
|
|
266
|
+
MOON_WANING_GIB_1 = property(lambda self: _resource_path('waning_gibbous_1.png'))
|
|
267
|
+
MOON_WANING_GIB_2 = property(lambda self: _resource_path('waning_gibbous_2.png'))
|
|
268
|
+
MOON_WANING_GIB_3 = property(lambda self: _resource_path('waning_gibbous_3.png'))
|
|
269
|
+
MOON_WANING_GIB_4 = property(lambda self: _resource_path('waning_gibbous_4.png'))
|
|
270
|
+
MOON_WANING_GIB_5 = property(lambda self: _resource_path('waning_gibbous_5.png'))
|
|
271
|
+
|
|
272
|
+
MOON_LAST_QUARTER = property(lambda self: _resource_path('last_quarter.png'))
|
|
273
|
+
|
|
274
|
+
MOON_WANING_CRES_1 = property(lambda self: _resource_path('waning_crescent_1.png'))
|
|
275
|
+
MOON_WANING_CRES_2 = property(lambda self: _resource_path('waning_crescent_2.png'))
|
|
276
|
+
MOON_WANING_CRES_3 = property(lambda self: _resource_path('waning_crescent_3.png'))
|
|
277
|
+
MOON_WANING_CRES_4 = property(lambda self: _resource_path('waning_crescent_4.png'))
|
|
278
|
+
MOON_WANING_CRES_5 = property(lambda self: _resource_path('waning_crescent_5.png'))
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
# Special features
|
|
282
|
+
SUPERNOVA = property(lambda self: _resource_path('supernova.png'))
|
|
283
|
+
PEDESTAL = property(lambda self: _resource_path('pedestal.png'))
|
|
284
|
+
APERTURE = property(lambda self: _resource_path('aperture.png'))
|
|
285
|
+
JWST_PUPIL = property(lambda self: _resource_path('jwstpupil.png'))
|
|
286
|
+
SIGNATURE = property(lambda self: _resource_path('pen.png'))
|
|
287
|
+
HR_DIAGRAM = property(lambda self: _resource_path('HRDiagram.png'))
|
|
288
|
+
EXOPLANET = property(lambda self: _resource_path('exoicon.png'))
|
|
289
|
+
|
|
290
|
+
# Deconvolution & filters
|
|
291
|
+
CONVO = property(lambda self: _resource_path('convo.png'))
|
|
292
|
+
FREQ_SEP = property(lambda self: _resource_path('freqsep.png'))
|
|
293
|
+
MULTISCALE_DECOMP = property(lambda self: _resource_path('multiscale_decomp.png'))
|
|
294
|
+
CONT_SUB = property(lambda self: _resource_path('contsub.png'))
|
|
295
|
+
HALO = property(lambda self: _resource_path('halo.png'))
|
|
296
|
+
ABERRATION = property(lambda self: _resource_path('aberration.png'))
|
|
297
|
+
|
|
298
|
+
# Color
|
|
299
|
+
SPCC = property(lambda self: _resource_path('spcc.png'))
|
|
300
|
+
DSE = property(lambda self: _resource_path('dse.png'))
|
|
301
|
+
COLOR_WHEEL = property(lambda self: _resource_path('colorwheel.png'))
|
|
302
|
+
SELECTIVE_COLOR = property(lambda self: _resource_path('selectivecolor.png'))
|
|
303
|
+
NB_TO_RGB = property(lambda self: _resource_path('nbtorgb.png'))
|
|
304
|
+
|
|
305
|
+
# Stretching
|
|
306
|
+
STAT_STRETCH = property(lambda self: _resource_path('statstretch.png'))
|
|
307
|
+
CURVES = property(lambda self: _resource_path('curves.png'))
|
|
308
|
+
UHS = property(lambda self: _resource_path('uhs.png'))
|
|
309
|
+
|
|
310
|
+
# UI elements
|
|
311
|
+
WRENCH = property(lambda self: _resource_path('wrench_icon.png'))
|
|
312
|
+
EYE = property(lambda self: _resource_path('eye.png'))
|
|
313
|
+
DISK = property(lambda self: _resource_path('disk.png'))
|
|
314
|
+
NUKE = property(lambda self: _resource_path('nuke.png'))
|
|
315
|
+
GRID = property(lambda self: _resource_path('gridicon.png'))
|
|
316
|
+
FONT = property(lambda self: _resource_path('font.png'))
|
|
317
|
+
CSV = property(lambda self: _resource_path('cvs.png'))
|
|
318
|
+
PPP = property(lambda self: _resource_path('ppp.png'))
|
|
319
|
+
SCRIPT = property(lambda self: _resource_path('script.png'))
|
|
320
|
+
ACV = property(lambda self: _resource_path('acv_icon.png'))
|
|
321
|
+
|
|
322
|
+
# Blink & comparison
|
|
323
|
+
BLINK = property(lambda self: _resource_path('blink.png'))
|
|
324
|
+
HUBBLE = property(lambda self: _resource_path('hubble.png'))
|
|
325
|
+
COLLAGE = property(lambda self: _resource_path('collage.png'))
|
|
326
|
+
ANNOTATED = property(lambda self: _resource_path('annotated.png'))
|
|
327
|
+
|
|
328
|
+
# WIMS/WIMI
|
|
329
|
+
WIMS = property(lambda self: _resource_path('wims.png'))
|
|
330
|
+
WIMI = property(lambda self: _resource_path('wimi_icon_256x256.png'))
|
|
331
|
+
|
|
332
|
+
# Other
|
|
333
|
+
LINEAR_FIT = property(lambda self: _resource_path('linearfit.png'))
|
|
334
|
+
DEBAYER = property(lambda self: _resource_path('debayer.png'))
|
|
335
|
+
FUNCTION_BUNDLES = property(lambda self: _resource_path('functionbundle.png'))
|
|
336
|
+
VIEW_BUNDLES = property(lambda self: _resource_path('viewbundle.png'))
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
class Resources:
|
|
340
|
+
"""
|
|
341
|
+
Centralized data resource paths.
|
|
342
|
+
"""
|
|
343
|
+
SASP_DATA = property(lambda self: _resource_path('data/SASP_data.fits'))
|
|
344
|
+
ASTROBIN_FILTERS_CSV = property(lambda self: _resource_path('data/catalogs/astrobin_filters.csv'))
|
|
345
|
+
SPINNER_GIF = property(lambda self: _resource_path('spinner.gif'))
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
# Singleton instances for easy access
|
|
349
|
+
_icons_instance = None
|
|
350
|
+
_resources_instance = None
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
def get_icons() -> Icons:
|
|
354
|
+
"""Get the Icons singleton instance."""
|
|
355
|
+
global _icons_instance
|
|
356
|
+
if _icons_instance is None:
|
|
357
|
+
_icons_instance = Icons()
|
|
358
|
+
return _icons_instance
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
def get_resources() -> Resources:
|
|
362
|
+
"""Get the Resources singleton instance."""
|
|
363
|
+
global _resources_instance
|
|
364
|
+
if _resources_instance is None:
|
|
365
|
+
_resources_instance = Resources()
|
|
366
|
+
return _resources_instance
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
# Convenience functions for direct path access
|
|
370
|
+
@lru_cache(maxsize=128)
|
|
371
|
+
def get_icon_path(name: str) -> str:
|
|
372
|
+
"""
|
|
373
|
+
Get icon path by name.
|
|
374
|
+
|
|
375
|
+
Args:
|
|
376
|
+
name: Icon filename (with or without extension)
|
|
377
|
+
|
|
378
|
+
Returns:
|
|
379
|
+
Full path to icon file
|
|
380
|
+
|
|
381
|
+
Example:
|
|
382
|
+
path = get_icon_path('wrench_icon.png')
|
|
383
|
+
path = get_icon_path('histogram') # .png added automatically
|
|
384
|
+
"""
|
|
385
|
+
if not name.endswith(('.png', '.ico', '.gif', '.svg')):
|
|
386
|
+
name = f"{name}.png"
|
|
387
|
+
return _resource_path(name)
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
@lru_cache(maxsize=32)
|
|
391
|
+
def get_data_path(name: str) -> str:
|
|
392
|
+
"""
|
|
393
|
+
Get data file path by name.
|
|
394
|
+
|
|
395
|
+
Args:
|
|
396
|
+
name: Data filename
|
|
397
|
+
|
|
398
|
+
Returns:
|
|
399
|
+
Full path to data file
|
|
400
|
+
"""
|
|
401
|
+
return _resource_path(name)
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
# Legacy compatibility: export paths as module-level variables
|
|
405
|
+
# These match the original variable names in setiastrosuitepro.py
|
|
406
|
+
def _init_legacy_paths():
|
|
407
|
+
"""Initialize legacy path variables for backward compatibility."""
|
|
408
|
+
return {
|
|
409
|
+
'icon_path': get_icon_path('astrosuitepro.png'),
|
|
410
|
+
'windowslogo_path': get_icon_path('astrosuitepro.ico'),
|
|
411
|
+
'green_path': get_icon_path('green.png'),
|
|
412
|
+
'neutral_path': get_icon_path('neutral.png'),
|
|
413
|
+
'whitebalance_path': get_icon_path('whitebalance.png'),
|
|
414
|
+
'morpho_path': get_icon_path('morpho.png'),
|
|
415
|
+
'clahe_path': get_icon_path('clahe.png'),
|
|
416
|
+
'starnet_path': get_icon_path('starnet.png'),
|
|
417
|
+
'staradd_path': get_icon_path('staradd.png'),
|
|
418
|
+
'LExtract_path': get_icon_path('LExtract.png'),
|
|
419
|
+
'LInsert_path': get_icon_path('LInsert.png'),
|
|
420
|
+
'slot0_path': get_icon_path('slot0.png'),
|
|
421
|
+
'slot1_path': get_icon_path('slot1.png'),
|
|
422
|
+
'slot2_path': get_icon_path('slot2.png'),
|
|
423
|
+
'slot3_path': get_icon_path('slot3.png'),
|
|
424
|
+
'slot4_path': get_icon_path('slot4.png'),
|
|
425
|
+
'slot5_path': get_icon_path('slot5.png'),
|
|
426
|
+
'slot6_path': get_icon_path('slot6.png'),
|
|
427
|
+
'slot7_path': get_icon_path('slot7.png'),
|
|
428
|
+
'slot8_path': get_icon_path('slot8.png'),
|
|
429
|
+
'slot9_path': get_icon_path('slot9.png'),
|
|
430
|
+
'acv_icon_path': get_icon_path('acv_icon.png'),
|
|
431
|
+
|
|
432
|
+
'moon_new_path': get_icon_path('new_moon.png'),
|
|
433
|
+
'moon_waxing_crescent_1_path': get_icon_path('waxing_crescent_1.png'),
|
|
434
|
+
'moon_waxing_crescent_2_path': get_icon_path('waxing_crescent_2.png'),
|
|
435
|
+
'moon_waxing_crescent_3_path': get_icon_path('waxing_crescent_3.png'),
|
|
436
|
+
'moon_waxing_crescent_4_path': get_icon_path('waxing_crescent_4.png'),
|
|
437
|
+
'moon_waxing_crescent_5_path': get_icon_path('waxing_crescent_5.png'),
|
|
438
|
+
|
|
439
|
+
'moon_first_quarter_path': get_icon_path('first_quarter.png'),
|
|
440
|
+
|
|
441
|
+
'moon_waxing_gibbous_1_path': get_icon_path('waxing_gibbous_1.png'),
|
|
442
|
+
'moon_waxing_gibbous_2_path': get_icon_path('waxing_gibbous_2.png'),
|
|
443
|
+
'moon_waxing_gibbous_3_path': get_icon_path('waxing_gibbous_3.png'),
|
|
444
|
+
'moon_waxing_gibbous_4_path': get_icon_path('waxing_gibbous_4.png'),
|
|
445
|
+
'moon_waxing_gibbous_5_path': get_icon_path('waxing_gibbous_5.png'),
|
|
446
|
+
|
|
447
|
+
'moon_full_path': get_icon_path('full_moon.png'),
|
|
448
|
+
|
|
449
|
+
'moon_waning_gibbous_1_path': get_icon_path('waning_gibbous_1.png'),
|
|
450
|
+
'moon_waning_gibbous_2_path': get_icon_path('waning_gibbous_2.png'),
|
|
451
|
+
'moon_waning_gibbous_3_path': get_icon_path('waning_gibbous_3.png'),
|
|
452
|
+
'moon_waning_gibbous_4_path': get_icon_path('waning_gibbous_4.png'),
|
|
453
|
+
'moon_waning_gibbous_5_path': get_icon_path('waning_gibbous_5.png'),
|
|
454
|
+
|
|
455
|
+
'moon_last_quarter_path': get_icon_path('last_quarter.png'),
|
|
456
|
+
|
|
457
|
+
'moon_waning_crescent_1_path': get_icon_path('waning_crescent_1.png'),
|
|
458
|
+
'moon_waning_crescent_2_path': get_icon_path('waning_crescent_2.png'),
|
|
459
|
+
'moon_waning_crescent_3_path': get_icon_path('waning_crescent_3.png'),
|
|
460
|
+
'moon_waning_crescent_4_path': get_icon_path('waning_crescent_4.png'),
|
|
461
|
+
'moon_waning_crescent_5_path': get_icon_path('waning_crescent_5.png'),
|
|
462
|
+
|
|
463
|
+
'rgbcombo_path': get_icon_path('rgbcombo.png'),
|
|
464
|
+
'rgbextract_path': get_icon_path('rgbextract.png'),
|
|
465
|
+
'copyslot_path': get_icon_path('copyslot.png'),
|
|
466
|
+
'graxperticon_path': get_icon_path('graxpert.png'),
|
|
467
|
+
'cropicon_path': get_icon_path('cropicon.png'),
|
|
468
|
+
'openfile_path': get_icon_path('openfile.png'),
|
|
469
|
+
'abeicon_path': get_icon_path('abeicon.png'),
|
|
470
|
+
'undoicon_path': get_icon_path('undoicon.png'),
|
|
471
|
+
'redoicon_path': get_icon_path('redoicon.png'),
|
|
472
|
+
'blastericon_path': get_icon_path('blaster.png'),
|
|
473
|
+
'hdr_path': get_icon_path('hdr.png'),
|
|
474
|
+
'invert_path': get_icon_path('invert.png'),
|
|
475
|
+
'fliphorizontal_path': get_icon_path('fliphorizontal.png'),
|
|
476
|
+
'flipvertical_path': get_icon_path('flipvertical.png'),
|
|
477
|
+
'rotateclockwise_path': get_icon_path('rotateclockwise.png'),
|
|
478
|
+
'rotatecounterclockwise_path': get_icon_path('rotatecounterclockwise.png'),
|
|
479
|
+
'rotate180_path': get_icon_path('rotate180.png'),
|
|
480
|
+
'rotatearbitrary_path': get_icon_path('rotatearbitrary.png'),
|
|
481
|
+
'maskcreate_path': get_icon_path('maskcreate.png'),
|
|
482
|
+
'maskapply_path': get_icon_path('maskapply.png'),
|
|
483
|
+
'maskremove_path': get_icon_path('maskremove.png'),
|
|
484
|
+
'pixelmath_path': get_icon_path('pixelmath.png'),
|
|
485
|
+
'histogram_path': get_icon_path('histogram.png'),
|
|
486
|
+
'mosaic_path': get_icon_path('mosaic.png'),
|
|
487
|
+
'rescale_path': get_icon_path('rescale.png'),
|
|
488
|
+
'staralign_path': get_icon_path('staralign.png'),
|
|
489
|
+
'mask_path': get_icon_path('maskapply.png'),
|
|
490
|
+
'platesolve_path': get_icon_path('platesolve.png'),
|
|
491
|
+
'psf_path': get_icon_path('psf.png'),
|
|
492
|
+
'supernova_path': get_icon_path('supernova.png'),
|
|
493
|
+
'starregistration_path': get_icon_path('starregistration.png'),
|
|
494
|
+
'stacking_path': get_icon_path('stacking.png'),
|
|
495
|
+
'pedestal_icon_path': get_icon_path('pedestal.png'),
|
|
496
|
+
'starspike_path': get_icon_path('starspike.png'),
|
|
497
|
+
'astrospike_path': get_icon_path('Astro_Spikes.png'),
|
|
498
|
+
'aperture_path': get_icon_path('aperture.png'),
|
|
499
|
+
'jwstpupil_path': get_icon_path('jwstpupil.png'),
|
|
500
|
+
'signature_icon_path': get_icon_path('pen.png'),
|
|
501
|
+
'livestacking_path': get_icon_path('livestacking.png'),
|
|
502
|
+
'hrdiagram_path': get_icon_path('HRDiagram.png'),
|
|
503
|
+
'convoicon_path': get_icon_path('convo.png'),
|
|
504
|
+
'spcc_icon_path': get_icon_path('spcc.png'),
|
|
505
|
+
'sasp_data_path': get_data_path('data/SASP_data.fits'),
|
|
506
|
+
'exoicon_path': get_icon_path('exoicon.png'),
|
|
507
|
+
'peeker_icon': get_icon_path('gridicon.png'),
|
|
508
|
+
'dse_icon_path': get_icon_path('dse.png'),
|
|
509
|
+
'astrobin_filters_csv_path': get_data_path('data/catalogs/astrobin_filters.csv'),
|
|
510
|
+
'isophote_path': get_icon_path('isophote.png'),
|
|
511
|
+
'statstretch_path': get_icon_path('statstretch.png'),
|
|
512
|
+
'starstretch_path': get_icon_path('starstretch.png'),
|
|
513
|
+
'curves_path': get_icon_path('curves.png'),
|
|
514
|
+
'disk_path': get_icon_path('disk.png'),
|
|
515
|
+
'uhs_path': get_icon_path('uhs.png'),
|
|
516
|
+
'blink_path': get_icon_path('blink.png'),
|
|
517
|
+
'ppp_path': get_icon_path('ppp.png'),
|
|
518
|
+
'nbtorgb_path': get_icon_path('nbtorgb.png'),
|
|
519
|
+
'freqsep_path': get_icon_path('freqsep.png'),
|
|
520
|
+
'multiscale_decomp_path': get_icon_path('multiscale_decomp.png'),
|
|
521
|
+
'contsub_path': get_icon_path('contsub.png'),
|
|
522
|
+
'halo_path': get_icon_path('halo.png'),
|
|
523
|
+
'cosmic_path': get_icon_path('cosmic.png'),
|
|
524
|
+
'satellite_path': get_icon_path('cosmicsat.png'),
|
|
525
|
+
'imagecombine_path': get_icon_path('imagecombine.png'),
|
|
526
|
+
'wrench_path': get_icon_path('wrench_icon.png'),
|
|
527
|
+
'eye_icon_path': get_icon_path('eye.png'),
|
|
528
|
+
'disk_icon_path': get_icon_path('disk.png'),
|
|
529
|
+
'nuke_path': get_icon_path('nuke.png'),
|
|
530
|
+
'hubble_path': get_icon_path('hubble.png'),
|
|
531
|
+
'collage_path': get_icon_path('collage.png'),
|
|
532
|
+
'annotated_path': get_icon_path('annotated.png'),
|
|
533
|
+
'colorwheel_path': get_icon_path('colorwheel.png'),
|
|
534
|
+
'font_path': get_icon_path('font.png'),
|
|
535
|
+
'csv_icon_path': get_icon_path('cvs.png'),
|
|
536
|
+
'spinner_path': get_data_path('spinner.gif'),
|
|
537
|
+
'wims_path': get_icon_path('wims.png'),
|
|
538
|
+
'wimi_path': get_icon_path('wimi_icon_256x256.png'),
|
|
539
|
+
'linearfit_path': get_icon_path('linearfit.png'),
|
|
540
|
+
'debayer_path': get_icon_path('debayer.png'),
|
|
541
|
+
'aberration_path': get_icon_path('aberration.png'),
|
|
542
|
+
'functionbundles_path': get_icon_path('functionbundle.png'),
|
|
543
|
+
'viewbundles_path': get_icon_path('viewbundle.png'),
|
|
544
|
+
'selectivecolor_path': get_icon_path('selectivecolor.png'),
|
|
545
|
+
'rgbalign_path': get_icon_path('rgbalign.png'),
|
|
546
|
+
'background_path': get_icon_path('background.png'),
|
|
547
|
+
'script_icon_path': get_icon_path('script.png'),
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
# Export all legacy paths as module-level variables
|
|
552
|
+
_legacy = _init_legacy_paths()
|
|
553
|
+
globals().update(_legacy)
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
# Background for startup
|
|
557
|
+
background_startup_path = _resource_path('Background_startup.jpg')
|
|
558
|
+
_legacy['background_startup_path'] = background_startup_path
|
|
559
|
+
|
|
560
|
+
# QML helper
|
|
561
|
+
resource_monitor_qml = _resource_path(os.path.join("qml", "ResourceMonitor.qml"))
|
|
562
|
+
|
|
563
|
+
# Export list for `from setiastro.saspro.resources import *`
|
|
564
|
+
__all__ = [
|
|
565
|
+
'Icons', 'Resources',
|
|
566
|
+
'get_icons', 'get_resources',
|
|
567
|
+
'get_icon_path', 'get_data_path',
|
|
568
|
+
'background_startup_path',
|
|
569
|
+
] + list(_legacy.keys())
|
|
570
|
+
|