home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 mARCH / PCWK3A99.iso / Linux / DDD331 / DDD-3_1_.000 / DDD-3_1_ / ddd-3.1.1 / ddd / ArgField.h < prev    next >
C/C++ Source or Header  |  1998-11-23  |  3KB  |  108 lines

  1. // $Id: ArgField.h,v 1.16 1998/11/23 17:43:15 zeller Exp $
  2. // Argument field Implementation
  3.  
  4. // Copyright (C) 1995 Technische Universitaet Braunschweig, Germany.
  5. // Written by Dorothea Luetkehaus <luetke@ips.cs.tu-bs.de>.
  6. // 
  7. // This file is part of DDD.
  8. // 
  9. // DDD is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public
  11. // License as published by the Free Software Foundation; either
  12. // version 2 of the License, or (at your option) any later version.
  13. // 
  14. // DDD is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  17. // See the GNU General Public License for more details.
  18. // 
  19. // You should have received a copy of the GNU General Public
  20. // License along with DDD -- see the file COPYING.
  21. // If not, write to the Free Software Foundation, Inc.,
  22. // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  23. // 
  24. // DDD is the data display debugger.
  25. // For details, see the DDD World-Wide-Web page, 
  26. // `http://www.cs.tu-bs.de/softech/ddd/',
  27. // or send a mail to the DDD developers <ddd@ips.cs.tu-bs.de>.
  28.  
  29. #ifndef _DDD_ArgField_h
  30. #define _DDD_ArgField_h
  31.  
  32. #ifdef __GNUG__
  33. #pragma interface
  34. #endif
  35.  
  36. //-----------------------------------------------------------------------------
  37. // An `ArgField' is a Text field with handler procs.
  38. //-----------------------------------------------------------------------------
  39.  
  40. // Motif includes
  41. #include <X11/Intrinsic.h>
  42.  
  43. // Misc includes
  44. #include "HandlerL.h"
  45. #include "bool.h"
  46. #include "strclass.h"
  47. #include "assert.h"
  48.  
  49.  
  50. //-----------------------------------------------------------------------------
  51. // Event types
  52. const unsigned Empty       = 0;
  53. const unsigned Changed     = Empty + 1;
  54. const unsigned LosePrimary = Changed + 1;
  55.  
  56. const unsigned ArgField_NTypes = LosePrimary + 1;
  57.  
  58. class ArgField {
  59.     Widget      arg_text_field;
  60.     HandlerList handlers;
  61.     bool     is_empty;
  62.  
  63.     static void valueChangedCB(Widget w,
  64.                    XtPointer client_data, 
  65.                    XtPointer call_data);
  66.     static void losePrimaryCB(Widget w,
  67.                   XtPointer client_data, 
  68.                   XtPointer call_data);
  69.  
  70. private:
  71.     ArgField(const ArgField&): 
  72.     arg_text_field(0), handlers(), is_empty(false) { assert(0); }
  73.     ArgField& operator = (const ArgField&)       { assert(0); return *this; }
  74.  
  75. public:
  76.     // Constructor
  77.     ArgField(Widget parent, const char *name);
  78.  
  79.     bool empty () const { return is_empty; }
  80.  
  81.     string get_string () const;
  82.  
  83.     void set_string(string s);
  84.  
  85.     Widget text() const { return arg_text_field; };
  86.     Widget top()  const;
  87.  
  88.     void addHandler (unsigned    type,
  89.              HandlerProc proc,
  90.              void*       client_data = 0);
  91.  
  92.     void removeHandler (unsigned    type,
  93.             HandlerProc proc,
  94.             void        *client_data = 0);
  95.  
  96.     void callHandlers ();
  97. };
  98.  
  99. // Create a `():' label named "arg_label"
  100. Widget create_arg_label(Widget parent);
  101.  
  102. // Clear the text field given in Widget(CLIENT_DATA)
  103. void ClearTextFieldCB(Widget w, XtPointer client_data, XtPointer call_data);
  104.  
  105. #endif // _DDD_ArgField_h
  106. // DON'T ADD ANYTHING BEHIND THIS #endif
  107.  
  108.