AbdulElahGwaith's picture
Upload folder using huggingface_hub
a5ffdcd verified
/*******************************************************************************
*
This file is part of the LibreCAD project, a 2D CAD program
Copyright (C) 2025 LibreCAD.org
Copyright (C) 2025 sand1024
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
******************************************************************************/
#include "lc_ucslist.h"
LC_UCSList::LC_UCSList() {
m_ucsList.append(m_wcs.get());
setModified(false);
}
void LC_UCSList::clear() {
m_ucsList.clear();
m_ucsList.append(m_wcs.get());
setModified(true);
}
void LC_UCSList::add(LC_UCS *ucs) {
if (ucs == nullptr) {
return;
}
// check if layer already exists:
LC_UCS *v = find(ucs->getName());
if (v == nullptr) {
m_ucsList.append(ucs);
}
}
void LC_UCSList::addNew(LC_UCS *ucs) {
if (ucs == nullptr) {
return;
}
// check if layer already exists:
LC_UCS *v = find(ucs->getName());
if (v == nullptr) {
m_ucsList.append(ucs);
setModified(true);
}
}
void LC_UCSList::remove(LC_UCS *ucs) {
if (ucs->isUCS()) {
m_ucsList.removeOne(ucs);
setModified(true);
delete ucs;
}
}
void LC_UCSList::remove(const QString &name) {
LC_UCS *v = find(name);
if (v !=nullptr) {
remove(v);
}
}
void LC_UCSList::rename(LC_UCS *ucs, const QString &newName) {
if (ucs->isUCS()) {
ucs->setName(newName);
ucs->setTemporary(false);
setModified(true);
}
}
void LC_UCSList::edited([[maybe_unused]]LC_UCS *ucs) {
setModified(true);
}
LC_UCS *LC_UCSList::find(const QString &name) const {
for (auto v: m_ucsList){
if (v->getName() == name){
return v;
}
}
return nullptr;
}
int LC_UCSList::getIndex(const QString &name) const
{
int result = -1;
for (int i = 0; i < m_ucsList.size(); i++) {
LC_UCS *v = m_ucsList.at(i);
if (v->getName() == name) {
result = i;
break;
}
}
return result;
}
int LC_UCSList::getIndex(LC_UCS *ucs) const {
return m_ucsList.indexOf(ucs);
}
void LC_UCSList::setModified(bool m) {
m_modified = m;
fireModified(m);
}
LC_UCS *LC_UCSList::tryAddUCS(LC_UCS *candidate) {
if (candidate == nullptr) {
return nullptr;
}
LC_UCS *existingUCS = findExisting(candidate);
LC_UCS* result;
if (existingUCS == nullptr){
m_ucsList.append(candidate);
setModified(true);
result = candidate;
}
else{
result = existingUCS;
}
return result;
}
LC_UCS *LC_UCSList::findExisting(LC_UCS *candidate) {// check if layer already exists:
LC_UCS *existingUCS = nullptr;
for (auto v: m_ucsList){
if (v == candidate){
existingUCS = v;
break;
}
}
if (existingUCS == nullptr){
for (auto v: m_ucsList) {
if (v->isSameTo(candidate)) {
existingUCS = v;
break;
}
}
}
return existingUCS;
}
LC_UCS *LC_UCSList::getWCS() const{
return m_wcs.get();
}
void LC_UCSList::tryToSetActive(LC_UCS *ucs) {
LC_UCS* oldActive = m_activeUCS;
m_activeUCS = findExisting(ucs);
if (oldActive != m_activeUCS) {
if (oldActive == nullptr) {
setModified(true);
}
else if (!oldActive->isSameTo(m_activeUCS)){
setModified(true);
}
}
}