<?xml version="1.0"?>
<!--
###################################################
##Options Block:
## options for window size,
## and flow graph building.
###################################################
 -->
<block>
	<name>Options</name>
	<key>options</key>
	<import>from gnuradio import gr</import>
	<import>from gnuradio.filter import firdes</import>
	<import>#if $generate_options() == 'wx_gui'
from grc_gnuradio import wxgui as grc_wxgui
import wx
#end if
#if $generate_options() == 'qt_gui'
from PyQt4 import Qt
import sys
#end if
#if $generate_options() == 'bokeh_gui'
import time
import signal
import functools
from bokeh.client import push_session
from bokeh.plotting import curdoc
#end if
#if not $generate_options().startswith('hb')
from optparse import OptionParser
from gnuradio.eng_option import eng_option
from gnuradio import eng_notation
#end if</import>
	<make></make>
	<callback>if $run: self.start()
else: self.stop(); self.wait()</callback>
	<param>
		<name>Title</name>
		<key>title</key>
		<value></value>
		<type>string</type>
		<hide>#if $title() then 'none' else 'part'#</hide>
	</param>
	<param>
		<name>Author</name>
		<key>author</key>
		<value></value>
		<type>string</type>
		<hide>#if $author() then 'none' else 'part'#</hide>
	</param>
	<param>
		<name>Description</name>
		<key>description</key>
		<value></value>
		<type>string</type>
		<hide>#if $description() then 'none' else 'part'#</hide>
	</param>
	<param>
		<name>Canvas Size</name>
		<key>window_size</key>
		<value></value>
		<type>int_vector</type>
		<hide>part</hide>
	</param>
	<param>
		<name>Generate Options</name>
		<key>generate_options</key>
		<value>qt_gui</value>
		<type>enum</type>
		<option>
			<name>Bokeh GUI</name>
			<key>bokeh_gui</key>
		</option>
		<option>
			<name>QT GUI</name>
			<key>qt_gui</key>
		</option>
		<option>
			<name>WX GUI</name>
			<key>wx_gui</key>
		</option>
		<option>
			<name>No GUI</name>
			<key>no_gui</key>
		</option>
		<option>
			<name>Hier Block</name>
			<key>hb</key>
		</option>
		<option>
			<name>Hier Block (QT GUI)</name>
			<key>hb_qt_gui</key>
		</option>
	</param>
	<param>
		<name>Category</name>
		<key>category</key>
		<value>[GRC Hier Blocks]</value>
		<type>string</type>
		<hide>#if $generate_options().startswith('hb') then 'none' else 'all'#</hide>
	</param>
	<param>
		<name>Run Options</name>
		<key>run_options</key>
		<value>prompt</value>
		<type>enum</type>
		<hide>#if $generate_options() == 'no_gui' then 'none' else 'all'#</hide>
		<option>
			<name>Run to Completion</name>
			<key>run</key>
		</option>
		<option>
			<name>Prompt for Exit</name>
			<key>prompt</key>
		</option>
	</param>
	<param>
		<name>Widget Placement</name>
		<key>placement</key>
		<value>(0,0)</value>
		<type>int_vector</type>
		<hide>#if $generate_options() == 'bokeh_gui' then 'part' else 'all'#</hide>
	</param>
  <param>
    <name>Sizing Mode</name>
    <key>sizing_mode</key>
    <value>fixed</value>
    <type>enum</type>
		<hide>#if $generate_options() == 'bokeh_gui' then 'part' else 'all'#</hide>
    <option>
      <name>Fixed</name>
      <key>fixed</key>
    </option>
    <option>
      <name>Stretch Both</name>
      <key>stretch_both</key>
    </option>
    <option>
      <name>Scale Width</name>
      <key>scale_width</key>
    </option>
    <option>
      <name>Scale Height</name>
      <key>scale_height</key>
    </option>
    <option>
      <name>Scale Both</name>
      <key>scale_both</key>
    </option>
  </param>
  <param>
		<name>Run</name>
		<key>run</key>
		<value>True</value>
		<type>bool</type>
		<hide>
#if $generate_options() in ('qt_gui', 'wx_gui', 'bokeh_gui')
	#if $run()
		part
	#else
		none
	#end if
#else
	all
#end if
		</hide>
		<option>
			<name>Autostart</name>
			<key>True</key>
		</option>
		<option>
			<name>Off</name>
			<key>False</key>
		</option>
	</param>
	<param>
		<name>Max Number of Output</name>
		<key>max_nouts</key>
		<value>0</value>
		<type>int</type>
		<hide>#if $generate_options().startswith('hb')
all#slurp
#elif $max_nouts()
none#slurp
#else
part#slurp
#end if</hide>
	</param>
	<param>
		<name>Realtime Scheduling</name>
		<key>realtime_scheduling</key>
		<value></value>
		<type>enum</type>
		<hide>#if $generate_options().startswith('hb')
all#slurp
#elif $realtime_scheduling()
none#slurp
#else
part#slurp
#end if</hide>
		<option>
			<name>Off</name>
			<key></key>
		</option>
		<option>
			<name>On</name>
			<key>1</key>
		</option>
	</param>
	<param>
		<name>QSS Theme</name>
		<key>qt_qss_theme</key>
		<value></value>
		<type>file_open</type>
		<hide>
#if $generate_options() in ('qt_gui',)
	#if $qt_qss_theme()
		none
	#else
		part
	#end if
#else
	all
#end if
</hide>
	</param>
	<param>
		<name>Thread-safe setters</name>
		<key>thread_safe_setters</key>
		<value></value>
		<type>enum</type>
		<hide>part</hide>
		<option>
			<name>Off</name>
			<key></key>
		</option>
		<option>
			<name>On</name>
			<key>1</key>
		</option>
		<tab>Advanced</tab>
	</param>
	<param>
		<name>Run Command</name>
		<key>run_command</key>
		<value>{python} -u {filename}</value>
		<type>string</type>
		<hide>#if $generate_options().startswith('hb')
all#slurp
#else
part#slurp
#end if</hide>
		<tab>Advanced</tab>
	</param>
	<param>
		<name>Hier Block Source Path</name>
		<key>hier_block_src_path</key>
		<value>.:</value>
		<type>string</type>
		<hide>part</hide>
		<tab>Advanced</tab>
	</param>
	<check>not $window_size or len($window_size) == 2</check>
	<check>not $window_size or 300 &lt;= $(window_size)[0] &lt;= 4096</check>
	<check>not $window_size or 300 &lt;= $(window_size)[1] &lt;= 4096</check>
  <check>len($placement) == 4 or len($placement) == 2</check>
  <check>all(i &gt;= 0 for i in $(placement))</check>
  <doc>
The options block sets special parameters for the flow graph. \
Only one option block is allowed per flow graph.

Title, author, and description parameters are for identification purposes.

The window size controls the dimensions of the flow graph editor. \
The window size (width, height) must be between (300, 300) and (4096, 4096).

The generate options controls the type of code generated. \
Non-graphical flow graphs should avoid using graphical sinks or graphical variable controls.

In a graphical application, \
run can be controlled by a variable to start and stop the flowgraph at runtime.

The id of this block determines the name of the generated file and the name of the class. \
For example, an id of my_block will generate the file my_block.py and class my_block(gr....

The category parameter determines the placement of the block in the block selection window. \
The category only applies when creating hier blocks. \
To put hier blocks into the root category, enter / for the category.

The Max Number of Output is the maximum number of output items allowed for any block \
in the flowgraph; to disable this set the max_nouts equal to 0.\
Use this to adjust the maximum latency a flowgraph can exhibit.
	</doc>
</block>
