Skip to content
Snippets Groups Projects
SampleForm.h 2.74 KiB
Newer Older
  • Learn to ignore specific revisions
  • //  ************************************************************************************************
    //
    //  BornAgain: simulate and fit reflection and scattering
    //
    
    //! @file      GUI/View/SampleDesigner/SampleForm.h
    //! @brief     Defines class SampleForm
    
    //!
    //! @homepage  http://www.bornagainproject.org
    //! @license   GNU General Public License v3 or higher (see COPYING)
    //! @copyright Forschungszentrum Jülich GmbH 2021
    //! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
    //
    //  ************************************************************************************************
    
    
    #ifndef BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SAMPLEFORM_H
    #define BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SAMPLEFORM_H
    
    #include <QPushButton>
    #include <QVBoxLayout>
    
    class SampleItem;
    
    class SampleEditorController;
    class LayerItem;
    class LayerForm;
    
    //! Form to present/edit a sample
    class SampleForm : public QWidget {
    
        SampleForm(QWidget* parent, SampleItem* sampleItem, SampleEditorController* ec);
    
    
        //! Show or hide all buttons related to structure editing (like "add layer", "remove particle")
        void showInlineEditButtons(bool b);
    
        //! Create widgets for the new layer.
        void onLayerAdded(LayerItem* layerItem);
    
        //! Call this when a layerItem has been moved to a different position.
        //!
        //! This updates the item's position in the layout.
        void onLayerMoved(LayerItem* layerItem);
    
        //! Call this before removing (deleting) a LayerItem.
        //!
        //! Any widgets related to the item will be deleted or scheduled for later deletion.
        void onAboutToRemoveLayer(LayerItem* layerItem);
    
        void updateRowVisibilities();
    
    
        //! Update the presented units in all contained widgets according to current settings.
        void updateUnits();
    
    
        void ensureVisible(QWidget* w);
    
        //! Show values in Angstrom or nanometers
    
        void setUseAngstrom(bool angstrom);
        bool useAngstrom() const;
    
    
        //! Show values in radiants or degrees
    
        void setUseRadiant(bool radiant);
        bool useRadiant() const;
    
    
        //! Shows or hides the "Add Layer" buttons.
        void showAddLayerButtons(bool show);
    
        //! Search for the next LayerForm, starting from the given widget.
        //!
        //! The search starts with the given widget itself If it is a LayerForm, it is returned.
        //! If no following LayerForm is found, nullptr is returned.
        LayerForm* findNextLayerForm(QWidget* w);
    
    private:
        QVBoxLayout* m_layout;
    
        SampleItem* m_sampleItem;     //!< Ptr is borrowed, don't delete
    
    Wuttke, Joachim's avatar
    Wuttke, Joachim committed
        SampleEditorController* m_ec; //!< Ptr is borrowed, don't delete
    
        bool m_showInlineEditButtons = false;
    
        bool m_useAngstrom;
        bool m_useRadiant;
    
        QList<QPushButton*> m_addLayerButtons;
    };
    
    
    #endif // BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SAMPLEFORM_H