Skip to content

Commit

Permalink
Add Rebrickable.com and to HTML Part List lookup sites #239
Browse files Browse the repository at this point in the history
  • Loading branch information
trevorsandy committed Apr 23, 2019
1 parent 614e913 commit 44a89dc
Show file tree
Hide file tree
Showing 29 changed files with 1,117 additions and 245 deletions.
2 changes: 1 addition & 1 deletion builds/linux/obs/alldeps/PKGBUILD
Expand Up @@ -2,7 +2,7 @@
# Last Update: March 23, 2019
# Copyright (c) 2017 - 2019 by Trevor SANDY
pkgname=lpub3d
pkgver=2.3.10.1231
pkgver=2.3.10.1232
pkgrel=1
pkgdesc="An LDraw Building Instruction Editor"
url="https://github.com/trevorsandy/lpub3d.git"
Expand Down
6 changes: 3 additions & 3 deletions builds/linux/obs/alldeps/debian/changelog
@@ -1,5 +1,5 @@
lpub3d (2.3.10.1231) debian; urgency=medium
lpub3d (2.3.10.1232) debian; urgency=medium

* LPub3D version 2.3.10.1.1231_20190423 for Linux
* LPub3D version 2.3.10.1.1232_20190423 for Linux

-- Trevor SANDY <trevor.sandy@gmail.com> Tue, 23 Apr 2019 12:07:42 +0200
-- Trevor SANDY <trevor.sandy@gmail.com> Tue, 23 Apr 2019 12:09:09 +0200
2 changes: 1 addition & 1 deletion builds/linux/obs/alldeps/debian/lpub3d.dsc
Expand Up @@ -2,7 +2,7 @@ Format: 1.0
Source: lpub3d
Binary: lpub3d
Architecture: any
Version: 2.3.10.1231
Version: 2.3.10.1232
Maintainer: Trevor SANDY <trevor.sandy@gmail.com>
Homepage: https://trevorsandy.github.io/lpub3d/
Standards-Version: 3.9.7
Expand Down
4 changes: 2 additions & 2 deletions builds/linux/obs/alldeps/lpub3d.spec
Expand Up @@ -118,7 +118,7 @@ BuildRequires: fdupes
Summary: An LDraw Building Instruction Editor
Name: lpub3d
Icon: lpub3d.xpm
Version: 2.3.10.1231
Version: 2.3.10.1232
Release: <B_CNT>%{?dist}
URL: https://trevorsandy.github.io/lpub3d
Vendor: Trevor SANDY
Expand Down Expand Up @@ -717,5 +717,5 @@ update-mime-database /usr/share/mime >/dev/null || true
update-desktop-database || true
%endif

* Tue Apr 23 2019 - trevor.dot.sandy.at.gmail.dot.com 2.3.10.1231
* Tue Apr 23 2019 - trevor.dot.sandy.at.gmail.dot.com 2.3.10.1232
- LPub3D Linux package (rpm) release
Binary file modified builds/utilities/ci/secure/.secrets.tar.enc
Binary file not shown.
2 changes: 1 addition & 1 deletion builds/utilities/version.info
@@ -1 +1 @@
2 3 10 1 1231 956fd56
2 3 10 1 1232 614e913
178 changes: 154 additions & 24 deletions ldvlib/LDVQt/LDVHtmlInventory.cpp
Expand Up @@ -16,7 +16,8 @@
#include <QProgressDialog>
#include <QMessageBox>

#include <LDVWidgetDefaultKeys.h>
#include "LDVWidget.h"
#include "LDVWidgetDefaultKeys.h"
#include "messageboxresizable.h"
#include "annotations.h"
#include "paths.h"
Expand All @@ -31,6 +32,7 @@

#define SNAPSHOT_WIDTH_DEFAULT 400
#define SNAPSHOT_HEIGHT_DEFAULT 300
#define REBRICKABLE_KEY_DEFAULT ""

const char *LDVHtmlInventory::sm_style = "\
body\n\
Expand Down Expand Up @@ -77,6 +79,7 @@ th\n\
border-bottom: 1px solid #000000;\n\
border-right: 1px solid #00558A;\n\
padding: 4px 8px;\n\
white-space: nowrap;\n\
}\n\
\n\
th.title\n\
Expand Down Expand Up @@ -496,7 +499,7 @@ function sort(columnClassName, tableId) {\n\
};\n\
";

LDVHtmlInventory::LDVHtmlInventory(void) :
LDVHtmlInventory::LDVHtmlInventory() :
m_prefs(new LDPreferences),
m_viewPoint(nullptr)
{
Expand All @@ -519,9 +522,9 @@ LDVHtmlInventory::LDVHtmlInventory(void) :
m_columnOrder.push_back((LDVPartListColumn)columnOrder[i]);
}

