MDANSE-GUI 2.0.0__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mdanse_gui-2.0.2/PKG-INFO +203 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/README.md +49 -11
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/ElementsDatabaseEditor.py +36 -33
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/__init__.py +4 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/AseInputFileWidget.py +4 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/AtomMappingWidget.py +1 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/AtomSelectionWidget.py +3 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/FloatWidget.py +6 -1
- mdanse_gui-2.0.2/Src/MDANSE_GUI/InputWidgets/HDFTrajectoryWidget.py +174 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MDAnalysisCoordinateFileWidget.py +8 -9
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MDAnalysisMDTrajTimeStepWidget.py +27 -20
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MDAnalysisTopologyFileWidget.py +6 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MoleculeAndAxisWidget.py +1 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MoleculeWidget.py +2 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MultiInputFileWidget.py +12 -15
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/OutputFilesWidget.py +3 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/OutputStructureWidget.py +3 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/OutputTrajectoryWidget.py +66 -21
- mdanse_gui-2.0.2/Src/MDANSE_GUI/InputWidgets/QVectors3DWidget.py +112 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/QVectorsWidget.py +67 -41
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/TrajectoryFilterWidget.py +49 -79
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/UnitCellWidget.py +8 -3
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/WidgetBase.py +7 -7
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/__init__.py +1 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/AtomProperties.py +17 -8
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/Controls.py +15 -4
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/MolecularViewer.py +52 -14
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/MolecularViewerExtended.py +32 -6
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/MolecularViewerWithPicking.py +5 -4
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/PropertyWidget.py +9 -5
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/readers/hdf5wrapper.py +3 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/readers/i_reader.py +3 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/PeriodicTableViewer.py +5 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Resources/InstrumentDefinitions.toml +6 -0
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Resources/splash.png +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Resources.py +3 -2
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Scripts/create_mdanse_link.py +48 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Session/RecentFiles.py +4 -1
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Session/Session.py +77 -0
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Session/Settings.py +144 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Subprocess/JobStatusProcess.py +8 -9
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/TabbedWindow.py +308 -118
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/ConverterTab.py +13 -8
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/GeneralTab.py +44 -87
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/InstrumentTab.py +12 -7
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/JobTab.py +21 -22
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Layouts/DoublePanel.py +4 -1
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Tabs/LoggingTab.py +204 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Models/JobHolder.py +51 -51
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Models/JobTree.py +24 -8
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Models/PlotDataModel.py +12 -9
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Models/PlottingContext.py +337 -182
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Models/TrajectoryModel.py +24 -20
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/PlotSelectionTab.py +9 -5
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/PlotTab.py +21 -8
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Plotters/Grid.py +113 -95
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Tabs/Plotters/Grouped.py +322 -0
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Tabs/Plotters/Heatmap.py +388 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Plotters/Plotter.py +198 -50
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Plotters/Single.py +126 -123
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Plotters/Text.py +45 -39
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Tabs/Plotters/Vectors.py +250 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Plotters/Vectors3D.py +90 -95
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Plotters/__init__.py +1 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/RunTab.py +11 -8
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/TrajectoryTab.py +11 -5
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Views/ActionsTree.py +13 -3
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Views/Delegates.py +25 -9
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Views/InstrumentList.py +5 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Views/PlotDataView.py +71 -57
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Tabs/Views/PlotDetailsView.py +83 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Views/RunTable.py +7 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Views/TrajectoryView.py +5 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/Action.py +53 -19
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Tabs/Visualisers/DataPlotter.py +224 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/InstrumentInfo.py +19 -7
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/JobLogInfo.py +4 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/PlotHolder.py +34 -14
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Tabs/Visualisers/PlotSettings.py +163 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/PlotWidget.py +16 -7
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/View3D.py +9 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/UnitsEditor.py +3 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/UserSettingsEditor.py +17 -23
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Utils.py +3 -1
- mdanse_gui-2.0.2/Src/MDANSE_GUI/Widgets/GeneralWidgets.py +256 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/PlotSettingsDialog.py +2 -2
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/ResolutionDialog.py +1 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/SelectionWidgets.py +15 -15
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/StyleDialog.py +4 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/__init__.py +2 -2
- mdanse_gui-2.0.2/Src/MDANSE_GUI/_version.py +36 -0
- mdanse_gui-2.0.2/Src/MDANSE_GUI/main.py +228 -0
- mdanse_gui-2.0.2/Src/MDANSE_GUI.egg-info/PKG-INFO +203 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI.egg-info/SOURCES.txt +4 -1
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI.egg-info/entry_points.txt +3 -0
- mdanse_gui-2.0.2/Src/MDANSE_GUI.egg-info/requires.txt +17 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Tests/UnitTests/test_PlottingContext.py +13 -15
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Tests/UnitTests/test_hdf5wrapper.py +2 -3
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/pyproject.toml +30 -11
- mdanse_gui-2.0.0/PKG-INFO +0 -841
- mdanse_gui-2.0.0/Src/MDANSE_GUI/InputWidgets/HDFTrajectoryWidget.py +0 -79
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Resources/splash.png +0 -0
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Session/Session.py +0 -239
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Session/Settings.py +0 -409
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Tabs/LoggingTab.py +0 -119
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Tabs/Plotters/Heatmap.py +0 -422
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Tabs/Plotters/Vectors.py +0 -273
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Tabs/Views/PlotDetailsView.py +0 -54
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Tabs/Visualisers/DataPlotter.py +0 -172
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Tabs/Visualisers/PlotSettings.py +0 -239
- mdanse_gui-2.0.0/Src/MDANSE_GUI/Widgets/GeneralWidgets.py +0 -710
- mdanse_gui-2.0.0/Src/MDANSE_GUI/main.py +0 -124
- mdanse_gui-2.0.0/Src/MDANSE_GUI.egg-info/PKG-INFO +0 -841
- mdanse_gui-2.0.0/Src/MDANSE_GUI.egg-info/requires.txt +0 -15
- mdanse_gui-2.0.0/Tests/UnitTests/test_SettingsFile.py +0 -42
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/AUTHORS +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/LICENSE +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/MDANSE.ico +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/MDANSE.png +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/blue_sphere.stl +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/center_sphere.stl +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/element.png +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/periodic_table.png +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/red_sphere.stl +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/units.png +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/user_definitions.png +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Icons/yellow_sphere.stl +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/AtomTransmutationWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/BackupWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/BooleanWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/CheckableComboBox.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/ComboWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/CorrelationFramesWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/DerivativeOrderWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/DistHistCutoffWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/FramesWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/InputFileWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/InstrumentResolutionWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/IntegerWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/InterpolationOrderWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MDTrajTopologyFileWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MoleculePreviewWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/MultipleCombosWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/OptionalFloatWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/PartialChargeWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/ProjectionWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/RangeWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/RunningModeWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/VectorWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/InputWidgets/WeightsWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/TraceWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/MolecularViewer/readers/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/PlotUtils.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Scripts/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Scripts/mdanse_elements_database.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Scripts/mdanse_gui.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Scripts/mdanse_periodic_table.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Scripts/mdanse_units_editor.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Session/Logger.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Session/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Subprocess/Subprocess.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Subprocess/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Layouts/MultiPanel.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Layouts/SinglePanel.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Layouts/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Models/GeneralModel.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Models/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Views/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/DataWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/InstrumentDetails.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/TextInfo.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/TrajectoryInfo.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/Visualisers/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Tabs/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/DefaultCombobox.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/DelayedButton.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/NormalisationWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/NotificationTabWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/ResolutionWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/RestrictedSlider.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/StepValidator.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/VectorWidget.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI/Widgets/__init__.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI.egg-info/dependency_links.txt +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Src/MDANSE_GUI.egg-info/top_level.txt +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Tests/UnitTests/test_GeneralModel.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/Tests/UnitTests/test_JobState.py +0 -0
- {mdanse_gui-2.0.0 → mdanse_gui-2.0.2}/setup.cfg +0 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: MDANSE_GUI
|
|
3
|
+
Version: 2.0.2
|
|
4
|
+
Summary: MDANSE GUI package - the graphical interface for MDANSE
|
|
5
|
+
Maintainer-email: Maciej Bartkowiak <maciej.bartkowiak@stfc.ac.uk>, "Chi Y. Cheng" <chi.cheng@stfc.ac.uk>, Jacob Wilkins <jacob.wilkins@stfc.ac.uk>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: homepage, https://pypi.org/project/MDANSE
|
|
8
|
+
Project-URL: documentation, https://mdanse.readthedocs.io/
|
|
9
|
+
Project-URL: repository, https://github.com/ISISNeutronMuon/MDANSE
|
|
10
|
+
Keywords: molecular dynamics,science,simulation,analysis
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
15
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
+
Classifier: Operating System :: OS Independent
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: MDANSE
|
|
27
|
+
Requires-Dist: matplotlib
|
|
28
|
+
Requires-Dist: qtpy
|
|
29
|
+
Requires-Dist: vtk>=9.4.0
|
|
30
|
+
Requires-Dist: PyQt6
|
|
31
|
+
Requires-Dist: PyYAML
|
|
32
|
+
Requires-Dist: tomlkit
|
|
33
|
+
Requires-Dist: setuptools-git-versioning<4,>=3.0
|
|
34
|
+
Provides-Extra: pymixbox
|
|
35
|
+
Requires-Dist: pymixbox; extra == "pymixbox"
|
|
36
|
+
Provides-Extra: shortcuts
|
|
37
|
+
Requires-Dist: pyshortcuts>=1.9.11; extra == "shortcuts"
|
|
38
|
+
Provides-Extra: all
|
|
39
|
+
Requires-Dist: MDANSE_GUI[pymixbox,shortcuts]; extra == "all"
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
|
|
42
|
+
# MDANSE_GUI
|
|
43
|
+
|
|
44
|
+
## MDANSE_GUI Python Module
|
|
45
|
+
|
|
46
|
+
This is the module containing the Graphical User Interface (GUI) of the
|
|
47
|
+
Molecular Dynamics Analysis for Neutron Scattering Experiments (MDANSE) software package.
|
|
48
|
+
|
|
49
|
+
The GUI depends on the [MDANSE package](https://pypi.org/project/MDANSE).
|
|
50
|
+
|
|
51
|
+
> [!NOTE]
|
|
52
|
+
> The default behaviour of MDANSE_GUI has changed in version 2.0.2
|
|
53
|
+
> where the system tray icon has been added to the interface.
|
|
54
|
+
> When the system tray icon of the MDANSE GUI is present, closing
|
|
55
|
+
> the main window does not close the software, and the main window
|
|
56
|
+
> can be shown again. The system tray icon can be disabled in the
|
|
57
|
+
> GUI in Settings -> User Settings, in the 'startup' group.
|
|
58
|
+
|
|
59
|
+
## Quick start: installation
|
|
60
|
+
|
|
61
|
+
We recommend that you install MDANSE in a Python virtual environment.
|
|
62
|
+
You can create a virtual environment named mdanse_env by typing
|
|
63
|
+
```
|
|
64
|
+
python3 -m venv mdanse_env
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
To activate your virtual environment, type
|
|
68
|
+
```
|
|
69
|
+
source mdanse_env/bin/activate
|
|
70
|
+
```
|
|
71
|
+
in a bash console, or
|
|
72
|
+
```
|
|
73
|
+
mdanse_env\Scripts\activate.bat
|
|
74
|
+
```
|
|
75
|
+
if you are using cmd.exe on Windows.
|
|
76
|
+
|
|
77
|
+
While your virtual environment is active, you can install MDANSE:
|
|
78
|
+
```
|
|
79
|
+
pip install MDANSE_GUI
|
|
80
|
+
```
|
|
81
|
+
and start the GUI by typing
|
|
82
|
+
```
|
|
83
|
+
mdanse_gui
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
If you are using a virtual environment in which you had installed
|
|
87
|
+
MDANSE in the past, you can upgrade MDANSE to the current version
|
|
88
|
+
by typing:
|
|
89
|
+
```
|
|
90
|
+
pip install --upgrade MDANSE
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
If you experience problems with the installation, you may want to upgrade pip
|
|
94
|
+
```
|
|
95
|
+
pip install --upgrade pip
|
|
96
|
+
```
|
|
97
|
+
and try again.
|
|
98
|
+
|
|
99
|
+
Please remember to activate your virtual environment when you start a new
|
|
100
|
+
shell before you run `mdanse_gui`.
|
|
101
|
+
|
|
102
|
+
## Additional installation options
|
|
103
|
+
|
|
104
|
+
MDANSE_GUI has optional dependencies, which are not installed unless they are
|
|
105
|
+
requested by the user. It is possible to install all the optional dependencies
|
|
106
|
+
by running
|
|
107
|
+
```
|
|
108
|
+
pip install mdanse_gui[all]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The alternative is to install specific dependencies individually. This is described
|
|
112
|
+
in the subsections below.
|
|
113
|
+
|
|
114
|
+
### pymixbox
|
|
115
|
+
|
|
116
|
+
An optional dependency, [pymixbox](https://github.com/scrtwpns/mixbox) can be
|
|
117
|
+
installed to enable an alternative mechanism of colour mixing. It will be used
|
|
118
|
+
in the MDANSE_GUI plotter when plotting a 2D data set as a series of 1D curves.
|
|
119
|
+
The colours of consecutive curves will be generated from the initial and final
|
|
120
|
+
colour values using pymixbox. (If pymixbox is not installed, the colours of
|
|
121
|
+
intermediate curves will be generated by linear interpolation.)
|
|
122
|
+
|
|
123
|
+
To install MDANSE_GUI with pymixbox, replace the normal installation command with
|
|
124
|
+
```
|
|
125
|
+
pip install mdanse_gui[pymixbox]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### pyshortcuts
|
|
129
|
+
|
|
130
|
+
Users who want to create a desktop shortcut and a start menu entry for MDANSE_GUI
|
|
131
|
+
can install MDANSE_GUI with [pyshortcuts](https://github.com/newville/pyshortcuts).
|
|
132
|
+
It can be done by replacing the normal installation command with
|
|
133
|
+
```
|
|
134
|
+
pip install mdanse_gui[shortcuts]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Once MDANSE_GUI and its dependencies have been installed, run the script
|
|
138
|
+
```
|
|
139
|
+
create_mdanse_link
|
|
140
|
+
```
|
|
141
|
+
to create a desktop icon and a start menu entry for MDANSE_GUI (or just
|
|
142
|
+
one of the two, depending on the operating system you are running.)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
## Quick start: workflow
|
|
146
|
+
|
|
147
|
+
The typical workflow of MDANSE:
|
|
148
|
+
|
|
149
|
+
1. Convert a trajectory from the file format generated by an MD simulation
|
|
150
|
+
software into the MDANSE trajectory format,
|
|
151
|
+
2. Load the converted trajectory into MDANSE,
|
|
152
|
+
3. Perform an analysis,
|
|
153
|
+
4. Check the results with the plotter.
|
|
154
|
+
|
|
155
|
+
Each one of these operations has its own dedicated tab in the GUI.
|
|
156
|
+
The plotter consists of two tabs, one for selecting the data for plotting,
|
|
157
|
+
and the other for viewing and customising the plot.
|
|
158
|
+
|
|
159
|
+
The most complete user documentation of MDANSE can be found on
|
|
160
|
+
[our Read the Docs page](https://mdanse.readthedocs.io).
|
|
161
|
+
|
|
162
|
+
Other information, including tutorials, can be found in the
|
|
163
|
+
[MDANSE-Examples repository](https://github.com/ISISNeutronMuon/MDANSE-Examples).
|
|
164
|
+
|
|
165
|
+
## Citing MDANSE
|
|
166
|
+
|
|
167
|
+
If you used MDANSE in your research, please cite it according to the CITATION.cff file
|
|
168
|
+
in the [MDANSE GitHub repository](https://github.com/ISISNeutronMuon/MDANSE).
|
|
169
|
+
On GitHub, you can use the "cite this repository" link to generate the citation.
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
MDANSE_GUI is licensed under GPL-3.0. See
|
|
174
|
+
[LICENSE](https://github.com/ISISNeutronMuon/MDANSE/blob/protos/LICENSE)
|
|
175
|
+
for more information.
|
|
176
|
+
|
|
177
|
+
## Acknowledgements
|
|
178
|
+
|
|
179
|
+
The VTK-based 3D viewer was taken and adapted from another software project
|
|
180
|
+
authored by Eric Pellegrini. We would like to thank Eric for making
|
|
181
|
+
his code available.
|
|
182
|
+
|
|
183
|
+
## Joining the project
|
|
184
|
+
|
|
185
|
+
MDANSE_GUI is currently maintained and developed by software developers
|
|
186
|
+
from ISIS and ILL, but we are fully open to new collaborators who would
|
|
187
|
+
like to contribute code, documentation, tutorials or usage examples.
|
|
188
|
+
If you want to join the project contact:
|
|
189
|
+
|
|
190
|
+
>Dr. Sanghamitra Mukhopadhyay (sanghamitra.mukhopadhyay@stfc.ac.uk) \
|
|
191
|
+
ISIS Neutron and Muon Source \
|
|
192
|
+
Rutherford Appleton Laboratory \
|
|
193
|
+
Didcot, UK
|
|
194
|
+
|
|
195
|
+
## Software Inquiries
|
|
196
|
+
|
|
197
|
+
You are welcome to use the
|
|
198
|
+
[issue tracker](https://github.com/ISISNeutronMuon/MDANSE/issues)
|
|
199
|
+
to submit ideas for
|
|
200
|
+
extending the MDANSE code or to report problems you encountered.
|
|
201
|
+
However, if you prefer to contact the MDANSE developers directly,
|
|
202
|
+
you can send us a message:
|
|
203
|
+
>MDANSE Help (MDANSE-help@stfc.ac.uk)
|
|
@@ -7,18 +7,13 @@ Molecular Dynamics Analysis for Neutron Scattering Experiments (MDANSE) software
|
|
|
7
7
|
|
|
8
8
|
The GUI depends on the [MDANSE package](https://pypi.org/project/MDANSE).
|
|
9
9
|
|
|
10
|
-
## Version information
|
|
11
|
-
|
|
12
|
-
This is the first release of MDANSE_GUI 2.0.0.
|
|
13
|
-
|
|
14
10
|
> [!NOTE]
|
|
15
|
-
>
|
|
16
|
-
>
|
|
17
|
-
>
|
|
18
|
-
>
|
|
19
|
-
>
|
|
20
|
-
>
|
|
21
|
-
> with MDANSE developers.
|
|
11
|
+
> The default behaviour of MDANSE_GUI has changed in version 2.0.2
|
|
12
|
+
> where the system tray icon has been added to the interface.
|
|
13
|
+
> When the system tray icon of the MDANSE GUI is present, closing
|
|
14
|
+
> the main window does not close the software, and the main window
|
|
15
|
+
> can be shown again. The system tray icon can be disabled in the
|
|
16
|
+
> GUI in Settings -> User Settings, in the 'startup' group.
|
|
22
17
|
|
|
23
18
|
## Quick start: installation
|
|
24
19
|
|
|
@@ -63,6 +58,49 @@ and try again.
|
|
|
63
58
|
Please remember to activate your virtual environment when you start a new
|
|
64
59
|
shell before you run `mdanse_gui`.
|
|
65
60
|
|
|
61
|
+
## Additional installation options
|
|
62
|
+
|
|
63
|
+
MDANSE_GUI has optional dependencies, which are not installed unless they are
|
|
64
|
+
requested by the user. It is possible to install all the optional dependencies
|
|
65
|
+
by running
|
|
66
|
+
```
|
|
67
|
+
pip install mdanse_gui[all]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The alternative is to install specific dependencies individually. This is described
|
|
71
|
+
in the subsections below.
|
|
72
|
+
|
|
73
|
+
### pymixbox
|
|
74
|
+
|
|
75
|
+
An optional dependency, [pymixbox](https://github.com/scrtwpns/mixbox) can be
|
|
76
|
+
installed to enable an alternative mechanism of colour mixing. It will be used
|
|
77
|
+
in the MDANSE_GUI plotter when plotting a 2D data set as a series of 1D curves.
|
|
78
|
+
The colours of consecutive curves will be generated from the initial and final
|
|
79
|
+
colour values using pymixbox. (If pymixbox is not installed, the colours of
|
|
80
|
+
intermediate curves will be generated by linear interpolation.)
|
|
81
|
+
|
|
82
|
+
To install MDANSE_GUI with pymixbox, replace the normal installation command with
|
|
83
|
+
```
|
|
84
|
+
pip install mdanse_gui[pymixbox]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### pyshortcuts
|
|
88
|
+
|
|
89
|
+
Users who want to create a desktop shortcut and a start menu entry for MDANSE_GUI
|
|
90
|
+
can install MDANSE_GUI with [pyshortcuts](https://github.com/newville/pyshortcuts).
|
|
91
|
+
It can be done by replacing the normal installation command with
|
|
92
|
+
```
|
|
93
|
+
pip install mdanse_gui[shortcuts]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Once MDANSE_GUI and its dependencies have been installed, run the script
|
|
97
|
+
```
|
|
98
|
+
create_mdanse_link
|
|
99
|
+
```
|
|
100
|
+
to create a desktop icon and a start menu entry for MDANSE_GUI (or just
|
|
101
|
+
one of the two, depending on the operating system you are running.)
|
|
102
|
+
|
|
103
|
+
|
|
66
104
|
## Quick start: workflow
|
|
67
105
|
|
|
68
106
|
The typical workflow of MDANSE:
|
|
@@ -38,7 +38,8 @@ from qtpy.QtWidgets import (
|
|
|
38
38
|
)
|
|
39
39
|
|
|
40
40
|
from MDANSE.Chemistry import ATOMS_DATABASE
|
|
41
|
-
from MDANSE.Chemistry.
|
|
41
|
+
from MDANSE.Chemistry.AtomsDatabase import AtomsDatabase, AtomsDatabaseError
|
|
42
|
+
from MDANSE.IO.IOUtils import get_next_name
|
|
42
43
|
from MDANSE.MLogging import LOG
|
|
43
44
|
from MDANSE_GUI.Tabs.Views.Delegates import ColourPicker
|
|
44
45
|
from MDANSE_GUI.Widgets.GeneralWidgets import (
|
|
@@ -246,14 +247,14 @@ class ElementView(QTableView):
|
|
|
246
247
|
def contextMenuEvent(self, event):
|
|
247
248
|
menu = QMenu(self)
|
|
248
249
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
250
|
+
NewAtom = menu.addAction("New Custom Atom")
|
|
251
|
+
CopyAtom = menu.addAction("Copy Atoms")
|
|
252
|
+
RenameAtom = menu.addAction("Rename Custom Atom")
|
|
253
|
+
DeleteAtom = menu.addAction("Delete Custom Atoms")
|
|
254
|
+
NewProp = menu.addAction("New Custom Property")
|
|
255
|
+
CopyProp = menu.addAction("Copy Properties")
|
|
256
|
+
RenameProp = menu.addAction("Rename Custom Property")
|
|
257
|
+
DeleteProp = menu.addAction("Delete Custom Properties")
|
|
257
258
|
|
|
258
259
|
data_model = self.parent().data_model
|
|
259
260
|
|
|
@@ -292,26 +293,26 @@ class ElementView(QTableView):
|
|
|
292
293
|
|
|
293
294
|
temp_model = self.model().sourceModel()
|
|
294
295
|
if temp_model is not None:
|
|
295
|
-
|
|
296
|
-
|
|
296
|
+
NewAtom.triggered.connect(temp_model.new_line_dialog)
|
|
297
|
+
CopyAtom.triggered.connect(temp_model.copy_rows)
|
|
297
298
|
if self.mouse_atm in custom_atms:
|
|
298
|
-
|
|
299
|
+
RenameAtom.triggered.connect(temp_model.rename_row_dialog)
|
|
299
300
|
else:
|
|
300
|
-
|
|
301
|
+
RenameAtom.setEnabled(False)
|
|
301
302
|
if enable_delete_atms:
|
|
302
|
-
|
|
303
|
+
DeleteAtom.triggered.connect(temp_model.delete_rows)
|
|
303
304
|
else:
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
305
|
+
DeleteAtom.setEnabled(False)
|
|
306
|
+
NewProp.triggered.connect(temp_model.new_column_dialog)
|
|
307
|
+
CopyProp.triggered.connect(temp_model.copy_columns)
|
|
307
308
|
if self.mouse_prop in custom_props:
|
|
308
|
-
|
|
309
|
+
RenameProp.triggered.connect(temp_model.rename_column_dialog)
|
|
309
310
|
else:
|
|
310
|
-
|
|
311
|
+
RenameProp.setEnabled(False)
|
|
311
312
|
if enable_delete_props:
|
|
312
|
-
|
|
313
|
+
DeleteProp.triggered.connect(temp_model.delete_columns)
|
|
313
314
|
else:
|
|
314
|
-
|
|
315
|
+
DeleteProp.setEnabled(False)
|
|
315
316
|
|
|
316
317
|
menu.exec_(event.globalPos())
|
|
317
318
|
|
|
@@ -323,6 +324,7 @@ class NewElementDialog(QDialog):
|
|
|
323
324
|
|
|
324
325
|
def __init__(self, *args, **kwargs):
|
|
325
326
|
super().__init__(*args, **kwargs)
|
|
327
|
+
self.setModal(True)
|
|
326
328
|
|
|
327
329
|
layout = QVBoxLayout(self)
|
|
328
330
|
edit = QLineEdit(self)
|
|
@@ -351,7 +353,7 @@ class ElementModel(QStandardItemModel):
|
|
|
351
353
|
table gets sorted.
|
|
352
354
|
"""
|
|
353
355
|
|
|
354
|
-
def __init__(self, *args, element_database
|
|
356
|
+
def __init__(self, *args, element_database: AtomsDatabase, **kwargs):
|
|
355
357
|
super().__init__(*args, **kwargs)
|
|
356
358
|
|
|
357
359
|
self.custom_header_brush = QBrush(QColor(255, 165, 0))
|
|
@@ -410,8 +412,8 @@ class ElementModel(QStandardItemModel):
|
|
|
410
412
|
column = idx.column()
|
|
411
413
|
row_name = self.verticalHeaderItem(row).text()
|
|
412
414
|
column_name = self.horizontalHeaderItem(column).text()
|
|
413
|
-
LOG.
|
|
414
|
-
LOG.
|
|
415
|
+
LOG.debug(f"data:{data}, text:{text}, row:{row}, column:{column}")
|
|
416
|
+
LOG.debug(f"column name={column_name}, row name={row_name}")
|
|
415
417
|
self.database.set_value(row_name, column_name, text)
|
|
416
418
|
self.save_changes()
|
|
417
419
|
|
|
@@ -610,7 +612,7 @@ class ElementModel(QStandardItemModel):
|
|
|
610
612
|
if new_label not in self.database.default_atoms_types:
|
|
611
613
|
item.setForeground(self.custom_header_brush)
|
|
612
614
|
self.setVerticalHeaderItem(self.rowCount() - 1, item)
|
|
613
|
-
LOG.
|
|
615
|
+
LOG.debug(f"self.all_row_names has length: {len(self.all_row_names)}")
|
|
614
616
|
|
|
615
617
|
@Slot()
|
|
616
618
|
def copy_rows(self):
|
|
@@ -623,13 +625,13 @@ class ElementModel(QStandardItemModel):
|
|
|
623
625
|
|
|
624
626
|
for _, idx in row_idxs:
|
|
625
627
|
atm_sym = self.verticalHeaderItem(idx).text()
|
|
626
|
-
atm_sym_copy =
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
628
|
+
atm_sym_copy = get_next_name(
|
|
629
|
+
f"{atm_sym}(copy{{trial}})",
|
|
630
|
+
exists=self.database.atoms,
|
|
631
|
+
default="",
|
|
632
|
+
)
|
|
633
|
+
self.database.add_atom(atm_sym_copy)
|
|
634
|
+
self.copy_row_in_database(atm_sym_copy, atm_sym)
|
|
633
635
|
self.save_changes()
|
|
634
636
|
|
|
635
637
|
@Slot(dict)
|
|
@@ -708,7 +710,7 @@ class ElementModel(QStandardItemModel):
|
|
|
708
710
|
item.setForeground(self.custom_header_brush)
|
|
709
711
|
self.setHorizontalHeaderItem(self.columnCount() - 1, item)
|
|
710
712
|
self.parent().set_column_delegate(self.columnCount() - 1)
|
|
711
|
-
LOG.
|
|
713
|
+
LOG.debug(f"self.all_column_names has length: {len(self.all_column_names)}")
|
|
712
714
|
|
|
713
715
|
@Slot(dict)
|
|
714
716
|
def add_new_column(self, input_variables: dict):
|
|
@@ -786,6 +788,7 @@ class ElementsDatabaseEditor(QDialog):
|
|
|
786
788
|
super().__init__(*args, **kwargs)
|
|
787
789
|
|
|
788
790
|
self.setWindowTitle("MDANSE Chemical Elements Database Editor")
|
|
791
|
+
self.setModal(True)
|
|
789
792
|
|
|
790
793
|
layout = QVBoxLayout(self)
|
|
791
794
|
|
|
@@ -15,11 +15,14 @@
|
|
|
15
15
|
#
|
|
16
16
|
from __future__ import annotations
|
|
17
17
|
|
|
18
|
-
from
|
|
18
|
+
from typing import TYPE_CHECKING
|
|
19
19
|
|
|
20
20
|
from qtpy.QtCore import QDir
|
|
21
21
|
from qtpy.QtGui import QIcon
|
|
22
22
|
|
|
23
|
+
if TYPE_CHECKING:
|
|
24
|
+
from pathlib import Path
|
|
25
|
+
|
|
23
26
|
|
|
24
27
|
class PyQtIcons:
|
|
25
28
|
def __init__(self, path: Path | str):
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
from __future__ import annotations
|
|
17
17
|
|
|
18
18
|
import os
|
|
19
|
+
from contextlib import suppress
|
|
19
20
|
from pathlib import PurePath
|
|
20
21
|
|
|
21
|
-
from ase.io.formats import filetype
|
|
22
22
|
from qtpy.QtCore import Slot
|
|
23
23
|
from qtpy.QtWidgets import QComboBox, QFileDialog, QLineEdit, QPushButton
|
|
24
24
|
|
|
@@ -28,6 +28,9 @@ from MDANSE.Framework.Configurators.AseInputFileConfigurator import (
|
|
|
28
28
|
from MDANSE.MLogging import LOG
|
|
29
29
|
from MDANSE_GUI.InputWidgets.WidgetBase import WidgetBase
|
|
30
30
|
|
|
31
|
+
with suppress(ImportError):
|
|
32
|
+
from ase.io.formats import filetype
|
|
33
|
+
|
|
31
34
|
|
|
32
35
|
class AseInputFileWidget(WidgetBase):
|
|
33
36
|
def __init__(self, *args, **kwargs):
|
|
@@ -58,6 +58,7 @@ class AtomMappingHelperDialog(QDialog):
|
|
|
58
58
|
"""
|
|
59
59
|
super().__init__(parent, *args, **kwargs)
|
|
60
60
|
self.setWindowTitle("Atom mapping helper")
|
|
61
|
+
self.setModal(True)
|
|
61
62
|
self.min_width = kwargs.get("min_width", 500)
|
|
62
63
|
self.min_height = kwargs.get("min_width", 600)
|
|
63
64
|
self.resize(self.min_width, self.min_height)
|
|
@@ -349,6 +349,7 @@ class SelectionHelper(QDialog):
|
|
|
349
349
|
super().__init__(parent, *args, **kwargs)
|
|
350
350
|
self.setWindowTitle(self._helper_title)
|
|
351
351
|
self.setWindowFlags(Qt.Window)
|
|
352
|
+
self.setModal(True)
|
|
352
353
|
|
|
353
354
|
self.trajectory = traj_data[1]
|
|
354
355
|
self.system = self.trajectory.chemical_system
|
|
@@ -408,6 +409,7 @@ class SelectionHelper(QDialog):
|
|
|
408
409
|
3D viewer when it is closed and then reopened.
|
|
409
410
|
"""
|
|
410
411
|
self.selection_model.finalise_manual_selection()
|
|
412
|
+
self.view_3d.stop_animation()
|
|
411
413
|
a0.ignore()
|
|
412
414
|
self.hide()
|
|
413
415
|
|
|
@@ -445,6 +447,7 @@ class SelectionHelper(QDialog):
|
|
|
445
447
|
or JSON text files.
|
|
446
448
|
"""
|
|
447
449
|
self.selection_model.finalise_manual_selection()
|
|
450
|
+
self.view_3d.stop_animation()
|
|
448
451
|
fname = QFileDialog.getSaveFileName(
|
|
449
452
|
self,
|
|
450
453
|
"Save current selection to a JSON file",
|
|
@@ -15,13 +15,18 @@
|
|
|
15
15
|
#
|
|
16
16
|
from __future__ import annotations
|
|
17
17
|
|
|
18
|
+
from typing import TypeVar
|
|
19
|
+
|
|
18
20
|
from qtpy.QtGui import QDoubleValidator
|
|
19
21
|
from qtpy.QtWidgets import QDoubleSpinBox, QLineEdit
|
|
20
22
|
|
|
23
|
+
from MDANSE.Framework.Configurators import FloatConfigurator
|
|
21
24
|
from MDANSE_GUI.InputWidgets.WidgetBase import WidgetBase
|
|
22
25
|
|
|
26
|
+
FloatConfig = TypeVar("FloatConfig", bound=FloatConfigurator)
|
|
27
|
+
|
|
23
28
|
|
|
24
|
-
class FloatWidget(WidgetBase):
|
|
29
|
+
class FloatWidget(WidgetBase[FloatConfig]):
|
|
25
30
|
def __init__(self, *args, **kwargs):
|
|
26
31
|
super().__init__(*args, **kwargs)
|
|
27
32
|
try:
|