Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

transferfunctionpropertywidget.h 4.95 KB
Newer Older
1
2
// ================================================================================================
// 
schultezub's avatar
schultezub committed
3
// This file is part of the CAMPVis Software Framework.
4
// 
5
// If not explicitly stated otherwise: Copyright (C) 2012-2015, all rights reserved,
schultezub's avatar
schultezub committed
6
//      Christian Schulte zu Berge <christian.szb@in.tum.de>
7
//      Chair for Computer Aided Medical Procedures
8
9
//      Technische Universitaet Muenchen
//      Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
10
// 
schultezub's avatar
schultezub committed
11
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
12
// 
13
14
15
16
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 
// except in compliance with the License. You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
17
// 
18
19
20
21
// Unless required by applicable law or agreed to in writing, software distributed under the 
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
// either express or implied. See the License for the specific language governing permissions 
// and limitations under the License.
22
23
24
// 
// ================================================================================================

schultezub's avatar
schultezub committed
25
26
27
#ifndef TRANSFERFUNCTIONPROPERTYWIDGET_H__
#define TRANSFERFUNCTIONPROPERTYWIDGET_H__

28
#include "application/applicationapi.h"
schultezub's avatar
schultezub committed
29
30
31
#include "application/gui/properties/abstractpropertywidget.h"
#include "core/properties/transferfunctionproperty.h"

schultezub's avatar
schultezub committed
32
33
34
35
36
class QDockWidget;
class QDoubleSpinBox;
class QGridLayout;
class QLabel;
class QPushButton;
37
class QCheckBox;
schultezub's avatar
schultezub committed
38

schultezub's avatar
schultezub committed
39
namespace campvis {
schultezub's avatar
schultezub committed
40
41
    class AbstractTransferFunctionEditor;

schultezub's avatar
schultezub committed
42
43
44
    /**
     * Widget for a TransferFunctionProperty
     */
45
    class CAMPVIS_APPLICATION_API TransferFunctionPropertyWidget : public AbstractPropertyWidget {
schultezub's avatar
schultezub committed
46
47
48
49
50
        Q_OBJECT;

    public:
        /**
         * Creates a new PropertyWidget for the property \a property.
51
52
53
         * \param   property        The property the widget shall handle
         * \param   dataContainer   DataContainer to use (optional), defaults to nullptr.
         * \param   parent          Parent Qt widget
schultezub's avatar
schultezub committed
54
         */
55
        TransferFunctionPropertyWidget(TransferFunctionProperty* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0);
schultezub's avatar
schultezub committed
56
57
58
59
60
61

        /**
         * Destructor
         */
        virtual ~TransferFunctionPropertyWidget();

62

schultezub's avatar
schultezub committed
63
64
65
66
67
    protected:
        /**
         * Gets called when the property has changed, so that widget can update its state.
         */
        virtual void updateWidgetFromProperty();
68
69
70
71
72
        
        /**
         * Slot to be called from property when the property's flag whether to auto fit the TF window has changed.
         */
        void onTransferFunctionAutoFitWindowToDataChanged();
schultezub's avatar
schultezub committed
73

74
75
76
77
78
    
    signals:
        void s_beforeTFReplace(AbstractTransferFunction* tf);
        void s_afterTFReplace(AbstractTransferFunction* tf);

schultezub's avatar
schultezub committed
79
80
81
82
83
    private slots:
        /// slot called when one of the intensity domain spin edits has changed
        void onDomainChanged(double value);
        /// slot called when edit TF button clicked
        void onEditClicked(bool checked);
84
85
        /// slot called when _btnFitDomainToImage clicked
        void onFitClicked(bool checked);
86
87
        /// slot called when _cbAutoFitDomainToImage changed
        void onAutoFitDomainToImageChanged(int state);
schultezub's avatar
schultezub committed
88

89
90
91
92
93
94
95
96
97
98
99
100
    protected slots:
        /// slot called when transfer function is about to be replaced
        void execBeforeTFReplace(AbstractTransferFunction *tf);
        /// slot called when transfer function just has replaced
        void execAfterTFReplace(AbstractTransferFunction *tf);
    
    private:
        /// catch slot for tf replace action
        void onBeforeTFReplace(AbstractTransferFunction *tf);
        /// catch slot for tf replace action
        void onAfterTFReplace(AbstractTransferFunction *tf);

schultezub's avatar
schultezub committed
101
102
103
104
105
106
107
    private:
        QWidget* _widget;                   ///< Widget grouping the widgets together
        QGridLayout* _gridLayout;           ///< Layout for _widget

        QLabel* _lblDomain;                 ///< intensity domain label
        QDoubleSpinBox* _spinDomainLeft;    ///< spin edit for intensity domain lower bound
        QDoubleSpinBox* _spinDomainRight;   ///< spin edit for intensity domain upper bound
108
        QCheckBox* _cbAutoFitDomainToImage; ///< Checkbox for the flag whether to automatically fit the TF domain to new image data
109
        QPushButton* _btnFitDomainToImage;  ///< button for fitting the intensity domain to the image 
schultezub's avatar
schultezub committed
110
111
        QPushButton* _btnEditTF;            ///< button for showing the TF editor widget

schultezub's avatar
schultezub committed
112
113
        QDockWidget* _dockWidget;                   ///< DockWidget for transfer function editor
        AbstractTransferFunctionEditor* _editor;    ///< Transfer function editor
114
115

        bool wasVisible;                    ///< remembers whether _docWidget was visible or not
schultezub's avatar
schultezub committed
116
117
118
119
    };
}

#endif // TRANSFERFUNCTIONPROPERTYWIDGET_H__