Håkon Vågsether ee6fc4a419 grc: Add GRC Qt
Signed-off-by: Håkon Vågsether <hakon.vagsether@gmail.com>
2024-03-15 15:11:27 -04:00

70 lines
2.3 KiB
Python

#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()}