diff --git a/config/imaging/asd.json b/config/imaging/asd.json deleted file mode 100644 index 78eaa8f..0000000 --- a/config/imaging/asd.json +++ /dev/null @@ -1 +0,0 @@ -{"t_start": 21, "t_end": 838} \ No newline at end of file diff --git a/config/imaging/asdads.json b/config/imaging/asdads.json deleted file mode 100644 index 3cab43d..0000000 --- a/config/imaging/asdads.json +++ /dev/null @@ -1 +0,0 @@ -{"t_start": 0, "t_end": 1499} \ No newline at end of file diff --git a/dev.py b/dev.py index 5ae3341..74a9c44 100644 --- a/dev.py +++ b/dev.py @@ -3,17 +3,27 @@ import sys import subprocess from pathlib import Path +import click + sys.argv.append('--dev') import flandre from flandre.launcher import launch_from_file +from flandre.config import C -def main(): +@click.command() +@click.option('--data_folder', default=None) +@click.option('--generate_pyqt', default=True) +@click.option('--dev', default=True, is_flag=True) +def main(data_folder, generate_pyqt, dev): if (pyuic6 := shutil.which('pyuic6')) is None: print('pyuic6 is not installed') return - subprocess.run([pyuic6, '-o', flandre.PYQT / 'Main.py', flandre.PYQT / 'Main.ui']) + if generate_pyqt: + subprocess.run([pyuic6, '-o', flandre.PYQT / 'Main.py', flandre.PYQT / 'Main.ui']) + if data_folder is not None: + C.data_folder = Path(data_folder) launch_from_file(Path(__file__).parent / 'dev.toml') diff --git a/dev.toml b/dev.toml index 23b5cd0..3837505 100644 --- a/dev.toml +++ b/dev.toml @@ -1,2 +1,9 @@ [MainUI] [ImageCV] +[Muxer] +[Loader] +[Beamformer] +#[ImageFFMPEG] + +#[Robot] +#[Device] diff --git a/flandre/config.py b/flandre/config.py index 0e56b40..6da7eb9 100644 --- a/flandre/config.py +++ b/flandre/config.py @@ -88,22 +88,25 @@ class SoftwareConfig: j = json.loads(path.read_text(encoding='utf-8')) arg_d = dict() for field in dataclasses.fields(SoftwareConfig): + v = j[field.name] match field.type: case Path(): - arg_d[field.name] = Path(j[field.name]) + arg_d[field.name] = Path(v) case _: - arg_d[field.name] = j[field.name] + arg_d[field.name] = v sc = SoftwareConfig(**arg_d) return sc def write_config(self): arg_d = dict() for field in dataclasses.fields(SoftwareConfig): - match field.type: + v = self.__getattribute__(field.name) + match v: case Path(): - arg_d[field.name] = str(self.__getattribute__(field.name)) + arg_d[field.name] = str(v) case _: - arg_d[field.name] = self.__getattribute__(field.name) + arg_d[field.name] = v + SOFTWARE_CONFIG_PATH.parent.mkdir(exist_ok=True, parents=True) SOFTWARE_CONFIG_PATH.write_text(json.dumps(arg_d, indent=4), encoding='utf-8') diff --git a/flandre/kde_pyqt6_mainui.py b/flandre/kde_pyqt6_mainui.py index 8bc09cb..3b46e4a 100644 --- a/flandre/kde_pyqt6_mainui.py +++ b/flandre/kde_pyqt6_mainui.py @@ -1,24 +1,33 @@ import logging import os import subprocess +import sys from pathlib import Path from PyQt6 import QtWidgets import flandre +from flandre.config import C from flandre.nodes.MainUI import MainUI def kde_pyqt6_mainui(): - subprocess.run(['python', __file__], + subprocess.run(['python', __file__, *sys.argv[1:]], env=dict(XDG_CURRENT_DESKTOP="KDE", XDG_RUNTIME_DIR="/run/user/1000", XDG_SESSION_TYPE="wayland", - PYTHONPATH=os.environ.get('PYTHONPATH', flandre.MODULE_FOLDER.parent), ) + PYTHONPATH=os.environ.get('PYTHONPATH', flandre.MODULE_FOLDER.parent)) ) if __name__ == '__main__': - print(QtWidgets.QStyleFactory.keys()) + if '--dev' in sys.argv: + print('qt styles:',QtWidgets.QStyleFactory.keys()) + try: + idx = sys.argv.index('--data_folder') + C.data_folder = Path(sys.argv[idx + 1]) + except ValueError: + pass + logging.basicConfig(level=logging.INFO) MainUI()() diff --git a/flandre/nodes/MainUI.py b/flandre/nodes/MainUI.py index b1be164..b8dbc30 100644 --- a/flandre/nodes/MainUI.py +++ b/flandre/nodes/MainUI.py @@ -67,6 +67,10 @@ class Adv(QMainWindow, Ui_MainWindow): super(Adv, self).__init__(parent) self.p = p self.setupUi(self) + + # set default folder + self.l_base.setText(C.data_folder.__str__()) + self.device_switch_state: LinkStatus = LinkStatus.RED icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(str(ASSETS / 'switch_button.png'))) @@ -100,7 +104,6 @@ class Adv(QMainWindow, Ui_MainWindow): # self.b_device_connected.clicked.connect(lambda: self.p.send(SetDeviceConnectedMsg(not self.device_connected))) # self.c_live_seq_name.currentIndexChanged.connect(self.on_seq_meta) self.b_live_seq_apply.clicked.connect(self.on_seq_meta) - self.l_base.setText(C.data_folder.__str__()) self.l_base.textChanged.connect(lambda e: self.l_base.setStyleSheet("") if Path(e).exists() else @@ -450,7 +453,7 @@ class Adv(QMainWindow, Ui_MainWindow): if msg.name == 'bscan' and msg.sender != 'ui': self.cb_bscan.setChecked(msg.value) elif isinstance(msg, ImagingConfigNameListMsg): - print(msg, flush=True) + # print(msg, flush=True) todo fix self.c_imaging_config.clear() for name in msg.value: self.c_imaging_config.addItem(name) diff --git a/test/testpy.py b/test/testpy.py index 5262b96..e0c3cda 100644 --- a/test/testpy.py +++ b/test/testpy.py @@ -1,6 +1,8 @@ import dataclasses import inspect +import sys from enum import Enum +from pathlib import Path, PosixPath @dataclasses.dataclass @@ -18,10 +20,28 @@ class EE(Enum): x=1 if __name__ == '__main__': + print(sys.argv) # print(dir(ASD())) # print(ASD.__dict__) # print(inspect.getmembers(ASD)) # print(inspect.getmembers(ASD)) # for f in dataclasses.fields(ASD): # print(f.name, f.type) - print(EE.asd.value()) \ No newline at end of file + p = Path('asd') + pt = type(p) + print(pt) + print(pt.__name__) + print(type(type(p))) + match pt: + case _x if isinstance(_x, PosixPath): + print(-2) + case type(__name__='PosixPath'): + print(-1) + case type(): + print(0) + case Path(): + print(1) + case PosixPath(): + print(3) + case _: + print(2)