Meta meta;
Meta meta; // use BOM element setting
bool bl = meta.LPub.bom.partElements.bricklinkElements.value();
m_lookupDefault = bl ? LookUp::Bricklink : LookUp::Peeron;
m_lookupDefault = bl ? LookUp::Bricklink : LookUp::Rebrickable;
m_elementDefault = bl ? ElementSrc::BL : ElementSrc::LEGO;
}

Expand Down Expand Up @@ -609,18 +612,21 @@ bool LDVHtmlInventory::generateHtml(
int invalidElements = 0;
int uniqueElements = 0;

QStringList partList;

IntVector uniqueColors;
for (i = 0; i < uniqueParts; i++)
{
const LDPartCount &partCount = partCounts[i];
const IntVector &colors = partCount.getColors();
int elements = (int)colors.size();
uniqueElements += elements;
QString ldPartId(QFileInfo(QString::fromStdString(partCount.getFilename())).baseName());
partList.append(ldPartId);
for (j = 0; j < elements; j++)
{
bool bl = m_lookupSite == LookUp::Bricklink;
QString ldColorId(QString::number(colors[j]));
QString ldPartId(QFileInfo(QString::fromStdString(partCount.getFilename())).baseName());
QString elementId = Annotations::getBLElement(
ldColorId, ldPartId,
bl ? ElementSrc::BL:ElementSrc::LEGO);
Expand All @@ -631,6 +637,13 @@ bool LDVHtmlInventory::generateHtml(
}
}

if (getLookupSite() == LookUp::Rebrickable &&
partList.size() &&
m_modelWidget) {
m_modelWidget->doSetRebrickableColors();
m_modelWidget->doSetRebrickableParts(partList.join(","));
}

ProgressDialog->setMaximum(uniqueParts);

writeHeader(file);
Expand Down Expand Up @@ -700,6 +713,11 @@ void LDVHtmlInventory::setSnapshotHeightFlag(int value)
setOtherSetting(m_snapshotHeight, value, SAVE_HEIGHT_KEY, true);
}

void LDVHtmlInventory::setRebrickableKeyFlag(std::string value)
{
setOtherSetting(m_rebrickableKey, value, PARTS_LIST_REBRICKABLE_KEY_KEY, true);
}

bool LDVHtmlInventory::getGeneratePdfFlag()
{
m_generatePdf = getBoolSetting(PARTS_LIST_GENERATE_PDF_KEY);
Expand Down Expand Up @@ -730,13 +748,20 @@ int LDVHtmlInventory::getSnapshotHeightFlag()
return m_snapshotHeight;
}

std::string LDVHtmlInventory::getRebrickableKeyFlag()
{
m_rebrickableKey = getStringSetting(PARTS_LIST_REBRICKABLE_KEY_KEY,REBRICKABLE_KEY_DEFAULT);
return m_rebrickableKey;
}

void LDVHtmlInventory::loadOtherSettings(void)
{
getGeneratePdfFlag();
getLookupSiteFlag();
getElementSourceFlag();
getSnapshotWidthFlag();
getSnapshotHeightFlag();
getRebrickableKeyFlag();
LongVector columnOrder;
columnOrder.push_back(1); // Part
columnOrder.push_back(3); // Color
Expand All @@ -745,8 +770,11 @@ void LDVHtmlInventory::loadOtherSettings(void)
m_prefs->setInvColumnOrder(columnOrder);
}

void LDVHtmlInventory::setOtherSetting(bool &setting, bool value, const char *key,
bool commit)
void LDVHtmlInventory::setOtherSetting(
bool &setting,
bool value,
const char *key,
bool commit)
{
if (setting != value)
{
Expand All @@ -759,8 +787,11 @@ void LDVHtmlInventory::setOtherSetting(bool &setting, bool value, const char *ke
}
}

void LDVHtmlInventory::setOtherSetting(int &setting, int value, const char *key,
bool commit)
void LDVHtmlInventory::setOtherSetting(
int &setting,
int value,
const char *key,
bool commit)
{
if (setting != value)
{
Expand All @@ -772,6 +803,32 @@ void LDVHtmlInventory::setOtherSetting(int &setting, int value, const char *key,
}
}

void LDVHtmlInventory::setOtherSetting(
std::string &setting,
const std::string &value,
const char *key,
bool commit,
bool isPath /*= false*/)
{
if (setting != value)
{
setting = value;
if (commit)
{
if (isPath)
{
TCUserDefaults::setPathForKey(value.c_str(), key,
true /*!m_globalSettings[key]*/);
}
else
{
TCUserDefaults::setStringForKey(value.c_str(), key,
true /*!m_globalSettings[key]*/);
}
}
}
}

bool LDVHtmlInventory::getBoolSetting(const char *key, bool defaultValue)
{
return TCUserDefaults::longForKey(key, (long)defaultValue,
Expand All @@ -784,6 +841,32 @@ int LDVHtmlInventory::getIntSetting(const char *key, int defaultValue)
true /*!m_globalSettings[key]*/);
}

std::string LDVHtmlInventory::getStringSetting(
const char *key,
const char *defaultValue /*= NULL*/,
bool isPath /*= false*/)
{
char *tmpString;
std::string result;

if (isPath)
{
tmpString = TCUserDefaults::pathForKey(key, defaultValue,
true /*!m_globalSettings[key]*/);
}
else
{
tmpString = TCUserDefaults::stringForKey(key, defaultValue,
true /*!m_globalSettings[key]*/);
}
if (tmpString)
{
result = tmpString;
delete[] tmpString;
}
return result;
}

// *** Settings Flags End ***

FILE *LDVHtmlInventory::safeOpenCssFile(const std::string &cssFilename,
Expand Down Expand Up @@ -995,7 +1078,6 @@ void LDVHtmlInventory::writePartCell(
std::string partName = partCount.getFilename();
size_t nDotSpot = partName.find('.');
int r, g, b, a;
bool bl = m_lookupSite == LookUp::Bricklink;
bool element = true;

palette->getRGBA(colorInfo, r, g, b, a);
Expand All @@ -1011,25 +1093,74 @@ void LDVHtmlInventory::writePartCell(
className = " class=\"image\"";
}

if (bl) {
QString elementId = Annotations::getBLElement(
QString::number(colorNumber),
QString::fromStdString(partName),
ElementSrc::BL);
std::string viewOnString;

QString elementId;

if (getLookupSite() != LookUp::Peeron) {
elementId = Annotations::getBLElement(
QString::number(colorNumber),
QString::fromStdString(partName),
ElementSrc::BL);
element = !elementId.isEmpty();
}

switch (m_lookupSite)
{
case LookUp::Bricklink:
{
QStringList elementParts = elementId.split("-");

fprintf(file, " <td%s>"
"<a href=\"https://www.bricklink.com/v2/catalog/catalogitem.page?P=%s&idColor=%s\">",
className.c_str(),
element ? elementParts.at(0).toLatin1().constData() : "0000",
element ? elementParts.at(1).toLatin1().constData() : "00");
} else {
"<a href=\"https://www.bricklink.com/v2/catalog/catalogitem.page?P=%s&idColor=%s\">",
className.c_str(),
element ? elementParts.at(0).toLatin1().constData() : "0000",
element ? elementParts.at(1).toLatin1().constData() : "00");

viewOnString = lsUtf8(element ? "PLViewOnBricklink" : "PLVInvalidElement");
}
break;
case LookUp::Rebrickable:
{
int rebricableColor = colorNumber /*m_modelWidget->doGetRebrickableColor(colorNumber)*/;

std::string rebricablePartUrl = m_modelWidget->doGetRebrickablePartURL(partName);

fprintf(file, " <td%s>"
"<a href=\"%s%d/\">",
className.c_str(),
rebricablePartUrl.c_str(),
rebricableColor);

viewOnString = lsUtf8(element ? "PLViewOnRebrickable" : "PLVInvalidElement");
}
break;
case LookUp::Peeron:
fprintf(file, " <td%s>"
"<a href=\"http://peeron.com/inv/parts/%s\">",
className.c_str(), partName.c_str());
"<a href=\"http://peeron.com/inv/parts/%s\">",
className.c_str(), partName.c_str());

viewOnString = lsUtf8("PLViewOnPeeron");
break;
case LookUp::PTracker:
{
if (partCount.getModel()->isOfficial()) {
fprintf(file, " <td%s>"
"<a href=\"http://www.ldraw.org/cgi-bin/ptscan.cgi?q=%s\">",
className.c_str(), partCount.getFilename());

viewOnString = lsUtf8("PLViewOnLDrawPartTracker");
} else {
fprintf(file, " <td%s>"
"<a href=\"http://www.ldraw.org/cgi-bin/ptdetail.cgi?f=parts/%s\">",
className.c_str(), partCount.getFilename());

viewOnString = lsUtf8("PLViewOnLDrawUnOffPartTracker");
}
}
break;
default:
break;
}

QString localPartPath = QDir::toNativeSeparators(QString("%1/%2_%3_%4.png")
Expand All @@ -1039,8 +1170,7 @@ void LDVHtmlInventory::writePartCell(
.arg(QString::fromStdString(m_partListKey)));

fprintf(file, "<img alt=\"%s\" title=\"%s\" src=\"%s\">",
lsUtf8(bl ? element ? "PLViewOnBricklink" : "PLVInvalidElement" : "PLViewOnPeeron"),
lsUtf8(bl ? element ? "PLViewOnBricklink" : "PLVInvalidElement" : "PLViewOnPeeron"),
viewOnString.c_str(), viewOnString.c_str(),
localPartPath.toLatin1().constData());

fprintf(file, "</a></td>\n");
Expand Down

0 comments on commit 44a89dc

Please sign in to comment.