00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _PO_XT_DIALOG_H
00025 #define _PO_XT_DIALOG_H
00026
00027 #include <Inventor/Xt/SoXt.h>
00028 #include <Inventor/Xt/SoXtComponent.h>
00029 #include <Inventor/dialog/PoXtElementData.h>
00030
00031 class PoXtElementData;
00032 class SoCallbackList;
00033 #ifdef _WIN32
00034 class PoDialog;
00035 class PoStatic;
00036 #endif
00037 class SoDEPRECATED PoXtDialog : public SoXtComponent
00099 {
00100
00101 public:
00102
00103
00104
00120 struct PoXtDialogDataCB
00121
00122 {
00123
00127 PoXtDialog * dialog;
00128
00132 int widgetNumber;
00133
00134 };
00135
00136
00137
00141 typedef void PoXtDialogCB(void * userData,
00142 const PoXtDialogDataCB * data);
00143
00144 public:
00145
00150 PoXtDialog(SoWidget parent = NULL,
00151 const char * name = NULL,
00152 SbBool buildInsideParent = TRUE,
00153 int numXtElt = 0,
00154 const PoXtElementData ** elts = NULL);
00155
00159 ~PoXtDialog();
00160
00161
00162
00167 void setValues(int numXtElt, const PoXtElementData ** elts);
00168
00173 const PoXtElementData ** getValues(int & numXtElt) const;
00174
00178 void set1Value(int index, const PoXtElementData * elt);
00179
00209 const PoXtElementData * get1Value(int index) const;
00210
00214 void insert1Value(int index, const PoXtElementData * elt);
00215
00219 void insertNValues(int index, int numElt, const PoXtElementData ** elt);
00220
00224 void delete1Value(int index);
00225
00229 void deleteNValues(int index, int numElt);
00230
00237 void windowResizeByXtElement(SbBool flag);
00238
00243 SbBool isWindowResizeByXtElement() const;
00244
00248 void setVerticalScrollbar(SbBool visible);
00249
00253 SbBool isVerticalScrollbar() const;
00254
00259 void addValueChangedCallback(PoXtDialogCB * function,
00260 void * userData = NULL);
00261
00266 void removeValueChangedCallback(PoXtDialogCB * function,
00267 void * userData = NULL);
00268
00277 virtual void show();
00278
00282 virtual void hide();
00283 private:
00284
00285
00286 virtual SbString getDefaultWidgetName() const;
00287 virtual SbString getDefaultTitle() const;
00288 virtual SbString getDefaultIconTitle() const;
00289
00290
00291 #ifdef _WIN32
00292 virtual void redraw ();
00293 #endif
00294
00295 private:
00296 #ifndef _WIN32
00297 SoWidget buildWidget(SoWidget parent);
00298
00299
00300 int attachElement(int hightPosition, int indice);
00301
00302
00303
00304 void beforeUpdateElement();
00305
00306
00307
00308 void afterUpdateElement(int heightEltChanged=0);
00309
00310
00311 SbBool _isScrollBar;
00312 int _numberXtElement;
00313 int _maxXtElement;
00314 int _heightDialog;
00315
00316
00317 int _maxWidthLabel;
00318 SoWidget _baseWidget, _scrollWidget, *_frame;
00319 SoWidget _areaWidget, _verticalScrollWidget;
00320
00321 SoCallbackList * _callback;
00322
00323 PoXtElementData ** _listXtElement;
00324 int _spaceBetweenElement;
00325 SbBool _windowResizeByXtElement;
00326
00327
00328
00329 PoXtDialogDataCB **_userData;
00330 static void handleCallback(PoXtDialogDataCB * dataCB, void * value);
00331
00332 static void resizeArea(SoWidget, PoXtDialog * dialog, XtPointer notUse);
00333 static void expose(SoWidget w, PoXtDialog * dataUser,
00334 XEvent * event, Boolean * contDispatch);
00335
00336 #else
00337 void buildWidget (SoWidget parent);
00338 void buildElements ();
00339 void buildElement (int, int);
00340 void initElementsPos ();
00341 void insertValue (int index, const PoXtElementData * elt);
00342 void deleteValue (int index);
00343
00344
00345 static void handleCallback (void * element, void * value);
00346 static void resizeCallback (void * dialog, void * userData,
00347 int width, int height);
00348
00349 void freeXtElementArray ();
00350 void initXtElementArray (const PoXtElementData **);
00351
00352 int _xtElementNumber;
00353 PoXtElementData ** _xtElementArray;
00354 int _arraySize;
00355
00356 SoWidget _dialogWidget;
00357 PoDialog * _dialog;
00358 SbBool _windowResize;
00359
00360 int _dialogHeight;
00361 int _maxLabelSize;
00362
00363 SoCallbackList * _callbackList;
00364
00365
00366 PoXtDialogDataCB ** _userData;
00367
00368 PoStatic ** _frameArray;
00369 #endif
00370 };
00371
00372 #endif //_PO_XT_DIALOG_H
00373
00374
00375