PlotPluginInfo.h 8.76 KB
Newer Older
hrchilds's avatar
hrchilds committed
1
2
/*****************************************************************************
*
brugger's avatar
 
brugger committed
3
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
hrchilds's avatar
hrchilds committed
4
* Produced at the Lawrence Livermore National Laboratory
brugger's avatar
 
brugger committed
5
* LLNL-CODE-400142
hrchilds's avatar
hrchilds committed
6
7
* All rights reserved.
*
brugger's avatar
 
brugger committed
8
* This file is  part of VisIt. For  details, see https://visit.llnl.gov/.  The
hrchilds's avatar
hrchilds committed
9
10
11
12
13
14
15
16
17
18
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
* modification, are permitted provided that the following conditions are met:
*
*  - Redistributions of  source code must  retain the above  copyright notice,
*    this list of conditions and the disclaimer below.
*  - Redistributions in binary form must reproduce the above copyright notice,
*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
brugger's avatar
 
brugger committed
19
20
21
*    documentation and/or other materials provided with the distribution.
*  - Neither the name of  the LLNS/LLNL nor the names of  its contributors may
*    be used to endorse or promote products derived from this software without
hrchilds's avatar
hrchilds committed
22
23
24
25
26
*    specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
brugger's avatar
 
brugger committed
27
28
29
* ARE  DISCLAIMED. IN  NO EVENT  SHALL LAWRENCE  LIVERMORE NATIONAL  SECURITY,
* LLC, THE  U.S.  DEPARTMENT OF  ENERGY  OR  CONTRIBUTORS BE  LIABLE  FOR  ANY
* DIRECT,  INDIRECT,   INCIDENTAL,   SPECIAL,   EXEMPLARY,  OR   CONSEQUENTIAL
hrchilds's avatar
hrchilds committed
30
31
32
33
34
35
36
37
38
* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/

hrchilds's avatar
hrchilds committed
39
40
41
42
43
44
45
// ************************************************************************* //
//                              PlotPluginInfo.h                             //
// ************************************************************************* //

#ifndef PLOT_PLUGIN_INFO_H
#define PLOT_PLUGIN_INFO_H
#include <plugin_exports.h>
hrchilds's avatar
hrchilds committed
46
#include <plugin_vartypes.h>
hrchilds's avatar
hrchilds committed
47
48
#include <stdio.h>

hrchilds's avatar
hrchilds committed
49
50
#include <string>

hrchilds's avatar
hrchilds committed
51
52
// Forward declarations.
class AttributeSubject;
53
class QString;
hrchilds's avatar
hrchilds committed
54
55
class QvisNotepadArea;
class QvisPostableWindowObserver;
hrchilds's avatar
hrchilds committed
56
57
class QvisWizard;
class QWidget;
hrchilds's avatar
hrchilds committed
58
class avtDatabaseMetaData;
hrchilds's avatar
hrchilds committed
59
class ExpressionList;
hrchilds's avatar
hrchilds committed
60
class avtPlot;
hrchilds's avatar
hrchilds committed
61
class ViewerPlot;
hrchilds's avatar
hrchilds committed
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

// ****************************************************************************
//  Class: *PluginInfo
//
//  Purpose:
//    Four classes that provide all the information about a plot plugin.
//    The classes are all pure virtual.  The information is broken up into
//    four classes since portions of it are only relevant to particular
//    components within visit.  There is the general information which all
//    the components are interested in, the gui information which the gui
//    is interested in, the viewer information which the viewer is interested
//    in, and the engine information which the engine is interested in.
//
//  Programmer: Eric Brugger
//  Creation:   March 7, 2001
//
//  Modifications:
//    Brad Whitlock, Mon Mar 26 11:42:53 PDT 2001
//    Added a method to the GUIPluginInfo class that indicates what variable
//    types should appear in the variable list for the plot.
//
//    Brad Whitlock, Thur Jul 12 17:47:34 PST 2001
//    Added scripting plugins.
//
//    Jeremy Meredith, Thu Jul 26 09:33:12 PDT 2001
//    Renamed plugin info classes.
//
//    Jeremy Meredith, Fri Sep 28 13:31:21 PDT 2001
//    Added Common info.  Made the specific ones inherit from the generic ones.
//
//    Kathleen Bonnell, Fri Oct 19 15:33:35 PDT 2001 
//    Added subset var category, ResetPlotAtts method to ViewerPlotPluginInfo.
//
//    Jeremy Meredith, Mon Dec 17 15:18:05 PST 2001
//    Added species var category.
//
//    Brad Whitlock, Mon May 6 14:18:15 PST 2002
//    I added the SetDefaults method for scripting plugins.
//
//    Kathleen Bonnell, Thu Dec  5 16:53:22 PST 2002 
//    Added ReInitializePlotAtts to ViewerPlotPluginInfo. 
//
//    Brad Whitlock, Wed Mar 12 14:14:57 PST 2003
//    I added the XPMIconData method for GUI and Viewer plugins. I also added
//    a GetVariableTypes for viewer plugins.
//
hrchilds's avatar
hrchilds committed
108
109
110
//    Jeremy Meredith, Tue Sep 23 17:08:20 PDT 2003
//    Added tensor and symmetric tensor.
//
hrchilds's avatar
hrchilds committed
111
112
113
//    Jeremy Meredith, Wed Nov  5 10:28:29 PST 2003
//    Added ability to disable plugins by default.
//
hrchilds's avatar
hrchilds committed
114
115
116
//    Brad Whitlock, Fri Mar 26 00:40:29 PDT 2004
//    I changed the interface to several methods in the viewer plugin.
//
hrchilds's avatar
hrchilds committed
117
118
119
//    Brad Whitlock, Tue Dec 14 09:42:33 PDT 2004
//    I added support for plot wizards.
//
hrchilds's avatar
hrchilds committed
120
121
122
//    Hank Childs, Tue Mar 22 16:06:15 PST 2005
//    Made destructor virtual.
//
hrchilds's avatar
hrchilds committed
123
124
125
//    Hank Childs, Tue Jul 19 14:23:56 PDT 2005
//    Added VAR_CATEGORY_ARRAY.
//
hrchilds's avatar
hrchilds committed
126
127
128
//    Brad Whitlock, Thu Jan 5 14:40:42 PST 2006
//    I removed explicit support for logging from the scripting plugins.
//
hrchilds's avatar
hrchilds committed
129
130
131
//    Mark Blair, Mon Aug 21 18:29:00 PDT 2006
//    Added to information passed to plot wizard when created.
//
hrchilds's avatar
hrchilds committed
132
133
134
//    Brad Whitlock, Wed Feb 7 15:53:14 PST 2007
//    Added methods for alternate display in the viewer plugin info.
//
hrchilds's avatar
hrchilds committed
135
136
137
//    Brad Whitlock, Tue Mar 20 11:44:35 PDT 2007
//    Added ProvidesLegend method on the viewer plugin info.
//
138
139
140
141
//    Brad Whitlock, Fri Apr 25 10:09:24 PDT 2008
//    Made the GUI plugin info return QString so we can internationalize
//    plot names. Added const to strings returned from GeneralPlotPluginInfo.
//
hrchilds's avatar
hrchilds committed
142
143
144
145
146
// ****************************************************************************

class PLUGIN_API GeneralPlotPluginInfo
{
  public:
hrchilds's avatar
hrchilds committed
147
    virtual ~GeneralPlotPluginInfo() { ; };
148
149
150
    virtual const char *GetName() const = 0;
    virtual const char *GetVersion() const = 0;
    virtual const char *GetID() const = 0;
hrchilds's avatar
hrchilds committed
151
    virtual bool  EnabledByDefault() const { return true; }
hrchilds's avatar
hrchilds committed
152
153
154
155
156
157
158
159
160
161
162
163
164
};

class PLUGIN_API CommonPlotPluginInfo : public virtual GeneralPlotPluginInfo
{
  public:
    virtual AttributeSubject *AllocAttributes() = 0;
    virtual void CopyAttributes(AttributeSubject *to,
                                AttributeSubject *from) = 0;
};

class PLUGIN_API GUIPlotPluginInfo : public virtual CommonPlotPluginInfo
{
  public:
165
    virtual QString *GetMenuName() const = 0;
hrchilds's avatar
hrchilds committed
166
167
    virtual int GetVariableTypes() const = 0;
    virtual QvisPostableWindowObserver *CreatePluginWindow(int type,
168
169
        AttributeSubject *attr, const QString &caption, const QString &shortName,
        QvisNotepadArea *notepad) = 0;
hrchilds's avatar
hrchilds committed
170
171
172
    virtual QvisWizard *CreatePluginWizard(AttributeSubject *attr, QWidget *parent,
        const std::string &varName, const avtDatabaseMetaData *md,
        const ExpressionList *expList, const char *name =0)
hrchilds's avatar
hrchilds committed
173
174
175
    {
        return 0;
    }
hrchilds's avatar
hrchilds committed
176
177
178
179
180
181
182
183
184
185
186
187
188
    virtual const char **XPMIconData() const { return 0; }
};

class PLUGIN_API ViewerPlotPluginInfo : public virtual CommonPlotPluginInfo
{
  public:
    virtual AttributeSubject *GetClientAtts() = 0;
    virtual AttributeSubject *GetDefaultAtts() = 0;
    virtual void SetClientAtts(AttributeSubject *atts) = 0;
    virtual void GetClientAtts(AttributeSubject *atts) = 0;

    virtual avtPlot *AllocAvtPlot() = 0;

hrchilds's avatar
hrchilds committed
189
190
    virtual bool ProvidesLegend() const { return true; }

hrchilds's avatar
hrchilds committed
191
192
193
    virtual void InitializePlotAtts(AttributeSubject *atts, ViewerPlot *) = 0;
    virtual void ReInitializePlotAtts(AttributeSubject *atts, 
        ViewerPlot *) { ; }
hrchilds's avatar
hrchilds committed
194
195

    virtual void ResetPlotAtts(AttributeSubject *atts,
hrchilds's avatar
hrchilds committed
196
        ViewerPlot *) { ; }
hrchilds's avatar
hrchilds committed
197

198
    virtual QString *GetMenuName() const = 0;
hrchilds's avatar
hrchilds committed
199
200
    virtual const char **XPMIconData() const { return 0; }
    virtual int GetVariableTypes() const = 0;
hrchilds's avatar
hrchilds committed
201
202
203
204
205
206
207
208

    virtual void *AlternateDisplayCreate(ViewerPlot *plot) { return 0; }
    virtual void AlternateDisplayDestroy(void *dpy) {; }
    virtual void AlternateDisplayClear(void *dpy) {; }
    virtual void AlternateDisplayHide(void *dpy) {; }
    virtual void AlternateDisplayShow(void *dpy) {; }
    virtual void AlternateDisplayIconify(void *dpy) {; }
    virtual void AlternateDisplayDeIconify(void *dpy) {; }
hrchilds's avatar
hrchilds committed
209
210
211
212
213
214
215
216
217
218
219
};

class PLUGIN_API EnginePlotPluginInfo : public virtual CommonPlotPluginInfo
{
  public:
    virtual avtPlot *AllocAvtPlot() = 0;
};

class PLUGIN_API ScriptingPlotPluginInfo : public virtual CommonPlotPluginInfo
{
  public:
hrchilds's avatar
hrchilds committed
220
    virtual void InitializePlugin(AttributeSubject *subj, void *data) = 0;
hrchilds's avatar
hrchilds committed
221
    virtual void *GetMethodTable(int *nMethods) = 0;
hrchilds's avatar
hrchilds committed
222
    virtual char *GetLogString() = 0;
hrchilds's avatar
hrchilds committed
223
224
225
226
227
    virtual bool TypesMatch(void *) { return false; }
    virtual void SetDefaults(const AttributeSubject *) = 0;
};

#endif