From 21c005aa3eadbb482374a5f9b5413d2efb0ed4da Mon Sep 17 00:00:00 2001 From: Taka Date: Fri, 28 Apr 2017 00:00:06 +0000 Subject: [PATCH] Get card info from an index file, instead of trying to parse the PDF's. --- _freeze.py | 1 + asl_cards/parse.py | 100 +++++++++---- asl_cards/run_tests.sh | 2 +- asl_cards/tests/_test_case_base.py | 1 + .../{test_real_data.py => _test_real_data.py} | 6 +- index/AlliedMinorOrdnanceMidApril15.txt | 42 ++++++ index/AlliedMinorVehiclesMidApril15.txt | 50 +++++++ index/AmericanOrdnance.txt | 30 ++++ index/AmericanVehiclesMidApril15.txt | 62 ++++++++ index/AxisMinorOrdnanceApril15.txt | 84 +++++++++++ index/AxisMinorVehiclesMidApril15.txt | 66 +++++++++ index/BritishOrdnanceMidApril15.txt | 30 ++++ index/BritishVehiclesMidApril15.txt | 132 ++++++++++++++++++ index/ChineseOrdnanceMidApril15.txt | 42 ++++++ index/ChineseVehiclesFeb15.txt | 22 +++ index/FinnishOrdnanceUpdateApril15.txt | 46 ++++++ index/FinnishVehiclesUpdateApril15.txt | 32 +++++ index/FrenchOrdnance.txt | 22 +++ index/FrenchVehiclesMidApril15.txt | 52 +++++++ index/GermanOrdnance.txt | 35 +++++ index/GermanVehiclesMidApril15.txt | 120 ++++++++++++++++ index/HPRussianVehiclesMidApril15.txt | 32 +++++ index/ItalianOrdnance.txt | 21 +++ index/ItalianVehiclesMidApril15.txt | 42 ++++++ index/JapaneseOrdnance.txt | 28 ++++ index/JapaneseVehiclesFeb15.txt | 24 ++++ index/RussianOrdnance.txt | 28 ++++ index/RussianVehiclesMidApril15.txt | 58 ++++++++ main_window.py | 2 +- startup_widget.py | 28 +++- 30 files changed, 1212 insertions(+), 28 deletions(-) rename asl_cards/tests/{test_real_data.py => _test_real_data.py} (98%) create mode 100644 index/AlliedMinorOrdnanceMidApril15.txt create mode 100644 index/AlliedMinorVehiclesMidApril15.txt create mode 100644 index/AmericanOrdnance.txt create mode 100644 index/AmericanVehiclesMidApril15.txt create mode 100644 index/AxisMinorOrdnanceApril15.txt create mode 100644 index/AxisMinorVehiclesMidApril15.txt create mode 100644 index/BritishOrdnanceMidApril15.txt create mode 100644 index/BritishVehiclesMidApril15.txt create mode 100644 index/ChineseOrdnanceMidApril15.txt create mode 100644 index/ChineseVehiclesFeb15.txt create mode 100644 index/FinnishOrdnanceUpdateApril15.txt create mode 100644 index/FinnishVehiclesUpdateApril15.txt create mode 100644 index/FrenchOrdnance.txt create mode 100644 index/FrenchVehiclesMidApril15.txt create mode 100644 index/GermanOrdnance.txt create mode 100644 index/GermanVehiclesMidApril15.txt create mode 100644 index/HPRussianVehiclesMidApril15.txt create mode 100644 index/ItalianOrdnance.txt create mode 100644 index/ItalianVehiclesMidApril15.txt create mode 100644 index/JapaneseOrdnance.txt create mode 100644 index/JapaneseVehiclesFeb15.txt create mode 100644 index/RussianOrdnance.txt create mode 100644 index/RussianVehiclesMidApril15.txt diff --git a/_freeze.py b/_freeze.py index 5607fe0..2219c8f 100644 --- a/_freeze.py +++ b/_freeze.py @@ -22,6 +22,7 @@ def get_extra_files( fspec ) : # initialize extra_files = [] +extra_files.extend( get_extra_files( "index/*.txt" ) ) extra_files.extend( get_extra_files( "resources/*.ico" ) ) extra_files.extend( get_extra_files( "resources/*.png" ) ) extra_files.extend( get_extra_files( "ui/*ui" ) ) diff --git a/asl_cards/parse.py b/asl_cards/parse.py index 566e264..09daaa7 100644 --- a/asl_cards/parse.py +++ b/asl_cards/parse.py @@ -6,6 +6,8 @@ import tempfile import locale from collections import namedtuple +from PyQt5.QtWidgets import QMessageBox + from pdfminer.pdfinterp import PDFResourceManager , PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams , LTTextBoxHorizontal @@ -20,8 +22,10 @@ from asl_cards.db import AslCard , AslCardImage class PdfParser: - def __init__( self , progress=None , progress2=None ) : + def __init__( self , index_dir , ask=None , progress=None , progress2=None ) : # initialize + self.index_dir = index_dir + self.ask = ask # nb: for asking the user something during processing self.progress = progress # nb: for tracking file progress self.progress2 = progress2 # nb: for tracking page progress within a file self.cancelling = False @@ -39,34 +43,84 @@ class PdfParser: ] # parse each file cards = [] - for fname in fnames : + for file_no,fname in enumerate(fnames) : if self.cancelling : raise RuntimeError("Cancelled.") - cards.extend( self._do_parse_file( fname , max_pages , images ) ) + file_cards = self._do_parse_file( float(file_no)/len(fnames) , fname , max_pages , images ) + if file_cards : + cards.extend( file_cards ) + self._progress( 1.0 , "Done." ) + # filter out placeholder cards + cards = [ c for c in cards if c.nationality != "_unused_" and c.name != "_unused_" ] return cards - def _do_parse_file( self , fname , max_pages , images ) : - # extract the details of each card - rmgr = PDFResourceManager() - laparams = LAParams() - dev = PDFPageAggregator( rmgr , laparams=laparams ) - interp = PDFPageInterpreter( rmgr , dev ) + def _do_parse_file( self , pval , fname , max_pages , images ) : cards = [] - with open(fname,"rb") as fp : - self._progress( 0 , "Analyzing {}...".format( os.path.split(fname)[1] ) ) - pages = list( PDFPage.get_pages( fp ) ) - for page_no,page in enumerate(pages) : - if self.cancelling : raise RuntimeError("Cancelled.") - self._progress2( float(page_no) / len(pages) ) - page_cards = self._parse_page( cards , interp , page_no , page ) - cards.extend( page_cards ) - if max_pages > 0 and 1+page_no >= max_pages : - break - self._progress( 1.0 , "Done." ) + # check if we have an index for this file + # NOTE: We originally tried to get the details of each card by parsing the PDF files but unfortunately, + # the text was coming out garbled. We allow corrections to be supplied in an external file, but if we're + # going to do that, we might as well not bother parsing the PDF :-/ (especially since it's so insanely slow). + split = os.path.split( fname ) + index_fname = os.path.join( + self.index_dir if self.index_dir else "" , + os.path.splitext(split[1])[0]+".txt" + ) + if os.path.isfile( index_fname ) : + # yup - just generate the AslCard's from that + # NOTE: It would be nice to store these files as JSON, or something similar, but we want + # to keep them easy for end-users to change, if some values need to be tweaked. + self._progress( pval , "Reading card details from {}...".format( os.path.split(index_fname)[1] ) ) + for line_buf in open(index_fname,"r") : + line_buf = line_buf.strip() + if line_buf == "" or line_buf.startswith(("#","'",";","//")) : + continue + fields = line_buf.split( "|" ) + if len(fields) != 3 : + raise RuntimeError( "Invalid index line: {}".format( line_buf ) ) + fields = [ f.strip() for f in fields ] + ncards = len( cards ) + cards.append( AslCard( + card_tag = fields[0] , + nationality = fields[1] , + name = fields[2] , + page_id = 1 + ncards/2 , + page_pos = ncards % 2 + ) ) + else : + # ask the user if they want to try parsing the PDF + if self.ask : + rc = self.ask( + "Can't find an index file for {}.\n\nDo you want to try parsing the PDF (slow and unreliable)?".format( + os.path.split( fname )[ 1 ] + ) , + QMessageBox.Yes | QMessageBox.No , QMessageBox.No + ) + if rc != QMessageBox.Yes : + return None + # extract each AslCard from the file + self._progress( pval , "Analyzing {}...".format( os.path.split(fname)[1] ) ) + rmgr = PDFResourceManager() + laparams = LAParams() + dev = PDFPageAggregator( rmgr , laparams=laparams ) + interp = PDFPageInterpreter( rmgr , dev ) + with open(fname,"rb") as fp : + pages = list( PDFPage.get_pages( fp ) ) + for page_no,page in enumerate(pages) : + if self.cancelling : raise RuntimeError("Cancelled.") + self._progress2( float(page_no) / len(pages) ) + page_cards = self._parse_page( cards , interp , page_no , page ) + cards.extend( page_cards ) + if max_pages > 0 and 1+page_no >= max_pages : + break # extract the card images if images : + self._progress( pval , "Extracting images from {}...".format( os.path.split(fname)[1] ) ) card_images = self._extract_images( fname , max_pages ) if len(cards) != len(card_images) : - raise RuntimeError( "Found {} cards, {} card images.".format( len(cards) , len(card_images) ) ) + raise RuntimeError( + "Card mismatch in {}: found {} cards, {} card images.".format( + fname , len(cards) , len(card_images) + ) + ) for i in range(0,len(cards)) : if self.cancelling : raise RuntimeError("Cancelled.") cards[i].card_image = AslCardImage( image_data=card_images[i] ) @@ -138,7 +192,6 @@ class PdfParser: # FIXME! clean up left-over temp files before we start args = [ s.encode(locale.getpreferredencoding()) for s in args ] # FIXME! stop GhostScript from issuing warnings (stdout). - self._progress( 0 , "Extracting images from {}...".format( os.path.split(fname)[1] ) ) ghostscript.Ghostscript( *args ) # figure out how many files were created (so we can show progress) npages = 0 @@ -182,7 +235,6 @@ class PdfParser: card_images.append( buf2 ) # clean up os.unlink( fname ) - self._progress( 1.0 , "Done." ) return card_images def _crop_image( self , img , bbox , fname ) : @@ -192,7 +244,7 @@ class PdfParser: bgd_col = img.getpixel( (0,0) ) bgd_img = Image.new( img.mode , img.size , bgd_col ) diff = ImageChops.difference( rgn , bgd_img ) - diff = ImageChops.add(diff, diff, 2.0, -100) + #diff = ImageChops.add(diff, diff, 2.0, -100) bbox = diff.getbbox() if bbox : rgn = rgn.crop( bbox ) diff --git a/asl_cards/run_tests.sh b/asl_cards/run_tests.sh index bce5bec..fa90dda 100755 --- a/asl_cards/run_tests.sh +++ b/asl_cards/run_tests.sh @@ -1,2 +1,2 @@ -cd `dirname "$0"` +cd `dirname "$0"`/tests python -m unittest discover diff --git a/asl_cards/tests/_test_case_base.py b/asl_cards/tests/_test_case_base.py index 74c10d7..12e499b 100755 --- a/asl_cards/tests/_test_case_base.py +++ b/asl_cards/tests/_test_case_base.py @@ -18,6 +18,7 @@ class TestCaseBase( unittest.TestCase ) : if not os.path.isfile( fname2 ) : raise RuntimeError( "Missing data file: {}".format( fname2 ) ) pdf_parser = PdfParser( + None , #progress = lambda _,msg: print( msg , file=sys.stderr , flush=True ) ) cards = pdf_parser.parse( fname2 , images=False ) diff --git a/asl_cards/tests/test_real_data.py b/asl_cards/tests/_test_real_data.py similarity index 98% rename from asl_cards/tests/test_real_data.py rename to asl_cards/tests/_test_real_data.py index 6a558f0..cbe0025 100755 --- a/asl_cards/tests/test_real_data.py +++ b/asl_cards/tests/_test_real_data.py @@ -10,7 +10,11 @@ from asl_cards.parse import AslCard # --------------------------------------------------------------------- class TestRealData( TestCaseBase ) : - """Run tests using the real "ASL Cards" PDF files.""" + """Run tests using the real "ASL Cards" PDF files. + + NOTE: This set of tests are run separately since they are insanely slow, and require the real PDF files + that need to be purchased (and so aren't kept in source control). + """ def _test_pdf_parser( self , fname , expected_cards ) : """Test the PDF parser.""" diff --git a/index/AlliedMinorOrdnanceMidApril15.txt b/index/AlliedMinorOrdnanceMidApril15.txt new file mode 100644 index 0000000..8424552 --- /dev/null +++ b/index/AlliedMinorOrdnanceMidApril15.txt @@ -0,0 +1,42 @@ +Ordnance #1 | Polish | 46mm Gran. wz.36 +Ordnance #2 | Polish | wz.35 +Ordnance #3 | Polish | 75mm wz. 02/26 +Ordnance #4 | Polish | 100mm wz. 14/19 +Ordnance #5 | Polish | 75mm wz. 97/25 +Ordnance #6 | Belgian | DBT +Ordnance #7 | Belgian | M76 A +Ordnance #7 | Belgian | M76 A (LF) +Ordnance #8 | Belgian | 7.6cm FRC +Ordnance #9 | Belgian | C47 FRC M32 +Ordnance #10 | Belgian | C75 TR +Ordnance #11 | Belgian | C75 GP +Ordnance #11 | Belgian | C75 GP (LF) +Ordnance #12 | Belgian | Ob 105 GP +Ordnance #12 | Belgian | Ob 105 GP (LF) +Ordnance #13 | Belgian | C120 M31 +Ordnance #13 | Belgian | C120 M31 (LF) +Ordnance #14 | Belgian | M27 FRC +Ordnance #15 | Dutch | Solothurn s/18-1100 +Ordnance #16 | Greek | Vari 85/24 M +Ordnance #17 | Greek | OR 105/19 (f) +Ordnance #18 | Greek | 3.7cm Bofors (r) +Ordnance #19 | Danish | MC 20mm M-35 +Ordnance #20 | Yugoslav | 3.7cm Inf Gun +Ordnance #21 | Yugoslav | 80mm M28/M33 +Ordnance #22 | Yugoslav | 100mm M14/19 +Ordnance #23 | Allied Minor | Brandt Mortar (f) +Ordnance #24 | Allied Minor | 37mm Bofors +Ordnance #25 | Allied Minor | 3.7cm PaK 35/36 (g) +Ordnance #26 | Allied Minor | Bohler M35 47mm +Ordnance #27 | Allied Minor | 65mm wz.06 +Ordnance #28 | Allied Minor | 75mm wz.97 +Ordnance #29 | Allied Minor | Bofors M34 +Ordnance #30 | Allied Minor | 75M 19S (f) +Ordnance #31 | Allied Minor | C105L 13 S (f) +Ordnance #32 | Allied Minor | 120mm wz. 09/31 +Ordnance #33 | Allied Minor | 155mm 17 S (f) +Ordnance #34 | Allied Minor | Mitra. de 13.2 CAJ (f) +Ordnance #35 | Allied Minor | 20mm Oerlikon +Ordnance #35 | Allied Minor | 20mm Oerlikon (LF) +Ordnance #36 | Allied Minor | 40mm Bofors +Ordnance #36 | Allied Minor | 40mm Bofors (LF) diff --git a/index/AlliedMinorVehiclesMidApril15.txt b/index/AlliedMinorVehiclesMidApril15.txt new file mode 100644 index 0000000..19ebbcc --- /dev/null +++ b/index/AlliedMinorVehiclesMidApril15.txt @@ -0,0 +1,50 @@ +Vehicle #1 | Polish | TKS +Vehicle #1 | Polish | TKS (L) +Vehicle #2 | Polish | Vickers Edw (b) +Vehicle #2 | Polish | Vickers Ejw (b) +Vehicle #3 | Polish | 7TPdw +Vehicle #3 | Polish | 7TPjw +Vehicle #4 | Polish | H35 (f) +Vehicle #5 | Polish | Peugeot 1918 (f) +Vehicle #6 | Polish | wz.29 +Vehicle #7 | Polish | wz.34-I +Vehicle #7 | Polish | wz.34-II +Vehicle #8 | Polish | De Dion-Bouton (f) +Vehicle #9 | Polish | PF621L SPAA +Vehicle #10 | Polish | 302T +Vehicle #11 | Polish | C2P +Vehicle #12 | Polish | C4P +Vehicle #13 | Polish | Taczanka +Vehicle #14 | Belgian | VCL Mk VI (b) +Vehicle #15 | Belgian | T-13 II (b) +Vehicle #16 | Belgian | T-13 III (b) +Vehicle #17 | Belgian | T-15 (b) +Vehicle #18 | Belgian | ACG1 (f) +Vehicle #19 | Yugoslav | T-32 +Vehicle #20 | Yugoslav | M3A1 (a) +Vehicle #20 | Yugoslav | M3A3 (a) +Vehicle #21 | Yugoslav | M3 (a) Pak 40 +Vehicle #22 | Yugoslav | M3 (a) FlaK 38 +Vehicle #23 | Yugoslav | AEC II (b) +Vehicle #24 | Danish | Nimbus +Vehicle #25 | Dutch | VCL M1936 (b) +Vehicle #26 | Dutch | CTLS-4 (a) +Vehicle #27 | Dutch | M36 +Vehicle #27 | Dutch | M38 +Vehicle #28 | Dutch | M39 +Vehicle #29 | Dutch | Marm-Herr III (b) +Vehicle #30 | Dutch | Jeep (a) +Vehicle #31 | Allied Minor | L5/30 (i) +Vehicle #31 | Allied Minor | L3/35 (i) +Vehicle #31 | Allied Minor | L6/40 (i) +Vehicle #31 | Allied Minor | M13/40 (i) +Vehicle #32 | Allied Minor | FT-17M (f) +Vehicle #32 | Allied Minor | FT-17C (f) +Vehicle #33 | Allied Minor | R-35 (f) +Vehicle #34 | Allied Minor | M3A1 (a) +Vehicle #35 | Allied Minor | C-K P17 (f) +Vehicle #35 | Allied Minor | C-K P19 (f) +Vehicle #36 | Allied Minor | VCL Utility B (b) +Vehicle #37 | Allied Minor | Light Truck +Vehicle #37 | Allied Minor | Medium Truck +Vehicle #37 | Allied Minor | Heavy Truck diff --git a/index/AmericanOrdnance.txt b/index/AmericanOrdnance.txt new file mode 100644 index 0000000..125ee48 --- /dev/null +++ b/index/AmericanOrdnance.txt @@ -0,0 +1,30 @@ +Ordnance #1 | American | M2 60mm +Ordnance #2 | American | M19 +Ordnance #3 | American | M1 81mm +Ordnance #4 | American | M2 4.2in +Ordnance #5 | American | T25 +Ordnance #6 | American | M3A1 +Ordnance #7 | American | M1 57mm +Ordnance #8 | American | M5 +Ordnance #9 | American | T32 +Ordnance #10 | American | M18 +Ordnance #11 | American | M20 +Ordnance #12 | American | M1A1 75mm +Ordnance #13 | American | M1897A2 +Ordnance #14 | American | M2A1 +Ordnance #15 | American | M3 +Ordnance #16 | American | M1 4.5in +Ordnance #17 | American | M1918 +Ordnance #18 | American | M1 155mm +Ordnance #19 | American | M1918M1 +Ordnance #20 | American | M1A1 155mm +Ordnance #21 | American | M1 8in +Ordnance #22 | American | M51 +Ordnance #22 | American | M51 (LF) +Ordnance #23 | American | M1A2 +Ordnance #24 | American | M1 40mm +Ordnance #24 | American | M1 40mm (LF) +Ordnance #25 | American | M3 AA +Ordnance #26 | American | M1A1 90mm +Ordnance #27 | American | M2 +Ordnance #27 | American | M2 (LF) diff --git a/index/AmericanVehiclesMidApril15.txt b/index/AmericanVehiclesMidApril15.txt new file mode 100644 index 0000000..25fb376 --- /dev/null +++ b/index/AmericanVehiclesMidApril15.txt @@ -0,0 +1,62 @@ +Vehicle #1 | American | M2A4 +Vehicle #2 | American | M3 LT +Vehicle #3 | American | M3A1 LT +Vehicle #4 | American | M3A1 Satan +Vehicle #5 | American | M5A1 +Vehicle #6 | American | M24 +Vehicle #7 | American | M3 MT (MA) +Vehicle #7 | American | M3 MT (SA) +Vehicle #8 | American | M4 +Vehicle #9 | American | M4A1 +Vehicle #10 | American | M4A2 +Vehicle #11 | American | M4A2 (L) +Vehicle #12 | American | M4A3 +Vehicle #13 | American | M4A3(75)W +Vehicle #14 | American | M4A3E2 +Vehicle #14 | American | M4A3E2(L) +Vehicle #15 | American | M4A1(76)W +Vehicle #16 | American | M4A3(76)W +Vehicle #17 | American | M4(105) +Vehicle #17 | American | M4A3(105) +Vehicle #18 | American | M4 Tankdozer +Vehicle #19 | American | T1E3 +Vehicle #20 | American | Sherman Crab +Vehicle #21 | American | POA-CWS-H1 +Vehicle #22 | American | M26 +Vehicle #23 | American | M10 GMC +Vehicle #24 | American | M18 GMC +Vehicle #25 | American | M36 GMC +Vehicle #26 | American | M36B1 GMC +Vehicle #27 | American | M2 +Vehicle #28 | American | M3 +Vehicle #29 | American | M3A1 +Vehicle #30 | American | M3(MMG) +Vehicle #30 | American | M3(HMG) +Vehicle #31 | American | M4 MC +Vehicle #32 | American | M4A1 MC +Vehicle #33 | American | M21 MC +Vehicle #34 | American | M3 GMC +Vehicle #35 | American | T30 HMC +Vehicle #36 | American | T19 HMC +Vehicle #37 | American | M15A1 MGMC +Vehicle #38 | American | M16 MGMC +Vehicle #39 | American | M3A1 SC +Vehicle #40 | American | M20 +Vehicle #41 | American | T8 +Vehicle #42 | American | M8 +Vehicle #43 | American | M8 HMC +Vehicle #44 | American | M7 HMC +Vehicle #45 | American | M12 GMC +Vehicle #46 | American | LVT(A)1 +Vehicle #47 | American | LVT(A)4 +Vehicle #48 | American | M4 DD +Vehicle #49 | American | LVT2 +Vehicle #50 | American | LVT(A)2 +Vehicle #51 | American | LVT4 +Vehicle #52 | American | DUKW +Vehicle #53 | American | 1/4-Ton Jeep GPA +Vehicle #54 | American | 1/4-Ton Jeep +Vehicle #55 | American | 3/4-Ton +Vehicle #56 | American | 1 1/2-Ton +Vehicle #57 | American | 2 1/2-Ton +Vehicle #58 | American | 7 1/2-Ton diff --git a/index/AxisMinorOrdnanceApril15.txt b/index/AxisMinorOrdnanceApril15.txt new file mode 100644 index 0000000..78c7084 --- /dev/null +++ b/index/AxisMinorOrdnanceApril15.txt @@ -0,0 +1,84 @@ +Ordnance #1 | Romanian | Brandt M35 (f) +Ordnance #2 | Romanian | Bofors 37mm +Ordnance #3 | Romanian | 45mm PTP o.32 (r) +Ordnance #4 | Romanian | Resita M43 +Ordnance #5 | Romanian | 76.2mm PaK 36 (r) +Ordnance #6 | Romanian | Breda 47 (i) +Ordnance #7 | Romanian | 75mm PP obr.27 (r) +Ordnance #8 | Romanian | 75 M mle 28 (f) +Ordnance #9 | Romanian | Skoda M 14/34 +Ordnance #10 | Romanian | 76.2mm o.00/02 (r) +Ordnance #11 | Romanian | 76.2mm o.02/30 (r) +Ordnance #12 | Romanian | 76.2mm o.39 (r) +Ordnance #13 | Romanian | s 10cm K 18 (g) +Ordnance #14 | Romanian | Skoda M39(D9) +Ordnance #15 | Romanian | Canon 105L m36S (f) +Ordnance #16 | Romanian | Canon mle 10/12 (f) +Ordnance #17 | Romanian | OQF 4.5in (b) +Ordnance #18 | Romanian | Skoda M28 NOa +Ordnance #19 | Romanian | Skoda M33 (K1) +Ordnance #20 | Romanian | CA mle 38 (f) +Ordnance #21 | Romanian | Vick/Resita M36/39 +Ordnance #22 | Romanian | Kanon PL vz. 12/20 +Ordnance #23 | Hungarian | 5cm IeGrW 39 (h) +Ordnance #24 | Hungarian | 40mm MAVAG 40M +Ordnance #25 | Hungarian | Skoda M05/08 +Ordnance #26 | Hungarian | 105 MAVAG M40 +Ordnance #27 | Hungarian | Bofors 80 M29/38 +Ordnance #28 | Slovakian | Minomet vz.36 +Ordnance #29 | Slovakian | Kanon PUV v.36 (t) +Ordnance #30 | Slovakian | IeIG 18 (g) +Ordnance #31 | Slovakian | Skoda M37(K4) +Ordnance #32 | Slovakian | Skoda 47L40 (t) +Ordnance #33 | Slovakian | Skoda PL vz.37 (t) +Ordnance #34 | Slovakian | Kanon PL vz.22/24 +Ordnance #35 | Croatian | Can da 65/17 (i) +Ordnance #36 | Croatian | Skoda M28(FE) +Ordnance #37 | Bulgarian | LG de 50 m 37 (f) +Ordnance #38 | Bulgarian | Madsen M-35 +Ordnance #39 | Bulgarian | Skoda Inf 37 +Ordnance #39 | Bulgarian | Skoda Inf 70 +Ordnance #40 | Bulgarian | Bofors 75 M36 +Ordnance #41 | Bulgarian | 75mm K-S +Ordnance #42 | Bulgarian | Ob 105mm GP +Ordnance #42 | Bulgarian | Ob 105mm GP (LF) +Ordnance #43 | Bulgarian | D/30 Krupp +Ordnance #44 | Axis Minor | 5cm IeGrW 36 (g) +Ordnance #45 | Axis Minor | 50mm RM o.40 (r) +Ordnance #46 | Axis Minor | 8cm GrW 34 (g) +Ordnance #47 | Axis Minor | Brandt M27/31 (f) +Ordnance #48 | Axis Minor | PM obr.38 (r) +Ordnance #49 | Axis Minor | Ur wz.35 (p) +Ordnance #50 | Axis Minor | s18-1100 +Ordnance #51 | Axis Minor | Kanon PUV v.37 (t) +Ordnance #52 | Axis Minor | Bohler M35 47mm +Ordnance #53 | Axis Minor | 5cm PaK 38 (g) +Ordnance #54 | Axis Minor | 7.5cm PaK 97/38 (g) +Ordnance #55 | Axis Minor | 7.5cm PaK 40 (g) +Ordnance #56 | Axis Minor | Skoda M15 +Ordnance #57 | Axis Minor | Canon 75 m 1897 (f) +Ordnance #58 | Axis Minor | Skoda M29 +Ordnance #59 | Axis Minor | Skoda M17 +Ordnance #60 | Axis Minor | Skoda M28(80) +Ordnance #61 | Axis Minor | Skoda M14/19 +Ordnance #62 | Axis Minor | IeFH 18 (g) +Ordnance #63 | Axis Minor | Skoda M35 +Ordnance #64 | Axis Minor | G obr.10/30 (r) +Ordnance #65 | Axis Minor | G obr.38 (r) +Ordnance #66 | Axis Minor | Skoda M14 +Ordnance #67 | Axis Minor | Skoda M15/16 +Ordnance #68 | Axis Minor | C mle 17 S (f) +Ordnance #69 | Axis Minor | Mitr. 13.2 CAJ m 30 +Ordnance #70 | Axis Minor | Oerlikon FF +Ordnance #70 | Axis Minor | Oerlikon FF (LF) +Ordnance #71 | Axis Minor | 2cm FlaK 30 (g) +Ordnance #71 | Axis Minor | 2cm FlaK 30 (g) (LF) +Ordnance #72 | Axis Minor | 2cm FlaK 38 (g) +Ordnance #72 | Axis Minor | 2cm FlaK 38 (g) (LF) +Ordnance #73 | Axis Minor | 3.7cm FlaK 36 (g) +Ordnance #74 | Axis Minor | Bofors 40mm +Ordnance #74 | Axis Minor | Bofors 40mm (LF) +Ordnance #75 | Axis Minor | Skoda M33 +Ordnance #76 | Axis Minor | 8.8cm FlaK 18 (g) +Ordnance #76 | Axis Minor | 8.8cm FlaK 18 (g) (LF) +Ordnance #00 | _unused_ | _unused_ diff --git a/index/AxisMinorVehiclesMidApril15.txt b/index/AxisMinorVehiclesMidApril15.txt new file mode 100644 index 0000000..aecf54c --- /dev/null +++ b/index/AxisMinorVehiclesMidApril15.txt @@ -0,0 +1,66 @@ +Vehicle #1 | Romanian | R-1 (t) +Vehicle #2 | Romanian | R-35/45 (f) +Vehicle #3 | Romanian | TACAM T-60 (r) +Vehicle #3 | Romanian | TACAM T-60A (r) +Vehicle #4 | Romanian | TACAM R-2 (r) +Vehicle #5 | Romanian | BA-6 (r) +Vehicle #5 | Romanian | BA-20 (r) +Vehicle #6 | Romanian | Malaxa UE2 +Vehicle #7 | Hungarian | 38M Toldi I +Vehicle #8 | Hungarian | 38M Toldi IIA +Vehicle #9 | Hungarian | 40M Turan I (r) +Vehicle #10 | Hungarian | 41M Turan II (r) +Vehicle #11 | Hungarian | PzKpfw VG (g) +Vehicle #12 | Hungarian | PzKpfw VIE(L) (g) +Vehicle #13 | Hungarian | 43M Zrinyi II +Vehicle #14 | Hungarian | 39M Csaba +Vehicle #14 | Hungarian | 40M Csaba +Vehicle #15 | Hungarian | Marder II (g) +Vehicle #16 | Hungarian | 40M Nimrod +Vehicle #17 | Slovakian | T vz 33 (t) +Vehicle #18 | Slovakian | LT vz 34 +Vehicle #19 | Slovakian | PzKpfz IIA (g) +Vehicle #20 | Slovakian | LT vz 40 (t) +Vehicle #21 | Slovakian | Marder III (t) H +Vehicle #22 | Slovakian | Kfz I (g) +Vehicle #23 | Slovakian | SdKfz 2 (g) +Vehicle #24 | Slovakian | TKS +Vehicle #24 | Croatian | TKS(L) +Vehicle #25 | Croatian | L6/40 (i) +Vehicle #26 | Croatian | wz 34-I +Vehicle #26 | Croatian | wz 34-II +Vehicle #27 | Croatian | SMV L40 da 47/32 +Vehicle #28 | Bulgarian | Vickers Mk E (b) +Vehicle #29 | Axis Minor | L3/35 (i) +Vehicle #30 | Axis Minor | FT-17M (f) +Vehicle #30 | Axis Minor | FT-17C (f) +Vehicle #31 | Axis Minor | PzKpfw IB (g) +Vehicle #32 | Axis Minor | R-35 (f) +Vehicle #33 | Axis Minor | H39 (f) +Vehicle #34 | Axis Minor | LT vz 35 (g) +Vehicle #35 | Axis Minor | LT vz 38 (t) A +Vehicle #35 | Axis Minor | LT vz 38 (t) E +Vehicle #36 | Axis Minor | S-35 (f) +Vehicle #37 | Axis Minor | PzKpfw IIIL (g) +Vehicle #38 | Axis Minor | PzKpfw IIIN (g) +Vehicle #39 | Axis Minor | PzKpfw IVD (g) +Vehicle #39 | Axis Minor | PzKpfw IVF1 (g) +Vehicle #39 | Axis Minor | PzKpfw IVH (g) +Vehicle #40 | Axis Minor | StuG IIIG (g) +Vehicle #41 | Axis Minor | JgdPz 38 (t) +Vehicle #42 | Axis Minor | SPW 250/1 (g) +Vehicle #42 | Axis Minor | SPW 251/1 (g) +Vehicle #42 | Axis Minor | SPW 251/9 (g) +Vehicle #43 | Axis Minor | OA vz 30 (t) +Vehicle #44 | Axis Minor | AB 41 (i) +Vehicle #45 | Axis Minor | PSW 222 (g) +Vehicle #45 | Axis Minor | PSW 222(L) (g) +Vehicle #46 | Axis Minor | PSW 223 (g) +Vehicle #47 | Axis Minor | Komsomolet (r) +Vehicle #48 | Axis Minor | RSO (g) +Vehicle #49 | Axis Minor | Light Tractor +Vehicle #49 | Axis Minor | Medium Tractor +Vehicle #49 | Axis Minor | Heavy Tractor +Vehicle #50 | Axis Minor | Light Truck +Vehicle #50 | Axis Minor | Medium Truck +Vehicle #50 | Axis Minor | Heavy Truck diff --git a/index/BritishOrdnanceMidApril15.txt b/index/BritishOrdnanceMidApril15.txt new file mode 100644 index 0000000..07e2000 --- /dev/null +++ b/index/BritishOrdnanceMidApril15.txt @@ -0,0 +1,30 @@ +Ordnance #1 | British | OML 2in +Ordnance #1 | British | OML 2in Airb. +Ordnance #2 | British | OML 3in (E) +Ordnance #2 | British | OML 3in (L) +Ordnance #3 | British | OSB 4.2in +Ordnance #4 | British | OQF 25mm Hotch. +Ordnance #5 | British | OQF 2pdr +Ordnance #5 | British | OQF 2pdr (LF) +Ordnance #6 | British | OQF 6pdr +Ordnance #7 | British | OQF 17/25pdr +Ordnance #8 | British | OQF 17pdr +Ordnance #9 | British | OQF M1A1 75mm +Ordnance #10 | British | Canon de 75 1897 +Ordnance #11 | British | OQF 18pdr +Ordnance #12 | British | OQF 25pdr Short +Ordnance #13 | British | OQF 25pdr Gun +Ordnance #13 | British | OQF 25pdr Gun (LF) +Ordnance #14 | British | OQF 3.7in How. +Ordnance #15 | British | OQF 4.5in How. +Ordnance #16 | British | OBL 4.5in Gun +Ordnance #16 | British | OBL 5.5in Gun +Ordnance #17 | British | OBL 6in How. +Ordnance #18 | British | OBL 7.2in How. I +Ordnance #19 | British | OBL 7.2in How. VI +Ordnance #20 | British | OQF 20mm +Ordnance #21 | British | OQF 40mm +Ordnance #21 | British | OQF 40mm (LF) +Ordnance #22 | British | OQF 3in 20cwt +Ordnance #23 | British | OWF 3.7in +Ordnance #23 | British | OWF 3.7in diff --git a/index/BritishVehiclesMidApril15.txt b/index/BritishVehiclesMidApril15.txt new file mode 100644 index 0000000..7eab383 --- /dev/null +++ b/index/BritishVehiclesMidApril15.txt @@ -0,0 +1,132 @@ +Vehicle #1 | British | Mark VIB +Vehicle #1 | British | Mark VIC +Vehicle #2 | British | Tetrarch +Vehicle #2 | British | Tetrarch CS +Vehicle #3 | British | Stuart I(a) +Vehicle #3 | British | Stuart III(a) +Vehicle #4 | British | Stuart V(a) +Vehicle #5 | British | Locust(a) +Vehicle #6 | British | A9 +Vehicle #6 | British | A9 CS +Vehicle #7 | British | A10 Mk IA +Vehicle #7 | British | A10 Mk IA CS +Vehicle #8 | British | A13 Mk I +Vehicle #8 | British | A13 Mk II +Vehicle #8 | British | A13 Mk II CS +Vehicle #9 | British | Crusader I +Vehicle #9 | British | Crusader I CS +Vehicle #9 | British | Crusader II +Vehicle #9 | British | Crusader II CS +Vehicle #10 | British | Crusader III +Vehicle #11 | British | Grant(a) (MA) +Vehicle #11 | British | Grant(a) (SA) +Vehicle #11 | British | Lee(a) (MA) +Vehicle #11 | British | Lee(a) (SA) +Vehicle #12 | British | Sherman II(a) +Vehicle #13 | British | Sherman III(a) +Vehicle #14 | British | Sherman V(a) +Vehicle #15 | British | Sherman IIA(a) +Vehicle #16 | British | Sherman IIC(a) +Vehicle #16 | British | Sherman VC(a) +Vehicle #17 | British | Sherman IB(a) +Vehicle #18 | British | Centaur IV +Vehicle #19 | British | Cromwell IV +Vehicle #20 | British | Cromwell VI +Vehicle #19 | British | Cromwell VII +Vehicle #20 | British | Cromwell VIII +Vehicle #21 | British | Challenger +Vehicle #22 | British | Comet +Vehicle #23 | British | Sherman Dozer(a) +Vehicle #24 | British | Sherman Crab(a) +Vehicle #25 | British | Matilda I +Vehicle #25 | British | Matilda I (6) +Vehicle #26 | British | Matilda II +Vehicle #26 | British | Matilda II CS +Vehicle #27 | British | Valentine II +Vehicle #28 | British | Valentine V +Vehicle #29 | British | Valentine VIII +Vehicle #30 | British | Valentine XI +Vehicle #31 | British | Churchill I (MA) +Vehicle #31 | British | Churchill I (SA) +Vehicle #32 | British | Churchill IV +Vehicle #00 | _unused_ | _unused_ +Vehicle #33 | British | Churchill V +Vehicle #34 | British | Churchill VI +Vehicle #35 | British | Churchill VII +Vehicle #35 | British | Churchill VIII +Vehicle #36 | British | Valen. Bridgelayer +Vehicle #36 | British | Church. Bridgelayer +Vehicle #37 | British | Churchill AVRE +Vehicle #38 | British | Churchill Crocodile +Vehicle #39 | British | Deacon +Vehicle #40 | British | Wolverine(a) +Vehicle #40 | British | Achilles(a) +Vehicle #41 | British | Archer +Vehicle #42 | British | Daimler +Vehicle #42 | British | Lynx +Vehicle #43 | British | Humber +Vehicle #44 | British | Stuart Recce(a) +Vehicle #45 | British | Humber III LRC +Vehicle #45 | British | Otter +Vehicle #46 | British | Morris CS9 +Vehicle #47 | British | Rolls Royce +Vehicle #48 | British | Marm.-Herr. II ME +Vehicle #49 | British | Marm.-Herr. IIv +Vehicle #48 | British | Marm.-Herr. III MFF +Vehicle #48 | British | Marm.-Herr. III ME +Vehicle #49 | British | Marm.-Herr. IIIv +Vehicle #50 | British | Humber II +Vehicle #50 | British | Humber III +Vehicle #51 | British | Humber IV +Vehicle #52 | British | Daimler AC +Vehicle #53 | British | AEC I +Vehicle #53 | British | AEC II +Vehicle #53 | British | AEC III +Vehicle #54 | British | Staghound I(a) +Vehicle #54 | British | Staghound II(a) +Vehicle #55 | British | Bishop +Vehicle #56 | British | Priest(a) +Vehicle #57 | British | Sexton(a) +Vehicle #58 | British | M3 GMC(a) +Vehicle #59 | British | Mark VI AA +Vehicle #60 | British | Crusader AA +Vehicle #61 | British | M17 MGMC(a) +Vehicle #62 | British | Humber AA +Vehicle #62 | British | Staghound AA(a) +Vehicle #63 | British | M5(a) +Vehicle #63 | British | M9(a) +Vehicle #63 | British | M5A1(a) +Vehicle #63 | British | M9A1(a) +Vehicle #64 | British | Carrier A +Vehicle #64 | British | Carrier B +Vehicle #64 | British | Carrier C +Vehicle #65 | British | Carrier, MMG A +Vehicle #65 | British | Carrier, MMG B +Vehicle #66 | British | Carrier, 2-in MTR +Vehicle #67 | British | Carrier, 3-in MTR +Vehicle #68 | British | Priest Kangaroo(a) +Vehicle #68 | British | Ram Kangaroo(a) +Vehicle #69 | British | White(a) +Vehicle #70 | British | Carrier, IP MK IIA +Vehicle #70 | British | Carrier, IP Mk IIB +Vehicle #70 | British | Carrier, IP AOV +Vehicle #71 | British | Carrier, IP 3-in MTR +Vehicle #72 | British | Carrier, Wasp +Vehicle #72 | British | Badger(a) +Vehicle #73 | British | Buffalo Mk II(a) +Vehicle #73 | British | Buffalo Mk IV(a) +Vehicle #74 | British | Sherman III DD(a) +Vehicle #75 | British | DUKW(a) +Vehicle #76 | British | Terrapin Mk I +Vehicle #77 | British | 2pdr Portee +Vehicle #78 | British | Morris C9/B +Vehicle #79 | British | Loyd Carrier +Vehicle #80 | British | Quad FAT +Vehicle #81 | British | 15-cwt Truck +Vehicle #82 | British | 30-cwt Truck +Vehicle #83 | British | 3-Ton Lorry +Vehicle #84 | British | 1/4-Ton Jeep(a) +Vehicle #85 | British | 3/4-Ton Truck(a) +Vehicle #85 | British | 1 1/2-Ton Truck(a) +Vehicle #85 | British | 2 1/2-Ton Truck(a) +Vehicle #85 | British | 7 1/2-Ton Truck(a) diff --git a/index/ChineseOrdnanceMidApril15.txt b/index/ChineseOrdnanceMidApril15.txt new file mode 100644 index 0000000..4c4fe20 --- /dev/null +++ b/index/ChineseOrdnanceMidApril15.txt @@ -0,0 +1,42 @@ +Ordnance #1 | Chinese | Type 27 GL +Ordnance #2 | Chinese | Mortaio da 45 (i) +Ordnance #2 | Chinese | 5cm IeGrW 36 (g) +Ordnance #2 | Chinese | 50mm RM obr.38 (r) +Ordnance #2 | Chinese | Type 89 HGL (j) +Ordnance #3 | Chinese | M2 60mm (a) +Ordnance #4 | Chinese | Stokes 3-in (b) +Ordnance #4 | Chinese | 8cm GrW 34 (g) +Ordnance #4 | Chinese | 82mm BM o.37 (r) +Ordnance #5 | Chinese | M1 81mm (a) +Ordnance #5 | Chinese | M2 4.2-in (a) +Ordnance #6 | Chinese | 3.7cm PaK 35/36 (g) +Ordnance #6 | Chinese | M3A1 37mm (a) +Ordnance #7 | Chinese | 37mm PP o.15R (r) +Ordnance #7 | Chinese | Cann. da 70/15 (i) +Ordnance #8 | Chinese | 7.5cm Krupp (g) +Ordnance #8 | Chinese | Obice da 75/13 (i) +Ordnance #9 | Chinese | 7.5cm IeIG 18 (g) +Ordnance #9 | Chinese | 76.2mm PP o.27 (r) +Ordnance #10 | Chinese | M1A1 75mm (a) +Ordnance #11 | Chinese | 7.7cm FK 16 (g) +Ordnance #11 | Chinese | 76.2mm o.02/30 (r) +Ordnance #11 | Chinese | OQF 18pdr (b) +Ordnance #12 | Chinese | 10.5cm IeFH 16 (g) +Ordnance #12 | Chinese | Cann. da 105/28 (i) +Ordnance #12 | Chinese | M2A1 105mm (a) +Ordnance #13 | Chinese | 122mm o.10/30 (r) +Ordnance #13 | Chinese | 122mm G o.38 (r) +Ordnance #14 | Chinese | Obice da 149/13 (i) +Ordnance #15 | Chinese | Oerlikon FF (g) +Ordnance #15 | Chinese | Oerlikon FF (LF) +Ordnance #15 | Chinese | Cann.-mitr. 20/65 (i) +Ordnance #15 | Chinese | Cann.-mitr. 20/65 (LF) +Ordnance #15 | Chinese | 2cm FlaK 30 (g) +Ordnance #15 | Chinese | 2cm FlaK 30 (LF) +Ordnance #16 | Chinese | 3.7cm FlaK 36/37 (g) +Ordnance #16 | Chinese | Bofors 40mm L/60 +Ordnance #16 | Chinese | Bofors 40mm L/60 (L) +Ordnance #17 | Chinese | Bofors 76mm M29 +Ordnance #17 | Chinese | Bofors 76mm M29 (L) +Ordnance #17 | Chinese | 8.8cm FlaK 18 (g) +Ordnance #17 | Chinese | 8.8cm FlaK 18 (LF) diff --git a/index/ChineseVehiclesFeb15.txt b/index/ChineseVehiclesFeb15.txt new file mode 100644 index 0000000..c3ac1d6 --- /dev/null +++ b/index/ChineseVehiclesFeb15.txt @@ -0,0 +1,22 @@ +Vehicle #1 | Chinese | VCL M1931 9b) +Vehicle #2 | Chinese | L3/35 (i) +Vehicle #3 | Chinese | PzKpfw IA (g) +Vehicle #4 | Chinese | Vickers Mk E (b) +Vehicle #5 | Chinese | T-26TU M33 (r) +Vehicle #6 | Chinese | M3A3 (a) +Vehicle #7 | Chinese | M4A4 (a) +Vehicle #8 | Chinese | M3A1 (a) +Vehicle #9 | Chinese | Stuart Recon (a) +Vehicle #10 | Chinese | Type 22 +Vehicle #11 | Chinese | PSW 221 (g) +Vehicle #11 | Chinese | PSW 222 (g) +Vehicle #12 | Chinese | BA-20 (r) +Vehicle #12 | Chinese | BA-6 (r) +Vehicle #13 | Chinese | Carrier, VCL Mk VI (b) +Vehicle #14 | Chinese | Carrier A (b) +Vehicle #14 | Chinese | Carrier B (b) +Vehicle #14 | Chinese | Carrier C (b) +Vehicle #15 | Chinese | Henschel 33 (g) +Vehicle #16 | Chinese | Jeep (2) (a) +Vehicle #16 | Chinese | Jeep (4) (a) +Vehicle #16 | Chinese | 2 1/2-Ton Truck (a) diff --git a/index/FinnishOrdnanceUpdateApril15.txt b/index/FinnishOrdnanceUpdateApril15.txt new file mode 100644 index 0000000..42d30be --- /dev/null +++ b/index/FinnishOrdnanceUpdateApril15.txt @@ -0,0 +1,46 @@ +Ordnance #1 | Finnish | 47 Krh/41 +Ordnance #2 | Finnish | 50 Krh/39 (r) +Ordnance #3 | Finnish | 81 Krh/32 +Ordnance #4 | Finnish | 81 Savunh. M/42 +Ordnance #5 | Finnish | 120 Krh/40 +Ordnance #6 | Finnish | Boys ATR (b) +Ordnance #7 | Finnish | Lahti ATR +Ordnance #8 | Finnish | 20 PstK/40 +Ordnance #9 | Finnish | 25 PstK/37 (f) +Ordnance #10 | Finnish | 37 PstK/36 (s) +Ordnance #11 | Finnish | 37 PstK/37 (g) +Ordnance #12 | Finnish | 45 PstK/32 (r) +Ordnance #13 | Finnish | 50 PstK/38 (g) +Ordnance #14 | Finnish | 75 PstK/97-38 (g) +Ordnance #15 | Finnish | 75 PstK/40 (g) +Ordnance #16 | Finnish | 76 RK/27 (r) +Ordnance #17 | Finnish | 75 K/02 +Ordnance #18 | Finnish | 76 LK/13 +Ordnance #19 | Finnish | 76 K/02 (r) +Ordnance #20 | Finnish | 76 K/36 (r) +Ordnance #21 | Finnish | 87 K/95 +Ordnance #22 | Finnish | 90 K/77 +Ordnance #23 | Finnish | 105 H/33 (g) +Ordnance #24 | Finnish | 105 H/37 +Ordnance #25 | Finnish | 105 H/41 (t) +Ordnance #26 | Finnish | 107 K 10/13 +Ordnance #27 | Finnish | 107 K/77 (r) +Ordnance #28 | Finnish | 114 H/18 (b) +Ordnance #29 | Finnish | 122 H/10 (r) +Ordnance #30 | Finnish | 150 H/40 (g) +Ordnance #31 | Finnish | 155 H/17 (f) +Ordnance #32 | Finnish | 7.62 ltKK/31-40 +Ordnance #33 | Finnish | 20 ltK/30 BSW (g) +Ordnance #33 | Finnish | 20 ltK/30 BSW (LF) +Ordnance #34 | Finnish | 20 ltK/38 BSW (g) +Ordnance #34 | Finnish | 20 ltK/38 BSW (LF) +Ordnance #35 | Finnish | 20 ltK/35 Br +Ordnance #35 | Finnish | 20 ltK/35 Br (LF) +Ordnance #36 | Finnish | 20 ltK/40 VKT +Ordnance #36 | Finnish | 20 ltK/40 VKT (LF) +Ordnance #37 | Finnish | 40 ltK/35-39 B (s) +Ordnance #37 | Finnish | 40 ltK/35-39 B (s) (LF) +Ordnance #38 | Finnish | 76 ltK/28 B (s) +Ordnance #38 | Finnish | 76 ltK/28 B (s) (LF) +Ordnance #39 | Finnish | 76 ltK/31 (r) +Ordnance #00 | _unused_ | _unused_ diff --git a/index/FinnishVehiclesUpdateApril15.txt b/index/FinnishVehiclesUpdateApril15.txt new file mode 100644 index 0000000..93f6aa8 --- /dev/null +++ b/index/FinnishVehiclesUpdateApril15.txt @@ -0,0 +1,32 @@ +Vehicle #1 | Finnish | T-37 (r) +Vehicle #2 | Finnish | T-50 (r) +Vehicle #3 | Finnish | Vikkersi (b) +Vehicle #4 | Finnish | T-26E (b) +Vehicle #5 | Finnish | T-26A (r) +Vehicle #6 | Finnish | T-26B (r) +Vehicle #7 | Finnish | T-26C (r) +Vehicle #8 | Finnish | OT-133 (r) +Vehicle #9 | Finnish | BT-5 (r) +Vehicle #9 | Finnish | BT-7 (r) +Vehicle #10 | Finnish | Postijuna (r) +Vehicle #11 | Finnish | Postijuna(L) (r) +Vehicle #12 | Finnish | Sotka (r) +Vehicle #13 | Finnish | Sotka(L) (r) +Vehicle #14 | Finnish | Pitkä. Sotka (r) +Vehicle #15 | Finnish | KV-1E (r) +Vehicle #15 | Finnish | KV-1 M42 (r) +Vehicle #16 | Finnish | BT-42 (r) +Vehicle #17 | Finnish | Sturmi (g) +Vehicle #18 | Finnish | Landsverk Anti II (s) +Vehicle #19 | Finnish | L182 (s) +Vehicle #19 | Finnish | L182(L) (s) +Vehicle #20 | Finnish | BA-20 (r) +Vehicle #21 | Finnish | BA-6 (r) +Vehicle #22 | Finnish | GAZ-4M-AA (r) +Vehicle #23 | Finnish | T-20 (r) +Vehicle #24 | Finnish | RSO (g) +Vehicle #25 | Finnish | STZ-3 (r) +Vehicle #26 | Finnish | Tempo G1200 +Vehicle #27 | Finnish | Light Truck +Vehicle #27 | Finnish | Medium Truck +Vehicle #27 | Finnish | Heavy Truck diff --git a/index/FrenchOrdnance.txt b/index/FrenchOrdnance.txt new file mode 100644 index 0000000..c4c5432 --- /dev/null +++ b/index/FrenchOrdnance.txt @@ -0,0 +1,22 @@ +Ordnance #1 | French | LG de 50 mle 37 (f) +Ordnance #2 | French | Mtr de 60 mle 35 +Ordnance #3 | French | Mtr de 81 mle 27/31 +Ordnance #5 | French | Canon AC de 25 +Ordnance #6 | French | Canon AC de 47 +Ordnance #7 | French | Canon de 75 AC +Ordnance #8 | French | Canon de 37 +Ordnance #9 | French | Canon de 65 M +Ordnance #10 | French | Canon de 75 M +Ordnance #11 | French | Canon de 75 +Ordnance #12 | French | Canon de 105 M +Ordnance #13 | French | Canon de 105 C +Ordnance #14 | French | Canon de 105 L 13 S +Ordnance #15 | French | Canon de 105 L 36 S +Ordnance #16 | French | Canon de 155 C +Ordnance #17 | French | Canon de 155 GPF +Ordnance #18 | French | Mitr. de 13.2 CAJ +Ordnance #19 | French | Mitr. de 20 CA +Ordnance #19 | French | Mitr. de 20 CA (LF) +Ordnance #20 | French | Canon Auto. de 25 +Ordnance #21 | French | Canon de 75 CA +Ordnance #21 | French | Canon de 75 CA diff --git a/index/FrenchVehiclesMidApril15.txt b/index/FrenchVehiclesMidApril15.txt new file mode 100644 index 0000000..786a5c7 --- /dev/null +++ b/index/FrenchVehiclesMidApril15.txt @@ -0,0 +1,52 @@ +Vehicle #1 | French | FT-17M +Vehicle #1 | French | FT-17C +Vehicle #1 | French | FT-17 75BS +Vehicle #2 | French | AMR 33 +Vehicle #3 | French | AMR 35 +Vehicle #3 | French | AMR 35(L) +Vehicle #4 | French | R35 +Vehicle #5 | French | H35 +Vehicle #6 | French | FCM 36 +Vehicle #7 | French | H39 +Vehicle #8 | French | H39(L) +Vehicle #8 | French | H35(L) +Vehicle #8 | French | R35(L) +Vehicle #9 | French | R40 +Vehicle #10 | French | D1 +Vehicle #11 | French | D2 +Vehicle #11 | French | D2(L) +Vehicle #12 | French | S35 +Vehicle #13 | French | B1-bis (MA) +Vehicle #13 | French | B1-bis (SA) +Vehicle #14 | French | Valentine V(b) +Vehicle #15 | French | AM Dodge(a) +Vehicle #16 | French | AMD 20 cv TOE +Vehicle #17 | French | AMD 50 AM +Vehicle #17 | French | AMD 80 AM +Vehicle #18 | French | AMD 35 +Vehicle #19 | French | Laffly W15T CC +Vehicle #20 | French | Ac de 75 Conus(b) +Vehicle #20 | French | Ac de 75 mle 97 +Vehicle #21 | French | Cam. de Mitr. CA +Vehicle #21 | French | Cam. de 13.2 CAJ +Vehicle #21 | French | Camion de 20 CA +Vehicle #21 | French | Ac de 25 CA +Vehicle #22 | French | Ac de 40 CA(a) +Vehicle #23 | French | Ac de 75 mle 13/34 +Vehicle #24 | French | AMC 29 +Vehicle #25 | French | C-K P17 +Vehicle #25 | French | C-K P19 +Vehicle #26 | French | SOMUA MCG +Vehicle #27 | French | Unic P107 +Vehicle #28 | French | Renault UE +Vehicle #29 | French | Lorraine 38L +Vehicle #30 | French | Lorraine 37L 44 +Vehicle #31 | French | Carrier AC(b) +Vehicle #32 | French | Latil TAR H2 +Vehicle #33 | French | Laffly S15T +Vehicle #34 | French | Laffly S20TL +Vehicle #35 | French | Laffly V15T +Vehicle #36 | French | Peugeot 202 +Vehicle #36 | French | Citroën 23 +Vehicle #36 | French | Renault AGR2 +Vehicle #00 | _unused_ |_unused_ diff --git a/index/GermanOrdnance.txt b/index/GermanOrdnance.txt new file mode 100644 index 0000000..eec77e1 --- /dev/null +++ b/index/GermanOrdnance.txt @@ -0,0 +1,35 @@ +Ordnance #1 | German | 5cm IeGrW +Ordnance #2 | German | 8cm GrW 34 +Ordnance #3 | German | 10cm NbW 35 +Ordnance #4 | German | 12cm GrW 42 +Ordnance #5 | German | 2.8cm sPzB 41 +Ordnance #6 | German | 3.7cm PaK 35/36 +Ordnance #7 | German | 4.2cm IePaK 41 +Ordnance #8 | German | 5cm PaK 38 +Ordnance #9 | German | 7.5cm PaK 97/38 +Ordnance #10 | German | 7.5cm PaK 40 +Ordnance #11 | German | 7.62cm PaK 36r +Ordnance #12 | German | 8.8cm PaK 43 +Ordnance #12 | German | 8.8cm PaK 43 (LF) +Ordnance #13 | German | 8.8cm PaK 43/41 +Ordnance #14 | German | 12.8cm K 81/1 +Ordnance #15 | German | 7.5cm IeIG 18 +Ordnance #16 | German | 15cm sIG 33 +Ordnance #17 | German | 7.5cm LG 40 +Ordnance #18 | German | 10.5cm LG 42 +Ordnance #19 | German | 7.5cm IeFK 16nA +Ordnance #20 | German | 10.5cm IeFH 18 +Ordnance #21 | German | s 10cm K 18 +Ordnance #22 | German | 15cm sFH 18 +Ordnance #23 | German | 15cm K 18 +Ordnance #24 | German | 17cm K 18 +Ordnance #25 | German | 2cm FlaK 30 +Ordnance #25 | German | 2cm FlaK 30 (LF) +Ordnance #26 | German | 2cm FlaK 38 +Ordnance #26 | German | 2cm FlaK 38 (LF) +Ordnance #27 | German | 2cm FlaK vierling 38 +Ordnance #28 | German | 3.7cm FlaK 36 o.37 +Ordnance #29 | German | 3.7cm FlaK 43 +Ordnance #30 | German | 8.8cm FlaK 18 +Ordnance #30 | German | 8.8cm FlaK 18 (LF) + diff --git a/index/GermanVehiclesMidApril15.txt b/index/GermanVehiclesMidApril15.txt new file mode 100644 index 0000000..680f9b5 --- /dev/null +++ b/index/GermanVehiclesMidApril15.txt @@ -0,0 +1,120 @@ +Vehicle #1 | German | PzKpfw IB +Vehicle #2 | German | PzKpfw IIA +Vehicle #3 | German | PzKpfw IIF +Vehicle #4 | German | PzKpfw IIF (FI) +Vehicle #5 | German | PzKpfw IIL +Vehicle #6 | German | PzKpfw 35t +Vehicle #7 | German | PzKpfw 38(t)A +Vehicle #8 | German | PzKpfw 38(t)E +Vehicle #9 | German | Aufklaerer 38(t) +Vehicle #9.1 | German | FT-17 730m(f) +Vehicle #9.1 | German | FT-17 730(f) +Vehicle #9.2 | German | 38H 735(f) +Vehicle #9.3 | German | 35-S 739(f) +Vehicle #10 | German | PzKpfw IIID +Vehicle #11 | German | PzKpfw IIIF +Vehicle #12 | German | PzKpfw IIIG +Vehicle #13 | German | PzKpfw IIIH +Vehicle #14 | German | PzKpfw IIIJ +Vehicle #15 | German | PzKpfw IIIL +Vehicle #16 | German | PzKpfw IIIN +Vehicle #17 | German | PzKpfw III(FI) +Vehicle #18 | German | PzKpfw IVA +Vehicle #19 | German | PzKpfw IVC +Vehicle #20 | German | PzKpfw IVD +Vehicle #21 | German | PzKpfw IVE +Vehicle #22 | German | PzKpfw IVF1 +Vehicle #23 | German | PzKpfw IVF2 +Vehicle #24 | German | PzKpfw IVH +Vehicle #25 | German | PzKpfw IVJ +Vehicle #26 | German | PzKpfw VD +Vehicle #27 | German | PzKpfw VG +Vehicle #28 | German | PzKpfw M15/42 (i) +Vehicle #29 | German | PzKpfw P26/40 (i) +Vehicle #30 | German | PzKpfw VIE +Vehicle #31 | German | PzKpfw VIE (L) +Vehicle #32 | German | PzKpfw VIB +Vehicle #33 | German | StuG IIIB +Vehicle #34 | German | StuG IIIG +Vehicle #35 | German | StuG IIIG (L) +Vehicle #36 | German | StuH 42 +Vehicle #35 | German | StuH 42 (L) +Vehicle #37 | German | StuPz IV +Vehicle #38 | German | PzJg Tiger +Vehicle #39 | German | StuG 75/18 (i) +Vehicle #40 | German | StuG 75/34 (i) +Vehicle #41 | German | StuG 105/25 (i) +Vehicle #42 | German | StuG 75/46 (i) +Vehicle #43 | German | PzJg I +Vehicle #44 | German | PzJg 35R (f) +Vehicle #44.1 | German | Pz 35R 731 (f) +Vehicle #45 | German | Marder I (f) +Vehicle #45.1 | German | GSW 39H(f) Pak +Vehicle #46 | German | Marder II +Vehicle #47 | German | Marder III(t)H +Vehicle #48 | German | Marder III(t)M +Vehicle #49 | German | PzJg III/IV +Vehicle #50 | German | JgdPz 38(t) +Vehicle #51 | German | JgdPz 38(t) (FI) +Vehicle #52 | German | JgdPz IV +Vehicle #52 | German | JgdPz IV (L) +Vehicle #53 | German | StuIG 33B +Vehicle #54 | German | JgdPz IV/70 +Vehicle #55 | German | JgdPz V +Vehicle #56 | German | JgdPz VI +Vehicle #57 | German | SPW 250/1 +Vehicle #58 | German | SPW 250/sMG +Vehicle #59 | German | SPW 250/7 +Vehicle #60 | German | SPW 250/8 +Vehicle #61 | German | SPW 250/9 +Vehicle #62 | German | SPW 250/10 +Vehicle #63 | German | SPW 251/1 +Vehicle #58 | German | SPW 251/sMG +Vehicle #59 | German | SPW 251/2 +Vehicle #64 | German | SPW 251/9 +Vehicle #65 | German | SPW 251/10 +Vehicle #66 | German | SPW 251/16 +Vehicle #66.1 | German | SPW 251/21 +Vehicle #67 | German | SPW 251/22 +Vehicle #67.1 | German | SPW S307 (f) +Vehicle #67.2 | German | mSPW S307 (f) +Vehicle #68 | German | Kfz 13 +Vehicle #69 | German | PSW 221 +Vehicle #70 | German | PSW 222 +Vehicle #70 | German | PSW 222 (L) +Vehicle #71 | German | PSW 231 (6 rad) +Vehicle #72 | German | PSW 231 (8 rad) +Vehicle #72 | German | PSW 232 (8 rad) +Vehicle #73 | German | PSW 233 +Vehicle #74 | German | PSW 234/1 +Vehicle #75 | German | PSW 234/2 +Vehicle #76 | German | PSW 234/3 +Vehicle #77 | German | PSW 234/4 +Vehicle #78 | German | sIG IB +Vehicle #79 | German | sIG II +Vehicle #80 | German | sIG 38(t)M +Vehicle #81 | German | PzA II +Vehicle #82 | German | PzA LrS(f) +Vehicle #82.1 | German | GSW 39H (f) +Vehicle #83 | German | PzA III/IV +Vehicle #84 | German | FlaKPz 38(t) +Vehicle #85 | German | 37 FlaK/Pz IV +Vehicle #85 | German | Moebelwagen +Vehicle #86 | German | FlaKPz IV/20 +Vehicle #87 | German | FlaKPz IV/37 +Vehicle #88 | German | SdKfz 10/4 +Vehicle #89 | German | SdKfz 6/2 +Vehicle #90 | German | SdKfz 7/1 +Vehicle #91 | German | Kfz 4 +Vehicle #92 | German | 2cm FlaK LKW +Vehicle #92 | German | 3.7cm FlaK LKW +Vehicle #93 | German | Goliath +Vehicle #94 | German | Kfz 1 +Vehicle #95 | German | Kfz 1/20 +Vehicle #96 | German | Opel 6700 (Blitz) +Vehicle #96 | German | Buessing-NAG 4500 +Vehicle #97 | German | SdKfz 2 +Vehicle #98 | German | SfKfz 7 +Vehicle #99 | German | SdKfz 11 +Vehicle #88.1 | German | SdKfz 10/5 +Vehicle #37.1 | German | Sturmtiger diff --git a/index/HPRussianVehiclesMidApril15.txt b/index/HPRussianVehiclesMidApril15.txt new file mode 100644 index 0000000..886ea65 --- /dev/null +++ b/index/HPRussianVehiclesMidApril15.txt @@ -0,0 +1,32 @@ +Vehicle #1.1 | Russian | T-27 +Vehicle #6.1 | Russian | T-26 M31 +Vehicle #6.2 | Russian | T-26 M32 +Vehicle #6.3 | Russian | OT-26 +Vehicle #6.4 | Russian | ST-26 +Vehicle #11.1 | Russian | T-28 M34(L) +Vehicle #12.1 | Russian | T-28E M40(L) +Vehicle #21.1 | Russian | SMK (MA) +Vehicle #21.1 | Russian | SMK (SA) +Vehicle #21.2 | Russian | T-100 (MA) +Vehicle #21.2 | Russian | T-100 (SA) +Vehicle #44.1 | Russian | LANO AT +Vehicle #44.2 | Russian | LANO AA +Vehicle #46.2 | Russian | STZ-3 +Vehicle #46.3 | Russian | STZ-5 +Vehicle #47.1 | Russian | NKL-6 +Vehicle #47.1 | Russian | NKL-16 +Vehicle #47.2 | Russian | NKL-26 +Vehicle #47.3 | Russian | RF-8-GAZ-98 +Vehicle #48 | Russian | Stuart III(a) +Vehicle #49 | Russian | Lee(a) (MA) +Vehicle #49 | Russian | Lee(a) (SA) +Vehicle #50 | Russian | Sherman III(a) +Vehicle #50.1 | Russian | Sherman III(L)(a) +Vehicle #51 | Russian | Matilda II(b) +Vehicle #52.1 | Russian | Valentine V(b) +Vehicle #52.2 | Russian | Valentine VIII(b) +Vehicle #53 | Russian | Churchill III(b) +Vehicle #54 | Russian | M3A1 SC(a) +Vehicle #59 | Russian | Jeep GPA(a) +Vehicle #60 | Russian | DUKW(a) +Vehicle #00 | _unused_ | _unused_ diff --git a/index/ItalianOrdnance.txt b/index/ItalianOrdnance.txt new file mode 100644 index 0000000..16957fc --- /dev/null +++ b/index/ItalianOrdnance.txt @@ -0,0 +1,21 @@ +Ordnance #1 | Italian | Mortaio da 45 +Ordnance #2 | Italian | Mortaio da 81/14 +Ordnance #3 | Italian | Fucile-cc S +Ordnance #4 | Italian | Cannone-cc da 37/45 +Ordnance #5 | Italian | Cannone da 47/32 +Ordnance #6 | Italian | Cannone da 65/17 +Ordnance #7 | Italian | Cannone da 70/15 +Ordnance #8 | Italian | Obice da 75/13 +Ordnance #9 | Italian | Cannone da 75/27 +Ordnance #10 | Italian | Obice da 75/18 +Ordnance #11 | Italian | Cannone da 75/32 +Ordnance #12 | Italian | Obice da 100/17 +Ordnance #13 | Italian | Cannone da 105/28 +Ordnance #14 | Italian | Obice da 149/13 +Ordnance #15 | Italian | Cannone da 149/35 +Ordnance #16 | Italian | Cannone da 149/40 +Ordnance #17 | Italian | Cannone-mitr. 20 +Ordnance #17 | Italian | Cannone-mitr. 20 (LF) +Ordnance #18 | Italian | Cannone-aa 75/39 +Ordnance #19 | Italian | Cannone-aa 75/46 +Ordnance #20 | Italian | Cannone-aa 90/53 diff --git a/index/ItalianVehiclesMidApril15.txt b/index/ItalianVehiclesMidApril15.txt new file mode 100644 index 0000000..fc9fe5e --- /dev/null +++ b/index/ItalianVehiclesMidApril15.txt @@ -0,0 +1,42 @@ +Vehicle #1 | Italian | L5/21 +Vehicle #1 | Italian | L5/30 +Vehicle #2 | Italian | L3/35 +Vehicle #3 | Italian | L3 aa +Vehicle #4 | Italian | L3 cc +Vehicle #5 | Italian | L3 lf +Vehicle #6 | Italian | L6/40 +Vehicle #7 | Italian | M11/39 (MA) +Vehicle #7 | Italian | M11/39 (SA) +Vehicle #8 | Italian | M13/40 +Vehicle #9 | Italian | M14/41 +Vehicle #10 | Italian | M15/42 +Vehicle #11 | Italian | MR/35 (f) +Vehicle #12 | Italian | SMV M40 da 75/18 +Vehicle #12 | Italian | SMV M41 da 75/18 +Vehicle #13 | Italian | SMV M42 da 75/18 +Vehicle #13 | Italian | SMV M42 da 75/32 +Vehicle #14 | Italian | SMV M43 da 105/25 +Vehicle #15 | Italian | SMV L40 da 47/32 +Vehicle #16 | Italian | SMV M41M da 90/53 +Vehicle #17 | Italian | AS 42 +Vehicle #17 | Italian | AS 42 aa +Vehicle #17 | Italian | AS 42 cc +Vehicle #18 | Italian | Lince +Vehicle #19 | Italian | Lancia 1ZM +Vehicle #20 | Italian | Fiat 611A +Vehicle #20 | Italian | Fiat 611B +Vehicle #21 | Italian | AB 40 +Vehicle #21 | Italian | AB 41 +Vehicle #22 | Italian | Autop. S37 +Vehicle #23 | Italian | Autoc. da 65/17 (b) +Vehicle #23 | Italian | Autoc. da 20/65 (b) +Vehicle #24 | Italian | Autoc. da 75/27 CK +Vehicle #24 | Italian | Autoc. da 90/53 +Vehicle #25 | Italian | TL 37 +Vehicle #25 | Italian | TM 40 +Vehicle #25 | Italian | TP 32 +Vehicle #26 | Italian | Autocarretta +Vehicle #27 | Italian | Fiat 508 MC +Vehicle #28 | Italian | Autoc. Leggero +Vehicle #28 | Italian | Autoc. Medio +Vehicle #28 | Italian | Autoc. Pesante diff --git a/index/JapaneseOrdnance.txt b/index/JapaneseOrdnance.txt new file mode 100644 index 0000000..fabe7f3 --- /dev/null +++ b/index/JapaneseOrdnance.txt @@ -0,0 +1,28 @@ +Ordnance #1 | Japanese | Type 89 HGL +Ordnance #2 | Japanese | Year-11 Type CFIG +Ordnance #3 | Japanese | Type 97 CFIG +Ordnance #4 | Japanese | Type 97 LCAG +Ordnance #5 | Japanese | Type 97 MCAG +Ordnance #6 | Japanese | Type 97 Auto Gun +Ordnance #7 | Japanese | Type 94 RF Gun +Ordnance #8 | Japanese | Type 1 MM Gun +Ordnance #9 | Japanese | Year-11 Type FTIG +Ordnance #10 | Japanese | Type 92 Inf Gun +Ordnance #11 | Japanese | Year-41 Type M Gun +Ordnance #12 | Japanese | Year-38 Type F Gun +Ordnance #13 | Japanese | Type 90 Field Gun +Ordnance #14 | Japanese | Type 91 10cm How +Ordnance #15 | Japanese | Type 92 10cm Can +Ordnance #16 | Japanese | Year-38 Type 12cm +Ordnance #17 | Japanese | Year-3 Type 14cm +Ordnance #18 | Japanese | Year-4 Type 15cm +Ordnance #19 | Japanese | Type 96 15cm How +Ordnance #20 | Japanese | Type 93 TM HA +Ordnance #21 | Japanese | Type 98 HAMC +Ordnance #21 | Japanese | Type 98 HAMC (LF) +Ordnance #22 | Japanese | Type 96 Single +Ordnance #22 | Japanese | Type 96 Twin +Ordnance #22 | Japanese | Type 96 Triple +Ordnance #23 | Japanese | Type 88 7.5cm +Ordnance #24 | Japanese | Year-10 Type 12cm +Ordnance #24 | Japanese | Year-10 Type 12cm diff --git a/index/JapaneseVehiclesFeb15.txt b/index/JapaneseVehiclesFeb15.txt new file mode 100644 index 0000000..6d15172 --- /dev/null +++ b/index/JapaneseVehiclesFeb15.txt @@ -0,0 +1,24 @@ +Vehicle #1 | Japanese | Type 92A +Vehicle #1 | Japanese | Type 92B +Vehicle #2 | Japanese | Type 94 +Vehicle #3 | Japanese | Type 95 SO-KI +Vehicle #4 | Japanese | Type 97A TE-KE +Vehicle #4 | Japanese | Type 97B TE-KE +Vehicle #5 | Japanese | Type 95 HA-GO +Vehicle #6 | Japanese | Type 2 KA-MI +Vehicle #6 | Japanese | Type 2 KA-MI w/o +Vehicle #7 | Japanese | Type 89A CHI-RO +Vehicle #7 | Japanese | Type 89B CHI-RO +Vehicle #8 | Japanese | Type 97A CHI-HA +Vehicle #8 | Japanese | Type 97B CHI-HA +Vehicle #9 | Japanese | Type 1 CHI-HE +Vehicle #10 | Japanese | Type 91 +Vehicle #11 | Japanese | Type 92 +Vehicle #12 | Japanese | Type 1 HO-NI I +Vehicle #13 | Japanese | Type 4 HO-RO +Vehicle #14 | Japanese | Type 1 HO-KI +Vehicle #15 | Japanese | Type 98 SHI-KE +Vehicle #16 | Japanese | Type 92 I-KE +Vehicle #17 | Japanese | Type 95 +Vehicle #18 | Japanese | Type 94 Truck +Vehicle #19 | Japanese | Type 97 Truck diff --git a/index/RussianOrdnance.txt b/index/RussianOrdnance.txt new file mode 100644 index 0000000..f7b70f1 --- /dev/null +++ b/index/RussianOrdnance.txt @@ -0,0 +1,28 @@ +Ordnance #1 | Russian | 50mm RM o 40 +Ordnance #2 | Russian | 82mm BM o 37 +Ordnance #3 | Russian | 107mm GVPM o 38 +Ordnance #4 | Russian | 120 PM o 38 +Ordnance #5 | Russian | 160mm PM o 43 +Ordnance #6 | Russian | 37mm PTP o 30 +Ordnance #7 | Russian | 45mm PTP o 32 +Ordnance #8 | Russian | 45mm PTP o 42 +Ordnance #9 | Russian | 57mm PTP o 43 +Ordnance #10 | Russian | 100mm PTP o 44 +Ordnance #11 | Russian | 37mm PP o 15R +Ordnance #12 | Russian | 76.2mm PP o 27 +Ordnance #13 | Russian | 76.2mm P o 00/02P +Ordnance #14 | Russian | 76.2mm P o 02/30 +Ordnance #15 | Russian | 76.2mm P o 39 +Ordnance #16 | Russian | 76.2mm P o 36 +Ordnance #17 | Russian | 85mm P o 44 +Ordnance #18 | Russian | 107mm P o 10/30 +Ordnance #19 | Russian | 122mm G o 10/30 +Ordnance #20 | Russian | 122mm G o 38 +Ordnance #21 | Russian | 122mm P o 31 +Ordnance #22 | Russian | 152mm G o 38 +Ordnance #23 | Russian | 152mm GP o 37 +Ordnance #24 | Russian | 25mm ZP o 40 +Ordnance #25 | Russian | 37mm ZP o 39 +Ordnance #26 | Russian | 76.2mm ZP o 38 +Ordnance #27 | Russian | 85mm ZP o 39 +Ordnance #27 | Russian | 85mm ZP o 39 diff --git a/index/RussianVehiclesMidApril15.txt b/index/RussianVehiclesMidApril15.txt new file mode 100644 index 0000000..6689b69 --- /dev/null +++ b/index/RussianVehiclesMidApril15.txt @@ -0,0 +1,58 @@ +Vehicle #1 | Russian | T-37 +Vehicle #2 | Russian | T-40 +Vehicle #3 | Russian | T-50 +Vehicle #4 | Russian | T-60 M40 +Vehicle #4 | Russian | T-60 M42 +Vehicle #5 | Russian | T-70 +Vehicle #6 | Russian | T-26 M33 +Vehicle #6 | Russian | T-26S M37/39 +Vehicle #7 | Russian | OT-133 +Vehicle #8 | Russian | BT-5 M34 +Vehicle #9 | Russian | BT-7 M37 +Vehicle #10 | Russian | BT-7A +Vehicle #11 | Russian | T-28 M34 +Vehicle #12 | Russian | T-28E M40 +Vehicle #13 | Russian | T-34 M40 +Vehicle #14 | Russian | T-34 M41 +Vehicle #15 | Russian | OT-34 +Vehicle #16 | Russian | T-34 M43 +Vehicle #17 | Russian | T-43 +Vehicle #18 | Russian | T-34/85 +Vehicle #19 | Russian | M4/76 (a) +Vehicle #20 | Russian | T-44 +Vehicle #21 | Russian | T-35 +Vehicle #22 | Russian | KV-1 M39/40 +Vehicle #23 | Russian | KV-1E +Vehicle #23 | Russian | KV-1 M41 +Vehicle #23 | Russian | KV-1 M42 +Vehicle #24 | Russian | KV-2 +Vehicle #15 | Russian | KV-8 +Vehicle #25 | Russian | KV-1S +Vehicle #26 | Russian | KV-85 +Vehicle #27 | Russian | IS-2 +Vehicle #28 | Russian | IS-2m +Vehicle #29 | Russian | IS-3 +Vehicle #30 | Russian | SU-76M +Vehicle #31 | Russian | SU-76i (g) +Vehicle #32 | Russian | SU-122 +Vehicle #33 | Russian | SU-152 +Vehicle #34 | Russian | ISU-122 +Vehicle #34 | Russian | ISU-152 +Vehicle #35 | Russian | SU-85 +Vehicle #36 | Russian | SU-100 +Vehicle #37 | Russian | SU-57 (a) +Vehicle #38 | Russian | BA-20 +Vehicle #39 | Russian | BA-6 +Vehicle #40 | Russian | BA-64B +Vehicle #41 | Russian | ZSU-37 +Vehicle #42 | Russian | SU-12 +Vehicle #43 | Russian | GAZ-4M-AA +Vehicle #44 | Russian | ZIS-42-AA +Vehicle #45 | Russian | IAG-10-AA +Vehicle #46 | Russian | GAZ-67B +Vehicle #47 | Russian | GAZ-MM +Vehicle #47 | Russian | ZIS-5 +Vehicle #47 | Russian | IAG-6 +Vehicle #7.1 | Russian | BT-2A +Vehicle #46.1 | Russian | Komsomolet +Vehicle #00 | _unused_ | _unused_ diff --git a/main_window.py b/main_window.py index 8a4b670..7e1809a 100644 --- a/main_window.py +++ b/main_window.py @@ -97,7 +97,7 @@ class MainWindow( QMainWindow ) : QMessageBox.warning( MainWindow._instance , APP_NAME , msg ) @staticmethod def ask( msg , buttons , default ) : - """Show an error message.""" + """Ask the user a question.""" return QMessageBox.question( MainWindow._instance , APP_NAME , msg , buttons , default ) def closeEvent( self , evt ) : diff --git a/startup_widget.py b/startup_widget.py index 61d609e..ccf16a8 100644 --- a/startup_widget.py +++ b/startup_widget.py @@ -1,7 +1,7 @@ import os from PyQt5 import uic -from PyQt5.QtCore import QThread , pyqtSignal +from PyQt5.QtCore import Qt , QMetaObject , QThread , pyqtSignal , pyqtSlot , Q_ARG , Q_RETURN_ARG from PyQt5.QtWidgets import QWidget , QFrame , QFileDialog , QMessageBox from PyQt5.QtGui import QPixmap , QIcon @@ -34,6 +34,8 @@ class AnalyzeThread( QThread ) : os.unlink( self.db_fname ) # parse the files self.parser = PdfParser( + os.path.join( globals.base_dir , "index" ) , + ask = self.ask , progress = lambda pval,msg: self.progress_signal.emit( -1 if pval is None else pval , msg ) , progress2 = lambda pval: self.progress2_signal.emit( pval ) ) @@ -50,14 +52,32 @@ class AnalyzeThread( QThread ) : # notify slots that we've finished self.completed_signal.emit( "" ) + def ask( self , msg , btns , default ) : + """Ask the user a question.""" + # NOTE: We are running in a worker thread, so we need to delegate showing the message box + # to the GUI thread. + retarg = Q_RETURN_ARG( QMessageBox.StandardButton ) + QMetaObject.invokeMethod( + StartupWidget._instance , "on_ask" , Qt.BlockingQueuedConnection , + retarg , + Q_ARG( str , msg ) , + Q_ARG( QMessageBox.StandardButtons , btns ) , + Q_ARG( QMessageBox.StandardButton , default ) , + ) + # FIXME! How do we get the return value?! :-/ + return StartupWidget._on_ask_retval + # --------------------------------------------------------------------- class StartupWidget( QWidget ) : """This form lets the user initialize a new database, or load an existing one.""" + _instance = None + def __init__( self , db_fname , parent=None ) : # initialize super(StartupWidget,self).__init__( parent=parent ) + StartupWidget._instance = self self.analyze_thread = None # FUDGE! Workaround recursive import's :-/ global MainWindow @@ -170,6 +190,12 @@ class StartupWidget( QWidget ) : """Update the analysis progress in the UI.""" self.pb_pages.setValue( int( 100*pval + 0.5 ) ) + @pyqtSlot( str , QMessageBox.StandardButtons , QMessageBox.StandardButton , result=QMessageBox.StandardButton ) + def on_ask( self , msg , buttons , default ) : + """Ask the user a question.""" + StartupWidget._on_ask_retval = MainWindow.ask( msg , buttons , default ) + return StartupWidget._on_ask_retval + def on_cancel_analyze( self ) : """Cancel the analyze worker thread.""" if not self.analyze_thread or self.analyze_thread.parser.cancelling :