meltygui 0.1.0__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.
- meltygui/__init__.py +107 -0
- meltygui/accounts/__init__.py +0 -0
- meltygui/accounts/internet_accounts.py +1355 -0
- meltygui/chat/__init__.py +91 -0
- meltygui/chat/activity.py +75 -0
- meltygui/chat/backends.py +36 -0
- meltygui/chat/chat_interface.py +732 -0
- meltygui/chat/chat_proxy.py +352 -0
- meltygui/chat/codex_proxy.py +592 -0
- meltygui/chat/codex_settings.py +100 -0
- meltygui/chat/codex_transport.py +60 -0
- meltygui/chat/command_parser.py +204 -0
- meltygui/chat/images.py +227 -0
- meltygui/chat/messages.py +417 -0
- meltygui/chat/metadata.py +139 -0
- meltygui/chat/writer_locks.py +64 -0
- meltygui/code/__init__.py +0 -0
- meltygui/code/basic_converters.py +533 -0
- meltygui/code/chain_converters.py +2111 -0
- meltygui/code/code_checks.py +2209 -0
- meltygui/code/core_syntax.py +1430 -0
- meltygui/code/file_converters.py +1933 -0
- meltygui/code/fileref.py +702 -0
- meltygui/code/hotswap_guard.py +144 -0
- meltygui/code/libcst_conversion.py +9724 -0
- meltygui/code/live_instrument.py +392 -0
- meltygui/code/live_view.py +2490 -0
- meltygui/code/melty_scan.py +2684 -0
- meltygui/code/new_codecs.py +1255 -0
- meltygui/code/new_converters.py +3017 -0
- meltygui/code/project_code.py +278 -0
- meltygui/code/source_context.py +63 -0
- meltygui/code/symbol_roster.py +1588 -0
- meltygui/code/syntax_check.py +34 -0
- meltygui/code/syntax_check_worker.py +114 -0
- meltygui/completion/__init__.py +0 -0
- meltygui/completion/fim.py +1232 -0
- meltygui/completion/fim_context.py +481 -0
- meltygui/completion/providers/__init__.py +0 -0
- meltygui/completion/providers/anthropic_oauth.py +446 -0
- meltygui/completion/providers/anthropic_requests.py +69 -0
- meltygui/completion/providers/claude.py +203 -0
- meltygui/completion/providers/claude_usage.py +499 -0
- meltygui/completion/providers/codex_accounts.py +180 -0
- meltygui/completion/providers/copilot.py +617 -0
- meltygui/completion/providers/oauth_popup.py +220 -0
- meltygui/completion/providers/ollama.py +320 -0
- meltygui/completion/providers/profiles.py +23 -0
- meltygui/core/README.md +88 -0
- meltygui/core/__init__.py +1 -0
- meltygui/core/automation/__init__.py +1 -0
- meltygui/core/automation/action_core.py +153 -0
- meltygui/core/automation/collection_action.py +45 -0
- meltygui/core/automation/mcp_eval.py +167 -0
- meltygui/core/automation/mcp_hotswap.py +107 -0
- meltygui/core/automation/mcp_query.py +552 -0
- meltygui/core/automation/mcp_server.py +657 -0
- meltygui/core/automation/orchestration_core.py +2636 -0
- meltygui/core/automation/query_core.py +124 -0
- meltygui/core/automation/search_core.py +26 -0
- meltygui/core/automation/selector_core.py +340 -0
- meltygui/core/automation/value_core.py +1752 -0
- meltygui/core/cache/__init__.py +1 -0
- meltygui/core/cache/cache_diagnostics.py +0 -0
- meltygui/core/cache/invalidation_decoration.py +153 -0
- meltygui/core/cache/invalidation_tracker.py +43 -0
- meltygui/core/cache/tile_cache.py +5968 -0
- meltygui/core/conversion/__init__.py +1 -0
- meltygui/core/conversion/bubbling.py +599 -0
- meltygui/core/conversion/cache_tree.py +188 -0
- meltygui/core/conversion/chain.py +113 -0
- meltygui/core/conversion/converter_register.py +145 -0
- meltygui/core/conversion/data_decoration.py +67 -0
- meltygui/core/conversion/dict_conversion.py +1815 -0
- meltygui/core/conversion/dict_conversion_util.py +177 -0
- meltygui/core/conversion/dynamic_obj.py +89 -0
- meltygui/core/conversion/graph_compare.py +183 -0
- meltygui/core/conversion/load_save_v2.py +1032 -0
- meltygui/core/conversion/missing_saved_class.py +39 -0
- meltygui/core/conversion/path_finder.py +606 -0
- meltygui/core/conversion/render_host.py +1083 -0
- meltygui/core/core_render.py +6537 -0
- meltygui/core/definition_hotswap.py +231 -0
- meltygui/core/diagnostics/__init__.py +1 -0
- meltygui/core/diagnostics/attribute_churn.py +38 -0
- meltygui/core/diagnostics/fps_counter.py +39 -0
- meltygui/core/diagnostics/gpu_frame_timer.py +103 -0
- meltygui/core/diagnostics/inspection_core.py +169 -0
- meltygui/core/diagnostics/monitor_core.py +105 -0
- meltygui/core/diagnostics/notifications.py +706 -0
- meltygui/core/diagnostics/perf_trace.py +281 -0
- meltygui/core/diagnostics/profile_decoration.py +88 -0
- meltygui/core/diagnostics/resize_trace.py +62 -0
- meltygui/core/diagnostics/screenshot_core.py +247 -0
- meltygui/core/diagnostics/session_status.py +98 -0
- meltygui/core/diagnostics/trace_core.py +445 -0
- meltygui/core/files/__init__.py +1 -0
- meltygui/core/files/file_core.py +208 -0
- meltygui/core/files/file_explorer_core.py +104 -0
- meltygui/core/files/file_tree_core.py +198 -0
- meltygui/core/files/file_watch_core.py +43 -0
- meltygui/core/files/import_graph_core.py +43 -0
- meltygui/core/files/metadata_core.py +51 -0
- meltygui/core/graphics/__init__.py +1 -0
- meltygui/core/graphics/cuda_context_core.py +166 -0
- meltygui/core/graphics/cuda_interop_core.py +136 -0
- meltygui/core/graphics/cuda_kernel_core.py +91 -0
- meltygui/core/graphics/framebuffer_recorder.py +337 -0
- meltygui/core/graphics/gl_state.py +658 -0
- meltygui/core/graphics/lut_core.py +52 -0
- meltygui/core/graphics/overlay_renderer.py +984 -0
- meltygui/core/graphics/scene_target.py +180 -0
- meltygui/core/graphics/screenshot.py +439 -0
- meltygui/core/graphics/shader_func.py +478 -0
- meltygui/core/graphics/tensor_core.py +45 -0
- meltygui/core/graphics/text_texture.py +329 -0
- meltygui/core/graphics/wayland_color.py +635 -0
- meltygui/core/input/__init__.py +1 -0
- meltygui/core/input/collision.py +165 -0
- meltygui/core/input/drag_drop_core.py +1525 -0
- meltygui/core/input/hypr_left_drag.py +323 -0
- meltygui/core/input/input_core.py +245 -0
- meltygui/core/input/input_handler.py +1101 -0
- meltygui/core/input/mouse_cursor.py +355 -0
- meltygui/core/input/pynput_backend.py +1054 -0
- meltygui/core/input/space_mouse.py +338 -0
- meltygui/core/input/touchpad_backend.py +393 -0
- meltygui/core/input/view_selection.py +177 -0
- meltygui/core/layout/__init__.py +1 -0
- meltygui/core/layout/column_core.py +2153 -0
- meltygui/core/layout/cursor_core.py +161 -0
- meltygui/core/layout/dropdown_core.py +278 -0
- meltygui/core/layout/edge_constraints.py +155 -0
- meltygui/core/layout/grid_core.py +117 -0
- meltygui/core/layout/header_core.py +23 -0
- meltygui/core/layout/header_runtime.py +67 -0
- meltygui/core/layout/layout_core.py +87 -0
- meltygui/core/layout/tile_manager_core.py +591 -0
- meltygui/core/melty.py +6726 -0
- meltygui/core/module_map.json +896 -0
- meltygui/core/module_names.py +19 -0
- meltygui/core/rendering/__init__.py +1 -0
- meltygui/core/rendering/core_decoration.py +431 -0
- meltygui/core/rendering/core_render_helpers.py +328 -0
- meltygui/core/rendering/func_metadata.py +398 -0
- meltygui/core/rendering/mode.py +818 -0
- meltygui/core/rendering/mode_defaults.py +41 -0
- meltygui/core/rendering/modes.py +136 -0
- meltygui/core/rendering/parameter_core.py +1665 -0
- meltygui/core/rendering/render_dispatch.py +1891 -0
- meltygui/core/rendering/render_funcs.py +273 -0
- meltygui/core/rendering/shaped.py +312 -0
- meltygui/core/rendering/window_decoration.py +25 -0
- meltygui/core/runtime/__init__.py +1 -0
- meltygui/core/runtime/app.py +735 -0
- meltygui/core/runtime/app_session.py +140 -0
- meltygui/core/runtime/background.py +564 -0
- meltygui/core/runtime/extensions.py +53 -0
- meltygui/core/runtime/gc_manager.py +1163 -0
- meltygui/core/runtime/lifecycle.py +21 -0
- meltygui/core/runtime/paths.py +27 -0
- meltygui/core/runtime/settings.py +14 -0
- meltygui/core/runtime/singleton.py +16 -0
- meltygui/core/runtime/thread_safe_bool.py +24 -0
- meltygui/core/runtime/thread_signal.py +30 -0
- meltygui/core/runtime/toggles.py +3115 -0
- meltygui/core/services/__init__.py +1 -0
- meltygui/core/services/account_core.py +10 -0
- meltygui/core/services/chat_core.py +19 -0
- meltygui/core/services/claude_terminal_core.py +346 -0
- meltygui/core/services/terminal_core.py +458 -0
- meltygui/core/services/terminal_runtime.py +78 -0
- meltygui/core/styling/__init__.py +1 -0
- meltygui/core/styling/color_core.py +46 -0
- meltygui/core/styling/fonts.py +639 -0
- meltygui/core/styling/global_style.py +338 -0
- meltygui/core/styling/style.py +198 -0
- meltygui/core/styling/style_core.py +522 -0
- meltygui/core/styling/warm_start.py +149 -0
- meltygui/core/windowing/__init__.py +1 -0
- meltygui/core/windowing/backends/PYIMGUI_LICENSE +28 -0
- meltygui/core/windowing/backends/__init__.py +1 -0
- meltygui/core/windowing/backends/imgui_renderer.py +138 -0
- meltygui/core/windowing/backends/native_wayland.py +850 -0
- meltygui/core/windowing/backends/protocols/xdg-decoration-unstable-v1.xml +156 -0
- meltygui/core/windowing/backends/protocols/xdg-shell.xml +1420 -0
- meltygui/core/windowing/backends/wayland_protocol.py +101 -0
- meltygui/core/windowing/dock_core.py +182 -0
- meltygui/core/windowing/frame_geometry.py +42 -0
- meltygui/core/windowing/geometry_feed.py +864 -0
- meltygui/core/windowing/glfw_utils.py +1343 -0
- meltygui/core/windowing/os_frame.py +1552 -0
- meltygui/core/windowing/surface.py +643 -0
- meltygui/core/windowing/titlebar.py +1560 -0
- meltygui/core/windowing/titlebar_buttons.py +281 -0
- meltygui/core/windowing/wayland_move.py +932 -0
- meltygui/core/windowing/window_api.py +62 -0
- meltygui/core/windowing/window_constants.py +339 -0
- meltygui/core/windowing/window_visibility.py +162 -0
- meltygui/debug/__init__.py +0 -0
- meltygui/debug/app_view_utils.py +9 -0
- meltygui/editor/__init__.py +0 -0
- meltygui/editor/bash_syntax.py +30 -0
- meltygui/editor/code_line_fast.py +152 -0
- meltygui/editor/diff.py +139 -0
- meltygui/editor/external_changes.py +159 -0
- meltygui/editor/file_header.py +41 -0
- meltygui/editor/live_usage.py +169 -0
- meltygui/editor/live_view_views.py +1803 -0
- meltygui/editor/pending_save.py +1351 -0
- meltygui/editor/roster_tints.py +547 -0
- meltygui/editor/source_preview.py +16 -0
- meltygui/editor/source_tools.py +10 -0
- meltygui/editor/source_ui.py +70 -0
- meltygui/editor/spell_check.py +77 -0
- meltygui/editor/text_editor.py +9076 -0
- meltygui/editor/usage_picker.py +538 -0
- meltygui/events/__init__.py +0 -0
- meltygui/events/example.py +118 -0
- meltygui/examples/__init__.py +0 -0
- meltygui/examples/columns_demo.py +33 -0
- meltygui/examples/columns_window_demo.py +60 -0
- meltygui/examples/context_menu_demo.py +24 -0
- meltygui/examples/context_menu_window_demo.py +49 -0
- meltygui/examples/gui_playground.py +127 -0
- meltygui/examples/live_view_playground.py +256 -0
- meltygui/examples/lora.py +43 -0
- meltygui/examples/lora_data.py +59 -0
- meltygui/examples/lora_policies.py +67 -0
- meltygui/examples/mode_demo.py +49 -0
- meltygui/examples/modifies_demo.py +119 -0
- meltygui/examples/scalar_policies.py +60 -0
- meltygui/examples/style_layouts.py +149 -0
- meltygui/examples/tile_manager_demo.py +74 -0
- meltygui/examples/tint_demo.py +160 -0
- meltygui/examples/tint_functions.py +56 -0
- meltygui/examples/trace_demo.py +88 -0
- meltygui/examples/two_windows.py +36 -0
- meltygui/files/__init__.py +0 -0
- meltygui/files/fast_file_explorer.py +439 -0
- meltygui/gnome_extension/lsd-window-geometry@latent-descent/extension.js +237 -0
- meltygui/gnome_extension/lsd-window-geometry@latent-descent/lsd-window-geometry@latent-descent.iml +9 -0
- meltygui/gnome_extension/lsd-window-geometry@latent-descent/metadata.json +7 -0
- meltygui/graphics/__init__.py +6 -0
- meltygui/graphics/base.py +85 -0
- meltygui/graphics/examples.py +507 -0
- meltygui/graphics/executor.py +520 -0
- meltygui/graphics/filter.py +667 -0
- meltygui/graphics/filter.pyi +856 -0
- meltygui/graphics/generate_stubs.py +22 -0
- meltygui/graphics/registry.py +203 -0
- meltygui/graphics/shader_compiler.py +155 -0
- meltygui/graphics/shaders.py +1302 -0
- meltygui/graphics/stub_generator.py +250 -0
- meltygui/graphics/texture_manager.py +170 -0
- meltygui/graphics/texture_min_max.py +295 -0
- meltygui/hdr_color.py +757 -0
- meltygui/image_load.py +308 -0
- meltygui/model/__init__.py +1 -0
- meltygui/model/account_model.py +142 -0
- meltygui/model/camera_model.py +159 -0
- meltygui/model/chat_model.py +86 -0
- meltygui/model/code_model.py +62 -0
- meltygui/model/code_proxy_model.py +876 -0
- meltygui/model/collection_model.py +41 -0
- meltygui/model/color_model.py +127 -0
- meltygui/model/cuda_tensor_model.py +36 -0
- meltygui/model/cuda_texture_model.py +149 -0
- meltygui/model/dropdown_model.py +137 -0
- meltygui/model/file_metadata_model.py +73 -0
- meltygui/model/file_model.py +289 -0
- meltygui/model/format_model.py +390 -0
- meltygui/model/graph_model.py +98 -0
- meltygui/model/icon_model.py +1024 -0
- meltygui/model/import_graph_model.py +468 -0
- meltygui/model/layout_model.py +15 -0
- meltygui/model/lut_model.py +266 -0
- meltygui/model/search_model.py +173 -0
- meltygui/model/tensor_model.py +402 -0
- meltygui/model/terminal_model.py +329 -0
- meltygui/model/texture_model.py +146 -0
- meltygui/model/tile_model.py +24 -0
- meltygui/model/trace_model.py +198 -0
- meltygui/model/trace_report_model.py +146 -0
- meltygui/models/__init__.py +0 -0
- meltygui/models/file_meta.py +613 -0
- meltygui/models/function_console.py +184 -0
- meltygui/models/orchestration.py +48 -0
- meltygui/pbr.py +1576 -0
- meltygui/png_unfilter.c +49 -0
- meltygui/resources/JetBrainsMono-Regular.ttf +0 -0
- meltygui/resources/THIRD_PARTY_NOTICES.md +21 -0
- meltygui/resources/dejavu/DejaVuSans-Bold.ttf +0 -0
- meltygui/resources/dejavu/DejaVuSans-ExtraLight.ttf +0 -0
- meltygui/resources/dejavu/DejaVuSans.ttf +0 -0
- meltygui/resources/dejavu/LICENSE.txt +78 -0
- meltygui/resources/fontawesome-LICENSE.txt +121 -0
- meltygui/resources/fontawesome-webfont.ttf +0 -0
- meltygui/resources/hdri/studio_small_09_1k.hdr +0 -0
- meltygui/resources/jetbrains-weights/JetBrainsMono-Bold.ttf +0 -0
- meltygui/resources/jetbrains-weights/JetBrainsMono-ExtraBold.ttf +0 -0
- meltygui/resources/jetbrains-weights/JetBrainsMono-ExtraLight.ttf +0 -0
- meltygui/resources/jetbrains-weights/JetBrainsMono-Light.ttf +0 -0
- meltygui/resources/jetbrains-weights/JetBrainsMono-Medium.ttf +0 -0
- meltygui/resources/jetbrains-weights/JetBrainsMono-SemiBold.ttf +0 -0
- meltygui/resources/jetbrains-weights/JetBrainsMono-Thin.ttf +0 -0
- meltygui/resources/jetbrains-weights/OFL.txt +93 -0
- meltygui/resources/jetbrains-weights/README.md +2 -0
- meltygui/state/__init__.py +0 -0
- meltygui/state/account_state.py +22 -0
- meltygui/state/animation_state.py +97 -0
- meltygui/state/annotation_state.py +22 -0
- meltygui/state/chat_state.py +36 -0
- meltygui/state/code_state.py +10 -0
- meltygui/state/core_enums.py +59 -0
- meltygui/state/core_markers.py +115 -0
- meltygui/state/core_undo.py +1075 -0
- meltygui/state/file_state.py +75 -0
- meltygui/state/graph_state.py +26 -0
- meltygui/state/inspection_state.py +47 -0
- meltygui/state/menu_state.py +10 -0
- meltygui/state/model_enums.py +11 -0
- meltygui/state/new_core_model.py +2394 -0
- meltygui/state/orchestration_state.py +14 -0
- meltygui/state/query_state.py +24 -0
- meltygui/state/tensor_state.py +10 -0
- meltygui/state/terminal_state.py +23 -0
- meltygui/state/trace_state.py +32 -0
- meltygui/state/voxel_state.py +12 -0
- meltygui/text_index.py +816 -0
- meltygui/utils/__init__.py +0 -0
- meltygui/utils/jump_to_code.py +344 -0
- meltygui/utils/pkl_inspect.py +90 -0
- meltygui/utils/render_utils.py +1419 -0
- meltygui/view/__init__.py +1 -0
- meltygui/view/account_view.py +524 -0
- meltygui/view/action_view.py +73 -0
- meltygui/view/chat_decoration_view.py +112 -0
- meltygui/view/chat_view.py +1703 -0
- meltygui/view/code_view.py +2677 -0
- meltygui/view/collection_view.py +1185 -0
- meltygui/view/color_view.py +824 -0
- meltygui/view/control_view.py +559 -0
- meltygui/view/decoration_view.py +439 -0
- meltygui/view/diagnostic_view.py +177 -0
- meltygui/view/dropdown_view.py +1082 -0
- meltygui/view/file_view.py +1599 -0
- meltygui/view/graph_cuda_view.py +105 -0
- meltygui/view/graph_view.py +882 -0
- meltygui/view/header_view.py +848 -0
- meltygui/view/input_view.py +238 -0
- meltygui/view/inspection_view.py +1783 -0
- meltygui/view/layout_view.py +596 -0
- meltygui/view/lut_view.py +45 -0
- meltygui/view/menu_view.py +212 -0
- meltygui/view/orchestration_view.py +658 -0
- meltygui/view/query_view.py +118 -0
- meltygui/view/search_view.py +342 -0
- meltygui/view/tab_view.py +258 -0
- meltygui/view/tensor_view.py +430 -0
- meltygui/view/terminal_view.py +355 -0
- meltygui/view/text_view.py +8031 -0
- meltygui/view/texture_view.py +480 -0
- meltygui/view/tile_view.py +38 -0
- meltygui/view/trace_view.py +923 -0
- meltygui/view/voxel_cuda_view.py +824 -0
- meltygui/view/voxel_view.py +1860 -0
- meltygui/view/window_view.py +111 -0
- meltygui-0.1.0.dist-info/METADATA +143 -0
- meltygui-0.1.0.dist-info/RECORD +372 -0
- meltygui-0.1.0.dist-info/WHEEL +4 -0
- meltygui-0.1.0.dist-info/licenses/LICENSE +202 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from OpenGL.GL import *
|
|
3
|
+
|
|
4
|
+
from meltygui.core.styling.global_style import BackgroundSettings
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class GridDotsBackground:
|
|
8
|
+
def __init__(self, dot_spacing=15.0, dot_size=1.0, emphasis_size=1.2, dot_color=(0.2, 0.23, 0.3, 1.0),
|
|
9
|
+
bg_color=(0.05, 0.055, 0.07, 1.0)):
|
|
10
|
+
self.dot_spacing = dot_spacing
|
|
11
|
+
self.dot_size = dot_size
|
|
12
|
+
self.emphasis_size = emphasis_size
|
|
13
|
+
self.dot_color = dot_color
|
|
14
|
+
self.bg_color = bg_color
|
|
15
|
+
self.root = None
|
|
16
|
+
|
|
17
|
+
vertex_shader = """
|
|
18
|
+
#version 330 core
|
|
19
|
+
layout (location = 0) in vec2 position;
|
|
20
|
+
uniform vec2 resolution;
|
|
21
|
+
void main() {
|
|
22
|
+
gl_Position = vec4(position, 0.0, 1.0);
|
|
23
|
+
}
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
fragment_shader = """
|
|
27
|
+
#version 330 core
|
|
28
|
+
out vec4 FragColor;
|
|
29
|
+
uniform vec2 resolution;
|
|
30
|
+
uniform float dotSpacing;
|
|
31
|
+
uniform float dotSize;
|
|
32
|
+
uniform float emphasisSize;
|
|
33
|
+
uniform vec4 dotColor;
|
|
34
|
+
uniform vec4 bgColor;
|
|
35
|
+
|
|
36
|
+
void main() {
|
|
37
|
+
vec2 pos = gl_FragCoord.xy;
|
|
38
|
+
vec2 grid = mod(pos, dotSpacing * 5.0);
|
|
39
|
+
vec2 smallGrid = mod(pos, dotSpacing);
|
|
40
|
+
|
|
41
|
+
// Check if this is an emphasis point (every 5th dot)
|
|
42
|
+
bool isEmphasis = grid.x < dotSpacing && grid.y < dotSpacing;
|
|
43
|
+
float currentDotSize = isEmphasis ? dotSize * emphasisSize : dotSize;
|
|
44
|
+
|
|
45
|
+
float dist = length(smallGrid - dotSpacing/2.0);
|
|
46
|
+
float dot = 1.0 - smoothstep(currentDotSize - 1.0, currentDotSize, dist);
|
|
47
|
+
vec4 bg = vec4(0.05, 0.055, 0.07, 1.0);
|
|
48
|
+
|
|
49
|
+
FragColor = mix(bgColor, dotColor, dot);
|
|
50
|
+
}
|
|
51
|
+
"""
|
|
52
|
+
self.shader = self.create_shader_program(vertex_shader, fragment_shader)
|
|
53
|
+
|
|
54
|
+
vertices = np.array([
|
|
55
|
+
-1.0, -1.0,
|
|
56
|
+
1.0, -1.0,
|
|
57
|
+
1.0, 1.0,
|
|
58
|
+
-1.0, 1.0
|
|
59
|
+
], dtype=np.float32)
|
|
60
|
+
|
|
61
|
+
self.vao = glGenVertexArrays(1)
|
|
62
|
+
self.vbo = glGenBuffers(1)
|
|
63
|
+
|
|
64
|
+
glBindVertexArray(self.vao)
|
|
65
|
+
glBindBuffer(GL_ARRAY_BUFFER, self.vbo)
|
|
66
|
+
glBufferData(GL_ARRAY_BUFFER, vertices.nbytes, vertices, GL_STATIC_DRAW)
|
|
67
|
+
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, None)
|
|
68
|
+
glEnableVertexAttribArray(0)
|
|
69
|
+
|
|
70
|
+
def set_root(self, root):
|
|
71
|
+
self.root = root
|
|
72
|
+
|
|
73
|
+
def create_shader_program(self, vertex_src, fragment_src):
|
|
74
|
+
vertex_shader = glCreateShader(GL_VERTEX_SHADER)
|
|
75
|
+
glShaderSource(vertex_shader, vertex_src)
|
|
76
|
+
glCompileShader(vertex_shader)
|
|
77
|
+
|
|
78
|
+
fragment_shader = glCreateShader(GL_FRAGMENT_SHADER)
|
|
79
|
+
glShaderSource(fragment_shader, fragment_src)
|
|
80
|
+
glCompileShader(fragment_shader)
|
|
81
|
+
|
|
82
|
+
program = glCreateProgram()
|
|
83
|
+
glAttachShader(program, vertex_shader)
|
|
84
|
+
glAttachShader(program, fragment_shader)
|
|
85
|
+
glLinkProgram(program)
|
|
86
|
+
|
|
87
|
+
glDeleteShader(vertex_shader)
|
|
88
|
+
glDeleteShader(fragment_shader)
|
|
89
|
+
|
|
90
|
+
return program
|
|
91
|
+
|
|
92
|
+
def render(self, width, height):
|
|
93
|
+
if self.root is not None:
|
|
94
|
+
glUseProgram(self.shader)
|
|
95
|
+
glUniform2f(glGetUniformLocation(self.shader, "resolution"), width, height)
|
|
96
|
+
glUniform1f(glGetUniformLocation(self.shader, "dotSpacing"), BackgroundSettings.dot_spacing)
|
|
97
|
+
glUniform1f(glGetUniformLocation(self.shader, "dotSize"), BackgroundSettings.dot_size)
|
|
98
|
+
glUniform1f(glGetUniformLocation(self.shader, "emphasisSize"), BackgroundSettings.emphasis_size)
|
|
99
|
+
glUniform4f(glGetUniformLocation(self.shader, "dotColor"), *BackgroundSettings.dot_color)
|
|
100
|
+
glUniform4f(glGetUniformLocation(self.shader, "bgColor"), *BackgroundSettings.bg_color)
|
|
101
|
+
|
|
102
|
+
glBindVertexArray(self.vao)
|
|
103
|
+
glDrawArrays(GL_TRIANGLE_FAN, 0, 4)
|
|
104
|
+
else:
|
|
105
|
+
|
|
106
|
+
glUseProgram(self.shader)
|
|
107
|
+
glUniform2f(glGetUniformLocation(self.shader, "resolution"), width, height)
|
|
108
|
+
glUniform1f(glGetUniformLocation(self.shader, "dotSpacing"), self.dot_spacing)
|
|
109
|
+
glUniform1f(glGetUniformLocation(self.shader, "dotSize"), self.dot_size)
|
|
110
|
+
glUniform1f(glGetUniformLocation(self.shader, "emphasisSize"), self.emphasis_size)
|
|
111
|
+
glUniform4f(glGetUniformLocation(self.shader, "dotColor"), *self.dot_color)
|
|
112
|
+
glUniform4f(glGetUniformLocation(self.shader, "bgColor"), *self.bg_color)
|
|
113
|
+
|
|
114
|
+
# vec4 bgColor = vec4(0.05, 0.055, 0.07, 1.0);
|
|
115
|
+
|
|
116
|
+
glBindVertexArray(self.vao)
|
|
117
|
+
glDrawArrays(GL_TRIANGLE_FAN, 0, 4)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""Header core functions and supporting definitions."""
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def _jump_to_view_source(draw_state):
|
|
6
|
+
"""Open the code editor on the def of the function that renders
|
|
7
|
+
`draw_state` — the raw function under the @render_func wrapper, resolved
|
|
8
|
+
the way the context menu's inputs tab does (`inspect.unwrap`). A view
|
|
9
|
+
with no source file (a lambda, a C function) does nothing."""
|
|
10
|
+
import inspect
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
view_fn = getattr(draw_state, "_view_func", None)
|
|
13
|
+
if view_fn is None:
|
|
14
|
+
return
|
|
15
|
+
try:
|
|
16
|
+
view_fn = inspect.unwrap(view_fn)
|
|
17
|
+
fn_file = inspect.getsourcefile(view_fn)
|
|
18
|
+
except (TypeError, ValueError):
|
|
19
|
+
return
|
|
20
|
+
if not fn_file:
|
|
21
|
+
return
|
|
22
|
+
from meltygui.core.runtime.extensions import jump_to_symbol as _jump_to_symbol_def
|
|
23
|
+
_jump_to_symbol_def(view_fn, Path(fn_file))
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import colorsys
|
|
2
|
+
import os
|
|
3
|
+
import sys
|
|
4
|
+
import types
|
|
5
|
+
from types import NoneType
|
|
6
|
+
from typing import MutableMapping
|
|
7
|
+
|
|
8
|
+
import meltygui.core.windowing.window_api as glfw
|
|
9
|
+
import meltygui_imgui as imgui
|
|
10
|
+
from meltygui.hdr_color import pack_color
|
|
11
|
+
from meltygui.core.styling.style import Style
|
|
12
|
+
from meltygui_imgui.core import _DrawList
|
|
13
|
+
|
|
14
|
+
import meltygui.core.input.mouse_cursor as mouse_cursor
|
|
15
|
+
from meltygui.core.styling.global_style import GlobalStyle
|
|
16
|
+
from meltygui.core.melty import Melty
|
|
17
|
+
from meltygui.core.melty import add_to_collection
|
|
18
|
+
from meltygui.core.rendering.render_funcs import RenderFuncs
|
|
19
|
+
from meltygui.core.runtime.toggles import Toggles
|
|
20
|
+
from meltygui.core.runtime.toggles import Tint
|
|
21
|
+
from meltygui.utils.render_utils import push_style_var
|
|
22
|
+
from meltygui.utils.render_utils import push_style_color
|
|
23
|
+
from meltygui.utils.render_utils import pop_style_color
|
|
24
|
+
from meltygui.utils.render_utils import pop_style_var
|
|
25
|
+
from meltygui.core.windowing.glfw_utils import request_render
|
|
26
|
+
from meltygui.core.windowing.glfw_utils import print_stack_trace
|
|
27
|
+
from meltygui.core.conversion.bubbling import _BubblingDict
|
|
28
|
+
from meltygui.core.layout.cursor_core import same_line
|
|
29
|
+
from meltygui.core.cache.tile_cache import add_shadow
|
|
30
|
+
from meltygui.core.rendering.window_decoration import window
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def open_file(path, app=None):
|
|
34
|
+
def default_file_manager():
|
|
35
|
+
# Detect platform
|
|
36
|
+
if sys.platform.startswith('darwin'):
|
|
37
|
+
return "open"
|
|
38
|
+
elif os.name == 'nt':
|
|
39
|
+
return "explorer"
|
|
40
|
+
elif os.name == 'posix':
|
|
41
|
+
return "nemo"
|
|
42
|
+
|
|
43
|
+
if app is None:
|
|
44
|
+
app = default_file_manager()
|
|
45
|
+
|
|
46
|
+
import subprocess
|
|
47
|
+
if os.path.exists(path):
|
|
48
|
+
subprocess.Popen([app, path])
|
|
49
|
+
else:
|
|
50
|
+
print(f"Path does not exist: {path}")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _brightness_clamp_fn():
|
|
54
|
+
"""Compatibility accessor for the shared color model."""
|
|
55
|
+
from meltygui.model.color_model import _brightness_clamp
|
|
56
|
+
return _brightness_clamp
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# (r, g, b, hovered) → label rgb for flat_button's explicit text_color path
|
|
60
|
+
_TEXT_COLOR_MEMO = globals().get("_TEXT_COLOR_MEMO", {})
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
from meltygui.view.header_view import flat_button
|
|
64
|
+
flat_button = window(tint=(0.0, 0.335, 0.772, 1.0))(flat_button)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
from meltygui.core.layout.header_core import _jump_to_view_source
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""Layout core functions and supporting definitions."""
|
|
2
|
+
from meltygui.core.melty import Melty
|
|
3
|
+
from meltygui.core.runtime.toggles import Toggles
|
|
4
|
+
import meltygui_imgui as imgui
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def dock_header(draw_state=None, style_manager=None, **kwargs):
|
|
8
|
+
"""The Fast Dock's window header: the standard chrome plus the All /
|
|
9
|
+
Important tab strip drawn IN the header band. Drawn from the body the
|
|
10
|
+
strip was clipped whenever tab_pad_y lifted it above the content rect;
|
|
11
|
+
as header content it owns the band legitimately. This function is
|
|
12
|
+
draw-only: it stamps each tab's screen rect on
|
|
13
|
+
draw_state._dock_tab_rects and the BODY resolves clicks there, where
|
|
14
|
+
the left_mouse_down event reliably arrives."""
|
|
15
|
+
from meltygui.view.header_view import draw_header
|
|
16
|
+
from meltygui.core.cache.tile_cache import add_shadow
|
|
17
|
+
from meltygui.core.windowing.dock_core import _color_u32
|
|
18
|
+
from meltygui.core.windowing.dock_core import _floor_value
|
|
19
|
+
|
|
20
|
+
# The wrapper hands us the cursor already parked at the header origin -
|
|
21
|
+
# capture it BEFORE the chrome draws and moves it.
|
|
22
|
+
header_x, header_y = imgui.get_cursor_screen_pos()
|
|
23
|
+
changed = draw_header(draw_state=draw_state, style_manager=style_manager, **kwargs)
|
|
24
|
+
|
|
25
|
+
# ---- layout (same px discipline as the body) ----
|
|
26
|
+
px = Melty.px
|
|
27
|
+
# [tint=(0.35, 0.85, 0.94)]
|
|
28
|
+
tab_strip_x = px(30.0) # left inset: sits right of the tint widget
|
|
29
|
+
tab_height = px(26.0)
|
|
30
|
+
tab_gap = px(6.6) # gap between tabs
|
|
31
|
+
tab_pad_x = px(10.0) # tab label side padding
|
|
32
|
+
tab_nudge_y = px(0.0) # vertical trim from the header band
|
|
33
|
+
corner = px(6.0)
|
|
34
|
+
text_nudge_x, text_nudge_y = px(2.0), px(-1.0) # optical centering of glyphs
|
|
35
|
+
|
|
36
|
+
# ---- styling (the body's open/closed row families) ----
|
|
37
|
+
open_bg_value, open_text_value = 0.16, 1.357
|
|
38
|
+
closed_bg_value, closed_text_value = 0.045, 0.463
|
|
39
|
+
hover_bg_boost, hover_text_boost = 0.05, 1.5
|
|
40
|
+
open_saturation, text_saturation = 1.315, 0.8
|
|
41
|
+
|
|
42
|
+
if style_manager is None:
|
|
43
|
+
style_manager = Melty.style_manager
|
|
44
|
+
draw_list = imgui.get_window_draw_list()
|
|
45
|
+
mouse_x, mouse_y = imgui.get_mouse_pos()
|
|
46
|
+
hover_ok = draw_state._bounding_hovered
|
|
47
|
+
dock_tab = getattr(draw_state, "dock_tab", None) or "all"
|
|
48
|
+
clip = getattr(draw_state, "abs_clip_rect", None)
|
|
49
|
+
|
|
50
|
+
tab_left = header_x + tab_strip_x
|
|
51
|
+
tab_top = header_y + tab_nudge_y
|
|
52
|
+
tab_bottom = tab_top + tab_height
|
|
53
|
+
tab_rects = []
|
|
54
|
+
for tab_key, tab_label in (("all", "All"), ("important", "Important")):
|
|
55
|
+
tab_width = imgui.calc_text_size(tab_label)[0] + 2.0 * tab_pad_x
|
|
56
|
+
tab_right = tab_left + tab_width
|
|
57
|
+
is_active = dock_tab == tab_key
|
|
58
|
+
tab_hovered = (hover_ok and tab_left <= mouse_x <= tab_right
|
|
59
|
+
and tab_top <= mouse_y <= tab_bottom)
|
|
60
|
+
bg_value = (open_bg_value if is_active else closed_bg_value) \
|
|
61
|
+
+ (hover_bg_boost if tab_hovered else 0.0)
|
|
62
|
+
text_value = (open_text_value if is_active else closed_text_value) \
|
|
63
|
+
+ (hover_text_boost if tab_hovered else 0.0)
|
|
64
|
+
if is_active:
|
|
65
|
+
add_shadow((tab_left, tab_top, tab_width, tab_height), offset=11,
|
|
66
|
+
corner_radius=corner, clip=clip)
|
|
67
|
+
# Tabs carry no tint of their own: factor=1.0 makes make_color_rgb
|
|
68
|
+
# ignore the rgb args and return the window's current tint at the
|
|
69
|
+
# desired value/saturation - the strip follows the header tint.
|
|
70
|
+
if is_active or tab_hovered:
|
|
71
|
+
tab_bg = style_manager.make_color_rgb(0.0, 0.0, 0.0, value=bg_value, factor=1.0,
|
|
72
|
+
saturation_scale=open_saturation)
|
|
73
|
+
draw_list.add_rect_filled(tab_left, tab_top, tab_right, tab_bottom,
|
|
74
|
+
_color_u32(tab_bg), rounding=corner)
|
|
75
|
+
tab_text = _floor_value(
|
|
76
|
+
style_manager.make_color_rgb(0.0, 0.0, 0.0, value=text_value, factor=1.0,
|
|
77
|
+
saturation_scale=text_saturation),
|
|
78
|
+
Toggles.FastDock.active_text_min_brightness if is_active
|
|
79
|
+
else Toggles.FastDock.inactive_text_min_brightness)
|
|
80
|
+
label_size = imgui.calc_text_size(tab_label)
|
|
81
|
+
draw_list.add_text(tab_left + tab_pad_x + text_nudge_x,
|
|
82
|
+
tab_top + (tab_height - label_size[1]) / 2.0 + text_nudge_y,
|
|
83
|
+
_color_u32(tab_text), tab_label)
|
|
84
|
+
tab_rects.append((tab_key, (tab_left, tab_top, tab_right, tab_bottom)))
|
|
85
|
+
tab_left = tab_right + tab_gap
|
|
86
|
+
draw_state._dock_tab_rects = tuple(tab_rects)
|
|
87
|
+
return changed
|