import re

with open('src/Data/dmg_Main.dfm', 'r', encoding='latin1') as f:
    dmg = f.read()

m = re.search(r'object imgListRibbon: TVirtualImageList(.*?)\n  end\b', dmg, re.DOTALL)
block = m.group(1)
items = re.findall(r'item\s+(.*?)\bend', block, re.DOTALL)

ribbon_list = []
for it in items:
    name_m = re.search(r"Name\s*=\s*'([^']+)'", it)
    if name_m:
        ribbon_list.append(name_m.group(1))

print(f'Parsed {len(ribbon_list)} items in imgListRibbon')

with open('src/UI/frm_Main.dfm', 'r', encoding='latin1') as f:
    main_content = f.read()

btn_pattern = re.finditer(r'object\s+([A-Za-z0-9_]+):\s*TSpeedButton(.*?)\bend\b', main_content, re.DOTALL)

mismatches = []
matches = []
for b in btn_pattern:
    btn_name = b.group(1)
    body = b.group(2)
    img_idx_m = re.search(r'ImageIndex\s*=\s*(-?\d+)', body)
    img_name_m = re.search(r"ImageName\s*=\s*'([^']+)'", body)
    
    if img_name_m:
        img_name = img_name_m.group(1)
        img_idx = int(img_idx_m.group(1)) if img_idx_m else -1
        
        if img_name in ribbon_list:
            actual_idx = ribbon_list.index(img_name)
            if actual_idx != img_idx:
                mismatches.append(f'{btn_name}: ImageName="{img_name}" has ImageIndex={img_idx} but in imgListRibbon it is at index {actual_idx}')
            else:
                matches.append(f'{btn_name}: {img_name} -> {img_idx} (OK)')
        else:
            mismatches.append(f'{btn_name}: ImageName="{img_name}" NOT FOUND in imgListRibbon')

print(f'Matches: {len(matches)}')
print(f'Mismatches: {len(mismatches)}')
for m in mismatches:
    print('  MISMATCH:', m)
