]> git.saurik.com Git - wxWidgets.git/blame - utils/wxPython/src/controls.i
Added gifdecod.h
[wxWidgets.git] / utils / wxPython / src / controls.i
CommitLineData
7bf85405
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: controls.i
3// Purpose: Control (widget) classes for wxPython
4//
5// Author: Robin Dunn
6//
7// Created: 6/10/98
8// RCS-ID: $Id$
9// Copyright: (c) 1998 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
03e9bead 13%module controls
7bf85405 14
03e9bead 15%{
7bf85405
RD
16#include "helpers.h"
17#include <wx/slider.h>
62bd0874 18#include <wx/spinbutt.h>
cf694132 19#include <wx/dynarray.h>
8bf5d46e 20#include <wx/statline.h>
fb5e0af0
RD
21
22#ifdef __WXMSW__
9c039d08
RD
23#if wxUSE_OWNER_DRAWN
24#include <wx/checklst.h>
25#endif
fb5e0af0 26#endif
c95e68d8
RD
27
28#ifdef __WXGTK__
29#include <wx/checklst.h>
30#endif
bb0054cd 31
7bf85405
RD
32%}
33
34//----------------------------------------------------------------------
35
36%include typemaps.i
37%include my_typemaps.i
38
39// Import some definitions of other classes, etc.
40%import _defs.i
41%import misc.i
42%import windows.i
43%import gdi.i
44%import events.i
45
b8b8dda7 46%pragma(python) code = "import wx"
9c039d08 47
7bf85405
RD
48//----------------------------------------------------------------------
49
50%{
51wxValidator wxPyDefaultValidator; // Non-const default because of SWIG
52%}
53
54//----------------------------------------------------------------------
55
56class wxControl : public wxWindow {
57public:
8bf5d46e 58#ifdef __WXMSW__
7bf85405 59 void Command(wxCommandEvent& event);
8bf5d46e 60#endif
fb5e0af0 61 wxString GetLabel();
7bf85405
RD
62 void SetLabel(const wxString& label);
63};
64
65//----------------------------------------------------------------------
66
67class wxButton : public wxControl {
68public:
69 wxButton(wxWindow* parent, wxWindowID id, const wxString& label,
70 const wxPoint& pos = wxPyDefaultPosition,
71 const wxSize& size = wxPyDefaultSize,
72 long style = 0,
73 const wxValidator& validator = wxPyDefaultValidator,
74 char* name = "button");
9c039d08 75
b8b8dda7 76 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 77
7bf85405
RD
78 void SetDefault();
79};
80
81//----------------------------------------------------------------------
82
83class wxBitmapButton : public wxButton {
84public:
85 wxBitmapButton(wxWindow* parent, wxWindowID id, const wxBitmap& bitmap,
86 const wxPoint& pos = wxPyDefaultPosition,
87 const wxSize& size = wxPyDefaultSize,
88 long style = wxBU_AUTODRAW,
89 const wxValidator& validator = wxPyDefaultValidator,
90 char* name = "button");
91
b8b8dda7 92 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 93
fb5e0af0 94 wxBitmap& GetBitmapLabel();
7bf85405
RD
95 wxBitmap& GetBitmapDisabled();
96 wxBitmap& GetBitmapFocus();
7bf85405
RD
97 wxBitmap& GetBitmapSelected();
98 void SetBitmapDisabled(const wxBitmap& bitmap);
99 void SetBitmapFocus(const wxBitmap& bitmap);
7bf85405 100 void SetBitmapSelected(const wxBitmap& bitmap);
fb5e0af0 101 void SetBitmapLabel(const wxBitmap& bitmap);
7bf85405
RD
102
103};
104
105//----------------------------------------------------------------------
106
107class wxCheckBox : public wxControl {
108public:
109 wxCheckBox(wxWindow* parent, wxWindowID id, const wxString& label,
110 const wxPoint& pos = wxPyDefaultPosition,
111 const wxSize& size = wxPyDefaultSize,
112 long style = 0,
113 const wxValidator& val = wxPyDefaultValidator,
114 char* name = "checkBox");
115
b8b8dda7 116 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 117
7bf85405
RD
118 bool GetValue();
119 void SetValue(const bool state);
120};
121
122//----------------------------------------------------------------------
123
124class wxChoice : public wxControl {
125public:
126 wxChoice(wxWindow *parent, wxWindowID id,
127 const wxPoint& pos = wxPyDefaultPosition,
128 const wxSize& size = wxPyDefaultSize,
129 int LCOUNT=0, wxString* LIST=NULL,
130 long style = 0,
131 const wxValidator& validator = wxPyDefaultValidator,
132 char* name = "choice");
133
b8b8dda7 134 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 135
7bf85405
RD
136 void Append(const wxString& item);
137 void Clear();
138 int FindString(const wxString& string);
139 int GetColumns();
140 int GetSelection();
141 wxString GetString(const int n);
142 wxString GetStringSelection();
143 int Number();
144 void SetColumns(const int n = 1);
145 void SetSelection(const int n);
146 void SetStringSelection(const wxString& string);
147};
148
149//----------------------------------------------------------------------
150
bb0054cd 151class wxComboBox : public wxChoice {
7bf85405
RD
152public:
153 wxComboBox(wxWindow* parent, wxWindowID id, char* value = "",
154 const wxPoint& pos = wxPyDefaultPosition,
155 const wxSize& size = wxPyDefaultSize,
156 int LCOUNT=0, wxString* LIST=NULL,
157 long style = 0,
158 const wxValidator& validator = wxPyDefaultValidator,
159 char* name = "comboBox");
160
b8b8dda7 161 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 162
7bf85405
RD
163 void Append(const wxString& item);
164 // TODO: void Append(const wxString& item, char* clientData);
165 void Clear();
166 void Copy();
167 void Cut();
168 void Delete(int n);
169 // NotMember??: void Deselect(int n);
170 int FindString(const wxString& string);
171 // TODO: char* GetClientData(const int n);
172 long GetInsertionPoint();
173 long GetLastPosition();
174 int GetSelection();
175 wxString GetString(int n);
176 wxString GetStringSelection();
177 wxString GetValue();
178 int Number();
179 void Paste();
180 void Replace(long from, long to, const wxString& text);
181 void Remove(long from, long to);
182 // TODO: void SetClientData(const int n, char* data);
183 void SetInsertionPoint(long pos);
184 void SetInsertionPointEnd();
bb0054cd 185 //void SetSelection(int n, int select = TRUE); **** Just use the one in wxChoice
7bf85405
RD
186 %name(SetMark)void SetSelection(long from, long to);
187 void SetValue(const wxString& text);
188};
189
190//----------------------------------------------------------------------
191
192class wxGauge : public wxControl {
193public:
194 wxGauge(wxWindow* parent, wxWindowID id, int range,
195 const wxPoint& pos = wxPyDefaultPosition,
196 const wxSize& size = wxPyDefaultSize,
197 long style = wxGA_HORIZONTAL,
198 const wxValidator& validator = wxPyDefaultValidator,
199 char* name = "gauge");
200
b8b8dda7 201 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 202
7bf85405
RD
203 int GetBezelFace();
204 int GetRange();
205 int GetShadowWidth();
206 int GetValue();
207 void SetBezelFace(int width);
208 void SetRange(int range);
209 void SetShadowWidth(int width);
210 void SetValue(int pos);
211};
212
213//----------------------------------------------------------------------
214
215class wxStaticBox : public wxControl {
216public:
217 wxStaticBox(wxWindow* parent, wxWindowID id, const wxString& label,
218 const wxPoint& pos = wxPyDefaultPosition,
219 const wxSize& size = wxPyDefaultSize,
220 long style = 0,
221 char* name = "staticBox");
222};
223
224
bb0054cd
RD
225//----------------------------------------------------------------------
226
8bf5d46e 227
bb0054cd
RD
228class wxStaticLine : public wxControl {
229public:
230 wxStaticLine( wxWindow *parent, wxWindowID id,
231 const wxPoint &pos = wxPyDefaultPosition,
232 const wxSize &size = wxPyDefaultSize,
233 long style = wxLI_HORIZONTAL,
d24a34bb 234 const char* name = "staticLine" );
bb0054cd 235};
8bf5d46e 236
bb0054cd 237
7bf85405
RD
238//----------------------------------------------------------------------
239
240class wxStaticText : public wxControl {
241public:
242 wxStaticText(wxWindow* parent, wxWindowID id, const wxString& label,
243 const wxPoint& pos = wxPyDefaultPosition,
244 const wxSize& size = wxPyDefaultSize,
245 long style = 0,
246 char* name = "staticText");
247
b8b8dda7 248 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 249
7bf85405
RD
250 wxString GetLabel();
251 void SetLabel(const wxString& label);
252};
253
254//----------------------------------------------------------------------
255
256class wxListBox : public wxControl {
257public:
258 wxListBox(wxWindow* parent, wxWindowID id,
259 const wxPoint& pos = wxPyDefaultPosition,
260 const wxSize& size = wxPyDefaultSize,
261 int LCOUNT, wxString* LIST = NULL,
262 long style = 0,
263 const wxValidator& validator = wxPyDefaultValidator,
264 char* name = "listBox");
265
b8b8dda7 266 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 267
7bf85405
RD
268 void Append(const wxString& item);
269 // TODO: void Append(const wxString& item, char* clientData);
270 void Clear();
271 void Delete(int n);
272 void Deselect(int n);
273 int FindString(const wxString& string);
274 // TODO: char* GetClientData(const int n);
275 int GetSelection();
cf694132
RD
276
277 // int GetSelections(int **selections);
278 %addmethods {
279 PyObject* GetSelections() {
280 wxArrayInt lst;
281 self->GetSelections(lst);
282 PyObject *tup = PyTuple_New(lst.GetCount());
283 for(int i=0; i<lst.GetCount(); i++) {
284 PyTuple_SetItem(tup, i, PyInt_FromLong(lst[i]));
285 }
286 return tup;
287 }
288 }
289
7bf85405
RD
290 wxString GetString(int n);
291 wxString GetStringSelection();
292 int Number();
293 bool Selected(const int n);
294 void Set(int LCOUNT, wxString* LIST);
295 // TODO: void SetClientData(const int n, char* data);
296 void SetFirstItem(int n);
297 %name(SetFirstItemStr)void SetFirstItem(const wxString& string);
298 void SetSelection(int n, bool select = TRUE);
299 void SetString(int n, const wxString& string);
300 void SetStringSelection(const wxString& string, bool select = TRUE);
301};
302
303
9c039d08
RD
304//----------------------------------------------------------------------
305
9c039d08
RD
306class wxCheckListBox : public wxListBox {
307public:
308 wxCheckListBox(wxWindow *parent, wxWindowID id,
309 const wxPoint& pos = wxPyDefaultPosition,
310 const wxSize& size = wxPyDefaultSize,
311 int LCOUNT = 0,
312 wxString* LIST = NULL,
313 long style = 0,
314 const wxValidator& validator = wxPyDefaultValidator,
315 char* name = "listBox");
316
b8b8dda7 317 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08
RD
318
319 bool IsChecked(int uiIndex);
320 void Check(int uiIndex, bool bCheck = TRUE);
321
322 int GetItemHeight();
323};
9c039d08 324
7bf85405
RD
325//----------------------------------------------------------------------
326
327class wxTextCtrl : public wxControl {
328public:
329 wxTextCtrl(wxWindow* parent, wxWindowID id, char* value = "",
330 const wxPoint& pos = wxPyDefaultPosition,
331 const wxSize& size = wxPyDefaultSize,
332 long style = 0,
333 const wxValidator& validator = wxPyDefaultValidator,
334 char* name = "text");
335
b8b8dda7 336 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 337
7bf85405
RD
338 void Clear();
339 void Copy();
340 void Cut();
341 void DiscardEdits();
342 long GetInsertionPoint();
343 long GetLastPosition();
344 int GetLineLength(long lineNo);
345 wxString GetLineText(long lineNo);
346 int GetNumberOfLines();
347 wxString GetValue();
348 bool IsModified();
349 bool LoadFile(const wxString& filename);
350 void Paste();
351 void PositionToXY(long pos, long *OUTPUT, long *OUTPUT);
352 void Remove(long from, long to);
353 void Replace(long from, long to, const wxString& value);
354 bool SaveFile(const wxString& filename);
355 void SetEditable(bool editable);
356 void SetInsertionPoint(long pos);
357 void SetInsertionPointEnd();
358 void SetSelection(long from, long to);
359 void SetValue(const wxString& value);
360 void ShowPosition(long pos);
361 void WriteText(const wxString& text);
cf694132 362 void AppendText(const wxString& text);
7bf85405 363 long XYToPosition(long x, long y);
d403febc
RD
364
365 bool CanCopy();
366 bool CanCut();
367 bool CanPaste();
368 bool CanRedo();
369 bool CanUndo();
370 void GetSelection(long* OUTPUT, long* OUTPUT);
371 bool IsEditable();
7bf85405
RD
372};
373
374//----------------------------------------------------------------------
375
376class wxScrollBar : public wxControl {
377public:
378 wxScrollBar(wxWindow* parent, wxWindowID id = -1,
379 const wxPoint& pos = wxPyDefaultPosition,
380 const wxSize& size = wxPyDefaultSize,
381 long style = wxSB_HORIZONTAL,
382 const wxValidator& validator = wxPyDefaultValidator,
383 char* name = "scrollBar");
384
b8b8dda7 385 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 386
7bf85405
RD
387 int GetRange();
388 int GetPageSize();
b8b8dda7 389 int GetThumbPosition();
7bf85405 390 int GetThumbSize();
b8b8dda7 391 void SetThumbPosition(int viewStart);
7bf85405
RD
392 void SetScrollbar(int position, int thumbSize,
393 int range, int pageSize,
394 bool refresh = TRUE);
395};
396
397//----------------------------------------------------------------------
398
399class wxSpinButton : public wxControl {
400public:
401 wxSpinButton(wxWindow* parent, wxWindowID id = -1,
402 const wxPoint& pos = wxPyDefaultPosition,
403 const wxSize& size = wxPyDefaultSize,
404 long style = wxSP_HORIZONTAL,
405 char* name = "spinButton");
406
407 int GetMax();
408 int GetMin();
409 int GetValue();
410 void SetRange(int min, int max);
411 void SetValue(int value);
412};
413
414//----------------------------------------------------------------------
415
416class wxStaticBitmap : public wxControl {
417public:
418 wxStaticBitmap(wxWindow* parent, wxWindowID id,
419 const wxBitmap& bitmap,
420 const wxPoint& pos = wxPyDefaultPosition,
421 const wxSize& size = wxPyDefaultSize,
422 long style = 0,
423 char* name = "staticBitmap");
424
b8b8dda7 425 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 426
cf694132 427 const wxBitmap& GetBitmap();
7bf85405 428 void SetBitmap(const wxBitmap& bitmap);
8bf5d46e 429 void SetIcon(const wxIcon& icon);
7bf85405
RD
430};
431
432//----------------------------------------------------------------------
433
434class wxRadioBox : public wxControl {
435public:
436 wxRadioBox(wxWindow* parent, wxWindowID id,
437 const wxString& label,
438 const wxPoint& point = wxPyDefaultPosition,
439 const wxSize& size = wxPyDefaultSize,
440 int LCOUNT = 0, wxString* LIST = NULL,
441 int majorDimension = 0,
442 long style = wxRA_HORIZONTAL,
443 const wxValidator& validator = wxPyDefaultValidator,
444 char* name = "radioBox");
445
b8b8dda7 446 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 447
0699c864
RD
448 void Enable(bool enable);
449 %name(EnableItem)void Enable(int n, bool enable);
7bf85405 450 int FindString(const wxString& string);
bb0054cd
RD
451
452//*** wxString GetLabel();
453//*** void SetLabel(const wxString& label);
454
0699c864 455 %name(GetItemLabel)wxString GetLabel(int n);
7bf85405
RD
456 int GetSelection();
457 wxString GetString(int n);
458 wxString GetStringSelection();
459 int Number();
0699c864 460 %name(SetItemLabel)void SetLabel(int n, const wxString& label);
7bf85405
RD
461 void SetSelection(int n);
462 void SetStringSelection(const wxString& string);
463 void Show(bool show);
464 %name(ShowItem)void Show(int item, bool show);
465};
466
467//----------------------------------------------------------------------
468
469class wxRadioButton : public wxControl {
470public:
471 wxRadioButton(wxWindow* parent, wxWindowID id,
472 const wxString& label,
473 const wxPoint& pos = wxPyDefaultPosition,
474 const wxSize& size = wxPyDefaultSize,
475 long style = 0,
476 const wxValidator& validator = wxPyDefaultValidator,
477 char* name = "radioButton");
478
b8b8dda7 479 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 480
7bf85405
RD
481 bool GetValue();
482 void SetValue(bool value);
483};
484
485//----------------------------------------------------------------------
486
487class wxSlider : public wxControl {
488public:
489 wxSlider(wxWindow* parent, wxWindowID id,
490 int value, int minValue, int maxValue,
491 const wxPoint& point = wxPyDefaultPosition,
492 const wxSize& size = wxPyDefaultSize,
493 long style = wxSL_HORIZONTAL,
494 const wxValidator& validator = wxPyDefaultValidator,
495 char* name = "slider");
496
b8b8dda7 497 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
9c039d08 498
7bf85405
RD
499 void ClearSel();
500 void ClearTicks();
501 int GetLineSize();
502 int GetMax();
503 int GetMin();
504 int GetPageSize();
505 int GetSelEnd();
506 int GetSelStart();
507 int GetThumbLength();
508 int GetTickFreq();
509 int GetValue();
510 void SetRange(int minValue, int maxValue);
511 void SetTickFreq(int n, int pos);
512 void SetLineSize(int lineSize);
513 void SetPageSize(int pageSize);
514 void SetSelection(int startPos, int endPos);
515 void SetThumbLength(int len);
516 void SetTick(int tickPos);
517 void SetValue(int value);
518};
519
520
521//----------------------------------------------------------------------
522
523
524/////////////////////////////////////////////////////////////////////////////
525//
526// $Log$
8bf5d46e
RD
527// Revision 1.16 1999/07/31 07:54:35 RD
528// wxPython 2.1b1:
529//
530// Added the missing wxWindow.GetUpdateRegion() method.
531//
532// Made a new change in SWIG (update your patches everybody) that
533// provides a fix for global shadow objects that get an exception in
534// their __del__ when their extension module has already been deleted.
535// It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about
536// line 496 if you want to do it by hand.
537//
538// It is now possible to run through MainLoop more than once in any one
539// process. The cleanup that used to happen as MainLoop completed (and
540// prevented it from running again) has been delayed until the wxc module
541// is being unloaded by Python.
542//
543// wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added
544// wxWindow.PopupMenuXY to be consistent with some other methods.
545//
546// Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace.
547//
548// You can now provide your own app.MainLoop method. See
549// wxPython/demo/demoMainLoop.py for an example and some explaination.
550//
551// Got the in-place-edit for the wxTreeCtrl fixed and added some demo
552// code to show how to use it.
553//
554// Put the wxIcon constructor back in for GTK as it now has one that
555// matches MSW's.
556//
557// Added wxGrid.GetCells
558//
559// Added wxSystemSettings static methods as functions with names like
560// wxSystemSettings_GetSystemColour.
561//
562// Removed wxPyMenu since using menu callbacks have been depreciated in
563// wxWindows. Use wxMenu and events instead.
564//
565// Added alternate wxBitmap constructor (for MSW only) as
566// wxBitmapFromData(data, type, width, height, depth = 1)
567//
568// Added a helper function named wxPyTypeCast that can convert shadow
569// objects of one type into shadow objects of another type. (Like doing
570// a down-cast.) See the implementation in wx.py for some docs.
571//
d24a34bb 572// Revision 1.15 1999/06/22 17:45:18 RD
8bf5d46e 573//
d24a34bb
RD
574// wxPython 2.1b1: Very minor changes needed for wxGTK
575//
bb0054cd 576// Revision 1.14 1999/06/22 07:03:02 RD
d24a34bb 577//
bb0054cd
RD
578// wxPython 2.1b1 for wxMSW (wxGTK coming soon)
579// Lots of changes, see the README.txt for details...
580//
d403febc 581// Revision 1.13 1999/04/30 21:13:43 RD
bb0054cd 582//
d403febc
RD
583// wxPython 2.0b9, first phase (win32)
584// Added gobs of stuff, see wxPython/README.txt for details
585//
cf694132 586// Revision 1.12 1999/04/30 03:29:18 RD
d403febc 587//
cf694132
RD
588// wxPython 2.0b9, first phase (win32)
589// Added gobs of stuff, see wxPython/README.txt for details
590//
591// Revision 1.11.4.1 1999/03/27 23:29:14 RD
592//
593// wxPython 2.0b8
594// Python thread support
595// various minor additions
596// various minor fixes
597//
0699c864 598// Revision 1.11 1999/02/25 07:08:30 RD
cf694132 599//
0699c864
RD
600// wxPython version 2.0b5
601//
c95e68d8 602// Revision 1.10 1998/12/17 17:52:19 RD
0699c864 603//
c95e68d8
RD
604// wxPython 0.5.2
605// Minor fixes and SWIG code generation for RR's changes. MSW and GTK
606// versions are much closer now!
607//
4f22cf8d 608// Revision 1.9 1998/12/17 14:07:29 RR
c95e68d8 609//
4f22cf8d
RR
610// Removed minor differences between wxMSW and wxGTK
611//
b8b8dda7
RD
612// Revision 1.8 1998/12/15 20:41:15 RD
613// Changed the import semantics from "from wxPython import *" to "from
614// wxPython.wx import *" This is for people who are worried about
615// namespace pollution, they can use "from wxPython import wx" and then
616// prefix all the wxPython identifiers with "wx."
617//
618// Added wxTaskbarIcon for wxMSW.
619//
620// Made the events work for wxGrid.
621//
622// Added wxConfig.
623//
624// Added wxMiniFrame for wxGTK, (untested.)
625//
626// Changed many of the args and return values that were pointers to gdi
627// objects to references to reflect changes in the wxWindows API.
628//
629// Other assorted fixes and additions.
630//
62bd0874
RD
631// Revision 1.7 1998/11/16 00:00:53 RD
632// Generic treectrl for wxPython/GTK compiles...
633//
faf3cb35
RD
634// Revision 1.6 1998/11/15 23:03:43 RD
635// Removing some ifdef's for wxGTK
636//
b26e2dc4
RD
637// Revision 1.5 1998/10/07 07:34:32 RD
638// Version 0.4.1 for wxGTK
639//
9c039d08 640// Revision 1.4 1998/10/02 06:40:35 RD
b26e2dc4 641//
9c039d08
RD
642// Version 0.4 of wxPython for MSW.
643//
fb5e0af0
RD
644// Revision 1.3 1998/08/18 19:48:14 RD
645// more wxGTK compatibility things.
646//
647// It builds now but there are serious runtime problems...
648//
03e9bead
RD
649// Revision 1.2 1998/08/15 07:36:28 RD
650// - Moved the header in the .i files out of the code that gets put into
651// the .cpp files. It caused CVS conflicts because of the RCS ID being
652// different each time.
653//
654// - A few minor fixes.
655//
7bf85405
RD
656// Revision 1.1 1998/08/09 08:25:49 RD
657// Initial version
658//
659//
660