From dc961dfd0c8d62101af09f7a5c94432517882454 Mon Sep 17 00:00:00 2001 From: Ramz Date: Sat, 6 Jul 2024 18:35:59 +0200 Subject: [PATCH 1/5] Added an Exporter button --- .../gui/components/accordion.py | 5 ++- src/fft_analysator/gui/components/exporter.py | 41 +++++++++++++++++++ .../gui/controllers/app_controller.py | 1 - 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/fft_analysator/gui/components/exporter.py diff --git a/src/fft_analysator/gui/components/accordion.py b/src/fft_analysator/gui/components/accordion.py index cebea4c..513eaaa 100644 --- a/src/fft_analysator/gui/components/accordion.py +++ b/src/fft_analysator/gui/components/accordion.py @@ -10,6 +10,7 @@ from fft_analysator.gui.components.generator_navigator import GeneratorNavigator from fft_analysator.gui.components.blocksize_selector import BlocksizeSelector from fft_analysator.gui.components.channel_selector import ChannelSelector +from fft_analysator.gui.components.exporter import FileExporter class Accordion: @@ -27,6 +28,7 @@ def __init__(self): self.blocksize_selector = BlocksizeSelector() self.channel_selector_input = ChannelSelector() self.channel_selector_output = ChannelSelector() + self.file_exporter = FileExporter() self.accordion = pn.Accordion # Initially hide the color picker @@ -42,8 +44,9 @@ def __init__(self): pn.Row(pn.widgets.StaticText(name='Stretch plot', value='', margin=(0,15)), # noqa: E501 self.stretching_switch.component))), ('Calculation', self.calculation_menu.component), + ('Export',self.file_exporter.component), sizing_mode='stretch_width') - +# Hier noch ein Dropdown Menu für die Extension. @property def component(self): diff --git a/src/fft_analysator/gui/components/exporter.py b/src/fft_analysator/gui/components/exporter.py new file mode 100644 index 0000000..dd9a17f --- /dev/null +++ b/src/fft_analysator/gui/components/exporter.py @@ -0,0 +1,41 @@ +import panel as pn +import numpy as np +from tkinter import Tk, filedialog +import os +class FileExporter: + def __init__(self): + self.file_input_button = pn.widgets.Button + self._component = self.file_input_button(name="Export", margin=(20, 0, 10, 10)) + self.dir_path = None + + # Reference müssen rein. + self.chn1 = None + self.chn2 = None + self.method = None + self.ext = None + self.data = None + pn.bind(self.select_directory, self._component, watch=True) + + def select_directory(self, event): + root = Tk() + root.withdraw() + root.call('wm', 'attributes', '.', '-topmost', True) + dir = filedialog.askdirectory(initialdir=os.getcwd()) + # Hier muss Code rein damit alle Attribute die aktuellen Werte gesetzt werden. + # Exporter kommt da rein wo der Channel_selecetor geupdated wird (handle_sidebar_event) + if dir: + self.dir_path = dir + self.export(self.dir_path, self.data, self.ext, self.chn1, self.chn2, self.method) + else: + self.dir_path = None + root.destroy() + + def export(self, dir, data, ext, chn1, chn2, method): + file_name = str(dir) + "/" + str(method) + "_" + str(chn1) + "_" + str(chn2) + if ext == "Numpy": + np.save(file_name, data) + if ext == "Binary": + data.astype(np.int64).tofile(file_name) + @property + def component(self): + return self._component diff --git a/src/fft_analysator/gui/controllers/app_controller.py b/src/fft_analysator/gui/controllers/app_controller.py index 5bd55a5..75f313b 100644 --- a/src/fft_analysator/gui/controllers/app_controller.py +++ b/src/fft_analysator/gui/controllers/app_controller.py @@ -63,7 +63,6 @@ def handle_sidebar_event(self, event): and self.sidebar.accordion.channel_selector_output.component.value is not None): # Update the color picker self.sidebar.update_color_picker() - # Update signal self.main_view.update_signal( self.preprocessing, From ac0419a21b19884adaf2517ee0e73c50e3a1567f Mon Sep 17 00:00:00 2001 From: Ramz Date: Sat, 6 Jul 2024 18:35:59 +0200 Subject: [PATCH 2/5] Added an Exporter button --- .../gui/components/accordion.py | 5 ++- src/fft_analysator/gui/components/exporter.py | 41 +++++++++++++++++++ .../gui/controllers/app_controller.py | 1 - 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/fft_analysator/gui/components/exporter.py diff --git a/src/fft_analysator/gui/components/accordion.py b/src/fft_analysator/gui/components/accordion.py index 0e8e739..cfa32b8 100644 --- a/src/fft_analysator/gui/components/accordion.py +++ b/src/fft_analysator/gui/components/accordion.py @@ -10,6 +10,7 @@ from fft_analysator.gui.components.generator_navigator import GeneratorNavigator from fft_analysator.gui.components.blocksize_selector import BlocksizeSelector from fft_analysator.gui.components.channel_selector import ChannelSelector +from fft_analysator.gui.components.exporter import FileExporter class Accordion: @@ -28,6 +29,7 @@ def __init__(self): self.blocksize_selector = BlocksizeSelector() self.channel_selector_input = ChannelSelector() self.channel_selector_output = ChannelSelector() + self.file_exporter = FileExporter() self.accordion = pn.Accordion # Set default colors @@ -49,8 +51,9 @@ def __init__(self): pn.Row(pn.widgets.StaticText(name='Stretch plot', value='', margin=(0,15)), # noqa: E501 self.stretching_switch.component))), ('Calculation', self.calculation_menu.component), + ('Export',self.file_exporter.component), sizing_mode='stretch_width') - +# Hier noch ein Dropdown Menu für die Extension. @property def component(self): diff --git a/src/fft_analysator/gui/components/exporter.py b/src/fft_analysator/gui/components/exporter.py new file mode 100644 index 0000000..dd9a17f --- /dev/null +++ b/src/fft_analysator/gui/components/exporter.py @@ -0,0 +1,41 @@ +import panel as pn +import numpy as np +from tkinter import Tk, filedialog +import os +class FileExporter: + def __init__(self): + self.file_input_button = pn.widgets.Button + self._component = self.file_input_button(name="Export", margin=(20, 0, 10, 10)) + self.dir_path = None + + # Reference müssen rein. + self.chn1 = None + self.chn2 = None + self.method = None + self.ext = None + self.data = None + pn.bind(self.select_directory, self._component, watch=True) + + def select_directory(self, event): + root = Tk() + root.withdraw() + root.call('wm', 'attributes', '.', '-topmost', True) + dir = filedialog.askdirectory(initialdir=os.getcwd()) + # Hier muss Code rein damit alle Attribute die aktuellen Werte gesetzt werden. + # Exporter kommt da rein wo der Channel_selecetor geupdated wird (handle_sidebar_event) + if dir: + self.dir_path = dir + self.export(self.dir_path, self.data, self.ext, self.chn1, self.chn2, self.method) + else: + self.dir_path = None + root.destroy() + + def export(self, dir, data, ext, chn1, chn2, method): + file_name = str(dir) + "/" + str(method) + "_" + str(chn1) + "_" + str(chn2) + if ext == "Numpy": + np.save(file_name, data) + if ext == "Binary": + data.astype(np.int64).tofile(file_name) + @property + def component(self): + return self._component diff --git a/src/fft_analysator/gui/controllers/app_controller.py b/src/fft_analysator/gui/controllers/app_controller.py index 0a8e169..a64f30c 100644 --- a/src/fft_analysator/gui/controllers/app_controller.py +++ b/src/fft_analysator/gui/controllers/app_controller.py @@ -69,7 +69,6 @@ def handle_sidebar_event(self, event): # Update the color picker self.sidebar.update_color_picker() - # Update signal self.main_view.update_signal( self.preprocessing, From 21aef194a342a725ea2bb6da6d1717bcf58bf7cb Mon Sep 17 00:00:00 2001 From: Ramz Date: Wed, 10 Jul 2024 18:56:59 +0200 Subject: [PATCH 3/5] Added an Exporter Menu and Export button. Data insertion is still missing --- .../gui/components/accordion.py | 12 +++---- src/fft_analysator/gui/components/exporter.py | 33 +++++++++---------- .../gui/components/exporter_menu.py | 25 ++++++++++++++ .../gui/controllers/app_controller.py | 16 +++++++-- src/fft_analysator/gui/views/sidebar.py | 7 ++-- 5 files changed, 65 insertions(+), 28 deletions(-) create mode 100644 src/fft_analysator/gui/components/exporter_menu.py diff --git a/src/fft_analysator/gui/components/accordion.py b/src/fft_analysator/gui/components/accordion.py index 89cd849..10a63a1 100644 --- a/src/fft_analysator/gui/components/accordion.py +++ b/src/fft_analysator/gui/components/accordion.py @@ -13,6 +13,7 @@ from fft_analysator.gui.components.window_menu import Window_MenuButton from fft_analysator.gui.components.overlap_menu import Overlap_MenuButton from fft_analysator.gui.components.exporter import FileExporter +from fft_analysator.gui.components.exporter_menu import Exporter_MenuButton class Accordion: @@ -34,6 +35,7 @@ def __init__(self): self.window_menu = Window_MenuButton() self.overlap_menu = Overlap_MenuButton() self.file_exporter = FileExporter() + self.exporter_menu = Exporter_MenuButton() self.accordion = pn.Accordion # Set default colors @@ -62,13 +64,9 @@ def __init__(self): self.stretching_switch.component))), ('Calculation', pn.Column(pn.Row(self.window_menu.component, - self.overlap_menu.component),self.calculation_menu.component) - ), sizing_mode='stretch_width') - - ('Calculation', self.calculation_menu.component), - ('Export',self.file_exporter.component), - sizing_mode='stretch_width') -# Hier noch ein Dropdown Menu für die Extension. + self.overlap_menu.component),self.calculation_menu.component)), + ('Export', pn.Column(self.exporter_menu.component,self.file_exporter.component)), + sizing_mode='stretch_width') @property def component(self): diff --git a/src/fft_analysator/gui/components/exporter.py b/src/fft_analysator/gui/components/exporter.py index dd9a17f..87b1dcd 100644 --- a/src/fft_analysator/gui/components/exporter.py +++ b/src/fft_analysator/gui/components/exporter.py @@ -5,37 +5,36 @@ class FileExporter: def __init__(self): self.file_input_button = pn.widgets.Button - self._component = self.file_input_button(name="Export", margin=(20, 0, 10, 10)) + self._component = self.file_input_button(name='\U0001F4BE ' 'Save and Export', margin=(10, 0, 10, 10), width=150) self.dir_path = None # Reference müssen rein. - self.chn1 = None - self.chn2 = None - self.method = None - self.ext = None - self.data = None - pn.bind(self.select_directory, self._component, watch=True) + #self.chn1 = None + #self.chn2 = None + #self.method = None + #self.ext = None + #self.data = None + #pn.bind(self.select_directory, self._component, watch=True) - def select_directory(self, event): + def select_directory(self, event, data, chn1, chn2, method, ext): root = Tk() root.withdraw() root.call('wm', 'attributes', '.', '-topmost', True) dir = filedialog.askdirectory(initialdir=os.getcwd()) - # Hier muss Code rein damit alle Attribute die aktuellen Werte gesetzt werden. - # Exporter kommt da rein wo der Channel_selecetor geupdated wird (handle_sidebar_event) + method = method.replace(" ", "_") + print(ext) if dir: self.dir_path = dir - self.export(self.dir_path, self.data, self.ext, self.chn1, self.chn2, self.method) + file_name = str(dir) + "/" + str(method) + "_" + str(chn1) + "_" + str(chn2) + print(file_name) + if ext == "Numpy Array": + np.save(file_name, data) + if ext == "Binary": + data.astype(np.int64).tofile(file_name) else: self.dir_path = None root.destroy() - def export(self, dir, data, ext, chn1, chn2, method): - file_name = str(dir) + "/" + str(method) + "_" + str(chn1) + "_" + str(chn2) - if ext == "Numpy": - np.save(file_name, data) - if ext == "Binary": - data.astype(np.int64).tofile(file_name) @property def component(self): return self._component diff --git a/src/fft_analysator/gui/components/exporter_menu.py b/src/fft_analysator/gui/components/exporter_menu.py new file mode 100644 index 0000000..6f1bdc8 --- /dev/null +++ b/src/fft_analysator/gui/components/exporter_menu.py @@ -0,0 +1,25 @@ +import panel as pn + +from tkinter import Tk, filedialog +import os + +class Exporter_MenuButton: + def __init__(self): + self.file_items = ['Numpy Array', 'Binary'] + self.export_menu = pn.widgets.MenuButton(name="Extension", icon="file", items=self.file_items, width=300, button_type="default") + + self._component = pn.Column(pn.Row( + self.export_menu, + height = 30, + sizing_mode='stretch_width' + ), + pn.layout.Divider(margin=(5, 0, 5, 0)), + pn.bind(self.handle_selection, self.export_menu.param.clicked) + ) + + def handle_selection(self, clicked): + return f'The current Extension is: "{clicked}"' + + @property + def component(self): + return self._component diff --git a/src/fft_analysator/gui/controllers/app_controller.py b/src/fft_analysator/gui/controllers/app_controller.py index 967476a..e28d09e 100644 --- a/src/fft_analysator/gui/controllers/app_controller.py +++ b/src/fft_analysator/gui/controllers/app_controller.py @@ -1,7 +1,9 @@ import holoviews as hv import panel as pn +import numpy as np import fft_analysator.analysis.preprocessing as pp +import fft_analysator.analysis.signal_processing as sp from fft_analysator.gui.views.main_view import MainView from fft_analysator.gui.views.sidebar import Sidebar from fft_analysator.analysis.plotting import Plotter @@ -17,7 +19,8 @@ def __init__(self): self.main_view = MainView() self.current_method = 'No Analysis Function' self.sidebar = Sidebar(self.handle_fileupload_event, self.handle_sidebar_event, self.handle_table_choose_event, - self.handle_intslider_event, self.handle_blocksize_selector_event, self.handle_update_analysis_event) + self.handle_intslider_event, self.handle_blocksize_selector_event, self.handle_update_analysis_event, + self.handle_export_event) # Initialization of panel extensions and template self.template_layout = pn.template.FastListTemplate(title="FFT-Analysator", @@ -62,7 +65,6 @@ def handle_sidebar_event(self, event): or event.obj == self.sidebar.accordion.color_picker_result.component or event.obj == self.sidebar.accordion.channel_selector_input.component or event.obj == self.sidebar.accordion.channel_selector_output.component - or event.obj == self.sidebar.accordion.calculation_menu.signal_menu.clicked or event.obj == self.sidebar.accordion.overlap_menu.overlap_menu.clicked or event.obj == self.sidebar.accordion.window_menu.window_menu.clicked @@ -233,6 +235,16 @@ def handle_update_analysis_event(self, event): self.sidebar.accordion.overlap_menu.overlap_menu.clicked, ) + def handle_export_event(self, event): + if (event.obj == self.sidebar.accordion.file_exporter.component): + + sig_pro = sp.Signal_Process() + self.sidebar.accordion.file_exporter.select_directory(event,np.array([1,2,3,4,5]), + self.sidebar.accordion.channel_selector_input.component.value, + self.sidebar.accordion.channel_selector_output.component.value, + self.sidebar.accordion.calculation_menu.signal_menu.clicked, + self.sidebar.accordion.exporter_menu.export_menu.clicked) + def servable(self): # Serve app layout self.template_layout.servable() diff --git a/src/fft_analysator/gui/views/sidebar.py b/src/fft_analysator/gui/views/sidebar.py index 9b24bdb..7517854 100644 --- a/src/fft_analysator/gui/views/sidebar.py +++ b/src/fft_analysator/gui/views/sidebar.py @@ -6,12 +6,12 @@ class Sidebar: def __init__(self, callback_fileupload=None, callback=None, callback_table_chooser=None, callback_intslider=None, - callback_block_selector=None, callback_analysis_event=None): + callback_block_selector=None, callback_analysis_event=None, callback_exporter_event=None): self.accordion = Accordion() self.layout = self.accordion.component - if callback or callback_fileupload or callback_table_chooser or callback_analysis_event: + if callback or callback_fileupload or callback_table_chooser or callback_analysis_event or callback_exporter_event: self.accordion.file_input.component.param.watch(callback_fileupload, "value") self.accordion.stretching_switch.component.param.watch(callback, "value") self.accordion.channel_selector_input.component.param.watch(callback, "value") @@ -25,6 +25,9 @@ def __init__(self, callback_fileupload=None, callback=None, callback_table_choos self.accordion.calculation_menu.signal_menu.param.watch(callback_analysis_event, "clicked") self.accordion.overlap_menu.overlap_menu.param.watch(callback_analysis_event, "clicked") self.accordion.window_menu.window_menu.param.watch(callback_analysis_event, "clicked") + self.accordion.file_exporter.component.param.watch(callback_exporter_event, "value") + + def update_channel_selector(self, data_callback=None): From 1938b0c84311531da76f127261e2081a8f2dc243 Mon Sep 17 00:00:00 2001 From: Ramz Date: Wed, 10 Jul 2024 19:38:56 +0200 Subject: [PATCH 4/5] Added export function with data. Only works with Cross spectral density right now --- .../gui/components/accordion.py | 6 ++--- .../gui/components/exporter_menu.py | 25 ------------------- .../gui/components/exporter_selector.py | 11 ++++++++ .../gui/controllers/app_controller.py | 17 ++++++++++--- 4 files changed, 27 insertions(+), 32 deletions(-) delete mode 100644 src/fft_analysator/gui/components/exporter_menu.py create mode 100644 src/fft_analysator/gui/components/exporter_selector.py diff --git a/src/fft_analysator/gui/components/accordion.py b/src/fft_analysator/gui/components/accordion.py index ac7075f..ef329ef 100644 --- a/src/fft_analysator/gui/components/accordion.py +++ b/src/fft_analysator/gui/components/accordion.py @@ -13,7 +13,7 @@ from fft_analysator.gui.components.window_selector import WindowSelector from fft_analysator.gui.components.overlap_selector import OverlapSelector from fft_analysator.gui.components.exporter import FileExporter -from fft_analysator.gui.components.exporter_menu import Exporter +from fft_analysator.gui.components.exporter_selector import ExporterSelector class Accordion: @@ -59,7 +59,7 @@ def __init__(self): self.window_selector = WindowSelector() self.overlap_selector = OverlapSelector() self.file_exporter = FileExporter() - self.exporter_menu = Exporter_MenuButton() + self.exporter_selector = ExporterSelector() self.accordion = pn.Accordion # Set default colors @@ -85,7 +85,7 @@ def __init__(self): self.overlap_selector.component), self.method_selector.component) ), - ('Export', pn.Column(self.exporter_menu.component,self.file_exporter.component)), + ('Export', pn.Column(self.exporter_selector.component,self.file_exporter.component)), sizing_mode='stretch_width') @property diff --git a/src/fft_analysator/gui/components/exporter_menu.py b/src/fft_analysator/gui/components/exporter_menu.py deleted file mode 100644 index 6f1bdc8..0000000 --- a/src/fft_analysator/gui/components/exporter_menu.py +++ /dev/null @@ -1,25 +0,0 @@ -import panel as pn - -from tkinter import Tk, filedialog -import os - -class Exporter_MenuButton: - def __init__(self): - self.file_items = ['Numpy Array', 'Binary'] - self.export_menu = pn.widgets.MenuButton(name="Extension", icon="file", items=self.file_items, width=300, button_type="default") - - self._component = pn.Column(pn.Row( - self.export_menu, - height = 30, - sizing_mode='stretch_width' - ), - pn.layout.Divider(margin=(5, 0, 5, 0)), - pn.bind(self.handle_selection, self.export_menu.param.clicked) - ) - - def handle_selection(self, clicked): - return f'The current Extension is: "{clicked}"' - - @property - def component(self): - return self._component diff --git a/src/fft_analysator/gui/components/exporter_selector.py b/src/fft_analysator/gui/components/exporter_selector.py new file mode 100644 index 0000000..8a80433 --- /dev/null +++ b/src/fft_analysator/gui/components/exporter_selector.py @@ -0,0 +1,11 @@ +import panel as pn + +class ExporterSelector: + def __init__(self): + self.export_selector = pn.widgets.Select + self.options = ['Numpy Array', 'Binary'] + self._component = self.export_selector(name='Choose export extension:', options=self.options, width=300, + value='Numpy Array', disabled=False) + @property + def component(self): + return self._component diff --git a/src/fft_analysator/gui/controllers/app_controller.py b/src/fft_analysator/gui/controllers/app_controller.py index 2d62b03..94291f8 100644 --- a/src/fft_analysator/gui/controllers/app_controller.py +++ b/src/fft_analysator/gui/controllers/app_controller.py @@ -242,12 +242,21 @@ def handle_update_analysis_event(self, event): def handle_export_event(self, event): if (event.obj == self.sidebar.accordion.file_exporter.component): - sig_pro = sp.Signal_Process() - self.sidebar.accordion.file_exporter.select_directory(event,np.array([1,2,3,4,5]), + sig_pro = sp.Signal_Process([self.sidebar.accordion.channel_selector_input.component.value, + self.sidebar.accordion.channel_selector_output.component.value], + self.preprocessing.file_paths, + self.sidebar.accordion.window_selector.component.value, + self.sidebar.accordion.blocksize_selector.component.value, + self.sidebar.accordion.overlap_selector.component.value) + + if self.sidebar.accordion.method_selector.component.value == "Cross Spectral Density": + data = sig_pro.csm() + + self.sidebar.accordion.file_exporter.select_directory(event,data, self.sidebar.accordion.channel_selector_input.component.value, self.sidebar.accordion.channel_selector_output.component.value, - self.sidebar.accordion.calculation_menu.signal_menu.clicked, - self.sidebar.accordion.exporter_menu.export_menu.clicked) + self.sidebar.accordion.method_selector.component.value, + self.sidebar.accordion.exporter_selector.component.value) def servable(self): # Serve app layout From edbfdf099ec5660ec6fbd8620c5f86d47945c9c3 Mon Sep 17 00:00:00 2001 From: Ramz Date: Thu, 11 Jul 2024 22:47:41 +0200 Subject: [PATCH 5/5] Added Frequency Response and Impulse Response in method selector. Also adjusted exporter file name --- src/fft_analysator/gui/components/exporter.py | 15 +++------------ .../gui/components/method_selector.py | 6 +++--- .../gui/components/overlap_selector.py | 1 - .../gui/controllers/app_controller.py | 6 +++++- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/fft_analysator/gui/components/exporter.py b/src/fft_analysator/gui/components/exporter.py index 87b1dcd..4197339 100644 --- a/src/fft_analysator/gui/components/exporter.py +++ b/src/fft_analysator/gui/components/exporter.py @@ -8,24 +8,15 @@ def __init__(self): self._component = self.file_input_button(name='\U0001F4BE ' 'Save and Export', margin=(10, 0, 10, 10), width=150) self.dir_path = None - # Reference müssen rein. - #self.chn1 = None - #self.chn2 = None - #self.method = None - #self.ext = None - #self.data = None - #pn.bind(self.select_directory, self._component, watch=True) - - def select_directory(self, event, data, chn1, chn2, method, ext): + def select_directory(self, event, data, chn1, chn2, method, ext, window, overlap): root = Tk() root.withdraw() root.call('wm', 'attributes', '.', '-topmost', True) dir = filedialog.askdirectory(initialdir=os.getcwd()) - method = method.replace(" ", "_") - print(ext) + method = method.replace(" ", "") if dir: self.dir_path = dir - file_name = str(dir) + "/" + str(method) + "_" + str(chn1) + "_" + str(chn2) + file_name = str(dir) + "/" + str(method) + "_" + str(chn1) + "_" + str(chn2) + "_" + str(window) + "_" + str(overlap) print(file_name) if ext == "Numpy Array": np.save(file_name, data) diff --git a/src/fft_analysator/gui/components/method_selector.py b/src/fft_analysator/gui/components/method_selector.py index 558853b..ad533f2 100644 --- a/src/fft_analysator/gui/components/method_selector.py +++ b/src/fft_analysator/gui/components/method_selector.py @@ -6,9 +6,9 @@ def __init__(self): self.selector = pn.widgets.Select self.options = ["No Analysis Function", "Auto Spectral Density - Input", "Auto Spectral Density - Output", "Cross Spectral Density", "Coherence","Auto Correlation - Input", "Auto Correlation - Output", - "Cross Correlation"] - self._component = self.selector(name='Choose analysis method:', options=self.options, width=300, value='No Analysis Function', - disabled=True) + "Cross Correlation", "Impulse response", "Frequency Response"] + self._component = self.selector(name='Choose analysis and saving method:', options=self.options, width=300, + value='No Analysis Function', disabled=True) @property def component(self): diff --git a/src/fft_analysator/gui/components/overlap_selector.py b/src/fft_analysator/gui/components/overlap_selector.py index 3797d07..6f5f37b 100644 --- a/src/fft_analysator/gui/components/overlap_selector.py +++ b/src/fft_analysator/gui/components/overlap_selector.py @@ -1,6 +1,5 @@ import panel as pn - class OverlapSelector: def __init__(self): self.selector = pn.widgets.Select diff --git a/src/fft_analysator/gui/controllers/app_controller.py b/src/fft_analysator/gui/controllers/app_controller.py index 94291f8..e1799a4 100644 --- a/src/fft_analysator/gui/controllers/app_controller.py +++ b/src/fft_analysator/gui/controllers/app_controller.py @@ -240,6 +240,7 @@ def handle_update_analysis_event(self, event): ) def handle_export_event(self, event): + data = np.array([1, 2, 3, 4]) if (event.obj == self.sidebar.accordion.file_exporter.component): sig_pro = sp.Signal_Process([self.sidebar.accordion.channel_selector_input.component.value, @@ -256,7 +257,10 @@ def handle_export_event(self, event): self.sidebar.accordion.channel_selector_input.component.value, self.sidebar.accordion.channel_selector_output.component.value, self.sidebar.accordion.method_selector.component.value, - self.sidebar.accordion.exporter_selector.component.value) + self.sidebar.accordion.exporter_selector.component.value, + self.sidebar.accordion.window_selector.component.value, + self.sidebar.accordion.overlap_selector.component.value, + ) def servable(self): # Serve app layout