[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 78/101: Merge remote-tracking branch 'upstr
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 78/101: Merge remote-tracking branch 'upstream/next' into gtk3 |
Date: |
Thu, 16 Mar 2017 14:58:11 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
jcorgan pushed a commit to branch python3
in repository gnuradio.
commit f7cdfff6a85ce52b1d7c0b5131645fcb77405fe8
Merge: a867a29 af4323d
Author: Sebastian Koslowski <address@hidden>
Date: Mon Sep 12 14:16:50 2016 -0600
Merge remote-tracking branch 'upstream/next' into gtk3
CMakeLists.txt | 5 +-
cmake/Modules/FindGnuradio.cmake | 3 +-
cmake/Modules/FindQwt.cmake | 14 +-
cmake/Modules/GnuradioConfig.cmake.in | 1 -
cmake/msvc/config.h | 3 +
docs/RELEASE-NOTES-3.7.10.1.md | 68 +
docs/doxygen/Doxyfile.in | 5 -
docs/doxygen/other/build_guide.dox | 2 -
docs/doxygen/other/group_defs.dox | 1 -
docs/sphinx/source/index.rst | 14 -
docs/sphinx/source/wxgui.rst | 5 -
docs/sphinx/source/wxgui_blocks.rst | 7 -
gnuradio-runtime/include/gnuradio/basic_block.h | 15 +-
gnuradio-runtime/lib/CMakeLists.txt | 2 -
gnuradio-runtime/lib/scheduler_sts.cc | 90 -
gnuradio-runtime/lib/scheduler_sts.h | 66 -
gnuradio-runtime/lib/single_threaded_scheduler.cc | 363 --
gnuradio-runtime/lib/single_threaded_scheduler.h | 65 -
gnuradio-runtime/lib/sys_paths.cc | 8 +-
gnuradio-runtime/lib/top_block_impl.cc | 4 +-
gnuradio-runtime/python/gnuradio/__init__.py | 1 -
gnuradio-runtime/swig/CMakeLists.txt | 1 -
gnuradio-runtime/swig/single_threaded_scheduler.i | 54 -
gr-audio/examples/python/CMakeLists.txt | 1 -
gr-audio/examples/python/audio_fft.py | 138 -
gr-audio/lib/portaudio/portaudio_sink.cc | 4 +
gr-audio/lib/portaudio/portaudio_source.cc | 4 +
gr-blocks/grc/blocks_block_tree.xml | 4 +-
gr-blocks/grc/blocks_message_burst_source.xml | 58 -
gr-blocks/grc/blocks_message_sink.xml | 72 -
...age_source.xml => blocks_multiply_const_xx.xml} | 34 +-
gr-blocks/grc/blocks_pdu_filter.xml | 5 +-
gr-blocks/grc/blocks_pdu_remove.xml | 1 +
gr-blocks/grc/blocks_pdu_set.xml | 2 +
gr-blocks/include/gnuradio/blocks/CMakeLists.txt | 3 -
.../include/gnuradio/blocks/message_burst_source.h | 52 -
gr-blocks/include/gnuradio/blocks/message_sink.h | 52 -
gr-blocks/include/gnuradio/blocks/message_source.h | 54 -
gr-blocks/include/gnuradio/blocks/pdu_filter.h | 3 +
gr-blocks/include/gnuradio/blocks/pdu_remove.h | 1 +
gr-blocks/include/gnuradio/blocks/pdu_set.h | 2 +
gr-blocks/lib/CMakeLists.txt | 3 -
gr-blocks/lib/message_burst_source_impl.cc | 149 -
gr-blocks/lib/message_burst_source_impl.h | 58 -
gr-blocks/lib/message_sink_impl.cc | 132 -
gr-blocks/lib/message_sink_impl.h | 56 -
gr-blocks/lib/message_source_impl.cc | 151 -
gr-blocks/lib/message_source_impl.h | 62 -
gr-blocks/lib/pdu_filter_impl.h | 3 +
gr-blocks/lib/pdu_remove_impl.h | 1 +
gr-blocks/lib/pdu_set_impl.h | 2 +
gr-blocks/lib/tcp_server_sink_impl.cc | 6 +-
gr-blocks/python/blocks/qa_message.py | 31 +-
gr-blocks/python/blocks/qa_message_tags.py | 27 -
gr-blocks/python/grc_gnuradio/README | 3 -
gr-blocks/swig/blocks_swig0.i | 9 -
gr-digital/examples/CMakeLists.txt | 3 -
gr-digital/examples/demod/test_corr_and_sync.grc | 3332 -------------------
gr-digital/examples/demod/uhd_corr_and_sync_rx.grc | 1677 ----------
gr-digital/examples/demod/uhd_corr_and_sync_tx.grc | 1619 ---------
gr-digital/grc/digital_block_tree.xml | 1 -
gr-digital/grc/digital_correlate_and_sync_cc.xml | 36 -
gr-digital/include/gnuradio/digital/CMakeLists.txt | 1 -
.../gnuradio/digital/correlate_and_sync_cc.h | 90 -
gr-digital/include/gnuradio/digital/glfsr.h | 22 +-
.../include/gnuradio/digital/glfsr_source_b.h | 10 +-
.../include/gnuradio/digital/glfsr_source_f.h | 10 +-
gr-digital/lib/CMakeLists.txt | 1 -
gr-digital/lib/clock_recovery_mm_cc_impl.cc | 1 +
gr-digital/lib/clock_recovery_mm_ff_impl.cc | 1 +
gr-digital/lib/correlate_and_sync_cc_impl.cc | 172 -
gr-digital/lib/correlate_and_sync_cc_impl.h | 62 -
gr-digital/lib/glfsr.cc | 19 +-
gr-digital/lib/glfsr_source_b_impl.cc | 38 +-
gr-digital/lib/glfsr_source_b_impl.h | 14 +-
gr-digital/lib/glfsr_source_f_impl.cc | 38 +-
gr-digital/lib/glfsr_source_f_impl.h | 18 +-
gr-digital/lib/modulate_vector.cc | 4 +-
gr-digital/lib/pfb_clock_sync_fff_impl.cc | 2 +-
gr-digital/python/digital/qa_correlate_and_sync.py | 104 -
gr-digital/swig/digital_swig.i | 5 +-
gr-dtv/examples/README.dvbs | 8 -
gr-dtv/examples/catv_tx_64qam.grc | 1356 +++++++-
gr-dtv/examples/dvbs2_tx.grc | 629 +++-
gr-dtv/examples/dvbs_tx.grc | 792 +++--
gr-dtv/examples/dvbt_rx_8k.grc | 625 +++-
gr-dtv/examples/dvbt_tx_2k.grc | 2893 +++++++++++-----
gr-dtv/examples/dvbt_tx_8k.grc | 2923 +++++++++++-----
gr-dtv/examples/uhd_atsc_tx.grc | 8 +-
gr-dtv/examples/vv003-cr23.grc | 1869 ++++++-----
gr-dtv/examples/vv009-4kfft.grc | 1911 ++++++-----
gr-dtv/examples/vv018-miso.grc | 2191 ++++++------
gr-dtv/grc/dtv_dvb_bbscrambler_bb.xml | 10 +-
gr-dtv/grc/dtv_dvb_bch_bb.xml | 10 +-
gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.xml | 4 +-
gr-dtv/lib/CMakeLists.txt | 1 -
gr-dtv/lib/atsc/atsc_interleaver_impl.cc | 12 +-
gr-dtv/lib/dvb/dvb_bbheader_bb_impl.cc | 7 +-
gr-dtv/lib/dvbs2/dvbs2_physical_cc_impl.cc | 18 +-
.../lib/dvbt/dvbt_bit_inner_deinterleaver_impl.cc | 176 +-
.../lib/dvbt/dvbt_bit_inner_deinterleaver_impl.h | 7 +-
gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.cc | 175 +-
gr-dtv/lib/dvbt/dvbt_bit_inner_interleaver_impl.h | 7 +-
gr-dtv/lib/dvbt/dvbt_configure.cc | 3 +-
gr-dtv/lib/dvbt/dvbt_demap_impl.cc | 11 +-
gr-dtv/lib/dvbt/dvbt_energy_dispersal_impl.cc | 5 +-
gr-dtv/lib/dvbt/dvbt_inner_coder_impl.cc | 50 +-
gr-dtv/lib/dvbt/dvbt_inner_coder_impl.h | 9 +-
gr-dtv/lib/dvbt/dvbt_map_impl.cc | 9 +-
gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc | 27 +-
gr-dtv/lib/dvbt/dvbt_reed_solomon.cc | 475 ---
gr-dtv/lib/dvbt/dvbt_reed_solomon.h | 70 -
gr-dtv/lib/dvbt/dvbt_reed_solomon_dec_impl.cc | 72 +-
gr-dtv/lib/dvbt/dvbt_reed_solomon_dec_impl.h | 19 +-
gr-dtv/lib/dvbt/dvbt_reed_solomon_enc_impl.cc | 59 +-
gr-dtv/lib/dvbt/dvbt_reed_solomon_enc_impl.h | 16 +-
gr-dtv/lib/dvbt/dvbt_reference_signals_impl.cc | 73 +-
.../lib/dvbt/dvbt_symbol_inner_interleaver_impl.cc | 9 +-
gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.cc | 11 +-
gr-dtv/lib/dvbt2/dvbt2_cellinterleaver_cc_impl.cc | 11 +-
gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc | 19 +-
gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc | 20 +-
gr-dtv/lib/dvbt2/dvbt2_paprtr_cc_impl.cc | 41 +-
gr-dtv/lib/dvbt2/dvbt2_pilotgenerator_cc_impl.cc | 8 +-
gr-fec/include/gnuradio/fec/polar_decoder_common.h | 2 +-
gr-fec/lib/polar_decoder_common.cc | 2 +
gr-qtgui/CMakeLists.txt | 30 +-
gr-qtgui/examples/c++/CMakeLists.txt | 8 +-
gr-qtgui/examples/pyqt_const_c.py | 62 +-
gr-qtgui/examples/pyqt_example_c.py | 59 +-
gr-qtgui/examples/pyqt_example_f.py | 59 +-
gr-qtgui/examples/pyqt_freq_c.py | 59 +-
gr-qtgui/examples/pyqt_freq_f.py | 60 +-
gr-qtgui/examples/pyqt_histogram_f.py | 73 +-
gr-qtgui/examples/pyqt_time_c.py | 66 +-
gr-qtgui/examples/pyqt_time_f.py | 67 +-
gr-qtgui/examples/pyqt_time_raster_b.py | 19 +-
gr-qtgui/examples/pyqt_time_raster_f.py | 19 +-
gr-qtgui/examples/pyqt_waterfall_c.py | 59 +-
gr-qtgui/examples/pyqt_waterfall_f.py | 62 +-
gr-qtgui/examples/qtgui_tags_viewing.grc | 2399 +++++++++++---
gr-qtgui/grc/CMakeLists.txt | 27 +-
gr-qtgui/grc/qtgui_ber_sink_b.xml | 2 +-
gr-qtgui/grc/qtgui_check_box.xml | 2 +-
gr-qtgui/grc/qtgui_chooser.xml | 4 +-
gr-qtgui/grc/qtgui_const_sink_x.xml | 2 +-
gr-qtgui/grc/qtgui_edit_box_msg.xml | 2 +-
gr-qtgui/grc/qtgui_entry.xml | 2 +-
gr-qtgui/grc/qtgui_freq_sink_x.xml | 2 +-
gr-qtgui/grc/qtgui_histogram_sink_x.xml | 2 +-
gr-qtgui/grc/qtgui_label.xml | 2 +-
gr-qtgui/grc/qtgui_number_sink.xml | 2 +-
gr-qtgui/grc/qtgui_push_button.xml | 2 +-
gr-qtgui/grc/qtgui_sink_x.xml | 2 +-
gr-qtgui/grc/qtgui_tab_widget.xml | 2 +-
gr-qtgui/grc/qtgui_time_raster_x.xml | 2 +-
gr-qtgui/grc/qtgui_time_sink_x.xml | 2 +-
gr-qtgui/grc/qtgui_vector_sink_f.xml | 2 +-
gr-qtgui/grc/qtgui_waterfall_sink_x.xml | 2 +-
gr-qtgui/include/QtWidgets/QRegExpValidator | 9 +
gr-qtgui/include/gnuradio/qtgui/form_menus.h | 5 +
gr-qtgui/lib/CMakeLists.txt | 10 +-
gr-qtgui/lib/SpectrumGUIClass.cc | 1 -
gr-qtgui/lib/const_sink_c_impl.cc | 2 +-
gr-qtgui/lib/edit_box_msg_impl.cc | 4 -
gr-qtgui/lib/freq_sink_c_impl.cc | 2 +-
gr-qtgui/lib/freq_sink_f_impl.cc | 2 +-
gr-qtgui/lib/histogram_sink_f_impl.cc | 2 +-
gr-qtgui/lib/sink_c_impl.cc | 2 +-
gr-qtgui/lib/sink_f_impl.cc | 2 +-
gr-qtgui/lib/time_raster_sink_b_impl.cc | 2 +-
gr-qtgui/lib/time_raster_sink_f_impl.cc | 2 +-
gr-qtgui/lib/time_sink_c_impl.cc | 2 +-
gr-qtgui/lib/time_sink_f_impl.cc | 2 +-
gr-qtgui/lib/vector_sink_f_impl.cc | 2 +-
gr-qtgui/lib/waterfall_sink_c_impl.cc | 2 +-
gr-qtgui/lib/waterfall_sink_f_impl.cc | 2 +-
gr-qtgui/python/qtgui/CMakeLists.txt | 10 +-
.../python/qtgui/{range.py => range.py.cmakein} | 27 +-
gr-qtgui/themes/dark.qss | 1 -
gr-trellis/examples/grc/.gitignore | 1 +
.../examples/grc/interference_cancellation.grc | 3482 +++++++++++++-------
gr-trellis/examples/grc/pccc.grc | 1232 ++++---
gr-trellis/examples/grc/sccc.grc | 1174 ++++---
gr-trellis/examples/grc/tcm.grc | 1268 ++++---
gr-trellis/examples/grc/turbo_equalization.grc | 2818 +++++++++-------
gr-trellis/examples/grc/viterbi_equalization.grc | 1504 +++++----
gr-uhd/CMakeLists.txt | 1 -
gr-uhd/apps/CMakeLists.txt | 47 +-
gr-uhd/apps/hf_explorer/README | 28 -
gr-uhd/apps/hf_explorer/hfx.py | 755 -----
gr-uhd/apps/hf_explorer/hfx_help | 180 -
gr-uhd/apps/hf_radio/README.TXT | 60 -
gr-uhd/apps/hf_radio/hfir.sci | 59 -
gr-uhd/apps/hf_radio/input.py | 78 -
gr-uhd/apps/hf_radio/output.py | 43 -
gr-uhd/apps/hf_radio/radio.py | 320 --
gr-uhd/apps/hf_radio/radio.xml | 441 ---
gr-uhd/apps/hf_radio/ssb_taps | 1023 ------
gr-uhd/apps/hf_radio/ssbagc.py | 72 -
gr-uhd/apps/hf_radio/ssbdemod.py | 118 -
gr-uhd/apps/hf_radio/startup.py | 1 -
gr-uhd/apps/hf_radio/ui.py | 316 --
gr-uhd/apps/uhd_fft_wx | 348 --
gr-uhd/apps/uhd_siggen_gui | 2 +-
gr-uhd/examples/python/CMakeLists.txt | 41 -
gr-uhd/examples/python/fm_tx4.py | 211 --
gr-uhd/examples/python/fm_tx_2_daughterboards.py | 216 --
gr-uhd/examples/python/freq_hopping.py | 220 --
gr-uhd/examples/python/max_power.py | 142 -
gr-uhd/examples/python/usrp_am_mw_rcv.py | 316 --
gr-uhd/examples/python/usrp_nbfm_ptt.py | 494 ---
gr-uhd/examples/python/usrp_nbfm_rcv.py | 384 ---
gr-uhd/examples/python/usrp_spectrum_sense.py | 318 --
gr-uhd/examples/python/usrp_tv_rcv.py | 446 ---
gr-uhd/examples/python/usrp_tv_rcv_nogui.py | 215 --
gr-uhd/examples/python/usrp_wfm_rcv.py | 290 --
gr-uhd/examples/python/usrp_wfm_rcv2_nogui.py | 157 -
gr-uhd/examples/python/usrp_wfm_rcv_fmdet.py | 353 --
gr-uhd/examples/python/usrp_wfm_rcv_nogui.py | 179 -
gr-uhd/examples/python/usrp_wfm_rcv_pll.py | 350 --
gr-uhd/examples/python/usrp_wfm_rcv_sca.py | 407 ---
gr-uhd/examples/python/usrp_wxapt_rcv.py | 286 --
.../gr-newmod/docs/doxygen/doxyxml/doxyindex.py | 86 +-
.../modtool/gr-newmod/docs/doxygen/swig_doc.py | 143 +-
gr-wxgui/CMakeLists.txt | 91 -
gr-wxgui/README | 1 -
gr-wxgui/README.gl | 29 -
gr-wxgui/gr-wxgui.conf | 13 -
gr-wxgui/gr-wxgui.pc.in | 11 -
gr-wxgui/grc/CMakeLists.txt | 35 -
gr-wxgui/grc/__init__.py | 22 -
gr-wxgui/grc/notebook.xml | 70 -
gr-wxgui/grc/panel.py | 53 -
gr-wxgui/grc/top_block_gui.py | 87 -
gr-wxgui/grc/variable_check_box.xml | 85 -
gr-wxgui/grc/variable_chooser.xml | 123 -
gr-wxgui/grc/variable_slider.xml | 139 -
gr-wxgui/grc/variable_static_text.xml | 98 -
gr-wxgui/grc/variable_text_box.xml | 102 -
gr-wxgui/grc/wxgui_constellationsink2.xml | 141 -
gr-wxgui/grc/wxgui_fftsink2.xml | 246 --
gr-wxgui/grc/wxgui_histosink2.xml | 79 -
gr-wxgui/grc/wxgui_numbersink2.xml | 194 --
gr-wxgui/grc/wxgui_scopesink2.xml | 187 --
gr-wxgui/grc/wxgui_termsink.xml | 57 -
gr-wxgui/grc/wxgui_waterfallsink2.xml | 203 --
gr-wxgui/include/gnuradio/wxgui/CMakeLists.txt | 31 -
gr-wxgui/include/gnuradio/wxgui/api.h | 33 -
gr-wxgui/include/gnuradio/wxgui/histo_sink_f.h | 55 -
gr-wxgui/include/gnuradio/wxgui/oscope_guts.h | 131 -
gr-wxgui/include/gnuradio/wxgui/oscope_sink_f.h | 53 -
gr-wxgui/include/gnuradio/wxgui/oscope_sink_x.h | 91 -
gr-wxgui/include/gnuradio/wxgui/trigger_mode.h | 44 -
gr-wxgui/lib/CMakeLists.txt | 98 -
gr-wxgui/lib/gnuradio-wxgui.rc.in | 54 -
gr-wxgui/lib/histo_sink_f_impl.cc | 186 --
gr-wxgui/lib/histo_sink_f_impl.h | 63 -
gr-wxgui/lib/oscope_guts.cc | 439 ---
gr-wxgui/lib/oscope_sink_f_impl.cc | 83 -
gr-wxgui/lib/oscope_sink_f_impl.h | 51 -
gr-wxgui/lib/oscope_sink_x.cc | 161 -
gr-wxgui/python/wxgui/CMakeLists.txt | 85 -
gr-wxgui/python/wxgui/__init__.py | 32 -
gr-wxgui/python/wxgui/common.py | 296 --
gr-wxgui/python/wxgui/const_window.py | 211 --
gr-wxgui/python/wxgui/constants.py | 76 -
gr-wxgui/python/wxgui/constsink_gl.py | 142 -
gr-wxgui/python/wxgui/fft_window.py | 412 ---
gr-wxgui/python/wxgui/fftsink2.py | 41 -
gr-wxgui/python/wxgui/fftsink_gl.py | 204 --
gr-wxgui/python/wxgui/fftsink_nongl.py | 656 ----
gr-wxgui/python/wxgui/form.py | 391 ---
gr-wxgui/python/wxgui/forms/__init__.py | 102 -
gr-wxgui/python/wxgui/forms/converters.py | 154 -
gr-wxgui/python/wxgui/forms/forms.py | 675 ----
gr-wxgui/python/wxgui/gui.py | 135 -
gr-wxgui/python/wxgui/histo_window.py | 168 -
gr-wxgui/python/wxgui/histosink_gl.py | 113 -
gr-wxgui/python/wxgui/number_window.py | 219 --
gr-wxgui/python/wxgui/numbersink2.py | 173 -
gr-wxgui/python/wxgui/plot.py | 1834 -----------
gr-wxgui/python/wxgui/plotter/__init__.py | 24 -
gr-wxgui/python/wxgui/plotter/bar_plotter.py | 150 -
gr-wxgui/python/wxgui/plotter/channel_plotter.py | 249 --
gr-wxgui/python/wxgui/plotter/common.py | 149 -
gr-wxgui/python/wxgui/plotter/gltext.py | 507 ---
gr-wxgui/python/wxgui/plotter/grid_plotter_base.py | 458 ---
gr-wxgui/python/wxgui/plotter/plotter_base.py | 220 --
gr-wxgui/python/wxgui/plotter/waterfall_plotter.py | 294 --
gr-wxgui/python/wxgui/powermate.py | 448 ---
gr-wxgui/python/wxgui/pubsub.py | 153 -
gr-wxgui/python/wxgui/scope_window.py | 691 ----
gr-wxgui/python/wxgui/scopesink2.py | 41 -
gr-wxgui/python/wxgui/scopesink_gl.py | 239 --
gr-wxgui/python/wxgui/scopesink_nongl.py | 654 ----
gr-wxgui/python/wxgui/slider.py | 48 -
gr-wxgui/python/wxgui/stdgui2.py | 107 -
gr-wxgui/python/wxgui/termsink.py | 77 -
gr-wxgui/python/wxgui/waterfall_window.py | 328 --
gr-wxgui/python/wxgui/waterfallsink2.py | 41 -
gr-wxgui/python/wxgui/waterfallsink_gl.py | 176 -
gr-wxgui/python/wxgui/waterfallsink_nongl.py | 434 ---
gr-wxgui/swig/CMakeLists.txt | 55 -
gr-wxgui/swig/wxgui_swig.i | 43 -
grc/blocks/CMakeLists.txt | 21 +-
grc/blocks/options.xml | 58 +-
grc/core/Block.py | 3 +-
grc/core/Constants.py | 3 +-
grc/core/Param.py | 64 +-
grc/core/generator/Generator.py | 4 -
grc/core/generator/flow_graph.tmpl | 53 +-
grc/gui/Colors.py | 3 -
grc/gui/MainWindow.py | 21 +-
314 files changed, 20578 insertions(+), 44791 deletions(-)
diff --cc grc/core/Block.py
index e7e4a82,de1d83e..9a1d72c
--- a/grc/core/Block.py
+++ b/grc/core/Block.py
@@@ -28,23 -22,26 +28,23 @@@ from six.moves import map, rang
from Cheetah.Template import Template
-from .utils import epy_block_io, odict
+from . import utils
+
from . Constants import (
- BLOCK_FLAG_NEED_QT_GUI, BLOCK_FLAG_NEED_WX_GUI,
+ BLOCK_FLAG_NEED_QT_GUI,
- ADVANCED_PARAM_TAB, DEFAULT_PARAM_TAB,
+ ADVANCED_PARAM_TAB,
BLOCK_FLAG_THROTTLE, BLOCK_FLAG_DISABLE_BYPASS,
BLOCK_FLAG_DEPRECATED,
- BLOCK_ENABLED, BLOCK_BYPASSED, BLOCK_DISABLED
)
-from . Element import Element
+from . Element import Element, lazy_property
-def _get_keys(lst):
- return [elem.get_key() for elem in lst]
-
-
-def _get_elem(lst, key):
- try:
- return lst[_get_keys(lst).index(key)]
- except ValueError:
- raise ValueError('Key "{}" not found in {}.'.format(key,
_get_keys(lst)))
+def _get_elem(iterable, key):
+ items = list(iterable)
+ for item in items:
+ if item.key == key:
+ return item
+ return ValueError('Key "{}" not found in {}.'.format(key, items))
class Block(Element):
@@@ -245,34 -275,79 +245,33 @@@
self.add_error_message("Can't generate this block in mode: {}
".format(
repr(current_generate_option)))
- check_generate_mode('WX GUI', BLOCK_FLAG_NEED_WX_GUI, ('wx_gui',))
check_generate_mode('QT GUI', BLOCK_FLAG_NEED_QT_GUI, ('qt_gui',
'hb_qt_gui'))
- if self._epy_reload_error:
-
self.get_param('_source_code').add_error_message(str(self._epy_reload_error))
-
- def rewrite(self):
- """
- Add and remove ports to adjust for the nports.
- """
- Element.rewrite(self)
- # Check and run any custom rewrite function for this block
- getattr(self, 'rewrite_' + self._key, lambda: None)()
-
- # Adjust nports, disconnect hidden ports
- for ports in (self.get_sources(), self.get_sinks()):
- for i, master_port in enumerate(ports):
- nports = master_port.get_nports() or 1
- num_ports = 1 + len(master_port.get_clones())
- if master_port.get_hide():
- for connection in master_port.get_connections():
- self.get_parent().remove_element(connection)
- if not nports and num_ports == 1: # Not a master port and no
left-over clones
- continue
- # Remove excess cloned ports
- for port in master_port.get_clones()[nports-1:]:
- # Remove excess connections
- for connection in port.get_connections():
- self.get_parent().remove_element(connection)
- master_port.remove_clone(port)
- ports.remove(port)
- # Add more cloned ports
- for j in range(num_ports, nports):
- port = master_port.add_clone()
- ports.insert(ports.index(master_port) + j, port)
- self.back_ofthe_bus(ports)
- # Renumber non-message/message ports
- domain_specific_port_index = collections.defaultdict(int)
- for port in filter(lambda p: p.get_key().isdigit(), ports):
- domain = port.get_domain()
- port._key = str(domain_specific_port_index[domain])
- domain_specific_port_index[domain] += 1
+ def _validate_var_value(self):
+ """or variables check the value (only if var_value is used)"""
+ if self.is_variable and self._var_value != '$value':
+ value = self._var_value
+ try:
+ value = self.get_var_value()
+ self.parent.evaluate(value)
+ except Exception as err:
+ self.add_error_message('Value "{}" cannot be
evaluated:\n{}'.format(value, err))
- def port_controller_modify(self, direction):
- """
- Change the port controller.
+ ##############################################
+ # props
+ ##############################################
- Args:
- direction: +1 or -1
+ @lazy_property
+ def is_throtteling(self):
+ return BLOCK_FLAG_THROTTLE in self.flags
- Returns:
- true for change
- """
- changed = False
- # Concat the nports string from the private nports settings of all
ports
- nports_str = ' '.join([port._nports for port in self.get_ports()])
- # Modify all params whose keys appear in the nports string
- for param in self.get_params():
- if param.is_enum() or param.get_key() not in nports_str:
- continue
- # Try to increment the port controller by direction
- try:
- value = param.get_evaluated()
- value = value + direction
- if 0 < value:
- param.set_value(value)
- changed = True
- except:
- pass
- return changed
+ @lazy_property
+ def is_deprecated(self):
+ return BLOCK_FLAG_DEPRECATED in self.flags
- def get_doc(self):
- platform = self.get_parent().get_parent()
- documentation = platform.block_docstrings.get(self._key, {})
+ @property
+ def documentation(self):
+ documentation = self.parent_platform.block_docstrings.get(self.key,
{})
from_xml = self._doc.strip()
if from_xml:
documentation[''] = from_xml
diff --cc grc/core/Constants.py
index 3941505,edd3442..caf301b
--- a/grc/core/Constants.py
+++ b/grc/core/Constants.py
@@@ -52,25 -48,18 +52,24 @@@ DEFAULT_DOMAIN = GR_STREAM_DOMAI
BLOCK_FLAG_THROTTLE = 'throttle'
BLOCK_FLAG_DISABLE_BYPASS = 'disable_bypass'
BLOCK_FLAG_NEED_QT_GUI = 'need_qt_gui'
- BLOCK_FLAG_NEED_WX_GUI = 'need_wx_gui'
BLOCK_FLAG_DEPRECATED = 'deprecated'
-# Block States
-BLOCK_DISABLED = 0
-BLOCK_ENABLED = 1
-BLOCK_BYPASSED = 2
-
# File creation modes
TOP_BLOCK_FILE_MODE = stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
stat.S_IRGRP | \
stat.S_IWGRP | stat.S_IXGRP | stat.S_IROTH
HIER_BLOCK_FILE_MODE = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP |
stat.S_IWGRP | stat.S_IROTH
+PARAM_TYPE_NAMES = (
+ 'raw', 'enum',
+ 'complex', 'real', 'float', 'int',
+ 'complex_vector', 'real_vector', 'float_vector', 'int_vector',
+ 'hex', 'string', 'bool',
+ 'file_open', 'file_save', '_multiline', '_multiline_python_external',
+ 'id', 'stream_id',
- 'grid_pos', 'notebook', 'gui_hint',
++ 'gui_hint',
+ 'import',
+)
+
# Define types, native python + numpy
VECTOR_TYPES = (tuple, list, set, numpy.ndarray)
COMPLEX_TYPES = [complex, numpy.complex, numpy.complex64, numpy.complex128]
diff --cc grc/core/Param.py
index 6d947c3,d0af979..31393b1
--- a/grc/core/Param.py
+++ b/grc/core/Param.py
@@@ -17,19 -17,20 +17,19 @@@ along with this program; if not, write
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
"""
+from __future__ import absolute_import
+
import ast
-import weakref
import re
+import collections
+
+from six.moves import builtins, filter, map, range, zip
from . import Constants
-from .Constants import VECTOR_TYPES, COMPLEX_TYPES, REAL_TYPES, INT_TYPES
-from .Element import Element
-from .utils import odict
+from .Element import Element, nop_write
# Blacklist certain ids, its not complete, but should help
- ID_BLACKLIST = ['self', 'options', 'gr', 'blks2', 'wxgui', 'wx', 'math',
'forms', 'firdes'] + dir(builtins)
-import __builtin__
-
-
-ID_BLACKLIST = ['self', 'options', 'gr', 'blks2', 'math', 'firdes'] +
dir(__builtin__)
++ID_BLACKLIST = ['self', 'options', 'gr', 'blks2', 'math', 'firdes'] +
dir(builtins)
try:
from gnuradio import gr
ID_BLACKLIST.extend(attr for attr in dir(gr.top_block()) if not
attr.startswith('_'))
diff --cc grc/core/generator/flow_graph.tmpl
index fd5546e,0597033..b8913bb
--- a/grc/core/generator/flow_graph.tmpl
+++ b/grc/core/generator/flow_graph.tmpl
@@@ -393,10 -374,10 +374,10 @@@ def main(top_block_cls=$(class_name), o
def quitting():
tb.stop()
tb.wait()
- qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
+ qapp.aboutToQuit.connect(quitting)
#for $m in $monitors
- if $m.has_param('en'):
- if $m.get_param('en').get_value():
+ if 'en' in $m.params:
+ if $m.params['en'].get_value():
(tb.$m.get_id()).start()
else:
sys.stderr.write("Monitor '{0}' does not have an enable ('en')
parameter.".format("tb.$m.get_id()"))
diff --cc grc/gui/Colors.py
index acc7f22,d322afa..01c461a
--- a/grc/gui/Colors.py
+++ b/grc/gui/Colors.py
@@@ -16,109 -16,35 +16,106 @@@ You should have received a copy of the
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
"""
-try:
- import pygtk
- pygtk.require('2.0')
- import gtk
-
- _COLORMAP = gtk.gdk.colormap_get_system() #create all of the colors
- def get_color(color_code): return _COLORMAP.alloc_color(color_code, True,
True)
-
- HIGHLIGHT_COLOR = get_color('#00FFFF')
- BORDER_COLOR = get_color('#444444')
- # missing blocks stuff
- MISSING_BLOCK_BACKGROUND_COLOR = get_color('#FFF2F2')
- MISSING_BLOCK_BORDER_COLOR = get_color('red')
- #param entry boxes
- PARAM_ENTRY_TEXT_COLOR = get_color('black')
- ENTRYENUM_CUSTOM_COLOR = get_color('#EEEEEE')
- #flow graph color constants
- FLOWGRAPH_BACKGROUND_COLOR = get_color('#FFFFFF')
- COMMENT_BACKGROUND_COLOR = get_color('#F3F3F3')
- FLOWGRAPH_EDGE_COLOR = COMMENT_BACKGROUND_COLOR
- #block color constants
- BLOCK_ENABLED_COLOR = get_color('#F1ECFF')
- BLOCK_DISABLED_COLOR = get_color('#CCCCCC')
- BLOCK_BYPASSED_COLOR = get_color('#F4FF81')
- #connection color constants
- CONNECTION_ENABLED_COLOR = get_color('black')
- CONNECTION_DISABLED_COLOR = get_color('#BBBBBB')
- CONNECTION_ERROR_COLOR = get_color('red')
-except:
- print 'Unable to import Colors'
-
-DEFAULT_DOMAIN_COLOR_CODE = '#777777'
+
+from __future__ import absolute_import
+
+from gi.repository import Gdk, cairo
+# import pycairo
+
+from . import Constants
+
+
+def _color_parse(color_code):
+ color = Gdk.RGBA()
+ color.parse(color_code)
+ return color
+
+
+def get_color(color_code):
+ color = _color_parse(color_code)
+ return color.red, color.green, color.blue, color.alpha
+ # chars_per_color = 2 if len(color_code) > 4 else 1
+ # offsets = range(1, 3 * chars_per_color + 1, chars_per_color)
+ # return tuple(int(color_code[o:o + 2], 16) / 255.0 for o in offsets)
+
+#################################################################################
+# fg colors
+#################################################################################
+
+HIGHLIGHT_COLOR = get_color('#00FFFF')
+BORDER_COLOR = get_color('#616161')
+BORDER_COLOR_DISABLED = get_color('#888888')
+FONT_COLOR = get_color('#000000')
+
+# Missing blocks stuff
+MISSING_BLOCK_BACKGROUND_COLOR = get_color('#FFF2F2')
+MISSING_BLOCK_BORDER_COLOR = get_color('#FF0000')
+
+# Flow graph color constants
+FLOWGRAPH_BACKGROUND_COLOR = get_color('#FFFFFF')
+COMMENT_BACKGROUND_COLOR = get_color('#F3F3F3')
+FLOWGRAPH_EDGE_COLOR = COMMENT_BACKGROUND_COLOR
+
+# Block color constants
+BLOCK_ENABLED_COLOR = get_color('#F1ECFF')
+BLOCK_DISABLED_COLOR = get_color('#CCCCCC')
+BLOCK_BYPASSED_COLOR = get_color('#F4FF81')
+
+# Connection color constants
+CONNECTION_ENABLED_COLOR = get_color('#000000')
+CONNECTION_DISABLED_COLOR = get_color('#BBBBBB')
+CONNECTION_ERROR_COLOR = get_color('#FF0000')
+
+DEFAULT_DOMAIN_COLOR = get_color('#777777')
+
+
+#################################################################################
+# port colors
+#################################################################################
+
+PORT_TYPE_TO_COLOR = {key: get_color(color) for name, key, sizeof, color in
Constants.CORE_TYPES}
+PORT_TYPE_TO_COLOR.update((key, get_color(color)) for key, (_, color) in
Constants.ALIAS_TYPES.items())
+
+
+#################################################################################
+# param box colors
+#################################################################################
+COMPLEX_COLOR_SPEC = _color_parse('#3399FF')
+FLOAT_COLOR_SPEC = _color_parse('#FF8C69')
+INT_COLOR_SPEC = _color_parse('#00FF99')
+SHORT_COLOR_SPEC = _color_parse('#FFFF66')
+BYTE_COLOR_SPEC = _color_parse('#FF66FF')
+
+ID_COLOR_SPEC = _color_parse('#DDDDDD')
+WILDCARD_COLOR_SPEC = _color_parse('#FFFFFF')
+
+COMPLEX_VECTOR_COLOR_SPEC = _color_parse('#3399AA')
+FLOAT_VECTOR_COLOR_SPEC = _color_parse('#CC8C69')
+INT_VECTOR_COLOR_SPEC = _color_parse('#00CC99')
+SHORT_VECTOR_COLOR_SPEC = _color_parse('#CCCC33')
+BYTE_VECTOR_COLOR_SPEC = _color_parse('#CC66CC')
+
+PARAM_ENTRY_COLORS = {
-
+ # Number types
+ 'complex': COMPLEX_COLOR_SPEC,
+ 'real': FLOAT_COLOR_SPEC,
+ 'float': FLOAT_COLOR_SPEC,
+ 'int': INT_COLOR_SPEC,
+
+ # Vector types
+ 'complex_vector': COMPLEX_VECTOR_COLOR_SPEC,
+ 'real_vector': FLOAT_VECTOR_COLOR_SPEC,
+ 'float_vector': FLOAT_VECTOR_COLOR_SPEC,
+ 'int_vector': INT_VECTOR_COLOR_SPEC,
+
+ # Special
+ 'bool': INT_COLOR_SPEC,
+ 'hex': INT_COLOR_SPEC,
+ 'string': BYTE_VECTOR_COLOR_SPEC,
+ 'id': ID_COLOR_SPEC,
+ 'stream_id': ID_COLOR_SPEC,
- 'grid_pos': INT_VECTOR_COLOR_SPEC,
- 'notebook': INT_VECTOR_COLOR_SPEC,
+ 'raw': WILDCARD_COLOR_SPEC,
+}
+
+PARAM_ENTRY_DEFAULT_COLOR = _color_parse('#FFFFFF')
+PARAM_ENTRY_ENUM_CUSTOM_COLOR = _color_parse('#EEEEEE')
- [Commit-gnuradio] [gnuradio] 11/101: grc: py3k compat using python-modernize, (continued)
- [Commit-gnuradio] [gnuradio] 11/101: grc: py3k compat using python-modernize, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 75/101: grc: gtk3: rewrite file dialogs and support multiple extentions for screenshots, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 70/101: grc: gtk3: fancier coloring for disabled and bypassed blocks, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 83/101: grc: refactor: Cleaned up imports, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 88/101: grc: gtk3: fix multi-block move, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 91/101: grc: gtk3: fix canvas extent after zooming, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 100/101: grc: gtk minor fixes, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 01/101: grc: Main window opens with pygobject and gtk3. Still throws tons of errors., git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 72/101: Merge remote-tracking branch 'upstream/next' into gtk3, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 71/101: grc: gtk3: fixup dialogs, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 78/101: Merge remote-tracking branch 'upstream/next' into gtk3,
git <=
- [Commit-gnuradio] [gnuradio] 79/101: grc: refactor: move drawables in subpackage, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 95/101: grc: gtk3: curved connections, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 82/101: grc: gtk3: Converted to Gtk.Application (ActionHandler) and Gtk.ApplicationWindow (MainWindow), git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 96/101: grc: gtk3: invalid connection all red, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 90/101: Merge remote-tracking branch 'upstream/next' into gtk3, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 97/101: grc: gtk3: drag to connect, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 84/101: grc: refactor: Moved preferences to Config.py, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 101/101: Merge branch 'gtk3' into python3, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 47/101: grc: refactor: Port, Param, Options init clean-up, git, 2017/03/16
- [Commit-gnuradio] [gnuradio] 89/101: Merge remote-tracking branch 'upstream/next' into gtk3, git, 2017/03/16