use binrw::BinRead;
use resource_fork::Resource;
use crate::common::{null_terminated_list, roman_char};
#[derive(Resource, BinRead, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[resource(code = "MENU")]
#[br(big)]
pub struct Menu {
menu_id: u16,
width: u16,
height: u16,
proc_id: u16,
padding: u16,
enabled_items: u32,
#[br(map(macintosh_utils::string))]
title: String,
#[br(map(null_terminated_list))]
items: Vec<MenuItem>,
}
#[derive(BinRead, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[br(big)]
pub struct MenuItem {
#[br(map(macintosh_utils::string))]
label: String,
icon: u8,
#[br(map(roman_char))]
key_equivalent: Option<char>,
#[br(map(roman_char))]
mark_character: Option<char>,
style: u8,
}