Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtmail / include / MotifApp / UIComponent.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /*
24  *+SNOTICE
25  *
26  *      $TOG: UIComponent.h /main/6 1998/01/29 15:18:31 mgreess $
27  *
28  *      RESTRICTED CONFIDENTIAL INFORMATION:
29  *      
30  *      The information in this document is subject to special
31  *      restrictions in a confidential disclosure agreement between
32  *      HP, IBM, Sun, USL, SCO and Univel.  Do not distribute this
33  *      document outside HP, IBM, Sun, USL, SCO, or Univel without
34  *      Sun's specific written approval.  This document and all copies
35  *      and derivative works thereof must be returned or destroyed at
36  *      Sun's request.
37  *
38  *      Copyright 1993 Sun Microsystems, Inc.  All rights reserved.
39  *
40  *+ENOTICE
41  */
42
43 ///////////////////////////////////////////////////////////////////////////////
44 //////////////////////////////////////////////////////////////////////////////
45 //         This example code is from the book:
46 //
47 //           Object-Oriented Programming with C++ and OSF/Motif
48 //         by
49 //           Douglas Young
50 //           Prentice Hall, 1992
51 //           ISBN 0-13-630252-1 
52 //
53 //         Copyright 1991 by Prentice Hall
54 //         All Rights Reserved
55 //
56 //  Permission to use, copy, modify, and distribute this software for 
57 //  any purpose except publication and without fee is hereby granted, provided 
58 //  that the above copyright notice appear in all copies of the software.
59 ///////////////////////////////////////////////////////////////////////////////
60 //////////////////////////////////////////////////////////////////////////////
61
62
63 ///////////////////////////////////////////////////////////////
64 // UIComponent.h: Base class for all C++/Motif UI components
65 ///////////////////////////////////////////////////////////////
66 #ifndef UICOMPONENT_H
67 #define UICOMPONENT_H
68
69 #ifndef I_HAVE_NO_IDENT
70 #endif
71
72 #include <Xm/Xm.h>
73 #include "BasicComponent.h"
74
75 class UIComponent : public BasicComponent {
76     
77   private:
78
79     // Interface between XmNdestroyCallback and this class
80     
81     static void widgetDestroyedCallback ( Widget, 
82                                          XtPointer, 
83                                          XtPointer );
84     
85   protected:
86     
87     //
88     // Number of pending tasks.
89     // UIComponents with pending tasks should not be terminated.
90     // Used in Application and MainWindow classes to block termination.
91     //
92     int                 _numPendingTasks;
93     
94     // Protect constructor to prevent direct instantiation
95     UIComponent ( const char * );
96     
97     void installDestroyHandler(); // Easy hook for derived classes
98     
99     // Called by widgetDestroyedCallback() if base widget is destroyed
100     virtual void widgetDestroyed(); 
101     
102 #ifdef DEAD_WOOD
103     // Loads component's default resources into database
104     void setDefaultResources ( const Widget , const String *);
105 #endif /* DEAD_WOOD */
106     
107     // Retrieve resources for this clsss from the resource manager
108     void getResources ( const XtResourceList, const int );
109     
110   public:
111     
112     virtual ~UIComponent();
113     
114     // Manage the entire widget subtree represented
115     // by this component. Overrides BasicComponent method
116     virtual void manage();
117     virtual void displayInCurrentWorkspace();
118     virtual void displayInCurrentWorkspace(Widget);
119     
120     // Public access functions
121 #ifdef CAN_INLINE_VIRTUALS
122     virtual const char *const className() { return "UIComponent"; }
123 #else
124     virtual const char *const className();
125 #endif
126         
127     //
128     // Functions for registering and unregistering tasks
129     // which will block termination.
130     //
131     void registerPendingTask() { _numPendingTasks++; }
132     void unregisterPendingTask() { _numPendingTasks--; }
133 };
134
135 #endif