2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
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)
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
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
26 * $TOG: UIComponent.h /main/6 1998/01/29 15:18:31 mgreess $
28 * RESTRICTED CONFIDENTIAL INFORMATION:
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
38 * Copyright 1993 Sun Microsystems, Inc. All rights reserved.
43 ///////////////////////////////////////////////////////////////////////////////
44 //////////////////////////////////////////////////////////////////////////////
45 // This example code is from the book:
47 // Object-Oriented Programming with C++ and OSF/Motif
50 // Prentice Hall, 1992
53 // Copyright 1991 by Prentice Hall
54 // All Rights Reserved
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 //////////////////////////////////////////////////////////////////////////////
63 ///////////////////////////////////////////////////////////////
64 // UIComponent.h: Base class for all C++/Motif UI components
65 ///////////////////////////////////////////////////////////////
69 #ifndef I_HAVE_NO_IDENT
73 #include "BasicComponent.h"
75 class UIComponent : public BasicComponent {
79 // Interface between XmNdestroyCallback and this class
81 static void widgetDestroyedCallback ( Widget,
88 // Number of pending tasks.
89 // UIComponents with pending tasks should not be terminated.
90 // Used in Application and MainWindow classes to block termination.
94 // Protect constructor to prevent direct instantiation
95 UIComponent ( const char * );
97 void installDestroyHandler(); // Easy hook for derived classes
99 // Called by widgetDestroyedCallback() if base widget is destroyed
100 virtual void widgetDestroyed();
103 // Loads component's default resources into database
104 void setDefaultResources ( const Widget , const String *);
105 #endif /* DEAD_WOOD */
107 // Retrieve resources for this clsss from the resource manager
108 void getResources ( const XtResourceList, const int );
112 virtual ~UIComponent();
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);
120 // Public access functions
121 #ifdef CAN_INLINE_VIRTUALS
122 virtual const char *const className() { return "UIComponent"; }
124 virtual const char *const className();
128 // Functions for registering and unregistering tasks
129 // which will block termination.
131 void registerPendingTask() { _numPendingTasks++; }
132 void unregisterPendingTask() { _numPendingTasks--; }