#! /usr/bin/env python
# -*- Python -*-
####################################################################################################
#
# PyValentina - A Python implementation of Valentina Pattern Drafting Software
# Copyright (C) 2018 Salvaire Fabrice
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
####################################################################################################
####################################################################################################
from pathlib import Path
import yaml
import argparse
import json
####################################################################################################
parser = argparse.ArgumentParser(description='Extract Valentina Measurement')
parser.add_argument('valentina_path', metavar='ValentinaPath',
help='Valentina source path')
args = parser.parse_args()
####################################################################################################
TOPICS = {
'A': 'Direct Height',
'B': 'Direct Width',
'C': 'Indentation',
'D': 'Circumference and Arc',
'E': 'Vertical',
'F': 'Horizontal',
'G': 'Bust',
'H': 'Balance',
'I': 'Arm',
'J': 'Leg',
'K': 'Crotch and Rise',
'L': 'Hand',
'M': 'Foot',
'N': 'Head',
'O': 'Men & Tailoring',
'P': 'Historical & Specialty',
'Q': 'Patternmaking measurements',
}
####################################################################################################
cpp_file = Path(args.valentina_path).joinpath('src', 'libs', 'vpatterndb', 'vtranslatemeasurements.cpp')
# m = translate("VTranslateMeasurements", "height",
# "Name in a formula. Don't use math symbols and space in name!!!!");
# g = translate("VTranslateMeasurements", "Height: Total", "Full measurement name.");
# d = translate("VTranslateMeasurements", "Vertical distance from crown of head to floor.",
# "Full measurement description.");
# InitMeasurement(height_M, m, g, d, "A01");
codes = {}
names = {}
complete = False
with open(cpp_file, 'r') as fh:
offset = len('m = translate("VTranslateMeasurements", "')
for line in fh.readlines():
line = line.strip()
if line.startswith('m ='):
i = line.find('"', offset)
name = line[offset:i]
elif line.startswith('g ='):
i = line.find('"', offset)
full_name = line[offset:i]
elif line.startswith('d ='):
i = line.find('"', offset)
if i != -1:
description = line[offset:i]
else:
description = ''
complete = True
if not line.endswith(','):
complete = True
elif line.startswith('InitMeasurement'):
complete = False
i = line.find('"') + 1
if i:
j = line.find('"', i)
code = line[i:j]
description = description.replace('\\"', '"')
# measurements[code] = dict(name=name, full_name=full_name, description=description)
data = [name, full_name, description, 0]
codes[code] = data
names[name] = data
elif complete:
# ", "Full
i = line.find('"Full measurement description."')
if i == -1:
description += line[1:-2]
elif i > 0:
description += line[1:i-3]
complete = False
####################################################################################################
vit_file = Path(args.valentina_path).joinpath(
'src', 'app', 'share', 'tables', 'templates', 'template_all_measurements.vit')
with open(vit_file, 'r') as fh:
#
offset = len('