| 117 | { |
| 118 | template <typename T> |
| 119 | void writeValue( const std::vector<std::string>& path, T value ) |
| 120 | { |
| 121 | MR::CommandLoop::runCommandFromGUIThread( [&] |
| 122 | { |
| 123 | // Empty status = OK (write simulated); non-empty = disabled (silent no-op — pre-#5961 test contract). |
| 124 | auto status = MR::expectedValueOrThrow( Control::writeValue<T>( path, std::move( value ) ) ); |
| 125 | if ( !status.empty() ) |
| 126 | spdlog::warn( "writeValue {}: {} (silent no-op)", Control::pathToString( path ), status ); |
| 127 | } ); |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | MR_ADD_PYTHON_FUNCTION( mrviewerpy, uiWriteValue, writeValue<std::int64_t>, |
nothing calls this directly
no test coverage detected