@@ -141,23 +141,32 @@ namespace Core {
141141 d->problemTreeView ->model ()->deleteLater ();
142142 d->problemTreeView ->setModel (nullptr );
143143 }
144+ if (d->fileStructureTreeView ->model ()) {
145+ d->fileStructureTreeView ->model ()->deleteLater ();
146+ d->fileStructureTreeView ->setModel (nullptr );
147+ }
144148 auto problemModel = new QStandardItemModel (this );
145149 d->problemTreeView ->setModel (problemModel);
146- QFile f (d->path );
147- if (!f.open (QIODevice::ReadOnly)) {
148- addErrorItem (
149- problemModel,
150- tr (" Fatal: Failed to open file" ),
151- {},
152- style ()->standardIcon (QStyle::SP_MessageBoxCritical),
153- {
154- {tr (" Path" ), d->path },
155- {tr (" Error code" ), f.error ()},
156- {tr (" Error text" ), f.errorString ()}
157- }
158- );
159- } else {
150+ auto fileStructureModel = new QStandardItemModel (this );
151+ d->fileStructureTreeView ->setModel (fileStructureModel);
152+ do {
153+ QFile f (d->path );
154+ if (!f.open (QIODevice::ReadOnly)) {
155+ addErrorItem (
156+ problemModel,
157+ tr (" Fatal: Failed to open file" ),
158+ {},
159+ style ()->standardIcon (QStyle::SP_MessageBoxCritical),
160+ {
161+ {tr (" Path" ), d->path },
162+ {tr (" Error code" ), f.error ()},
163+ {tr (" Error text" ), f.errorString ()}
164+ }
165+ );
166+ break ;
167+ }
160168 auto data = f.readAll ();
169+
161170 QDspx::SerializationErrorList errors;
162171 auto dspxModel = QDspx::Serializer::deserialize (data, errors, QDspx::Serializer::CheckError | QDspx::Serializer::CheckWarning);
163172 for (const auto &error : errors) {
@@ -368,7 +377,8 @@ namespace Core {
368377 }
369378 }
370379 }
371-
380+ if (errors.containsFatal ())
381+ break ;
372382 if (dspxModel.content .global .editorId != CoreInterface::dspxEditorId ()) {
373383 addErrorItem (
374384 problemModel,
@@ -406,11 +416,10 @@ namespace Core {
406416 );
407417 }
408418
409- // TODO show file structure
410- }
411-
419+ } while (false );
412420
413421 d->problemTreeView ->resizeColumnToContents (0 );
422+ d->fileStructureTreeView ->resizeColumnToContents (0 );
414423 if (problemModel->rowCount () != 0 ) {
415424 d->tabWidget ->setCurrentIndex (1 );
416425 }
0 commit comments