From: Audoux <au...@us...> - 2003-04-10 15:37:30
|
Update of /cvsroot/attal/src/themeEditor In directory sc8-pr-cvs1:/tmp/cvs-serv27309 Modified Files: sectionBase.cpp sectionBase.h sectionSelector.cpp sectionSelector.h Log Message: improve management of bases in themeEditor (not finished) Index: sectionBase.cpp =================================================================== RCS file: /cvsroot/attal/src/themeEditor/sectionBase.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** sectionBase.cpp 16 Jun 2001 15:10:53 -0000 1.1 --- sectionBase.cpp 10 Apr 2003 15:37:26 -0000 1.2 *************** *** 31,83 **** #include <qlayout.h> // application specific include files #include "common/log.h" SectionBase::SectionBase( QWidget * parent, const char * name ) : GenericSection( parent, name ) { setTitle( " Base " ); ! QVBoxLayout * layout = new QVBoxLayout( _mainWidget ); layout->setMargin( 5 ); layout->setSpacing( 5 ); ! _name = new AskString( "Name : ", _mainWidget ); layout->addWidget( _name ); ! ! _race = new AskString( "Race : ", _mainWidget ); ! layout->addWidget( _race ); ! ! layout->addStretch( 1 ); layout->activate(); } void SectionBase::selectFirst() { ! } ! void SectionBase::selectPrevious() { ! } void SectionBase::selectNext() { ! } void SectionBase::selectLast() { ! } void SectionBase::selectNew() { ! } void SectionBase::selectDel() { ! } --- 31,140 ---- #include <qlayout.h> // application specific include files + #include "common/dataTheme.h" #include "common/log.h" + extern DataTheme DataTheme; + extern QString IMAGE_PATH; + SectionBase::SectionBase( QWidget * parent, const char * name ) : GenericSection( parent, name ) { setTitle( " Base " ); ! _idBase = 0; ! QVBoxLayout * layout = new QVBoxLayout( _mainWidget ); layout->setMargin( 5 ); layout->setSpacing( 5 ); ! _name = new AskString( "Name : ", _mainWidget ); layout->addWidget( _name ); ! ! _population = new AskInt( "Population : ", _mainWidget ); ! layout->addWidget( _population ); ! ! _inside = new SectionInsideBuilding( _mainWidget ); ! layout->addWidget( _inside, 1 ); ! layout->activate(); + + updateData(); + } + + void SectionBase::updateData() + { + _population->setEnabled( DataTheme.managePopulation() ); + } + + void SectionBase::init() + { + if( _idBase < DataTheme.bases.count() ) { + GenericBaseModel * base = DataTheme.bases.at( _idBase ); + _name->setValue( base->getModelName() ); + _population->setValue( base->getPopulation() ); + _inside->setBase( _idBase ); + _inside->init(); + } else { + clear(); + } + } + + void SectionBase::clear() + { + _idBase = 0; + _name->setValue( "" ); + _population->setValue( 0 ); + _inside->setBase( 0 ); + _inside->clear(); } void SectionBase::selectFirst() { ! save(); ! if( _idBase > 0 ) { ! _idBase = 0; ! init(); ! } } ! void SectionBase::selectPrevious() { ! save(); ! if( _idBase > 0 ) { ! _idBase--; ! } ! init(); } void SectionBase::selectNext() { ! save(); ! if( _idBase < DataTheme.bases.count() - 1 ) { ! _idBase++; ! } ! init(); } void SectionBase::selectLast() { ! save(); ! _idBase = DataTheme.bases.count() - 1; ! init(); } void SectionBase::selectNew() { ! save(); ! _idBase = DataTheme.bases.count(); ! GenericBaseModel * base = new GenericBaseModel(); ! DataTheme.bases.append( base ); ! init(); } void SectionBase::selectDel() { ! clear(); ! DataTheme.bases.remove( _idBase ); ! _idBase = QMIN( _idBase, DataTheme.bases.count() - 1 ); ! init(); } *************** *** 85,88 **** --- 142,248 ---- { + } + + // + // ----- SectionInsideBuilding ----- + // + + SectionInsideBuilding::SectionInsideBuilding( QWidget * parent, const char * name ) + : QWidget( parent, name ) + { + _select = new SelectionWidget( this ); + _select->setTitle( " Building " ); + + QVBoxLayout * layout = new QVBoxLayout( this ); + layout->addWidget( _select ); + + + layout->addStretch( 1 ); + layout->activate(); + + connect( _select, SIGNAL( sig_first() ), SLOT( selectFirst() ) ); + connect( _select, SIGNAL( sig_previous() ), SLOT( selectPrevious() ) ); + connect( _select, SIGNAL( sig_next() ), SLOT( selectNext() ) ); + connect( _select, SIGNAL( sig_last() ), SLOT( selectLast() ) ); + connect( _select, SIGNAL( sig_new() ), SLOT( selectNew() ) ); + connect( _select, SIGNAL( sig_del() ), SLOT( selectDel() ) ); + } + + + void SectionInsideBuilding::selectFirst() + { + save(); + if( _idBuild > 0 ) { + _idBuild = 0; + init(); + } + } + + void SectionInsideBuilding::selectPrevious() + { + save(); + if( _idBuild > 0 ) { + _idBuild--; + } + init(); + } + + void SectionInsideBuilding::selectNext() + { + save(); + if( ( _idBase < DataTheme.bases.count() ) + && ( _idBuild < DataTheme.bases.at( _idBase )->getBuildingCount() - 1 ) ) { + _idBuild++; + } + init(); + } + + void SectionInsideBuilding::selectLast() + { + save(); + if( _idBase < DataTheme.bases.count() ) { + _idBuild = DataTheme.bases.at( _idBase )->getBuildingCount() - 1; + } + init(); + } + + void SectionInsideBuilding::selectNew() + { + save(); + if( _idBase < DataTheme.bases.count() ) { + _idBuild = DataTheme.bases.at( _idBase )->getBuildingCount(); + InsideBuildingModel * build = new InsideBuildingModel(); + DataTheme.bases.at( _idBase )->addBuilding( build ); + } + init(); + } + + void SectionInsideBuilding::selectDel() + { + clear(); + if( _idBase < DataTheme.bases.count() ) { + DataTheme.bases.at( _idBase )->removeBuilding( _idBuild ); + _idBuild = QMIN( _idBase, DataTheme.bases.at( _idBase )->getBuildingCount() - 1 ); + } + init(); + } + + void SectionInsideBuilding::save() + { + + } + + void SectionInsideBuilding::init() + { + + } + + void SectionInsideBuilding::clear() + { + _idBuild = 0; + _name->setValue( "" ); + _description->setValue( "" ); + _x->setValue( 0 ); + _y->setValue( 0 ); } Index: sectionBase.h =================================================================== RCS file: /cvsroot/attal/src/themeEditor/sectionBase.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** sectionBase.h 20 Oct 2002 15:14:40 -0000 1.2 --- sectionBase.h 10 Apr 2003 15:37:26 -0000 1.3 *************** *** 35,39 **** // application specific include files #include "themeEditor/sectionWidget.h" ! /* ------------------------------ * SectionBase --- 35,42 ---- // application specific include files #include "themeEditor/sectionWidget.h" ! ! ! class SectionInsideBuilding; ! /* ------------------------------ * SectionBase *************** *** 50,53 **** --- 53,58 ---- SectionBase( QWidget * parent = 0, const char * name = 0 ); + void updateData(); + /** Selects the first item */ void selectFirst(); *************** *** 70,75 **** /** Saves the data */ void save(); private: ! AskString * _name, * _race; }; --- 75,129 ---- /** Saves the data */ void save(); + + /** Inits the section */ + void init(); + + void clear(); private: ! int _idBase; ! AskString * _name; ! AskInt * _population; ! SectionInsideBuilding * _inside; ! }; ! ! class SectionInsideBuilding : public QWidget ! { ! Q_OBJECT ! public: ! SectionInsideBuilding( QWidget * parent = 0, const char * name = 0 ); ! ! void setBase( int base ) { _idBase = base; } ! ! /** Selects the first item */ ! void selectFirst(); ! ! /** Selects the previous item */ ! void selectPrevious(); ! ! /** Selects the next item */ ! void selectNext(); ! ! /** Selects the last item */ ! void selectLast(); ! ! /** Creates a new item */ ! void selectNew(); ! ! /** Deletes the current item */ ! void selectDel(); ! ! /** Saves the data */ ! void save(); ! ! /** Inits the section */ ! void init(); ! ! void clear(); ! ! protected: ! int _idBase, _idBuild; ! SelectionWidget * _select; ! AskString * _name, * _description; ! AskInt * _x, * _y; }; Index: sectionSelector.cpp =================================================================== RCS file: /cvsroot/attal/src/themeEditor/sectionSelector.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** sectionSelector.cpp 15 Dec 2002 11:47:52 -0000 1.4 --- sectionSelector.cpp 10 Apr 2003 15:37:26 -0000 1.5 *************** *** 56,61 **** addTab( team, "Teams" ); ! SectionBase * base = new SectionBase( this, "base" ); ! addTab( base, "Bases" ); SectionBuilding * building = new SectionBuilding( this, "building" ); --- 56,61 ---- addTab( team, "Teams" ); ! _base = new SectionBase( this, "base" ); ! addTab( _base, "Bases" ); SectionBuilding * building = new SectionBuilding( this, "building" ); *************** *** 82,85 **** --- 82,86 ---- connect( this, SIGNAL( currentChanged( QWidget * ) ), SLOT( slot_changed( QWidget * ) ) ); connect( creature, SIGNAL( sig_changed() ), SLOT( slot_creaturesChanged() ) ); + connect( general, SIGNAL( sig_changed() ), SLOT( slot_generalChanged() ) ); _current = general; *************** *** 100,102 **** --- 101,108 ---- { _lord->updateData(); + } + + void SectionSelector::slot_generalChanged() + { + _base->updateData(); } Index: sectionSelector.h =================================================================== RCS file: /cvsroot/attal/src/themeEditor/sectionSelector.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** sectionSelector.h 20 Oct 2002 15:14:40 -0000 1.2 --- sectionSelector.h 10 Apr 2003 15:37:26 -0000 1.3 *************** *** 36,41 **** class Section; class SectionLord; ! /** ------------------------------ * SectionSelector --- 36,42 ---- class Section; + class SectionBase; class SectionLord; ! /** ------------------------------ * SectionSelector *************** *** 61,67 **** --- 62,72 ---- void slot_creaturesChanged(); + /** Slot if general attributes changed */ + void slot_generalChanged(); + private: Section * _current; SectionLord * _lord; + SectionBase * _base; }; |