Public Access
added extensive doc string to main classes
This commit is contained in:
+164
-10
@@ -1310,8 +1310,23 @@ class start_browser( threading.Thread ):
|
|||||||
|
|
||||||
|
|
||||||
class LogWindow:
|
class LogWindow:
|
||||||
"""
|
"""Manages the application log window.
|
||||||
writes messages to the log window
|
|
||||||
|
Provides a timestamped, scrollable text view for application messages.
|
||||||
|
Messages are dispatched via ``gobject.idle_add`` to keep the GTK main
|
||||||
|
loop responsive.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
xml_gui: The :class:`gtk.Builder` instance containing the GUI widgets.
|
||||||
|
damaris_gui: Reference to the main :class:`DamarisGUI` application.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
textview (:class:`gtk.TextView`): The monospaced text view widget.
|
||||||
|
textbuffer (:class:`gtk.TextBuffer`): The buffer backing the text view.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
>>> log = LogWindow(xml_gui, damaris_gui)
|
||||||
|
>>> log("Application started")
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__( self, xml_gui, damaris_gui ):
|
def __init__( self, xml_gui, damaris_gui ):
|
||||||
@@ -1356,9 +1371,55 @@ class LogWindow:
|
|||||||
|
|
||||||
|
|
||||||
class ScriptWidgets:
|
class ScriptWidgets:
|
||||||
|
"""Manages experiment and result script editing widgets.
|
||||||
|
|
||||||
|
Provides two syntax-highlighted, auto-completing text views for editing
|
||||||
|
DAMARIS experiment and result scripts. Handles file open/save dialogs,
|
||||||
|
toolbar state management, line/column indicators, and search functionality.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
xml_gui: The :class:`gtk.Builder` instance containing the GUI widgets.
|
||||||
|
outer_space: Reference to the parent application (typically
|
||||||
|
:class:`DamarisGUI`) that owns this widget set.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
editing_state (bool): ``True`` if scripts are editable, ``False`` during
|
||||||
|
experiment execution.
|
||||||
|
exp_script_filename (str or None): Path to the currently loaded
|
||||||
|
experiment script file.
|
||||||
|
res_script_filename (str or None): Path to the currently loaded
|
||||||
|
result script file.
|
||||||
|
experiment_script_textview (:class:`gtksourceview2.View`): Text view
|
||||||
|
for the experiment script.
|
||||||
|
data_handling_textview (:class:`gtksourceview2.View`): Text view for
|
||||||
|
the result script.
|
||||||
|
|
||||||
|
Public Methods:
|
||||||
|
set_scripts: Replace script buffer contents.
|
||||||
|
get_scripts: Retrieve current script text from both buffers.
|
||||||
|
enable_editing: Re-enable script editing.
|
||||||
|
disable_editing: Lock scripts during experiment execution.
|
||||||
|
open_file: Open a script file via file chooser dialog.
|
||||||
|
open_hdf5: Load data and scripts from an HDF5 file.
|
||||||
|
save_file: Save the current script to its associated file.
|
||||||
|
save_file_as: Save the current script with a new filename.
|
||||||
|
save_all_files: Save both experiment and result scripts.
|
||||||
|
new_file: Clear the current script buffer.
|
||||||
|
check_script: Compile-check the current script for syntax errors.
|
||||||
|
undo / redo: Undo/redo text edits.
|
||||||
|
search: Open the search-and-replace dialog.
|
||||||
|
"""
|
||||||
def __init__( self, xml_gui, outer_space ):
|
def __init__( self, xml_gui, outer_space ):
|
||||||
"""
|
"""Initialize text widgets with syntax highlighting and completion.
|
||||||
initialize text widgets with text
|
|
||||||
|
Sets up two :class:`gtksourceview2.View` instances with Python
|
||||||
|
syntax highlighting, keyword auto-completion, line numbers, and
|
||||||
|
smart indentation. Connects text buffer signals to toolbar and
|
||||||
|
status bar update handlers.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
xml_gui: The :class:`gtk.Builder` instance containing the GUI widgets.
|
||||||
|
outer_space: Reference to the parent application.
|
||||||
"""
|
"""
|
||||||
self.xml_gui = xml_gui
|
self.xml_gui = xml_gui
|
||||||
self.outer_space = outer_space
|
self.outer_space = outer_space
|
||||||
@@ -2848,9 +2909,54 @@ pygobject version %(pygobject)s
|
|||||||
|
|
||||||
|
|
||||||
class MonitorWidgets:
|
class MonitorWidgets:
|
||||||
|
"""Manages the matplotlib-based data visualization panel.
|
||||||
|
|
||||||
|
Provides an interactive plot canvas with zoom, pan, scaling controls,
|
||||||
|
a data source selector, and real-time updates from the DAMARIS data pool.
|
||||||
|
Supports :class:`Accumulation`, :class:`ADC_Result`, and
|
||||||
|
:class:`MeasurementResult` data types with automatic axis rescaling,
|
||||||
|
error bars, and statistics overlays.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
xml_gui: The :class:`gtk.Builder` instance containing the GUI widgets.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
matplot_figure (:class:`matplotlib.figure.Figure`): The underlying
|
||||||
|
matplotlib figure.
|
||||||
|
matplot_axes (:class:`matplotlib.axes.Axes`): The plot axes.
|
||||||
|
matplot_canvas (:class:`matplotlib.backends.backend_gtk3.FigureCanvas`):
|
||||||
|
The GTK canvas embedding the figure.
|
||||||
|
matplot_toolbar (:class:`matplotlib.backends.backend_gtk3.NavigationToolbar2GTK3`):
|
||||||
|
The navigation toolbar with pan/zoom/cursor controls.
|
||||||
|
data_pool (:class:`damaris.data.DataPool` or None): The data pool
|
||||||
|
being observed for real-time updates.
|
||||||
|
displayed_data (list): ``[data_name, data_object]`` of the currently
|
||||||
|
selected data, or ``[None, None]``.
|
||||||
|
|
||||||
|
Public Methods:
|
||||||
|
observe_data_pool: Register a listener and begin observing a data pool.
|
||||||
|
source_list_reset: Reset the data source selector tree.
|
||||||
|
source_list_add: Add a data source entry to the selector tree.
|
||||||
|
source_list_remove: Remove a data source entry from the selector tree.
|
||||||
|
source_list_current: Get the currently selected data source name.
|
||||||
|
clear_display: Clear all plot elements and reset axes.
|
||||||
|
update_display: Redraw the plot with current data.
|
||||||
|
renew_display: Clear and redraw the plot with current data.
|
||||||
|
save_display_data_as_text: Export displayed data to a CSV file.
|
||||||
|
toggle_cursor: Toggle the matplotlib crosshair cursor.
|
||||||
|
copy_canvas_as_png: Copy the plot as a PNG image to the clipboard.
|
||||||
|
copy_canvas_as_svg: Copy the plot as SVG text to the clipboard.
|
||||||
|
"""
|
||||||
def __init__( self, xml_gui ):
|
def __init__( self, xml_gui ):
|
||||||
"""
|
"""Initialize matplotlib widgets, canvas, toolbar, and source selector.
|
||||||
initialize matplotlib widgets and stuff around
|
|
||||||
|
Creates a :class:`matplotlib.figure.Figure` with linear x/y axes,
|
||||||
|
embeds it in a GTK canvas, attaches a navigation toolbar with a
|
||||||
|
custom crosshair toggle button, and builds a hierarchical source
|
||||||
|
selector :class:`gtk.TreeStore`.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
xml_gui: The :class:`gtk.Builder` instance containing the GUI widgets.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.xml_gui = xml_gui
|
self.xml_gui = xml_gui
|
||||||
@@ -3953,14 +4059,55 @@ class MonitorWidgets:
|
|||||||
|
|
||||||
|
|
||||||
class ScriptInterface:
|
class ScriptInterface:
|
||||||
"""
|
"""Executes experiment and result scripts, coordinating with the DAMARIS backend.
|
||||||
texts or code objects are executed as experiment and result script the backend is started with sufficient arguments
|
|
||||||
|
Manages the lifecycle of experiment and result script execution. Depending
|
||||||
|
on whether a backend executable is provided, it either uses
|
||||||
|
:class:`BackendDriver.BackendDriver` to spawn an external process or falls
|
||||||
|
back to in-process :class:`ExperimentWriter` and :class:`ResultReader`
|
||||||
|
components. A shared :class:`DataPool` is used for communication between
|
||||||
|
scripts and the GUI.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
exp_script (str or None): Python source code for the experiment script.
|
||||||
|
res_script (str or None): Python source code for the result script.
|
||||||
|
backend_executable (str or None): Path to the DAMARIS backend executable.
|
||||||
|
If ``None``, in-process execution is used.
|
||||||
|
spool_dir (str): Directory for inter-process communication spool files.
|
||||||
|
Defaults to ``"spool"``.
|
||||||
|
clear_jobs (bool): Clear pending jobs on startup. Defaults to ``True``.
|
||||||
|
clear_results (bool): Clear pending results on startup. Defaults to ``True``.
|
||||||
|
log_callback (callable or None): Optional callback for log messages.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
data (:class:`damaris.data.DataPool`): Shared data pool for
|
||||||
|
experiment/result communication.
|
||||||
|
exp_handling (:class:`ExperimentHandling.ExperimentHandling` or None):
|
||||||
|
The running experiment handler thread.
|
||||||
|
res_handling (:class:`ResultHandling.ResultHandling` or None):
|
||||||
|
The running result handler thread.
|
||||||
|
back_driver (:class:`BackendDriver.BackendDriver` or None):
|
||||||
|
The backend process driver, if a backend executable was provided.
|
||||||
|
|
||||||
|
Public Methods:
|
||||||
|
runScripts: Start experiment, result, and backend handlers.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__( self, exp_script=None, res_script=None, backend_executable=None, spool_dir="spool", clear_jobs=True,
|
def __init__( self, exp_script=None, res_script=None, backend_executable=None, spool_dir="spool", clear_jobs=True,
|
||||||
clear_results=True, log_callback=None ):
|
clear_results=True, log_callback=None ):
|
||||||
"""
|
"""Initialize the script execution environment.
|
||||||
run experiment scripts and result scripts
|
|
||||||
|
Sets up the data pool, experiment writer, result reader, and optional
|
||||||
|
backend driver based on the provided configuration.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
exp_script (str or None): Python source code for the experiment script.
|
||||||
|
res_script (str or None): Python source code for the result script.
|
||||||
|
backend_executable (str or None): Path to the DAMARIS backend executable.
|
||||||
|
spool_dir (str): Directory for inter-process communication spool files.
|
||||||
|
clear_jobs (bool): Clear pending jobs on startup.
|
||||||
|
clear_results (bool): Clear pending results on startup.
|
||||||
|
log_callback (callable or None): Optional callback for log messages.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.exp_script = exp_script
|
self.exp_script = exp_script
|
||||||
@@ -3995,6 +4142,13 @@ class ScriptInterface:
|
|||||||
self.data = DataPool( )
|
self.data = DataPool( )
|
||||||
|
|
||||||
def runScripts( self ):
|
def runScripts( self ):
|
||||||
|
"""Start experiment, result, and backend handler threads.
|
||||||
|
|
||||||
|
Creates and starts :class:`ExperimentHandling` and
|
||||||
|
:class:`ResultHandling` threads, and optionally starts the backend
|
||||||
|
driver process. Waits for the backend to report a valid PID before
|
||||||
|
proceeding.
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
# get script engines
|
# get script engines
|
||||||
self.exp_handling = self.res_handling = None
|
self.exp_handling = self.res_handling = None
|
||||||
|
|||||||
Reference in New Issue
Block a user