diff --git a/qt5-maint-0012-grc-Fix-generation-of-Python-code-for-Qt4-and-Qt5.patch b/qt5-maint-0012-grc-Fix-generation-of-Python-code-for-Qt4-and-Qt5.patch new file mode 100644 index 0000000..e0395bd --- /dev/null +++ b/qt5-maint-0012-grc-Fix-generation-of-Python-code-for-Qt4-and-Qt5.patch @@ -0,0 +1,659 @@ +From 6cd8e365b7e519f49c81cfeb7137200d7b5e8b2f Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Tue, 21 Jun 2016 19:27:19 +0200 +Subject: [PATCH 12/22] grc: Fix generation of Python code for Qt4 and Qt5 + +Signed-off-by: Paul Cercueil +--- + CMakeLists.txt | 2 +- + grc/blocks/CMakeLists.txt | 4 +++- + grc/blocks/{options.xml => options.xml.cmakein} | 2 +- + grc/core/generator/flow_graph.tmpl | 13 ++++++++++++- + 4 files changed, 17 insertions(+), 4 deletions(-) + rename grc/blocks/{options.xml => options.xml.cmakein} (99%) + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -528,7 +528,6 @@ + add_subdirectory(docs) + add_subdirectory(gnuradio-runtime) + add_subdirectory(gr-blocks) +-add_subdirectory(grc) + add_subdirectory(gr-fec) + add_subdirectory(gr-fft) + add_subdirectory(gr-filter) +@@ -551,6 +550,7 @@ + add_subdirectory(gr-wavelet) + add_subdirectory(gr-wxgui) + add_subdirectory(gr-zeromq) ++add_subdirectory(grc) + + # Defining GR_CTRLPORT for gnuradio/config.h + if(ENABLE_GR_CTRLPORT) +--- a/grc/blocks/CMakeLists.txt ++++ b/grc/blocks/CMakeLists.txt +@@ -22,6 +22,8 @@ + + file(GLOB xml_files "*.xml") + ++configure_file(options.xml.cmakein "${CMAKE_CURRENT_BINARY_DIR}/options.xml" @ONLY) ++ + macro(GEN_BLOCK_XML _generator _xml_block) + set(generator ${CMAKE_CURRENT_SOURCE_DIR}/${_generator}) + set(xml_block ${CMAKE_CURRENT_BINARY_DIR}/${_xml_block}) +@@ -37,7 +39,7 @@ + add_custom_target(grc_generated_xml ALL DEPENDS ${generated_xml_files}) + + install( +- FILES ${xml_files} ${generated_xml_files} ++ FILES ${xml_files} "${CMAKE_CURRENT_BINARY_DIR}/options.xml" ${generated_xml_files} + DESTINATION ${GRC_BLOCKS_DIR} + COMPONENT "grc" + ) +--- a/grc/blocks/options.xml ++++ /dev/null +@@ -1,294 +0,0 @@ +- +- +- +- Options +- options +- from gnuradio import gr +- from gnuradio.filter import firdes +- #if $generate_options() == 'wx_gui' +-from grc_gnuradio import wxgui as grc_wxgui +-import wx +-#end if +-#if $generate_options() == 'qt_gui' +-from PyQt5 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 +- +- if $run: self.start() +-else: self.stop(); self.wait() +- +- Title +- title +- +- string +- #if $title() then 'none' else 'part'# +- +- +- Author +- author +- +- string +- #if $author() then 'none' else 'part'# +- +- +- Description +- description +- +- string +- #if $description() then 'none' else 'part'# +- +- +- Canvas Size +- window_size +- +- int_vector +- part +- +- +- Generate Options +- generate_options +- qt_gui +- enum +- +- +- +- +- +- +- +- +- Category +- category +- [GRC Hier Blocks] +- string +- #if $generate_options().startswith('hb') then 'none' else 'all'# +- +- +- Run Options +- run_options +- prompt +- enum +- #if $generate_options() == 'no_gui' then 'none' else 'all'# +- +- +- +- +- Widget Placement +- placement +- (0,0) +- int_vector +- #if $generate_options() == 'bokeh_gui' then 'part' else 'all'# +- +- +- Sizing Mode +- sizing_mode +- fixed +- enum +- #if $generate_options() == 'bokeh_gui' then 'part' else 'all'# +- +- +- +- +- +- +- +- Run +- run +- True +- bool +- +-#if $generate_options() in ('qt_gui', 'wx_gui', 'bokeh_gui') +- #if $run() +- part +- #else +- none +- #end if +-#else +- all +-#end if +- +- +- +- +- +- Max Number of Output +- max_nouts +- 0 +- int +- #if $generate_options().startswith('hb') +-all#slurp +-#elif $max_nouts() +-none#slurp +-#else +-part#slurp +-#end if +- +- +- Realtime Scheduling +- realtime_scheduling +- +- enum +- #if $generate_options().startswith('hb') +-all#slurp +-#elif $realtime_scheduling() +-none#slurp +-#else +-part#slurp +-#end if +- +- +- +- +- QSS Theme +- qt_qss_theme +- +- file_open +- +-#if $generate_options() in ('qt_gui',) +- #if $qt_qss_theme() +- none +- #else +- part +- #end if +-#else +- all +-#end if +- +- +- +- Thread-safe setters +- thread_safe_setters +- +- enum +- part +- +- +- Advanced +- +- +- Run Command +- run_command +- {python} -u {filename} +- string +- #if $generate_options().startswith('hb') +-all#slurp +-#else +-part#slurp +-#end if +- Advanced +- +- +- Hier Block Source Path +- hier_block_src_path +- .: +- string +- part +- Advanced +- +- not $window_size or len($window_size) == 2 +- not $window_size or 300 <= $(window_size)[0] <= 4096 +- not $window_size or 300 <= $(window_size)[1] <= 4096 +- len($placement) == 4 or len($placement) == 2 +- all(i >= 0 for i in $(placement)) +- +-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. +- +- +--- /dev/null ++++ b/grc/blocks/options.xml.cmakein +@@ -0,0 +1,294 @@ ++ ++ ++ ++ Options ++ options ++ from gnuradio import gr ++ from gnuradio.filter import firdes ++ #if $generate_options() == 'wx_gui' ++from grc_gnuradio import wxgui as grc_wxgui ++import wx ++#end if ++#if $generate_options() == 'qt_gui' ++from PyQt@DESIRED_QT_VERSION@ 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 ++ ++ if $run: self.start() ++else: self.stop(); self.wait() ++ ++ Title ++ title ++ ++ string ++ #if $title() then 'none' else 'part'# ++ ++ ++ Author ++ author ++ ++ string ++ #if $author() then 'none' else 'part'# ++ ++ ++ Description ++ description ++ ++ string ++ #if $description() then 'none' else 'part'# ++ ++ ++ Canvas Size ++ window_size ++ ++ int_vector ++ part ++ ++ ++ Generate Options ++ generate_options ++ qt_gui ++ enum ++ ++ ++ ++ ++ ++ ++ ++ ++ Category ++ category ++ [GRC Hier Blocks] ++ string ++ #if $generate_options().startswith('hb') then 'none' else 'all'# ++ ++ ++ Run Options ++ run_options ++ prompt ++ enum ++ #if $generate_options() == 'no_gui' then 'none' else 'all'# ++ ++ ++ ++ ++ Widget Placement ++ placement ++ (0,0) ++ int_vector ++ #if $generate_options() == 'bokeh_gui' then 'part' else 'all'# ++ ++ ++ Sizing Mode ++ sizing_mode ++ fixed ++ enum ++ #if $generate_options() == 'bokeh_gui' then 'part' else 'all'# ++ ++ ++ ++ ++ ++ ++ ++ Run ++ run ++ True ++ bool ++ ++#if $generate_options() in ('qt_gui', 'wx_gui', 'bokeh_gui') ++ #if $run() ++ part ++ #else ++ none ++ #end if ++#else ++ all ++#end if ++ ++ ++ ++ ++ ++ Max Number of Output ++ max_nouts ++ 0 ++ int ++ #if $generate_options().startswith('hb') ++all#slurp ++#elif $max_nouts() ++none#slurp ++#else ++part#slurp ++#end if ++ ++ ++ Realtime Scheduling ++ realtime_scheduling ++ ++ enum ++ #if $generate_options().startswith('hb') ++all#slurp ++#elif $realtime_scheduling() ++none#slurp ++#else ++part#slurp ++#end if ++ ++ ++ ++ ++ QSS Theme ++ qt_qss_theme ++ ++ file_open ++ ++#if $generate_options() in ('qt_gui',) ++ #if $qt_qss_theme() ++ none ++ #else ++ part ++ #end if ++#else ++ all ++#end if ++ ++ ++ ++ Thread-safe setters ++ thread_safe_setters ++ ++ enum ++ part ++ ++ ++ Advanced ++ ++ ++ Run Command ++ run_command ++ {python} -u {filename} ++ string ++ #if $generate_options().startswith('hb') ++all#slurp ++#else ++part#slurp ++#end if ++ Advanced ++ ++ ++ Hier Block Source Path ++ hier_block_src_path ++ .: ++ string ++ part ++ Advanced ++ ++ not $window_size or len($window_size) == 2 ++ not $window_size or 300 <= $(window_size)[0] <= 4096 ++ not $window_size or 300 <= $(window_size)[1] <= 4096 ++ len($placement) == 4 or len($placement) == 2 ++ all(i >= 0 for i in $(placement)) ++ ++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. ++ ++ +--- a/grc/core/generator/flow_graph.tmpl ++++ b/grc/core/generator/flow_graph.tmpl +@@ -36,6 +36,10 @@ + import threading + #end if + ++#if $generate_options == 'qt_gui' ++from distutils.version import StrictVersion ++#end if ++ + ## Call XInitThreads as the _very_ first thing. + ## After some Qt import, it's too late + #if $generate_options in ('wx_gui', 'qt_gui', 'bokeh_gui')