| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include<iostream> |
| |
|
| | #include "rs_debug.h" |
| | #include "rs_layerlist.h" |
| | #include "rs_layer.h" |
| | #include "rs_layerlistlistener.h" |
| |
|
| | |
| | |
| | |
| | RS_LayerList::RS_LayerList() { |
| | m_activeLayer = nullptr; |
| | setModified(false); |
| | } |
| |
|
| | |
| | |
| | |
| | void RS_LayerList::clear() { |
| | m_layers.clear(); |
| | setModified(true); |
| | } |
| |
|
| | QList<RS_Layer*>::iterator RS_LayerList::begin() { |
| | return m_layers.begin(); |
| | } |
| |
|
| | QList<RS_Layer*>::iterator RS_LayerList::end() { |
| | return m_layers.end(); |
| | } |
| |
|
| | QList<RS_Layer*>::const_iterator RS_LayerList::begin() const { |
| | return m_layers.begin(); |
| | } |
| |
|
| | QList<RS_Layer*>::const_iterator RS_LayerList::end() const { |
| | return m_layers.end(); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::activate(const QString& name, bool notify) { |
| | RS_DEBUG->print("RS_LayerList::activate: %s, notify: %d begin", |
| | name.toLatin1().data(), notify); |
| |
|
| | activate(find(name), notify); |
| | RS_DEBUG->print("RS_LayerList::activate: %s end", name.toLatin1().data()); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::activate(RS_Layer* layer, bool notify) { |
| | RS_DEBUG->print("RS_LayerList::activate notify: %d begin", notify); |
| | m_activeLayer = layer; |
| |
|
| | if (notify) { |
| | fireLayerActivated(); |
| | } |
| | RS_DEBUG->print("RS_LayerList::activate end"); |
| | } |
| |
|
| | |
| | |
| | |
| | void RS_LayerList::sort() { |
| | std::stable_sort(m_layers.begin(), m_layers.end(), [](const RS_Layer* l0, const RS_Layer* l1)-> bool |
| | { |
| | return l0->getName() < l1->getName(); |
| | }); |
| | } |
| |
|
| | void RS_LayerList::fireLayerAdded(RS_Layer* layer) { |
| | for (int i = 0; i < m_layerListListeners.size(); ++i) { |
| | RS_LayerListListener* l = m_layerListListeners.at(i); |
| | l->layerAdded(layer); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::add(RS_Layer* layerToAdd) { |
| | RS_DEBUG->print("RS_LayerList::addLayer()"); |
| |
|
| | if (layerToAdd == nullptr) { |
| | return; |
| | } |
| |
|
| | |
| | RS_Layer* existingLayer = find(layerToAdd->getName()); |
| | if (existingLayer == nullptr) { |
| | m_layers.append(layerToAdd); |
| | this->sort(); |
| | |
| | fireLayerAdded(layerToAdd); |
| | setModified(true); |
| |
|
| | |
| | if (m_activeLayer == nullptr) { |
| | activate(layerToAdd); |
| | } |
| | } |
| | else { |
| | |
| | if (m_activeLayer == nullptr) { |
| | activate(existingLayer); |
| | } |
| |
|
| | existingLayer->freeze(layerToAdd->isFrozen()); |
| | existingLayer->lock(layerToAdd->isLocked()); |
| | existingLayer->setPrint(layerToAdd->isPrint()); |
| | existingLayer->setConverted(layerToAdd->isConverted()); |
| | existingLayer->setConstruction(layerToAdd->isConstruction()); |
| | existingLayer->visibleInLayerList(layerToAdd->isVisibleInLayerList()); |
| | existingLayer->setPen(layerToAdd->getPen()); |
| |
|
| | delete layerToAdd; |
| | layerToAdd = nullptr; |
| | } |
| | } |
| |
|
| | void RS_LayerList::fireLayerRemoved(RS_Layer* layer) { |
| | for (int i = 0; i < m_layerListListeners.size(); ++i) { |
| | RS_LayerListListener* l = m_layerListListeners.at(i); |
| | l->layerRemoved(layer); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::remove(RS_Layer* layerToRemove) { |
| | RS_DEBUG->print("RS_LayerList::removeLayer()"); |
| | if (layerToRemove == nullptr) { |
| | return; |
| | } |
| |
|
| | |
| | m_layers.removeOne(layerToRemove); |
| |
|
| | fireLayerRemoved(layerToRemove); |
| |
|
| | setModified(true); |
| |
|
| | |
| | if (m_activeLayer == layerToRemove) { |
| | activate(m_layers.first()); |
| | } |
| |
|
| | |
| | delete layerToRemove; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::edit(RS_Layer* layer, const RS_Layer& source) { |
| | if (layer == nullptr) { |
| | return; |
| | } |
| | *layer = source; |
| | fireEdit(layer); |
| | } |
| |
|
| | void RS_LayerList::fireEdit(RS_Layer* layer) { |
| | for (auto l : m_layerListListeners) { |
| | l->layerEdited(layer); |
| | } |
| | setModified(true); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | RS_Layer* RS_LayerList::find(const QString& name) { |
| | RS_Layer* ret = nullptr; |
| | for (auto l : m_layers) { |
| | if (l->getName() == name) { |
| | ret = l; |
| | break; |
| | } |
| | } |
| | return ret; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | int RS_LayerList::getIndex(const QString& name) { |
| | int ret = 0; |
| | for (auto l : m_layers) { |
| | if (l->getName() == name) { |
| | return ret; |
| | } |
| | else { |
| | ret++; |
| | } |
| | } |
| | return -1; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | int RS_LayerList::getIndex(RS_Layer* layer) { |
| | |
| | return m_layers.indexOf(layer); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_LayerList::toggle(const QString& name) { |
| | toggle(find(name)); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_LayerList::toggle(RS_Layer* layer) { |
| | if (layer == nullptr) { |
| | return; |
| | } |
| |
|
| | |
| | layer->toggle(); |
| | setModified(true); |
| |
|
| | |
| | for (auto* l : m_layerListListeners) { |
| | l->layerToggled(layer); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_LayerList::toggleLock(RS_Layer* layer) { |
| | if (layer == nullptr) { |
| | return; |
| | } |
| |
|
| | layer->toggleLock(); |
| | setModified(true); |
| |
|
| | |
| | for (auto l : m_layerListListeners) { |
| | l->layerToggledLock(layer); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_LayerList::togglePrint(RS_Layer* layer) { |
| | if (layer == nullptr) { |
| | return; |
| | } |
| |
|
| | layer->togglePrint(); |
| | setModified(true); |
| |
|
| | |
| | for (auto l : m_layerListListeners) { |
| | l->layerToggledPrint(layer); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_LayerList::toggleConstruction(RS_Layer* layer) { |
| | if (layer == nullptr) { |
| | return; |
| | } |
| |
|
| | layer->toggleConstruction(); |
| | setModified(true); |
| |
|
| | |
| | for (auto l : m_layerListListeners) { |
| | l->layerToggledConstruction(layer); |
| | } |
| | } |
| |
|
| | void RS_LayerList::fireLayerToggled() { |
| | setModified(true); |
| | for (auto l : m_layerListListeners) { |
| | l->layerToggled(nullptr); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::freezeAll(bool freeze) { |
| | for (unsigned l = 0; l < count(); l++) { |
| | if (at(l)->isVisibleInLayerList()) { |
| | at(l)->freeze(freeze); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::fireLayerActivated() { |
| | for (auto l : m_layerListListeners) { |
| | l->layerActivated(m_activeLayer); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::lockAll(bool lock) { |
| | for (unsigned l = 0; l < count(); l++) { |
| | if (at(l)->isVisibleInLayerList()) { |
| | at(l)->lock(lock); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::toggleLockMulti(QList<RS_Layer*> toggleLayers) { |
| | int count = toggleLayers.count(); |
| | for (int i = 0; i < count; i++) { |
| | RS_Layer* layer = toggleLayers.at(i); |
| | if (layer != nullptr ) { |
| | layer->toggleLock(); |
| | } |
| | } |
| |
|
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::togglePrintMulti(QList<RS_Layer*> toggleLayers) { |
| | int count = toggleLayers.count(); |
| | for (int i = 0; i < count; i++) { |
| | RS_Layer* layer = toggleLayers.at(i); |
| | if (layer != nullptr) { |
| | layer->togglePrint(); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::toggleConstructionMulti(QList<RS_Layer*> toggleLayers) { |
| | int count = toggleLayers.count(); |
| | for (int i = 0; i < count; i++) { |
| | RS_Layer* layer = toggleLayers.at(i); |
| | if (layer != nullptr) { |
| | layer->toggleConstruction(); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::setFreezeMulti(QList<RS_Layer*> layersEnable, QList<RS_Layer*> layersDisable) { |
| | int countUnFreeze = layersEnable.count(); |
| | for (int i = 0; i < countUnFreeze; i++) { |
| | RS_Layer* layer = layersEnable.at(i); |
| | if (layer != nullptr) { |
| | layer->freeze(false); |
| | } |
| | } |
| | int countFreeze = layersDisable.count(); |
| | for (int i = 0; i < countFreeze; i++) { |
| | RS_Layer* layer = layersDisable.at(i); |
| | if (layer != nullptr) { |
| | layer->freeze(true); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::setLockMulti(QList<RS_Layer*> layersToUnlock, QList<RS_Layer*> layersToLock) { |
| | int countUnFreeze = layersToUnlock.count(); |
| | for (int i = 0; i < countUnFreeze; i++) { |
| | RS_Layer* layer = layersToUnlock.at(i); |
| | if (layer != nullptr) { |
| | layer->lock(false); |
| | } |
| | } |
| | int countFreeze = layersToLock.count(); |
| | for (int i = 0; i < countFreeze; i++) { |
| | RS_Layer* layer = layersToLock.at(i); |
| | if (layer != nullptr) { |
| | layer->lock(true); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::setPrintMulti(QList<RS_Layer*> layersNoPrint, QList<RS_Layer*> layersPrint) { |
| | int countUnFreeze = layersNoPrint.count(); |
| | for (int i = 0; i < countUnFreeze; i++) { |
| | RS_Layer* layer = layersNoPrint.at(i); |
| | if (layer != nullptr) { |
| | layer->setPrint(false); |
| | } |
| | } |
| | int countFreeze = layersPrint.count(); |
| | for (int i = 0; i < countFreeze; i++) { |
| | RS_Layer* layer = layersPrint.at(i); |
| | if (layer != nullptr) { |
| | layer->setPrint(true); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::setConstructionMulti(QList<RS_Layer*> layersNoConstruction, QList<RS_Layer*> layersConstruction) { |
| | int countUnFreeze = layersNoConstruction.count(); |
| | for (int i = 0; i < countUnFreeze; i++) { |
| | RS_Layer* layer = layersNoConstruction.at(i); |
| | if (layer != nullptr) { |
| | layer->setConstruction(false); |
| | } |
| | } |
| | int countFreeze = layersConstruction.count(); |
| | for (int i = 0; i < countFreeze; i++) { |
| | RS_Layer* layer = layersConstruction.at(i); |
| | if (layer != nullptr) { |
| | layer->setConstruction(true); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | void RS_LayerList::toggleFreezeMulti(QList<RS_Layer*> toggleLayers) { |
| | int count = toggleLayers.count(); |
| | for (int i = 0; i < count; i++) { |
| | RS_Layer* layer = toggleLayers.at(i); |
| | if (layer != nullptr) { |
| | layer->toggle(); |
| | } |
| | } |
| | fireLayerToggled(); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | void RS_LayerList::addListener(RS_LayerListListener* listener) { |
| | |
| | if (listener == nullptr) { |
| | return; |
| | } |
| | for (auto const l : m_layerListListeners) { |
| | if (l == listener) { |
| | return; |
| | } |
| | } |
| | m_layerListListeners.append(listener); |
| | } |
| |
|
| | |
| | |
| | |
| | void RS_LayerList::removeListener(RS_LayerListListener* listener) { |
| | m_layerListListeners.removeOne(listener); |
| | } |
| |
|
| | |
| | |
| | |
| | std::ostream& operator <<(std::ostream& os, RS_LayerList& l) { |
| | os << "Layerlist: \n"; |
| | for (unsigned i = 0; i < l.count(); i++) { |
| | os << *(l.at(i)) << "\n"; |
| | } |
| | return os; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | void RS_LayerList::setModified(bool m) { |
| | m_modified = m; |
| | } |
| |
|
| | |
| | void RS_LayerList::slotUpdateLayerList() { |
| | setModified(true); |
| | } |
| |
|