1130 Commits
Author SHA1 Message Date
baldurk 1aeac957bd Compile fixes 2026-08-13 23:23:27 +01:00
baldurk 8dd7692282 Improve parsing of enums in buffer formatter
* Add a [[flags]] annotation for enums that should bitmask-match, and add a
  member to each interpreted enum value leaf to provide the string name.
2026-08-13 21:05:16 +01:00
baldurk e20c2b9985 Expose buffer interpretation helpers to python 2026-08-13 21:05:15 +01:00
baldurk 964ef04526 Fix some cases where type aliases were not used in reflection 2026-08-13 21:05:15 +01:00
baldurk 71f40cef1a Remove any extra typing aliases that were pulled into module dir()s 2026-08-13 21:05:14 +01:00
baldurk 68bb7e1ceb Track our own custom types for user-defined functions/classes
* This lets us track the docstrings of these for better tooltips
2026-08-13 21:05:14 +01:00
baldurk b3710eba3b Fetch & display tooltips for each entry along with autocomplete options 2026-08-13 21:05:14 +01:00
baldurk 79ad933913 Avoid accessing possibly deprecated typing members 2026-08-13 21:05:14 +01:00
baldurk 022a5e1438 Change python scripting 'debug' button to just attach, not run 2026-08-13 21:05:14 +01:00
baldurk 810e6a79d2 Run scripts in their place when they are on disk
* We only write the pytmp/script.py for unsaved scripts, so they can be
  recovered.
2026-08-13 21:05:14 +01:00
baldurk a113dbbda8 Detect crashes during python extension loads and offer to disable 2026-08-13 21:05:13 +01:00
baldurk 1416d92b09 Use properties consistently for custom dependency paths on windows
* This removes the (now undocumented) python env vars, and the never documented
  Qt env vars. We add new build script arguments to specify these paths.
2026-08-13 21:05:12 +01:00
baldurk 83a80ad9dc Add some notes to main interface docstrings of where they are obtained 2026-08-13 21:05:11 +01:00
baldurk d4130ce42a Enable nitpicking in sphinx documentation build and fix some broken refs 2026-08-13 17:46:49 +01:00
baldurk b60f42d8b1 Move find/replace logic out of shader viewer so it can be reused 2026-08-13 17:46:48 +01:00
baldurk bb4017a965 Add a spellchecking mode for sphinx and fix some typos
* The worst one was Persistant -> Persistent. This involved renaming
  PersistentConfig but the impact of that is considered minimal enough to be
  worth fixing.
2026-08-13 17:46:47 +01:00
baldurk 5e462c5ebe Add type hints to python for class constructors
* We enforce default and copy constructors where possible, this isn't very
  pythonic but we can't use copy.deepcopy on our types.
* The structs that have specialised constructors e.g. FloatVector or Subresource
  also have those documented though we have no way to enforce it.
2026-08-13 17:46:47 +01:00
baldurk 950568fb8f Rename previous/next to previousAction/nextAction in ActionDescription
* swig internally creates 'next' member which we normally want to avoid, so
  prevent shadowing here by using a distinct name.
2026-08-13 17:46:47 +01:00
baldurk 40945e6e8a Explicitly note that MiniQtHelper callbacks are optional 2026-08-13 17:46:47 +01:00
baldurk 61e21aa7b5 Fix incorrect reference in docstring 2026-08-13 17:46:47 +01:00
baldurk a02741381b For convenience expose InvokeOntoUIThread directly from CaptureContext
* This can be useful in python scripts and it's odd to have to go via the
  MiniQtHelper just for this.
2026-08-13 17:46:46 +01:00
baldurk 00159dafac Fix overload documentation for AsyncInvoke in replay manager
* Python can't properly document fully independent overloads, only default-
  parameter type overloads. Moving the tag to last as an optional parameter
  means we can eliminate the different variants.
* For cleanliness in C++ code we make an internal variant that swaps the
  parameters, since it is much cleaner to have a lambda callback as the last
  parameter.
2026-08-13 17:46:46 +01:00
baldurk 6e2069ec54 Add fallback logic to make AddDockWindow place panels somewhere
* We also handle the main window being passed in as the reference - since it's
  the one widget which isn't a child of a docking system itself.
