X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flayerwidget.cpp;h=faaf5b999854423f546b39724f854e7419900fa3;hb=ea7712f342020baf61cf33ba98b12140da6aecf7;hp=33221206a456172f62d28cebfb9b7a3374d1a941;hpb=4a979ddae8aa6b3556f24e8b961f7787c4b40cbe;p=architektonas diff --git a/src/layerwidget.cpp b/src/layerwidget.cpp index 3322120..faaf5b9 100644 --- a/src/layerwidget.cpp +++ b/src/layerwidget.cpp @@ -12,48 +12,43 @@ // #include "layerwidget.h" +#include "global.h" #include "layeritemwidget.h" LayerWidget::LayerWidget(void): QWidget(), - list(new QListWidget) + addLayer(new QToolButton), removeLayer(new QToolButton), + editLayer(new QToolButton), layerUp(new QToolButton), + layerDown(new QToolButton), list(new QListWidget) { LayerItemWidget * liw = new LayerItemWidget("Background"); QListWidgetItem * qlwi = new QListWidgetItem(list); list->setItemWidget(qlwi, liw); -#if 0 - QPushButton * pb1 = new QPushButton("+"); - QPushButton * pb2 = new QPushButton("-"); - QPushButton * pb3 = new QPushButton("Edit"); - QPushButton * pb4 = new QPushButton("^"); - QPushButton * pb5 = new QPushButton("v"); -#else - QToolButton * pb1 = new QToolButton; - QToolButton * pb2 = new QToolButton; - QToolButton * pb3 = new QToolButton; - QToolButton * pb4 = new QToolButton; - QToolButton * pb5 = new QToolButton; - - pb1->setIcon(QIcon(":/res/layer-add.png")); - pb2->setIcon(QIcon(":/res/layer-delete.png")); - pb3->setIcon(QIcon(":/res/layer-edit.png")); - pb4->setIcon(QIcon(":/res/layer-up.png")); - pb5->setIcon(QIcon(":/res/layer-down.png")); - - pb1->setToolTip(tr("Add layer")); - pb2->setToolTip(tr("Remove layer")); - pb3->setToolTip(tr("Edit layer")); - pb4->setToolTip(tr("Move layer up")); - pb5->setToolTip(tr("Move layer down")); -#endif +// QToolButton * pb1 = new QToolButton; +// QToolButton * pb2 = new QToolButton; +// QToolButton * pb3 = new QToolButton; +// QToolButton * pb4 = new QToolButton; +// QToolButton * pb5 = new QToolButton; + + addLayer->setIcon(QIcon(":/res/layer-add.png")); + removeLayer->setIcon(QIcon(":/res/layer-delete.png")); + editLayer->setIcon(QIcon(":/res/layer-edit.png")); + layerUp->setIcon(QIcon(":/res/layer-up.png")); + layerDown->setIcon(QIcon(":/res/layer-down.png")); + + addLayer->setToolTip(tr("Add layer")); + removeLayer->setToolTip(tr("Remove layer")); + editLayer->setToolTip(tr("Edit layer")); + layerUp->setToolTip(tr("Move layer up")); + layerDown->setToolTip(tr("Move layer down")); QHBoxLayout * hbox1 = new QHBoxLayout; - hbox1->addWidget(pb1); - hbox1->addWidget(pb2); - hbox1->addWidget(pb3); - hbox1->addWidget(pb4); - hbox1->addWidget(pb5); + hbox1->addWidget(addLayer); + hbox1->addWidget(removeLayer); + hbox1->addWidget(editLayer); + hbox1->addWidget(layerUp); + hbox1->addWidget(layerDown); hbox1->addStretch(); QVBoxLayout * mainLayout = new QVBoxLayout; @@ -63,12 +58,13 @@ LayerWidget::LayerWidget(void): QWidget(), setLayout(mainLayout); connect(list, SIGNAL(currentRowChanged(int)), this, SLOT(HandleLayerSelected(int))); - list->setCurrentRow(4); - connect(pb1, SIGNAL(clicked()), this, SLOT(AddLayer())); - connect(pb2, SIGNAL(clicked()), this, SLOT(DeleteLayer())); - connect(pb3, SIGNAL(clicked()), this, SLOT(EditLayer())); - connect(pb4, SIGNAL(clicked()), this, SLOT(MoveLayerUp())); - connect(pb5, SIGNAL(clicked()), this, SLOT(MoveLayerDown())); + connect(addLayer, SIGNAL(clicked()), this, SLOT(AddLayer())); + connect(removeLayer, SIGNAL(clicked()), this, SLOT(DeleteLayer())); + connect(editLayer, SIGNAL(clicked()), this, SLOT(EditLayer())); + connect(layerUp, SIGNAL(clicked()), this, SLOT(MoveLayerUp())); + connect(layerDown, SIGNAL(clicked()), this, SLOT(MoveLayerDown())); + + list->setCurrentRow(0); } @@ -80,7 +76,15 @@ LayerWidget::~LayerWidget() void LayerWidget::HandleLayerSelected(int currentRow) { //printf("LayerWidget::HandleLayerSelected(): currentRow = %i\n", currentRow); - emit(LayerSelected(currentRow)); +// emit(LayerSelected(currentRow)); + + QListWidgetItem * qlwi = list->item(currentRow); + LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi); + Global::activeLayer = currentRow; + Global::layerIsLocked = li->editibility->isChecked(); + + // Set button states to sane values + SetButtonStates(); } @@ -92,25 +96,91 @@ void LayerWidget::AddLayer(void) QListWidgetItem * qlwi = new QListWidgetItem(); list->insertItem(0, qlwi); list->setItemWidget(qlwi, liw); + + SetButtonStates(); } void LayerWidget::DeleteLayer(void) { + int numItems = list->count(); + + if (numItems == 1) + return; + + QListWidgetItem * qlwi = list->currentItem(); + list->removeItemWidget(qlwi); + delete qlwi; + + SetButtonStates(); + + // N.B.: Also, we need to delete the layer in the Drawing as well! } void LayerWidget::EditLayer(void) { + // Get the LayerItemWidget so we can edit it (its name, anyway)... + QListWidgetItem * qlwi = list->currentItem(); + LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi); + QString s = li->name->text(); + + bool ok; + QString result = QInputDialog::getText(this, tr("Edit Layer Name"), tr("Layer Name:"), QLineEdit::Normal, s, &ok); + + if (ok && !result.isEmpty()) + li->name->setText(result); } void LayerWidget::MoveLayerUp(void) { + // Get information out of the LayerItemWidget (& get it from the list!) + int currentRow = list->currentRow(); + QListWidgetItem * qlwi = list->currentItem(); + LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi); + QString s = li->name->text(); + bool visible = li->visibility->isChecked(); + bool editible = li->editibility->isChecked(); + + // We have to make a new LayerItemWidget because it destroys the old one! + list->takeItem(currentRow); + list->insertItem(currentRow - 1, qlwi); + li = new LayerItemWidget(s, visible, editible); + list->setItemWidget(qlwi, li); + list->setCurrentItem(qlwi); } void LayerWidget::MoveLayerDown(void) { + // Get information out of the LayerItemWidget (& get it from the list!) + int currentRow = list->currentRow(); + QListWidgetItem * qlwi = list->currentItem(); + LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi); + QString s = li->name->text(); + bool visible = li->visibility->isChecked(); + bool editible = li->editibility->isChecked(); + + // We have to make a new LayerItemWidget because it destroys the old one! + list->takeItem(currentRow); + list->insertItem(currentRow + 1, qlwi); + li = new LayerItemWidget(s, visible, editible); + list->setItemWidget(qlwi, li); + list->setCurrentItem(qlwi); +} + + +// +// Set button states in this widget to sane values +// +void LayerWidget::SetButtonStates(void) +{ + int numItems = list->count(); + int currentRow = list->currentRow(); + + layerDown->setEnabled(currentRow == (numItems - 1) ? false : true); + layerUp->setEnabled(currentRow == 0 ? false : true); + removeLayer->setEnabled(numItems == 1 ? false : true); }