id: snippet
label: Python Snippet
flags: [ python ]

parameters:
-   id: section
    label: Section of Flowgraph
    dtype: string
    options: ['main_after_init', 'main_after_start', 'main_after_stop', 'init_before_blocks' ]
    option_labels: ['Main - After Init', 'Main - After Start', 'Main - After Stop', 'Init - Before Blocks']
-   id: priority
    label: Priority
    dtype: int
    default: "0"
    hide: ${'part' if priority <= 0 else 'none'}
-   id: code
    label: Code Snippet
    dtype: _multiline

templates:
    var_make: ${code}

documentation: |-
    CAUTION: This is an ADVANCED feature and can lead to unintended consequences in the rendering of a flowgraph.  Use at your own risk.

    Insert a snippet of Python code directly into the flowgraph at the end of the specified section. \
    For each snippet a function is generated with the block name of the snippet (use GRC Show Block IDs option to modify).  These functions are\
    then grouped into their respective sections in the rendered flowgraph.

    The purpose of the python snippets is to be able to exercise features from within GRC that are not entirely supported by the block callbacks, \ 
    methods and mechanisms to generate the code.  One example of this would be calling UHD timed commands before starting the flowgraph

    Indents will be handled upon insertion into the python flowgraph

    Example 1:
    epy_mod_0.some_function(self.some_block.some_property)

    Will place the function call in the generated .py file using the name of the appropriate embedded python block in the proper scope
    The scope is relative to the blocks in the flowgraph, e.g. to reference a block, it should be identified as self.block

    Example 2:
    print('The flowgraph has been stopped')

    With section selected as 'Main - After Stop', will place the print statement after the flowgraph has been stopped.

file_format: 1
