diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2015-08-04 11:43:06 +0200 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2015-09-21 16:17:06 +0200 |
commit | 8586a1faa144a32b87972e4890a54bcbec718338 (patch) | |
tree | 762cb58f56c7eb02fccace3fb84d69fad9b6dd50 /grc/scripts | |
parent | a03893d51553eb74ac348ee88d4dd879b0a253c8 (diff) |
grc: defer check for gtk init until after arg parsing
Diffstat (limited to 'grc/scripts')
-rwxr-xr-x | grc/scripts/gnuradio-companion | 64 |
1 files changed, 33 insertions, 31 deletions
diff --git a/grc/scripts/gnuradio-companion b/grc/scripts/gnuradio-companion index 77345bed1a..203a8c773d 100755 --- a/grc/scripts/gnuradio-companion +++ b/grc/scripts/gnuradio-companion @@ -23,15 +23,6 @@ import sys import optparse import warnings -import pygtk -pygtk.require('2.0') - -warnings.filterwarnings("error") -try: - import gtk -except: - sys.exit("Failed to import gtk. If you are running over ssh, did you enable X forwarding and start ssh with -X?") -warnings.filterwarnings("always") GR_IMPORT_ERROR_MESSAGE = """\ Cannot import gnuradio. @@ -54,36 +45,46 @@ This is free software, and you are welcome to redistribute it. """ -def show_gtk_error_dialog(title, message): - d = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_CLOSE, - message_format=message) - d.set_title(title) - d.run() +def die(error, message): + msg = "{0}\n\n({1})".format(message, error) + try: + import gtk + d = gtk.MessageDialog( + type=gtk.MESSAGE_ERROR, + buttons=gtk.BUTTONS_CLOSE, + message_format=msg, + ) + d.set_title(type(error).__name__) + d.run() + exit(1) + except ImportError: + exit(type(error).__name__ + '\n\n' + msg) -def check_gtk_init(): +def check_gtk(): try: + warnings.filterwarnings("error") + import pygtk + pygtk.require('2.0') + import gtk gtk.init_check() - except RuntimeError: - print 'GTK initialization failed - bailing' - exit(-1) + warnings.filterwarnings("always") + except Exception as err: + die(err, "Failed to initialize GTK. If you are running over ssh, " + "did you enable X forwarding and start ssh with -X?") def check_gnuradio_import(): try: from gnuradio import gr - except ImportError as e: - show_gtk_error_dialog(str(e), GR_IMPORT_ERROR_MESSAGE) - exit(-1) + except ImportError as err: + die(err, GR_IMPORT_ERROR_MESSAGE) -def ensure_blocks_path(): +def check_blocks_path(): if 'GR_DONT_LOAD_PREFS' in os.environ and not os.environ.get('GRC_BLOCKS_PATH', ''): - show_gtk_error_dialog( - title="No block definitions available.", - message="Can't find block definitions. Use config.conf or GRC_BLOCKS_PATH." - ) - exit(-1) + die(EnvironmentError("No block definitions available"), + "Can't find block definitions. Use config.conf or GRC_BLOCKS_PATH.") def get_source_tree_root(): @@ -94,13 +95,16 @@ def get_source_tree_root(): def main(): - from gnuradio import gr + check_gnuradio_import() + from gnuradio import gr parser = optparse.OptionParser( usage='usage: %prog [options] [saved flow graphs]', version=VERSION_AND_DISCLAIMER_TEMPLATE % gr.version()) options, args = parser.parse_args() + check_gtk() + check_blocks_path() source_tree_root = get_source_tree_root() if not source_tree_root: # run the installed version @@ -114,6 +118,7 @@ def main(): from grc.gui.ActionHandler import ActionHandler try: + import gtk gtk.window_set_default_icon(gtk.IconTheme().load_icon('gnuradio-grc', 256, 0)) except: pass @@ -122,7 +127,4 @@ def main(): if __name__ == '__main__': - check_gtk_init() - check_gnuradio_import() - ensure_blocks_path() main() |