#TODO: This file is a modified copy of the old gui/Platform.py """ Copyright 2008, 2009 Free Software Foundation, Inc. This file is part of GNU Radio SPDX-License-Identifier: GPL-2.0-or-later """ import sys import os from collections import ChainMap from .Config import Config from .components.canvas.flowgraph import Flowgraph from .components.canvas.block import Block from .components.canvas.port import Port from .components.canvas.connection import Connection from ..core.platform import Platform as CorePlatform class Platform(CorePlatform): def __init__(self, *args, **kwargs): CorePlatform.__init__(self, *args, **kwargs) # Ensure conf directories gui_prefs_file = self.config.gui_prefs_file if not os.path.exists(os.path.dirname(gui_prefs_file)): os.mkdir(os.path.dirname(gui_prefs_file)) self._move_old_pref_file() def get_prefs_file(self): return self.config.gui_prefs_file def _move_old_pref_file(self): gui_prefs_file = self.config.gui_prefs_file old_gui_prefs_file = os.environ.get( 'GRC_PREFS_PATH', os.path.expanduser('~/.grc')) if gui_prefs_file == old_gui_prefs_file: return # prefs file overridden with env var if os.path.exists(old_gui_prefs_file) and not os.path.exists(gui_prefs_file): try: import shutil shutil.move(old_gui_prefs_file, gui_prefs_file) except Exception as e: print(e, file=sys.stderr) ############################################## # Factories ############################################## Config = Config FlowGraph = Flowgraph Connection = Connection def new_block_class(self, **data): cls = CorePlatform.new_block_class(self, **data) return Block.make_cls_with_base(cls) block_classes_build_in = {key: Block.make_cls_with_base(cls) for key, cls in CorePlatform.block_classes_build_in.items()} block_classes = ChainMap({}, block_classes_build_in) port_classes = {key: Port.make_cls_with_base(cls) for key, cls in CorePlatform.port_classes.items()} #param_classes = {key: Param.make_cls_with_base(cls) # for key, cls in CorePlatform.param_classes.items()}