2026-08-13 17:46:46 +01:00
baldurk 2d0ba78a49 Add a function to fetch the texture display config from texture viewer 2026-08-13 17:46:46 +01:00
baldurk 7d2477026a Add TextureViewer.GetChannelVisibility that returns a tuple
* This is more natural to access and use from python. The old function could
  probably be removed but since we also changed the name we'll keep it.
2026-08-13 17:46:46 +01:00
baldurk 3f653cfbf2 Remove RENDERDOC_GetDefaultCaptureOptions, initialise in constructor 2026-08-13 17:46:46 +01:00
baldurk e3b0fa0a24 Add UI thread invokers for all windows
* This is necessary as they expect to be run on the UI thread, but can be
  fetched from python scripts running on the python script thread. We block
  invoke over to the UI and suspend python's GIL to avoid deadlocks.
2026-08-13 17:46:46 +01:00
baldurk db75eec620 Expose capture connection windows to python scripting 2026-08-13 17:46:46 +01:00
baldurk 7806d1557d Rename CaptureDialog::TriggerCapture to Launch as better naming 2026-08-13 17:46:45 +01:00
baldurk e6cd4d2e98 Add an entry to the recent files list for unsaved/temp recovery script 2026-08-13 17:46:45 +01:00
baldurk 782e7101e6 Improve formatting of function tooltips 2026-08-13 17:46:45 +01:00
baldurk b83fabce3a Try to patch in 'pass' instead of commenting to preserve scopes 2026-08-13 17:46:45 +01:00
baldurk 4f3dab116b Properly update docstrings with optional/default parameters 2026-08-13 17:46:45 +01:00
baldurk 567b0228aa Call OnCaptureClosed for capture viewers before resetting capture info 2026-08-13 17:46:45 +01:00
baldurk cd79225daa Call OnSelectedEventChanged() on new capture viewers 2026-08-13 17:46:44 +01:00
baldurk 21ebe7e6cc When reloading an extension send errors to its output channel 2026-08-13 17:46:44 +01:00
baldurk 16a24406b2 In python extensions, set pyrenderdoc global before calling register() 2026-08-13 17:46:44 +01:00
baldurk 7fab2e0e0a Add a forwarding ReplayController wrapper for python that auto invokes 2026-08-13 17:46:44 +01:00
baldurk 10272fa35b Make most extension json fields optional
* We require `extension_api` and `version` fields in case needed for future
  compatibility
2026-08-13 17:46:44 +01:00
baldurk c97850e39b Allow customisation of VS Code executable 2026-08-13 17:46:44 +01:00
baldurk ca0ac6157a Fix some issues with reference counting on python objects 2026-08-13 17:46:44 +01:00
baldurk 459bfb2592 Add a project explorer to the python scripting window
* This displays the current UI extension files, some built-in examples, and
  recently opened loose files
2026-08-13 17:46:44 +01:00
baldurk c95a69c8a1 Returning const arrays forces a copy
* This doesn't cover all cases but helps with 'pythonic' cases where a list
  returned from a function should be expected to be mutable. Modifying direct
  'members' can still modify through const.
2026-08-13 17:46:43 +01:00
baldurk 88782bea97 Use reflection script for autocomplete and help in python shell
* Also add syntax checking via parse attempts.
2026-08-13 17:46:43 +01:00
baldurk 2aff86b678 Change python scripting panel to allow multiple editor windows
* We also remove the old completion/help functionality as it will be replaced.
2026-08-13 17:46:43 +01:00
baldurk 8a86b754f6 Generate autocomplete tooltips inside python reflector 2026-08-13 17:46:43 +01:00
baldurk b9595f3685 Handle forward-referenced string return annotations 2026-08-13 17:46:43 +01:00
baldurk 09c036bd36 Embed and initialise reflection script in python context 2026-08-13 17:46:42 +01:00
baldurk be3d34fb93 Add support for aliasing modules when processing reflection
* This is a little specific to us, but when we see references to a `renderdoc`
  module etc we want to be able to look up the generated stubs instead as they
  have better type hints for processing.
2026-08-13 17:46:42 +01:00
baldurk 64645aa9d6 Add autocomplete helpers for members and function calls
* This requires a small quasi-hack for tracking user defined function calls
  while looking up types.
2026-08-13 17:46:42 +01:00