| 224 | } |
| 225 | |
| 226 | void Plugin::updateFileModel(FileInterface* file) |
| 227 | { |
| 228 | const auto fm = App::fileModel(); |
| 229 | const QModelIndex& fileIndex(file->node()->index()); |
| 230 | const QModelIndex index = fm->createIndex_(0, 0, fileIndex.internalId()); |
| 231 | // clean before insert new layers |
| 232 | if (int count = fm->getItem(fileIndex)->childCount(); count) { |
| 233 | fm->beginRemoveRows_(index, 0, count - 1); |
| 234 | auto item = fm->getItem(index); |
| 235 | do { |
| 236 | item->remove(--count); |
| 237 | } while (count); |
| 238 | fm->endRemoveRows_(); |
| 239 | } |
| 240 | Dxf::Layers layers; |
| 241 | for (auto& [name, layer] : reinterpret_cast<File*>(file)->layers()) { |
| 242 | // qDebug() << name << layer; |
| 243 | if (!layer->isEmpty()) |
| 244 | layers[name] = layer; |
| 245 | } |
| 246 | fm->beginInsertRows_(index, 0, int(layers.size() - 1)); |
| 247 | for (auto& [name, layer] : layers) { |
| 248 | // qDebug() << name << layer; |
| 249 | fm->getItem(index)->addChild(new Dxf::NodeLayer(name, layer)); |
| 250 | } |
| 251 | fm->endInsertRows_(); |
| 252 | } |
| 253 | |
| 254 | class DrillPrGI final : public AbstractDrillPrGI { |
| 255 | const GraphicObject& go; |
no test coverage detected