Salome HOME
5a6c1867a349439a9ffac9280c1d9d0cf533355a
[modules/gui.git] / QtxListResourceEdit.cxx
1 // File:      QtxListResourceEdit.cxx
2 // Author:    Sergey TELKOV
3
4 #include "QtxListResourceEdit.h"
5
6 #include <qhbox.h>
7 #include <qlabel.h>
8 #include <qlayout.h>
9 #include <qlistbox.h>
10 #include <qcombobox.h>
11 #include <qlineedit.h>
12 #include <qcheckbox.h>
13 #include <qtabwidget.h>
14 #include <qvalidator.h>
15 #include <qobjectlist.h>
16 #include <qcolordialog.h>
17 #include <qwidgetstack.h>
18
19 #include "QtxIntSpinBox.h"
20 #include "QtxDblSpinBox.h"
21
22 /*
23   Class: QtxListResourceEdit
24   Descr: GUI implementation of QtxResourceEdit - manager of resources
25 */
26
27 QtxListResourceEdit::QtxListResourceEdit( QtxResourceMgr* mgr, QWidget* parent )
28 : QFrame( parent ),
29 QtxResourceEdit( mgr )
30 {
31   QHBoxLayout* main = new QHBoxLayout( this, 0, 5 );
32
33   myList  = new QListBox( this );
34   myStack = new QWidgetStack( this );
35
36   myList->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ) );
37   myStack->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
38
39   main->addWidget( myList );
40   main->addWidget( myStack );
41
42   myList->setSelectionMode( QListBox::Single );
43
44   connect( myList, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
45
46   setFocusProxy( myList );
47
48   updateState();
49 }
50
51 QtxListResourceEdit::~QtxListResourceEdit()
52 {
53 }
54
55 void QtxListResourceEdit::onSelectionChanged()
56 {
57   int idx = myList->index( myList->selectedItem() );
58   if ( idx < 0 )
59     return;
60
61   myStack->raiseWidget( idx );
62 }
63
64 QtxResourceEdit::Item* QtxListResourceEdit::createItem( const QString& title, const int )
65 {
66   Item* i = item( title, -1 );
67   if ( i )
68     return i;
69
70   Category* category = new Category( this, myStack );
71   myList->insertItem( title );
72   int id = myList->count() - 1;
73   myStack->addWidget( category, id );
74
75   if ( !myList->selectedItem() )
76     myList->setSelected( 0, true );
77
78   updateState();
79
80   return category;
81 }
82
83 void QtxListResourceEdit::changedResources( const QMap<Item*, QString>& map )
84 {
85   QMap<int, QString> idMap;
86   for ( QMap<Item*, QString>::ConstIterator it = map.begin(); it != map.end(); ++it )
87   {
88     idMap.insert( it.key()->id(), it.data() );
89
90     emit resourceChanged( it.key()->id() );
91
92     QString sec, param;
93     it.key()->resource( sec, param );
94     emit resourceChanged( sec, param );
95   }
96
97   emit resourcesChanged( idMap );
98 }
99
100 void QtxListResourceEdit::updateState()
101 {
102   if ( myStack->visibleWidget() )
103     myStack->show();
104   else
105     myStack->hide();
106 }
107
108 /*
109   Class: QtxListResourceEdit::Category
110   Descr: GUI implementation of preferences category.
111 */
112
113 QtxListResourceEdit::Category::Category( QtxListResourceEdit* edit, QWidget* parent )
114 : QFrame( parent ),
115 Item( edit )
116 {
117   QVBoxLayout* main = new QVBoxLayout( this );
118   QGroupBox* base = new QGroupBox( 1, Qt::Horizontal, "", this );
119   base->setFrameStyle( QFrame::NoFrame );
120   base->setInsideMargin( 0 );
121   main->addWidget( base, 1 );
122
123   myTabs = new QTabWidget( base );
124   myInfo = new QLabel( base );
125
126   myInfo->setAlignment( Qt::AlignCenter );
127   myInfo->setFrameStyle( QFrame::WinPanel | QFrame::Raised );
128   myInfo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
129
130   updateState();
131 }
132
133 QtxListResourceEdit::Category::~Category()
134 {
135 }
136
137 int QtxListResourceEdit::Category::type() const
138 {
139   return -1;
140 }
141
142 void QtxListResourceEdit::Category::store()
143 {
144 }
145
146 void QtxListResourceEdit::Category::retrieve()
147 {
148 }
149
150 QVariant QtxListResourceEdit::Category::property( const QString& prop ) const
151 {
152   QVariant var;
153   if ( prop == QString( "information" ) || prop == QString( "info" ) )
154     var = myInfo->text();
155   return var;
156 }
157
158 void QtxListResourceEdit::Category::setProperty( const QString& name, const QVariant& var )
159 {
160   QVariant prop = var;
161   if ( !prop.cast( QVariant::String ) )
162     return;
163
164   if ( name == QString( "information" ) || name == QString( "info" ) )
165     myInfo->setText( prop.toString() );
166
167   updateState();
168 }
169
170 QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString& title, const int )
171 {
172   Item* i = item( title, id() );
173   if ( i )
174     return i;
175
176   Tab* tab = new Tab( resourceEdit(), this, this );
177   myTabs->addTab( tab, title );
178
179   updateState();
180
181   return tab;
182 }
183
184 void QtxListResourceEdit::Category::updateState()
185 {
186   if ( myTabs->count() )
187     myTabs->show();
188   else
189     myTabs->hide();
190
191   if ( !myTabs->count() && !myInfo->text().isEmpty() )
192     myInfo->show();
193   else
194     myInfo->hide();
195 }
196
197 /*
198   Class: QtxListResourceEdit::Tab
199   Descr: GUI implementation of resources tab.
200 */
201
202 QtxListResourceEdit::Tab::Tab( QtxResourceEdit* edit, Item* pItem, QWidget* parent )
203 : QFrame( parent ),
204 Item( edit, pItem )
205 {
206   QVBoxLayout* main = new QVBoxLayout( this );
207   myMainFrame = new QGroupBox( 1, Qt::Horizontal, "", this );
208   myMainFrame->setFrameStyle( QFrame::NoFrame );
209   myMainFrame->setInsideMargin( 5 );
210   main->addWidget( myMainFrame );
211 }
212
213 QtxListResourceEdit::Tab::~Tab()
214 {
215 }
216
217 int QtxListResourceEdit::Tab::type() const
218 {
219   return -1;
220 }
221
222 void QtxListResourceEdit::Tab::store()
223 {
224 }
225
226 void QtxListResourceEdit::Tab::retrieve()
227 {
228 }
229
230 void QtxListResourceEdit::Tab::polish()
231 {
232   QFrame::polish();
233
234   adjustLabels();
235 }
236
237 QtxResourceEdit::Item* QtxListResourceEdit::Tab::createItem( const QString& title, const int )
238 {
239   Item* i = item( title, id() );
240   if ( i )
241     return i;
242
243   Group* group = new Group( title, resourceEdit(), this, myMainFrame );
244
245   return group;
246 }
247
248 void QtxListResourceEdit::Tab::adjustLabels()
249 {
250   QObjectList* labels = queryList( "QLabel" );
251   if ( labels )
252   {
253     int w = 0;
254     for ( QObjectListIt it1( *labels ); it1.current(); ++it1 )
255     {
256       if ( it1.current()->isWidgetType() )
257       {
258         QWidget* wid = (QWidget*)it1.current();
259         w = QMAX( w, wid->sizeHint().width() );
260       }
261     }
262     for ( QObjectListIt it2( *labels ); it2.current(); ++it2 )
263     {
264       if ( it2.current()->isWidgetType() )
265       {
266         QWidget* wid = (QWidget*)it2.current();
267         wid->setMinimumWidth( w );
268       }
269     }
270     delete labels;
271   }
272 }
273
274 /*
275   Class: QtxListResourceEdit::Group
276   Descr: GUI implementation of resources group.
277 */
278
279 QtxListResourceEdit::Group::Group( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent )
280 : QGroupBox( 2, Qt::Horizontal, title, parent ),
281 Item( edit, pItem )
282 {
283 }
284
285 QtxListResourceEdit::Group::~Group()
286 {
287 }
288
289 int QtxListResourceEdit::Group::type() const
290 {
291   return -1;
292 }
293
294 void QtxListResourceEdit::Group::store()
295 {
296 }
297
298 void QtxListResourceEdit::Group::retrieve()
299 {
300 }
301
302 QVariant QtxListResourceEdit::Group::property( const QString& prop ) const
303 {
304   QVariant var;
305   if ( prop == "columns" )
306     var = QVariant( columns() );
307   return var;
308 }
309
310 void QtxListResourceEdit::Group::setProperty( const QString& name, const QVariant& var )
311 {
312   QVariant prop = var;
313   if ( !prop.cast( QVariant::Int ) )
314     return;
315
316   if ( name == QString( "columns" ) && prop.toInt() > 0 )
317     setColumns( prop.toInt() );
318 }
319
320 void QtxListResourceEdit::Group::setTitle( const QString& title )
321 {
322   Item::setTitle( title );
323   QGroupBox::setTitle( title );
324 }
325
326 QtxResourceEdit::Item* QtxListResourceEdit::Group::createItem( const QString& title, const int type )
327 {
328   Item* item = 0;
329
330   switch ( type )
331   {
332   case Color:
333     item = new ColorItem( title, resourceEdit(), this, this );
334     break;
335   case Bool:
336     item = new StateItem( title, resourceEdit(), this, this );
337     break;
338   case String:
339     item = new StringItem( title, resourceEdit(), this, this );
340     break;
341   case List:
342     item = new ListItem( title, resourceEdit(), this, this );
343     break;
344   case RealSpin:
345     item = new DoubleSpinItem( title, resourceEdit(), this, this );
346     break;
347   case IntegerSpin:
348     item = new IntegerSpinItem( title, resourceEdit(), this, this );
349     break;
350   case RealEdit:
351     item = new DoubleEditItem( title, resourceEdit(), this, this );
352     break;
353   case IntegerEdit:
354     item = new IntegerEditItem( title, resourceEdit(), this, this );
355     break;
356   case Space:
357     item = new Spacer( resourceEdit(), this, this );
358     break;
359   }
360
361   return item;
362 }
363
364 /*
365   Class: QtxListResourceEdit::PrefItem
366   Descr: Base class for preferences items.
367 */
368
369 QtxListResourceEdit::PrefItem::PrefItem( const int type, QtxResourceEdit* edit, Item* pi, QWidget* parent )
370 : QHBox( parent ),
371 Item( edit, pi ),
372 myType( type )
373 {
374   setSpacing( 5 );
375 }
376
377 QtxListResourceEdit::PrefItem::~PrefItem()
378 {
379 }
380
381 int QtxListResourceEdit::PrefItem::type() const
382 {
383   return myType;
384 }
385
386 QtxResourceEdit::Item* QtxListResourceEdit::PrefItem::createItem( const QString&, const int )
387 {
388   return 0;
389 }
390
391 /*
392   Class: QtxListResourceEdit::Spacer
393   Descr: GUI implementation of resources spacer.
394 */
395
396 QtxListResourceEdit::Spacer::Spacer( QtxResourceEdit* edit, Item* pItem, QWidget* parent )
397 : PrefItem( Space, edit, pItem, parent )
398 {
399   setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
400 }
401
402 QtxListResourceEdit::Spacer::~Spacer()
403 {
404 }
405
406 void QtxListResourceEdit::Spacer::store()
407 {
408 }
409
410 void QtxListResourceEdit::Spacer::retrieve()
411 {
412 }
413
414 /*
415   Class: QtxListResourceEdit::ListItem
416   Descr: GUI implementation of resources list item.
417 */
418
419 QtxListResourceEdit::ListItem::ListItem( const QString& title, QtxResourceEdit* edit,
420                                          Item* pItem, QWidget* parent )
421 : PrefItem( List, edit, pItem, parent )
422 {
423   new QLabel( title, this );
424   myList = new QComboBox( false, this );
425   myList->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
426 }
427
428 QtxListResourceEdit::ListItem::~ListItem()
429 {
430 }
431
432 void QtxListResourceEdit::ListItem::store()
433 {
434   int idx = myList->currentItem();
435   if ( myIndex.contains( idx ) )
436     setInteger( myIndex[idx] );
437 }
438
439 void QtxListResourceEdit::ListItem::retrieve()
440 {
441   int id = getInteger( -1 );
442
443   int idx = -1;
444   for ( QMap<int, int>::ConstIterator it = myIndex.begin(); it != myIndex.end() && idx == -1; ++it )
445   {
446     if ( it.data() == id )
447       idx = it.key();
448   }
449
450   myList->setCurrentItem( idx );
451 }
452
453 QVariant QtxListResourceEdit::ListItem::property( const QString& name ) const
454 {
455   QVariant val;
456   if ( name == QString( "strings" ) )
457   {
458     QStringList lst;
459     for ( int i = 0; i < (int)myList->count(); i++ )
460       lst.append( myList->text( i ) );
461     val = QVariant( lst );
462   }
463   else if ( name == QString( "indexes" ) )
464   {
465     QValueList<QVariant> lst;
466     for ( int i = 0; i < (int)myList->count(); i++ )
467       lst.append( myIndex.contains( i ) ? myIndex[i] : 0 );
468     val = QVariant( lst );
469   }
470   return val;
471 }
472
473 void QtxListResourceEdit::ListItem::setProperty( const QString& name, const QVariant& val )
474 {
475   if ( name == QString( "strings" ) )
476     setStrings( val );
477   else if ( name == QString( "indexes" ) )
478     setIndexes( val );
479 }
480
481 void QtxListResourceEdit::ListItem::setStrings( const QVariant& var )
482 {
483   if ( var.type() != QVariant::StringList )
484     return;
485
486   setStrings( var.toStringList() );
487 }
488
489 void QtxListResourceEdit::ListItem::setIndexes( const QVariant& var )
490 {
491   if ( var.type() != QVariant::List )
492     return;
493
494   QValueList<QVariant> varList = var.toList();
495   QValueList<int> lst;
496   for ( QValueList<QVariant>::const_iterator it = varList.begin(); it != varList.end(); ++it )
497   {
498     if ( (*it).canCast( QVariant::Int ) )
499       lst.append( (*it).toInt() );
500   }
501   setIndexes( lst );
502 }
503
504 void QtxListResourceEdit::ListItem::setStrings( const QStringList& lst )
505 {
506   myList->clear();
507   myList->insertStringList( lst );
508 }
509
510 void QtxListResourceEdit::ListItem::setIndexes( const QValueList<int>& lst )
511 {
512   myIndex.clear();
513
514   int idx = 0;
515   for ( QValueList<int>::const_iterator it = lst.begin(); it != lst.end(); ++it, idx++ )
516     myIndex.insert( idx, *it );
517 }
518
519 /*
520   Class: QtxListResourceEdit::StateItem
521   Descr: GUI implementation of resources bool item.
522 */
523
524 QtxListResourceEdit::StateItem::StateItem( const QString& title, QtxResourceEdit* edit,
525                                            Item* pItem, QWidget* parent )
526 : PrefItem( Bool, edit, pItem, parent )
527 {
528   myState = new QCheckBox( title, this );
529   myState->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
530 }
531
532 QtxListResourceEdit::StateItem::~StateItem()
533 {
534 }
535
536 void QtxListResourceEdit::StateItem::store()
537 {
538   setBoolean( myState->isChecked() );
539 }
540
541 void QtxListResourceEdit::StateItem::retrieve()
542 {
543   myState->setChecked( getBoolean() );
544 }
545
546 /*
547   Class: QtxListResourceEdit::StringItem
548   Descr: GUI implementation of resources string item.
549 */
550
551 QtxListResourceEdit::StringItem::StringItem( const QString& title, QtxResourceEdit* edit,
552                                              Item* pItem, QWidget* parent )
553 : PrefItem( String, edit, pItem, parent )
554 {
555   new QLabel( title, this );
556   myString = new QLineEdit( this );
557   myString->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
558 }
559
560 QtxListResourceEdit::StringItem::~StringItem()
561 {
562 }
563
564 void QtxListResourceEdit::StringItem::store()
565 {
566   setString( myString->text() );
567 }
568
569 void QtxListResourceEdit::StringItem::retrieve()
570 {
571   myString->setText( getString() );
572 }
573
574 /*
575   Class: QtxListResourceEdit::IntegerEditItem
576   Descr: GUI implementation of resources integer item.
577 */
578
579 QtxListResourceEdit::IntegerEditItem::IntegerEditItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent )
580 : PrefItem( IntegerEdit, edit, pItem, parent )
581 {
582   new QLabel( title, this );
583   myInteger = new QLineEdit( this );
584   myInteger->setValidator( new QIntValidator( myInteger ) );
585   myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
586 }
587
588 QtxListResourceEdit::IntegerEditItem::~IntegerEditItem()
589 {
590 }
591
592 void QtxListResourceEdit::IntegerEditItem::store()
593 {
594   setString( myInteger->text() );
595 }
596
597 void QtxListResourceEdit::IntegerEditItem::retrieve()
598 {
599   myInteger->setText( getString() );
600 }
601
602 /*
603   Class: QtxListResourceEdit::IntegerSpinItem
604   Descr: GUI implementation of resources integer item.
605 */
606
607 QtxListResourceEdit::IntegerSpinItem::IntegerSpinItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent )
608 : PrefItem( IntegerSpin, edit, pItem, parent )
609 {
610   new QLabel( title, this );
611   myInteger = new QtxIntSpinBox( this );
612   myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
613 }
614
615 QtxListResourceEdit::IntegerSpinItem::~IntegerSpinItem()
616 {
617 }
618
619 void QtxListResourceEdit::IntegerSpinItem::store()
620 {
621   setInteger( myInteger->value() );
622 }
623
624 void QtxListResourceEdit::IntegerSpinItem::retrieve()
625 {
626   myInteger->setValue( getInteger() );
627 }
628
629 QVariant QtxListResourceEdit::IntegerSpinItem::property( const QString& name ) const
630 {
631   QVariant var;
632   if ( name == QString( "minimum" ) || name == QString( "min" ) )
633     var = QVariant( myInteger->minValue() );
634   else if ( name == QString( "maximum" ) || name == QString( "max" ) )
635     var = QVariant( myInteger->maxValue() );
636   else if ( name == QString( "step" ) )
637     var = QVariant( myInteger->lineStep() );
638   return var;
639 }
640
641 void QtxListResourceEdit::IntegerSpinItem::setProperty( const QString& name, const QVariant& var )
642 {
643   QVariant prop = var;
644   if ( !prop.cast( QVariant::Int ) )
645     return;
646
647   int val = prop.toInt();
648   if ( name == QString( "minimum" ) || name == QString( "min" ) )
649     myInteger->setMinValue( val );
650   else if ( name == QString( "maximum" ) || name == QString( "max" ) )
651     myInteger->setMaxValue( val );
652   else if ( name == QString( "step" ) && val > 0 )
653     myInteger->setLineStep( val );
654 }
655
656 /*
657   Class: QtxListResourceEdit::DoubleEditItem
658   Descr: GUI implementation of resources string item.
659 */
660
661 QtxListResourceEdit::DoubleEditItem::DoubleEditItem( const QString& title, QtxResourceEdit* edit,
662                                                      Item* pItem, QWidget* parent )
663 : PrefItem( RealEdit, edit, pItem, parent )
664 {
665   new QLabel( title, this );
666   myDouble = new QLineEdit( this );
667   myDouble->setValidator( new QDoubleValidator( myDouble ) );
668   myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
669 }
670
671 QtxListResourceEdit::DoubleEditItem::~DoubleEditItem()
672 {
673 }
674
675 void QtxListResourceEdit::DoubleEditItem::store()
676 {
677   setString( myDouble->text() );
678 }
679
680 void QtxListResourceEdit::DoubleEditItem::retrieve()
681 {
682   myDouble->setText( getString() );
683 }
684
685 /*
686   Class: QtxListResourceEdit::DoubleSpinItem
687   Descr: GUI implementation of resources double item.
688 */
689
690 QtxListResourceEdit::DoubleSpinItem::DoubleSpinItem( const QString& title, QtxResourceEdit* edit,
691                                                      Item* pItem, QWidget* parent )
692 : PrefItem( RealSpin, edit, pItem, parent )
693 {
694   new QLabel( title, this );
695   myDouble = new QtxDblSpinBox( this );
696   myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
697 }
698
699 QtxListResourceEdit::DoubleSpinItem::~DoubleSpinItem()
700 {
701 }
702
703 void QtxListResourceEdit::DoubleSpinItem::store()
704 {
705   setDouble( myDouble->value() );
706 }
707
708 void QtxListResourceEdit::DoubleSpinItem::retrieve()
709 {
710   myDouble->setValue( getDouble() );
711 }
712
713 QVariant QtxListResourceEdit::DoubleSpinItem::property( const QString& name ) const
714 {
715   QVariant var;
716   if ( name == QString( "minimum" ) || name == QString( "min" ) )
717     var = QVariant( myDouble->minValue() );
718   else if ( name == QString( "maximum" ) || name == QString( "max" ) )
719     var = QVariant( myDouble->maxValue() );
720   else if ( name == QString( "precision" ) )
721     var = QVariant( myDouble->precision() );
722   else if ( name == QString( "step" ) )
723     var = QVariant( myDouble->lineStep() );
724   return var;
725 }
726
727 void QtxListResourceEdit::DoubleSpinItem::setProperty( const QString& name, const QVariant& var )
728 {
729   QVariant prop = var;
730   if ( prop.cast( QVariant::Double ) )
731   {
732     double val = prop.toDouble();
733     if ( name == QString( "minimum" ) || name == QString( "min" ) )
734       myDouble->setMinValue( val );
735     else if ( name == QString( "maximum" ) || name == QString( "max" ) )
736       myDouble->setMaxValue( val );
737     else if ( name == QString( "step" ) && val > 0 )
738       myDouble->setLineStep( val );
739   }
740   else
741   {
742     QVariant prop = var;
743     if ( prop.cast( QVariant::Int ) && name == QString( "precision" ) && prop.toInt() > 0 )
744       myDouble->setPrecision( prop.toInt() );
745   }
746 }
747
748 /*
749   Class: QtxListResourceEdit::ColorItem
750   Descr: GUI implementation of resources color item.
751 */
752
753 QtxListResourceEdit::ColorItem::ColorItem( const QString& title, QtxResourceEdit* edit,
754                                            Item* pItem, QWidget* parent )
755 : PrefItem( Color, edit, pItem, parent )
756 {
757   class ColorSelector : public QLabel
758   {
759   public:
760     ColorSelector( QWidget* parent = 0 ) : QLabel( parent )
761     {
762       setFrameStyle( WinPanel | Raised );
763     }
764     virtual ~ColorSelector() {}
765     virtual QSize minimumSizeHint() const
766     {
767       return QLabel::minimumSizeHint() + QSize( 0, 2 );
768     }
769
770   protected:
771     virtual void mousePressEvent( QMouseEvent* e )
772     {
773       if ( e->button() == LeftButton )
774       {
775         setFrameStyle( WinPanel | Sunken );
776         QColor c = QColorDialog::getColor( paletteBackgroundColor(), this );
777         if ( c.isValid() )
778           setPaletteBackgroundColor( c );
779
780         setFrameStyle( WinPanel | Raised );
781       }
782     }
783   };
784
785   new QLabel( title, this );
786   myColor = new ColorSelector( this );
787   myColor->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
788 }
789
790 QtxListResourceEdit::ColorItem::~ColorItem()
791 {
792 }
793
794 void QtxListResourceEdit::ColorItem::store()
795 {
796   setColor( myColor->paletteBackgroundColor() );
797 }
798
799 void QtxListResourceEdit::ColorItem::retrieve()
800 {
801   myColor->setPaletteBackgroundColor( getColor() );
802 }