Blender addon - set use zip library if LDraw path does not contain parts

This commit is contained in:
Trevor SANDY
2025-01-04 22:51:24 +01:00
parent 837369c488
commit bbd346b296
2 changed files with 37 additions and 11 deletions
+36 -10
View File
@@ -140,7 +140,7 @@ lcBlenderPreferences::BlenderSettings lcBlenderPreferences::mDefaultSettings [N
/*17 LBL_POSITION_CAMERA */ {"positioncamera", "1", QObject::tr("Position Camera"), QObject::tr("Position the camera to show the whole model")},
/*18 LBL_REMOVE_DOUBLES */ {"removedoubles", "1", QObject::tr("No Duplicate Vertices"), QObject::tr("Remove duplicate vertices (recommended)")},
/*19 LBL_RENDER_WINDOW */ {"renderwindow", "1", QObject::tr("Display Render Window"), QObject::tr("Specify whether to display the render window during Blender user interface image file render")},
/*10 LBL_USE_ARCHIVE_LIBS */ {"usearchivelibrary", "0", QObject::tr("Use Archive Libraries"), QObject::tr("Add any archive (zip) libraries in the LDraw file path to the library search list")},
/*10 LBL_USE_ARCHIVE_LIBRARY */ {"usearchivelibrary", "0", QObject::tr("Use Archive Libraries"), QObject::tr("Add any archive (zip) libraries in the LDraw file path to the library search list - impacts performance")},
/*21 LBL_SEARCH_ADDL_PATHS */ {"searchadditionalpaths", "0", QObject::tr("Search Additional Paths"),QObject::tr("Specify whether to search additional LDraw paths")},
/*22 LBL_SMOOTH_SHADING */ {"smoothshading", "1", QObject::tr("Smooth Shading"), QObject::tr("Smooth faces and add an edge-split modifier (recommended)")},
/*23 LBL_TRANSPARENT_BACKGROUND*/ {"transparentbackground", "0", QObject::tr("Transparent Background"), QObject::tr("Specify whether to render a background (affects 'Photo-realistic look only)")},
@@ -223,7 +223,7 @@ lcBlenderPreferences::BlenderSettings lcBlenderPreferences::mDefaultSettingsMM
/* 34 LBL_TRANSPARENT_BACKGROUND_MM */ {"transparentbackground", "0", QObject::tr("Transparent Background"), QObject::tr("Specify whether to render a background")},
/* 35 LBL_TREAT_SHORTCUT_AS_MODEL */ {"treatshortcutasmodel", "0", QObject::tr("Treat Shortcuts As Models"),QObject::tr("Split shortcut parts into their constituent pieces as if they were models")},
/* 36 LBL_TRIANGULATE */ {"triangulate", "0", QObject::tr("Triangulate Faces"), QObject::tr("Triangulate all faces")},
/* 37 LBL_USE_ARCHIVE_LIBRARY_MM */ {"usearchivelibrary", "0", QObject::tr("Use Archive Libraries"), QObject::tr("Add any archive (zip) libraries in the LDraw file path to the library search list")},
/* 37 LBL_USE_ARCHIVE_LIBRARY_MM */ {"usearchivelibrary", "0", QObject::tr("Use Archive Libraries"), QObject::tr("Add any archive (zip) libraries in the LDraw file path to the library search list - impacts performance")},
/* 38 LBL_USE_FREESTYLE_EDGES */ {"usefreestyleedges", "0", QObject::tr("Use Freestyle Edges"), QObject::tr("Render LDraw edges using freestyle")},
/* 39 LBL_VERBOSE_MM */ {"verbose", "1", QObject::tr("Verbose output"), QObject::tr("Output all messages while working, else only show warnings and errors")},
@@ -2465,6 +2465,24 @@ void lcBlenderPreferences::LoadSettings()
if (!QDir(QString("%1/Blender/addons/%2").arg(gAddonPreferences->mDataDir).arg(LC_BLENDER_ADDON_RENDER_FOLDER)).isReadable())
lcSetProfileString(LC_PROFILE_BLENDER_IMPORT_MODULE, QString());
bool UseArchiveLibrary = false;
auto LDrawPartsLibrary = [&] (QString const& LDrawPath)
{
QString LDrawDir = LDrawPath;
const QFileInfo FileInfo(LDrawDir);
if (FileInfo.isFile())
LDrawDir = FileInfo.absolutePath();
const QString Suffix = FileInfo.suffix().toLower();
const QFileInfo PartInfo(QString("%1/parts/1.dat").arg(LDrawDir));
const QFileInfo LDConfigInfo(QString("%1/LDConfig.ldr").arg(LDrawDir));
UseArchiveLibrary = (Suffix == "zip" || Suffix == "bin") && !(PartInfo.exists() && LDConfigInfo.exists());
return QDir::toNativeSeparators(LDrawDir);
};
if (!NumPaths())
{
const QString DefaultBlendFile = QString("%1/Blender/config/%2").arg(gAddonPreferences->mDataDir).arg(LC_BLENDER_ADDON_BLEND_FILE);
@@ -2474,7 +2492,7 @@ void lcBlenderPreferences::LoadSettings()
/* 1 PATH_BLENDFILE */ << (QFileInfo(DefaultBlendFile).exists() ? DefaultBlendFile : QString())
/* 2 PATH_ENVIRONMENT */ << QString()
/* 3 PATH_LDCONFIG */ << lcGetProfileString(LC_PROFILE_COLOR_CONFIG)
/* 4 PATH_LDRAW */ << QFileInfo(lcGetProfileString(LC_PROFILE_PARTS_LIBRARY)).absolutePath()
/* 4 PATH_LDRAW */ << LDrawPartsLibrary(lcGetProfileString(LC_PROFILE_PARTS_LIBRARY))
/* 5 PATH_LSYNTH */ << QString()
/* 6 PATH_STUD_LOGO */ << QString()
/* 7 PATH_STUDIO_LDRAW */ << QString()
@@ -2503,6 +2521,8 @@ void lcBlenderPreferences::LoadSettings()
mDefaultSettings[LblIdx].label,
mDefaultSettings[LblIdx].tooltip
};
if (LblIdx == LBL_USE_ARCHIVE_LIBRARY)
mBlenderSettings[LblIdx].value = QString::number(UseArchiveLibrary);
}
}
@@ -2517,6 +2537,8 @@ void lcBlenderPreferences::LoadSettings()
mDefaultSettingsMM[LblIdx].label,
mDefaultSettingsMM[LblIdx].tooltip
};
if (LblIdx == LBL_USE_ARCHIVE_LIBRARY_MM)
mBlenderSettingsMM[LblIdx].value = QString::number(UseArchiveLibrary);
}
}
@@ -2533,9 +2555,7 @@ void lcBlenderPreferences::LoadSettings()
const QString& Key = QString("%1/%2").arg(LC_BLENDER_ADDON, mBlenderPaths[LblIdx].key);
const QString& Value = Settings.value(Key, QString()).toString();
if (QFileInfo(Value).exists())
{
mBlenderPaths[LblIdx].value = QDir::toNativeSeparators(Value);
}
}
for (int LblIdx = 1/*skip blender executable*/; LblIdx < NumPaths(); LblIdx++)
@@ -2545,9 +2565,7 @@ void lcBlenderPreferences::LoadSettings()
const QString& Key = QString("%1/%2").arg(LC_BLENDER_ADDON_MM, mBlenderPaths[LblIdx].key_mm);
const QString& Value = Settings.value(Key, QString()).toString();
if (QFileInfo(Value).exists())
{
mBlenderPaths[LblIdx].value = QDir::toNativeSeparators(Value);
}
}
for (int LblIdx = 0; LblIdx < NumSettings(); LblIdx++)
@@ -2556,7 +2574,10 @@ void lcBlenderPreferences::LoadSettings()
const QString& Value = Settings.value(Key, QString()).toString();
if (!Value.isEmpty())
{
mBlenderSettings[LblIdx].value = Value == "True" ? "1" : Value == "False" ? "0" : Value;
if (LblIdx == LBL_USE_ARCHIVE_LIBRARY && Value == "False")
mBlenderSettings[LblIdx].value = QString::number(UseArchiveLibrary);
else
mBlenderSettings[LblIdx].value = Value == "True" ? "1" : Value == "False" ? "0" : Value;
}
if (LblIdx == LBL_IMAGE_WIDTH || LblIdx == LBL_IMAGE_HEIGHT || LblIdx == LBL_RENDER_PERCENTAGE)
{
@@ -2571,7 +2592,10 @@ void lcBlenderPreferences::LoadSettings()
const QString& Value = Settings.value(Key, QString()).toString();
if (!Value.isEmpty())
{
mBlenderSettingsMM[LblIdx].value = Value == "True" ? "1" : Value == "False" ? "0" : Value;
if (LblIdx == LBL_USE_ARCHIVE_LIBRARY_MM && Value == "False")
mDefaultSettingsMM[LblIdx].value = QString::number(UseArchiveLibrary);
else
mDefaultSettingsMM[LblIdx].value = Value == "True" ? "1" : Value == "False" ? "0" : Value;
}
if (LblIdx == LBL_RENDER_PERCENTAGE_MM || LblIdx == LBL_RESOLUTION_WIDTH || LblIdx == LBL_RESOLUTION_HEIGHT)
{
@@ -2587,13 +2611,15 @@ void lcBlenderPreferences::LoadSettings()
{
QFile File(LogFile);
if (File.open(QFile::ReadOnly | QFile::Text))
{
QByteArray Ba = File.readAll();
File.close();
QString Errors;
gAddonPreferences->mProgressBar = nullptr;
gAddonPreferences->ReadStdOut(QString(Ba), Errors);
if (!Errors.isEmpty())
ShowMessage(Errors);
}
else
{
+1 -1
View File
@@ -158,7 +158,7 @@ private:
LBL_POSITION_CAMERA, // 17 QCheckBox
LBL_REMOVE_DOUBLES, // 18 QCheckBox
LBL_RENDER_WINDOW, // 19 QCheckBox
LBL_USE_ARCHIVE_LIBS, // 20 QChekcBox
LBL_USE_ARCHIVE_LIBRARY, // 20 QChekcBox
LBL_SEARCH_ADDL_PATHS, // 21 QCheckBox
LBL_SMOOTH_SHADING, // 22 QCheckBox
LBL_TRANSPARENT_BACKGROUND, // 23 QCheckBox