Use canonical file paths for filenames in model (#275)

This commit is contained in:
Jaye Evins
2026-01-02 13:34:44 -05:00
committed by GitHub
parent d17bb2e1be
commit 742b80fc47
5 changed files with 32 additions and 14 deletions
+3 -6
View File
@@ -123,7 +123,7 @@ namespace glabels
newWindow->setModel( model ); newWindow->setModel( model );
newWindow->show(); newWindow->show();
} }
model::Settings::addToRecentFileList( fileName ); model::Settings::addToRecentFileList( model->fileName() );
// Save CWD // Save CWD
mCwd = QFileInfo( fileName ).absolutePath(); mCwd = QFileInfo( fileName ).absolutePath();
@@ -163,7 +163,7 @@ namespace glabels
newWindow->setModel( model ); newWindow->setModel( model );
newWindow->show(); newWindow->show();
} }
model::Settings::addToRecentFileList( fileName ); model::Settings::addToRecentFileList( model->fileName() );
// Save CWD // Save CWD
mCwd = QFileInfo( fileName ).absolutePath(); mCwd = QFileInfo( fileName ).absolutePath();
@@ -198,7 +198,6 @@ namespace glabels
} }
model::XmlLabelCreator::writeFile( window->model(), window->model()->fileName() ); model::XmlLabelCreator::writeFile( window->model(), window->model()->fileName() );
window->model()->clearModified();
model::Settings::addToRecentFileList( window->model()->fileName() ); model::Settings::addToRecentFileList( window->model()->fileName() );
// Save CWD // Save CWD
@@ -254,9 +253,7 @@ namespace glabels
} }
model::XmlLabelCreator::writeFile( window->model(), fileName ); model::XmlLabelCreator::writeFile( window->model(), fileName );
window->model()->setFileName( fileName ); model::Settings::addToRecentFileList( window->model()->fileName() );
window->model()->clearModified();
model::Settings::addToRecentFileList( fileName );
// Save CWD // Save CWD
mCwd = QFileInfo( fileName ).absolutePath(); mCwd = QFileInfo( fileName ).absolutePath();
+3 -1
View File
@@ -23,6 +23,7 @@
#include "model/FileUtil.h" #include "model/FileUtil.h"
#include "model/Db.h" #include "model/Db.h"
#include "model/Model.h" #include "model/Model.h"
#include "model/Settings.h"
#include "model/Version.h" #include "model/Version.h"
#include "model/XmlLabelParser.h" #include "model/XmlLabelParser.h"
@@ -116,11 +117,12 @@ int main( int argc, char **argv )
glabels::model::Model *model = glabels::model::XmlLabelParser::readFile( filename ); glabels::model::Model *model = glabels::model::XmlLabelParser::readFile( filename );
if ( model ) if ( model )
{ {
model->setFileName( filename );
auto *newWindow = new glabels::MainWindow(); auto *newWindow = new glabels::MainWindow();
newWindow->setModel( model ); newWindow->setModel( model );
newWindow->show(); newWindow->show();
openedFiles = true; openedFiles = true;
glabels::model::Settings::addToRecentFileList( model->fileName() );
} }
} }
+13 -3
View File
@@ -61,14 +61,24 @@ namespace glabels
return; return;
} }
model->setFileName( fileName );
model->clearModified();
QDomDocument doc; QDomDocument doc;
createDoc( doc, model ); createDoc( doc, model );
QByteArray buffer = doc.toByteArray( 2 ); QByteArray buffer = doc.toByteArray( 2 );
file.write( buffer.data(), buffer.size() ); file.write( buffer.data(), buffer.size() );
file.close();
QFileInfo fileInfo( fileName );
if ( !fileInfo.exists() )
{
qWarning() << "Error:" << fileName << "does not exist after writing!";
return;
}
auto canonName = fileInfo.canonicalFilePath();
model->setFileName( canonName );
model->clearModified();
} }
+12 -3
View File
@@ -55,11 +55,19 @@ namespace glabels
Model* Model*
XmlLabelParser::readFile( const QString& fileName ) XmlLabelParser::readFile( const QString& fileName )
{ {
QFile file( fileName ); QFileInfo fileInfo( fileName );
if ( !fileInfo.exists() )
{
qWarning() << fileName << "does not exist!";
return nullptr;
}
auto canonName = fileInfo.canonicalFilePath();
QFile file( canonName );
if ( !file.open( QFile::ReadOnly ) ) if ( !file.open( QFile::ReadOnly ) )
{ {
qWarning() << "Error: Cannot read file" << fileName qWarning() << "Error: Cannot read file" << canonName
<< ":" << file.errorString(); << ":" << file.errorString();
return nullptr; return nullptr;
} }
@@ -71,6 +79,7 @@ namespace glabels
int errorColumn; int errorColumn;
QByteArray rawData = file.readAll(); QByteArray rawData = file.readAll();
file.close();
if ( ((rawData[0]&0xFF) == 0x1F) && ((rawData[1]&0xFF) == 0x8b) ) // gzip magic number 0x1F, 0x8B if ( ((rawData[0]&0xFF) == 0x1F) && ((rawData[1]&0xFF) == 0x8b) ) // gzip magic number 0x1F, 0x8B
{ {
#if HAVE_ZLIB #if HAVE_ZLIB
@@ -105,7 +114,7 @@ namespace glabels
return nullptr; return nullptr;
} }
return parseRootNode( root, fileName ); return parseRootNode( root, canonName );
} }
+1 -1
View File
@@ -498,7 +498,7 @@ void TestXmlLabel::parser_3ReadFile()
Model* model = XmlLabelParser::readFile( glabelsFileInfo.absoluteFilePath() ); Model* model = XmlLabelParser::readFile( glabelsFileInfo.absoluteFilePath() );
QVERIFY( model ); QVERIFY( model );
QCOMPARE( model->fileName(), glabelsFileInfo.filePath() ); QCOMPARE( model->fileName(), glabelsFileInfo.canonicalFilePath() );
QCOMPARE( model->tmplate().brand(), QString( "Avery" ) ); QCOMPARE( model->tmplate().brand(), QString( "Avery" ) );
QCOMPARE( model->tmplate().part(), QString( "5395" ) ); QCOMPARE( model->tmplate().part(), QString( "5395" ) );