simvx.core.ui.autocomplete¶
Autocomplete popup widget for code completion suggestions.
Module Contents¶
Classes¶
Floating completion popup that shows filtered suggestions near the cursor. |
Data¶
API¶
- simvx.core.ui.autocomplete.log¶
‘getLogger(…)’
- simvx.core.ui.autocomplete.MAX_VISIBLE¶
10
- simvx.core.ui.autocomplete.ITEM_HEIGHT¶
22.0
- simvx.core.ui.autocomplete.POPUP_WIDTH¶
350.0
- simvx.core.ui.autocomplete.KIND_COL_WIDTH¶
36.0
- simvx.core.ui.autocomplete.SCROLLBAR_WIDTH¶
8.0
- simvx.core.ui.autocomplete.TEXT_SCALE¶
0.55
- simvx.core.ui.autocomplete.PADDING_X¶
6.0
- simvx.core.ui.autocomplete.PADDING_Y¶
2.0
- simvx.core.ui.autocomplete.BORDER¶
1.0
- simvx.core.ui.autocomplete.SCROLL_STEP¶
3
- class simvx.core.ui.autocomplete.AutocompletePopup(**kwargs)[source]¶
Bases:
simvx.core.ui.core.ControlFloating completion popup that shows filtered suggestions near the cursor.
Non-capturing overlay (
modality="none"): the popup draws on top via the overlay layer but does NOT scope input, so the host editor keeps keyboard focus and keeps receiving typed characters while the popup is up. Consumers forward navigation keys (Up/Down/Tab/Enter/Esc/PageUp/PageDown/Home/End) to- Meth:
forward_keywhile typed characters keep flowing to the editor for live filter updates. Matches every IDE in the wild (VS Code, JetBrains, Sublime, Emacscorfu).
Initialization
- top_level¶
‘Property(…)’
- visible¶
‘Property(…)’
- pointer_filter¶
‘Property(…)’
- show(items: list[simvx.core.ui.completion_types.CompletionItem], x: float, y: float)[source]¶
- NAV_KEYS¶
‘frozenset(…)’
- forward_key(event: simvx.core.ui.types.GuiInputEvent) bool[source]¶
Consumer-side hook: forward a navigation key to the popup.
Returns True if the popup consumed the key, which is the caller’s answer as well: the popup took it, so the editor claims it.
Editors call this before processing typed characters in their own
on_gui_input::def on_gui_input(self, event): if self._autocomplete.is_visible and self._autocomplete.forward_key(event): return True # ... usual editor key handling ...
- on_gui_input(event: simvx.core.ui.types.GuiInputEvent)[source]¶
Direct mouse handling for clicks and the wheel on the popup.
Keyboard arrives via :meth:
forward_keyfrom the editor that owns focus; this method only handles mouse events on the popup itself. The wheel scrolls the list and is claimed, so it never reaches the editor underneath while the popup is up.
- size_x¶
‘Property(…)’
- size_y¶
‘Property(…)’
- min_size_x¶
‘Property(…)’
- min_size_y¶
‘Property(…)’
- anchor_left¶
‘Property(…)’
- anchor_top¶
‘Property(…)’
- anchor_right¶
‘Property(…)’
- anchor_bottom¶
‘Property(…)’
- margin_left¶
‘Property(…)’
- margin_top¶
‘Property(…)’
- margin_right¶
‘Property(…)’
- margin_bottom¶
‘Property(…)’
- anchor¶
‘Property(…)’
- inset¶
‘Property(…)’
- dismiss_on_outside_click¶
‘Property(…)’
- clip_contents¶
‘Property(…)’
- focus_mode¶
‘Property(…)’
- tooltip¶
‘Property(…)’
- cursor_shape¶
‘Property(…)’
- pointer_types: frozenset[simvx.core.input.enums.PointerType] | None¶
None
- touch_target: bool¶
False
- property wants_text_input: bool¶
- size_flags_horizontal¶
‘Property(…)’
- size_flags_vertical¶
‘Property(…)’
- stretch_ratio¶
‘Property(…)’
- max_size¶
‘Property(…)’
- property size: simvx.core.math.types.Vec2¶
- property min_size: simvx.core.math.types.Vec2¶
- content_signature() object¶
- content_uses(chars: str) bool¶
- autosize_to_content() None¶
- accepts_pointers¶
‘Property(…)’
- property theme: simvx.core.ui.types.Theme | None¶
- property mouse_over: bool¶
- property disabled: bool¶
- get_theme() simvx.core.ui.types.Theme¶
- property viewport_size: simvx.core.math.types.Vec2¶
- property viewport_insets: tuple[float, float, float, float]¶
- queue_redraw()¶
- size_floor() tuple[float, float]¶
- get_minimum_size() simvx.core.math.types.Vec2¶
- add_child(node: simvx.core.node.T) simvx.core.node.T¶
- get_rect() tuple[float, float, float, float]¶
- get_global_rect() tuple[float, float, float, float]¶
- property focus_rect: tuple[float, float, float, float] | None¶
- is_hit(event: simvx.core.input.events.PointerEvent) bool¶
- classmethod __init_subclass__(**kwargs)¶
- activate() bool¶
- focus_next_control()¶
- focus_previous_control()¶
- set_drag_preview(control: simvx.core.ui.core.Control)¶
- property is_overlay_open: bool¶
- show_overlay(modality: str = 'light', *, dim: bool | None = None, dismiss: bool | None = None, inert: bool | None = None, owner: simvx.core.ui.core.Control | None = None, initial_focus: simvx.core.ui.core.Control | None = None) None¶
- close_overlay() None¶
- position¶
‘_SpatialVecProperty(…)’
- rotation¶
‘Property(…)’
- scale¶
‘_SpatialVecProperty(…)’
- z_index¶
‘Property(…)’
- z_as_relative¶
‘Property(…)’
- render_layer¶
‘Property(…)’
- set_render_layer(index: int, enabled: bool = True) None¶
- is_on_render_layer(index: int) bool¶
- property absolute_z_index: int¶
- property rotation_degrees: float¶
- property world_position: simvx.core.math.types.Vec2¶
- property world_rotation: float¶
- property world_scale: simvx.core.math.types.Vec2¶
- property world_transform: tuple[simvx.core.math.types.Vec2, simvx.core.math.types.Vec2, float]¶
- property forward: simvx.core.math.types.Vec2¶
- property right: simvx.core.math.types.Vec2¶
- translate(offset: tuple[float, float] | numpy.ndarray)¶
- rotate(radians: float)¶
- rotate_deg(degrees: float)¶
- look_at(target: tuple[float, float] | numpy.ndarray)¶
- to_global(point) simvx.core.math.types.Vec2¶
- to_local(point) simvx.core.math.types.Vec2¶
- transform_points(points: list[simvx.core.math.types.Vec2]) list[simvx.core.math.types.Vec2]¶
- wrap_screen(margin: float = 20)¶
- post_processed¶
‘Property(…)’
- property transform_render_dirty: bool¶
- strict_errors: ClassVar[bool]¶
True
- dev_checks: ClassVar[bool]¶
None
- dev_warnings: ClassVar[bool]¶
None
- freeze_check_interval: ClassVar[float]¶
1.0
- dynamic: bool¶
False
- update_mode¶
‘Property(…)’
- drag_threshold¶
‘Property(…)’
- focus_entered¶
‘Signal(…)’
- focus_exited¶
‘Signal(…)’
- __properties__: ClassVar[dict[str, simvx.core.descriptors.Property]]¶
None
- property name: str¶
- property visible_in_tree: bool¶
- property input_player: simvx.core.input.players.InputPlayer¶
- property input_context: simvx.core.input.contexts.InputContext | None¶
- reset_error() None¶
- remove_child(node: simvx.core.node.Node) None¶
- reparent(new_parent: simvx.core.node.Node)¶
- node_at(path, default=_NO_DEFAULT)¶
- find(target, *, direct: bool = False)¶
- find_all(target, *, direct: bool = False)¶
- expect(target, *, direct: bool = False)¶
- ancestor(target)¶
- walk(*, include_self: bool = True) collections.abc.Iterator[simvx.core.node.Node]¶
- property path: str¶
- property is_scene_root: bool¶
- add_to_group(group: str)¶
- remove_from_group(group: str)¶
- is_in_group(group: str) bool¶
- on_ready() None¶
- on_enter_tree() None¶
- on_exit_tree() None¶
- on_update(dt: float) None¶
- on_fixed_update(dt: float) None¶
- on_draw_3d(gizmos) None¶
- on_picked(event: simvx.core.input.events.PickEvent) bool | None¶
- start_coroutine(gen: simvx.core.descriptors.Coroutine) simvx.core.descriptors.CoroutineHandle¶
- stop_coroutine(gen_or_handle)¶
- property focused: bool¶
- drag_threshold_for(pointer_type: simvx.core.input.enums.PointerType | str) float¶
- grab_focus() None¶
- release_focus() None¶
- capture_pointer(pointer_id: int | None = None) None¶
- release_pointer(pointer_id: int | None = None) None¶
- property render_dirty: bool¶
- clear_children()¶
- destroy()¶
- property destroying: bool¶
- property destroyed: bool¶
- call_deferred(method: collections.abc.Callable[..., Any], *args: Any) None¶
- property app¶
- property tree: simvx.core.scene_tree.SceneTree¶
- property physics¶
- property physics_2d¶
- __getitem__(key: str)¶
- classmethod get_properties() dict[str, simvx.core.descriptors.Property]¶
- __repr__()¶