00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef QTXPAGEPREFMGR_H
00024 #define QTXPAGEPREFMGR_H
00025
00026 #include "QtxPreferenceMgr.h"
00027
00028 #include "QtxPathEdit.h"
00029 #include "QtxPathListEdit.h"
00030
00031 #include <QFrame>
00032 #include <QLabel>
00033 #include <QPointer>
00034 #include <QIcon>
00035
00036 class QtxGridBox;
00037 class QtxFontEdit;
00038 class QtxGroupBox;
00039 class QtxComboBox;
00040 class QtxColorButton;
00041 class QtxShortcutEdit;
00042 class QtxShortcutTree;
00043
00044 class QToolBox;
00045 class QLineEdit;
00046 class QTextEdit;
00047 class QCheckBox;
00048 class QTabWidget;
00049 class QToolButton;
00050 class QListWidget;
00051 class QFileDialog;
00052 class QDateTimeEdit;
00053 class QStackedWidget;
00054 class QSlider;
00055 class QTreeWidget;
00056
00057 class QTX_EXPORT QtxPagePrefMgr : public QFrame, public QtxPreferenceMgr
00058 {
00059 Q_OBJECT
00060
00061 public:
00062 QtxPagePrefMgr( QtxResourceMgr*, QWidget* = 0 );
00063 virtual ~QtxPagePrefMgr();
00064
00065 virtual QSize sizeHint() const;
00066 virtual QSize minimumSizeHint() const;
00067
00068 virtual void updateContents();
00069
00070 signals:
00071 void resourceChanged( int );
00072 void resourceChanged( QString&, QString& );
00073 void resourcesChanged( const QMap<int, QString>& );
00074
00075 public slots:
00076 virtual void setVisible( bool );
00077
00078 protected:
00079 virtual void itemAdded( QtxPreferenceItem* );
00080 virtual void itemRemoved( QtxPreferenceItem* );
00081 virtual void itemChanged( QtxPreferenceItem* );
00082
00083 virtual QVariant optionValue( const QString& ) const;
00084 virtual void setOptionValue( const QString&, const QVariant& );
00085
00086 private:
00087 void initialize() const;
00088 void initialize( QtxPreferenceItem* );
00089
00090 private:
00091 QtxGridBox* myBox;
00092 bool myInit;
00093 };
00094
00095 class QTX_EXPORT QtxPagePrefItem : public QtxPreferenceItem
00096 {
00097 class Listener;
00098
00099 public:
00100 QtxPagePrefItem( const QString&, QtxPreferenceItem* = 0,
00101 const QString& = QString(), const QString& = QString() );
00102 virtual ~QtxPagePrefItem();
00103
00104 QWidget* widget() const;
00105
00106 virtual void activate();
00107
00108 protected:
00109 void setWidget( QWidget* );
00110
00111 virtual void itemAdded( QtxPreferenceItem* );
00112 virtual void itemRemoved( QtxPreferenceItem* );
00113 virtual void itemChanged( QtxPreferenceItem* );
00114
00115 void pageChildItems( QList<QtxPagePrefItem*>&, const bool = false ) const;
00116
00117 virtual void store();
00118 virtual void retrieve();
00119
00120 virtual void widgetShown();
00121 virtual void widgetHided();
00122
00123 virtual void ensureVisible( QtxPreferenceItem* );
00124
00125 private:
00126 virtual void contentChanged();
00127
00128 private:
00129 QPointer<QWidget> myWidget;
00130 Listener* myListener;
00131 };
00132
00133 class QTX_EXPORT QtxPageNamedPrefItem : public QtxPagePrefItem
00134 {
00135 public:
00136 QtxPageNamedPrefItem( const QString&, QtxPreferenceItem* = 0,
00137 const QString& = QString(), const QString& = QString() );
00138 virtual ~QtxPageNamedPrefItem();
00139
00140 virtual void setTitle( const QString& );
00141
00142 static void adjustLabels( QtxPagePrefItem* );
00143
00144 protected:
00145 QLabel* label() const;
00146 QWidget* control() const;
00147
00148 void setControl( QWidget* );
00149
00150 private:
00151 QPointer<QLabel> myLabel;
00152 QPointer<QWidget> myControl;
00153 };
00154
00155 class QTX_EXPORT QtxPagePrefListItem : public QObject, public QtxPagePrefItem
00156 {
00157 Q_OBJECT
00158
00159 public:
00160 QtxPagePrefListItem( const QString&, QtxPreferenceItem* = 0,
00161 const QString& = QString(), const QString& = QString() );
00162 virtual ~QtxPagePrefListItem();
00163
00164 virtual void updateContents();
00165
00166 QString emptyInfo() const;
00167 void setEmptyInfo( const QString& );
00168
00169 bool isFixedSize() const;
00170 void setFixedSize( const bool );
00171
00172 private slots:
00173 void onItemSelectionChanged();
00174
00175 protected:
00176 virtual QVariant optionValue( const QString& ) const;
00177 virtual void setOptionValue( const QString&, const QVariant& );
00178 virtual void ensureVisible( QtxPreferenceItem* );
00179
00180 virtual void widgetShown();
00181
00182 private:
00183 void updateInfo();
00184 void updateGeom();
00185 void updateState();
00186 void updateVisible();
00187
00188 int selected() const;
00189 QtxPagePrefItem* selectedItem() const;
00190 void setSelected( const int );
00191
00192 private:
00193 bool myFix;
00194 QListWidget* myList;
00195 QStackedWidget* myStack;
00196
00197 QString myInfText;
00198 QLabel* myInfLabel;
00199 };
00200
00201 class QTX_EXPORT QtxPagePrefToolBoxItem : public QtxPagePrefItem
00202 {
00203 public:
00204 QtxPagePrefToolBoxItem( const QString&, QtxPreferenceItem* = 0,
00205 const QString& = QString(), const QString& = QString() );
00206 virtual ~QtxPagePrefToolBoxItem();
00207
00208 virtual void updateContents();
00209
00210 protected:
00211 virtual void ensureVisible( QtxPreferenceItem* );
00212
00213 private:
00214 void updateToolBox();
00215
00216 private:
00217 QToolBox* myToolBox;
00218 };
00219
00220 class QTX_EXPORT QtxPagePrefTabsItem : public QtxPagePrefItem
00221 {
00222 public:
00223 QtxPagePrefTabsItem( const QString&, QtxPreferenceItem* = 0,
00224 const QString& = QString(), const QString& = QString() );
00225 virtual ~QtxPagePrefTabsItem();
00226
00227 virtual void updateContents();
00228
00229 int tabPosition() const;
00230 void setTabPosition( const int );
00231
00232 int tabShape() const;
00233 void setTabShape( const int );
00234
00235 QSize tabIconSize() const;
00236 void setTabIconSize( const QSize& );
00237
00238 protected:
00239 virtual QVariant optionValue( const QString& ) const;
00240 virtual void setOptionValue( const QString&, const QVariant& );
00241 virtual void ensureVisible( QtxPreferenceItem* );
00242
00243 private:
00244 void updateTabs();
00245
00246 private:
00247 QTabWidget* myTabs;
00248 };
00249
00250 class QTX_EXPORT QtxPagePrefFrameItem : public QtxPagePrefItem
00251 {
00252 public:
00253 QtxPagePrefFrameItem( const QString&, QtxPreferenceItem* = 0,
00254 const QString& = QString(), const QString& = QString() );
00255 virtual ~QtxPagePrefFrameItem();
00256
00257 virtual void updateContents();
00258
00259 bool stretch() const;
00260 void setStretch( const bool );
00261
00262 int margin() const;
00263 void setMargin( const int );
00264
00265 int spacing() const;
00266 void setSpacing( const int );
00267
00268 int columns() const;
00269 void setColumns( const int );
00270
00271 Qt::Orientation orientation() const;
00272 void setOrientation( const Qt::Orientation );
00273
00274 protected:
00275 virtual QVariant optionValue( const QString& ) const;
00276 virtual void setOptionValue( const QString&, const QVariant& );
00277
00278 virtual void widgetShown();
00279
00280 private:
00281 void updateFrame();
00282
00283 private:
00284 QtxGridBox* myBox;
00285 };
00286
00287 class QTX_EXPORT QtxPagePrefGroupItem : public QtxPagePrefItem
00288 {
00289 public:
00290 QtxPagePrefGroupItem( const QString&, QtxPreferenceItem* = 0,
00291 const QString& = QString(), const QString& = QString() );
00292 QtxPagePrefGroupItem( const int, const QString&, QtxPreferenceItem* = 0,
00293 const QString& = QString(), const QString& = QString() );
00294 virtual ~QtxPagePrefGroupItem();
00295
00296 virtual void updateContents();
00297
00298 int margin() const;
00299 void setMargin( const int );
00300
00301 int spacing() const;
00302 void setSpacing( const int );
00303
00304 int columns() const;
00305 void setColumns( const int );
00306
00307 Qt::Orientation orientation() const;
00308 void setOrientation( const Qt::Orientation );
00309
00310 bool isFlat() const;
00311 void setFlat( const bool );
00312
00313 virtual void setResource( const QString&, const QString& );
00314
00315 virtual void store();
00316 virtual void retrieve();
00317
00318 QtxGridBox* gridBox() const;
00319
00320 protected:
00321 virtual QVariant optionValue( const QString& ) const;
00322 virtual void setOptionValue( const QString&, const QVariant& );
00323
00324 virtual void widgetShown();
00325
00326 private:
00327 void updateState();
00328 void updateGroup();
00329
00330 private:
00331 QtxGridBox* myBox;
00332 QtxGroupBox* myGroup;
00333 };
00334
00335 class QTX_EXPORT QtxPagePrefLabelItem : public QtxPagePrefItem
00336 {
00337 public:
00338 QtxPagePrefLabelItem( const QString&, QtxPreferenceItem* = 0 );
00339 QtxPagePrefLabelItem( Qt::Alignment, const QString&, QtxPreferenceItem* = 0 );
00340 virtual ~QtxPagePrefLabelItem();
00341
00342 virtual void setTitle( const QString& );
00343
00344 Qt::Alignment alignment() const;
00345 void setAlignment( Qt::Alignment );
00346
00347 protected:
00348 virtual QVariant optionValue( const QString& ) const;
00349 virtual void setOptionValue( const QString&, const QVariant& );
00350
00351 private:
00352 QPointer<QLabel> myLabel;
00353 };
00354
00355 class QTX_EXPORT QtxPagePrefSpaceItem : public QtxPagePrefItem
00356 {
00357 public:
00358 QtxPagePrefSpaceItem( QtxPreferenceItem* = 0 );
00359 QtxPagePrefSpaceItem( Qt::Orientation, QtxPreferenceItem* = 0 );
00360 QtxPagePrefSpaceItem( const int, const int, QtxPreferenceItem* = 0 );
00361 virtual ~QtxPagePrefSpaceItem();
00362
00363 int size( Qt::Orientation ) const;
00364 void setSize( Qt::Orientation, const int );
00365
00366 int stretch( Qt::Orientation ) const;
00367 void setStretch( Qt::Orientation, const int );
00368
00369 protected:
00370 virtual QVariant optionValue( const QString& ) const;
00371 virtual void setOptionValue( const QString&, const QVariant& );
00372
00373 private:
00374 void initialize( const int, const int, const int, const int );
00375 };
00376
00377 class QTX_EXPORT QtxPagePrefCheckItem : public QtxPagePrefItem
00378 {
00379 public:
00380 QtxPagePrefCheckItem( const QString&, QtxPreferenceItem* = 0,
00381 const QString& = QString(), const QString& = QString() );
00382 virtual ~QtxPagePrefCheckItem();
00383
00384 virtual void setTitle( const QString& );
00385
00386 virtual void store();
00387 virtual void retrieve();
00388
00389 private:
00390 QCheckBox* myCheck;
00391 };
00392
00393 class QTX_EXPORT QtxPagePrefEditItem : public QtxPageNamedPrefItem
00394 {
00395 public:
00396 typedef enum { String, Integer, Double } InputType;
00397
00398 public:
00399 QtxPagePrefEditItem( const QString&, QtxPreferenceItem* = 0,
00400 const QString& = QString(), const QString& = QString() );
00401 QtxPagePrefEditItem( const int, const QString&, QtxPreferenceItem* = 0,
00402 const QString& = QString(), const QString& = QString() );
00403 virtual ~QtxPagePrefEditItem();
00404
00405 int inputType() const;
00406 void setInputType( const int );
00407
00408 int decimals() const;
00409 void setDecimals( const int );
00410
00411 int echoMode() const;
00412 void setEchoMode( const int );
00413
00414 virtual void store();
00415 virtual void retrieve();
00416
00417 protected:
00418 virtual QVariant optionValue( const QString& ) const;
00419 virtual void setOptionValue( const QString&, const QVariant& );
00420
00421 private:
00422 void updateEditor();
00423
00424 private:
00425 int myType;
00426 int myDecimals;
00427 int myEchoMode;
00428 QLineEdit* myEditor;
00429 };
00430
00431 class QTX_EXPORT QtxPagePrefSliderItem : public QObject,public QtxPageNamedPrefItem
00432 {
00433 Q_OBJECT
00434
00435 public:
00436 QtxPagePrefSliderItem( const QString&, QtxPreferenceItem* = 0,
00437 const QString& = QString(), const QString& = QString() );
00438 virtual ~QtxPagePrefSliderItem();
00439
00440 int singleStep() const;
00441 int pageStep() const;
00442 int minimum() const;
00443 int maximum() const;
00444 QList<QIcon> icons() const;
00445
00446 void setSingleStep( const int& );
00447 void setPageStep( const int& );
00448 void setMinimum( const int& );
00449 void setMaximum( const int& );
00450 void setIcons( const QList<QIcon>& );
00451
00452 virtual void store();
00453 virtual void retrieve();
00454
00455 protected:
00456 virtual QVariant optionValue( const QString& ) const;
00457 virtual void setOptionValue( const QString&, const QVariant& );
00458
00459 private slots:
00460 void setIcon( int );
00461
00462 private:
00463 void updateSlider();
00464 void setIcons( const QVariant& );
00465
00466 private:
00467 QSlider* mySlider;
00468 QLabel* myLabel;
00469 QList<QIcon> myIcons;
00470 };
00471
00472 class QTX_EXPORT QtxPagePrefSelectItem : public QtxPageNamedPrefItem
00473 {
00474 public:
00475 typedef enum { NoInput, String, Integer, Double } InputType;
00476
00477 public:
00478 QtxPagePrefSelectItem( const QString&, QtxPreferenceItem* = 0,
00479 const QString& = QString(), const QString& = QString() );
00480 QtxPagePrefSelectItem( const int, const QString&, QtxPreferenceItem* = 0,
00481 const QString& = QString(), const QString& = QString() );
00482 virtual ~QtxPagePrefSelectItem();
00483
00484 int inputType() const;
00485 void setInputType( const int );
00486
00487 QStringList strings() const;
00488 QList<int> numbers() const;
00489 QList<QIcon> icons() const;
00490
00491 void setStrings( const QStringList& );
00492 void setNumbers( const QList<int>& );
00493 void setIcons( const QList<QIcon>& );
00494
00495 virtual void store();
00496 virtual void retrieve();
00497
00498 protected:
00499 virtual QVariant optionValue( const QString& ) const;
00500 virtual void setOptionValue( const QString&, const QVariant& );
00501
00502 private:
00503 void updateSelector();
00504 void setStrings( const QVariant& );
00505 void setNumbers( const QVariant& );
00506 void setIcons( const QVariant& );
00507
00508 private:
00509 int myType;
00510 QtxComboBox* mySelector;
00511 };
00512
00513 class QTX_EXPORT QtxPagePrefSpinItem : public QtxPageNamedPrefItem
00514 {
00515 public:
00516 typedef enum { Integer, Double } InputType;
00517
00518 public:
00519 QtxPagePrefSpinItem( const QString&, QtxPreferenceItem* = 0,
00520 const QString& = QString(), const QString& = QString() );
00521 QtxPagePrefSpinItem( const int, const QString&, QtxPreferenceItem* = 0,
00522 const QString& = QString(), const QString& = QString() );
00523 virtual ~QtxPagePrefSpinItem();
00524
00525 QVariant step() const;
00526 QVariant precision() const;
00527 QVariant minimum() const;
00528 QVariant maximum() const;
00529
00530 QString prefix() const;
00531 QString suffix() const;
00532 QString specialValueText() const;
00533
00534 void setStep( const QVariant& );
00535 void setPrecision( const QVariant& );
00536 void setMinimum( const QVariant& );
00537 void setMaximum( const QVariant& );
00538
00539 void setPrefix( const QString& );
00540 void setSuffix( const QString& );
00541 void setSpecialValueText( const QString& );
00542
00543 int inputType() const;
00544 void setInputType( const int );
00545
00546 virtual void store();
00547 virtual void retrieve();
00548
00549 protected:
00550 virtual QVariant optionValue( const QString& ) const;
00551 virtual void setOptionValue( const QString&, const QVariant& );
00552
00553 private:
00554 void updateSpinBox();
00555
00556 private:
00557 int myType;
00558 };
00559
00560 class QTX_EXPORT QtxPagePrefTextItem : public QtxPageNamedPrefItem
00561 {
00562 public:
00563 QtxPagePrefTextItem( QtxPreferenceItem* = 0,
00564 const QString& = QString(), const QString& = QString() );
00565 QtxPagePrefTextItem( const QString&, QtxPreferenceItem* = 0,
00566 const QString& = QString(), const QString& = QString() );
00567 virtual ~QtxPagePrefTextItem();
00568
00569 virtual void store();
00570 virtual void retrieve();
00571
00572 private:
00573 QTextEdit* myEditor;
00574 };
00575
00576 class QTX_EXPORT QtxPagePrefColorItem : public QtxPageNamedPrefItem
00577 {
00578 public:
00579 QtxPagePrefColorItem( const QString&, QtxPreferenceItem* = 0,
00580 const QString& = QString(), const QString& = QString() );
00581 virtual ~QtxPagePrefColorItem();
00582
00583 virtual void store();
00584 virtual void retrieve();
00585
00586 private:
00587 QtxColorButton* myColor;
00588 };
00589
00590 class QTX_EXPORT QtxPagePrefFontItem : public QObject, public QtxPageNamedPrefItem
00591 {
00592 Q_OBJECT
00593
00594 public:
00595 QtxPagePrefFontItem( const int, const QString&, QtxPreferenceItem* = 0,
00596 const QString& = QString(), const QString& = QString() );
00597 QtxPagePrefFontItem( const QString&, QtxPreferenceItem* = 0,
00598 const QString& = QString(), const QString& = QString() );
00599 virtual ~QtxPagePrefFontItem();
00600
00601 int features() const;
00602 void setFeatures( const int );
00603
00604 void setMode( const int );
00605 int mode() const;
00606
00607 void setFonts( const QStringList& );
00608 QStringList fonts() const;
00609
00610 void setSizes( const QList<int>& = QList<int>() );
00611 QList<int> sizes() const;
00612
00613 virtual void store();
00614 virtual void retrieve();
00615
00616 protected:
00617 virtual QVariant optionValue( const QString& ) const;
00618 virtual void setOptionValue( const QString&, const QVariant& );
00619
00620 private:
00621 QtxFontEdit* myFont;
00622 };
00623
00624 class QTX_EXPORT QtxPagePrefPathItem : public QtxPageNamedPrefItem
00625 {
00626 public:
00627 QtxPagePrefPathItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
00628 const QString& = QString(), const QString& = QString() );
00629 QtxPagePrefPathItem( const QString&, QtxPreferenceItem* = 0,
00630 const QString& = QString(), const QString& = QString() );
00631 virtual ~QtxPagePrefPathItem();
00632
00633 Qtx::PathType pathType() const;
00634 void setPathType( const Qtx::PathType );
00635
00636 QString pathFilter() const;
00637 void setPathFilter( const QString& );
00638
00639 virtual void store();
00640 virtual void retrieve();
00641
00642 protected:
00643 virtual QVariant optionValue( const QString& ) const;
00644 virtual void setOptionValue( const QString&, const QVariant& );
00645
00646 private:
00647 QtxPathEdit* myPath;
00648 };
00649
00650 class QTX_EXPORT QtxPagePrefPathListItem : public QtxPageNamedPrefItem
00651 {
00652 public:
00653 QtxPagePrefPathListItem( QtxPreferenceItem* = 0,
00654 const QString& = QString(), const QString& = QString() );
00655 QtxPagePrefPathListItem( const QString&, QtxPreferenceItem* = 0,
00656 const QString& = QString(), const QString& = QString() );
00657 QtxPagePrefPathListItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
00658 const QString& = QString(), const QString& = QString() );
00659 virtual ~QtxPagePrefPathListItem();
00660
00661 Qtx::PathType pathType() const;
00662 void setPathType( const Qtx::PathType );
00663
00664 virtual void store();
00665 virtual void retrieve();
00666
00667 protected:
00668 virtual QVariant optionValue( const QString& ) const;
00669 virtual void setOptionValue( const QString&, const QVariant& );
00670
00671 private:
00672 QtxPathListEdit* myPaths;
00673 };
00674
00675 class QTX_EXPORT QtxPagePrefDateTimeItem : public QtxPageNamedPrefItem
00676 {
00677 public:
00678 typedef enum { Date, Time, DateTime } InputType;
00679
00680 public:
00681 QtxPagePrefDateTimeItem( const QString&, QtxPreferenceItem* = 0,
00682 const QString& = QString(), const QString& = QString() );
00683 QtxPagePrefDateTimeItem( const int, const QString&, QtxPreferenceItem* = 0,
00684 const QString& = QString(), const QString& = QString() );
00685 virtual ~QtxPagePrefDateTimeItem();
00686
00687 int inputType() const;
00688 void setInputType( const int );
00689
00690 bool calendar() const;
00691 void setCalendar( const bool );
00692
00693 QDate maximumDate() const;
00694 QTime maximumTime() const;
00695 QDate minimumDate() const;
00696 QTime minimumTime() const;
00697
00698 void setMaximumDate( const QDate& );
00699 void setMaximumTime( const QTime& );
00700 void setMinimumDate( const QDate& );
00701 void setMinimumTime( const QTime& );
00702
00703 virtual void store();
00704 virtual void retrieve();
00705
00706 protected:
00707 virtual QVariant optionValue( const QString& ) const;
00708 virtual void setOptionValue( const QString&, const QVariant& );
00709
00710 private:
00711 void updateDateTime();
00712
00713 private:
00714 int myType;
00715 QDateTimeEdit* myDateTime;
00716 };
00717
00718 class QTX_EXPORT QtxPagePrefShortcutBtnsItem : public QtxPageNamedPrefItem
00719 {
00720 public:
00721 QtxPagePrefShortcutBtnsItem( const QString&, QtxPreferenceItem* = 0,
00722 const QString& = QString(), const QString& = QString() );
00723 virtual ~QtxPagePrefShortcutBtnsItem();
00724 virtual void store();
00725 virtual void retrieve();
00726
00727 private:
00728 QtxShortcutEdit* myShortcut;
00729 };
00730
00731 class QTX_EXPORT QtxPagePrefShortcutTreeItem : public QtxPageNamedPrefItem
00732 {
00733 public:
00734 QtxPagePrefShortcutTreeItem( const QString&, QtxPreferenceItem* = 0,
00735 const QString& = QString(), const QString& = QString() );
00736 virtual ~QtxPagePrefShortcutTreeItem();
00737 virtual void store();
00738 virtual void retrieve();
00739
00740 private:
00741 QtxShortcutTree* myShortcutTree;
00742 QString mySection;
00743 };
00744
00745 class QtxUserDefinedContent: public QWidget
00746 {
00747 public:
00748 QtxUserDefinedContent(QWidget* parent = 0, Qt::WindowFlags f = 0 ):QWidget(parent, f) {};
00749 virtual void store(QtxResourceMgr* theRes, QtxPreferenceMgr* thePref) = 0;
00750 virtual void retrieve(QtxResourceMgr* theRes, QtxPreferenceMgr* thePref) = 0;
00751 };
00752
00753
00754 class QTX_EXPORT QtxUserDefinedItem : public QtxPageNamedPrefItem
00755 {
00756 public:
00757 QtxUserDefinedItem( QtxPreferenceItem* parent );
00758
00759 void setContent( QtxUserDefinedContent* theContent );
00760
00761 virtual void store();
00762 virtual void retrieve();
00763
00764 protected:
00765 virtual QVariant optionValue( const QString& theName ) const;
00766 virtual void setOptionValue( const QString& theName, const QVariant& theVal );
00767
00768 private:
00769 QtxUserDefinedContent* myContent;
00770 };
00771
00772 #endif