#########################################################################
# File Name: autogenMenu_h.sh
# Author: xxxx
# mail:
# Created Time:
#########################################################################
#!/bin/sh
outputfile="Menu.h"
echo "$#"
if [ $# -ne 1 ]; then
echo "Usage: $0 "configuration_file" "
exit 1
fi
inputfile=$1
if [ -e $inputfile ];then
echo "your menu configuration file is $inputfile"
else
echo "configuration file not exsist"
exit 1
fi
array_menu_name=()
array_have_submenu=()
array_have_checkbox=()
array_have_value_string=()
write_head()
{
echo "" > $outputfile
echo "/*************************************************************************" >> $outputfile
echo -e " > File Name: Menu.h">> $outputfile
echo -e " > Description:">> $outputfile
echo -e " > \tGenerated by script">> $outputfile
echo " ************************************************************************/" >> $outputfile
echo "#ifndef __MENU_H__" >> $outputfile
echo "#define __MENU_H__" >> $outputfile
echo "#include <xxx/common.h>" >> $outputfile
echo "#include <xxxx/xxx.h>" >> $outputfile
echo "#include <xxx/gdi.h>" >> $outputfile
echo "#include <xxxx/window.h>" >> $outputfile
echo "#include <xxxx/control.h>" >> $outputfile
echo "" >> $outputfile
echo "#include \"windows.h\"" >> $outputfile
echo "#include \"xxx_widgets.h\"" >> $outputfile
echo "#include \"keyEvent.h\"" >> $outputfile
echo "#include \"xxx_message.h\"" >> $outputfile
echo "#include \"StorageManager.h\"" >> $outputfile
echo "#include \"ResourceManager.h\"" >> $outputfile
echo "" >> $outputfile
}
write_tail()
{
echo "" >> $outputfile
echo "#endif" >> $outputfile
echo "" >> $outputfile
}
generate_menuIndex()
{
echo "" >> $outputfile
echo -e "enum menuIndex {" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
if [ $i -ne $((${#array_menu_name[@]} - 1)) ]; then
echo -e "\tMENU_INDEX_${array_menu_name[$i]}," >> $outputfile
else
echo -e "\tMENU_INDEX_${array_menu_name[$i]}" >> $outputfile
fi
let i++
done
echo "};" >> $outputfile
}
generate_menuResourceID()
{
echo "" >> $outputfile
echo "enum ResourceID menuResourceID[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
if [ $i -ne $((${#array_menu_name[@]} - 1)) ]; then
echo -e "\tID_MENU_LIST_${array_menu_name[$i]}," >> $outputfile
else
echo -e "\tID_MENU_LIST_${array_menu_name[$i]}" >> $outputfile
fi
let i++
done
echo "};" >> $outputfile
}
generate_haveCheckBox()
{
echo "" >> $outputfile
echo "unsigned int haveCheckBox[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_have_checkbox[@]} ]
do
if [ $i -ne $((${#array_have_checkbox[@]} - 1)) ]; then
if [ ${array_have_checkbox[$i]} -eq 1 ]; then
echo -e "\t${array_have_checkbox[$i]}, \t/*${array_menu_name[$i]} \t\t have check box */" >> $outputfile
else
echo -e "\t${array_have_checkbox[$i]}, \t/*${array_menu_name[$i]} \t\t not have check box */" >> $outputfile
echo
fi
else
if [ ${array_have_checkbox[$i]} -eq 1 ]; then
echo -e "\t${array_have_checkbox[$i]} \t/*${array_menu_name[$i]} \t\t have check box */" >> $outputfile
else
echo -e "\t${array_have_checkbox[$i]} \t/*${array_menu_name[$i]} \t\t not have check box */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
}
generate_haveSubMenu()
{
echo "" >> $outputfile
echo "unsigned int haveSubMenu[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_have_submenu[@]} ]
do
if [ $i -ne $((${#array_have_submenu[@]} - 1)) ]; then
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t${array_have_submenu[$i]}, \t/*${array_menu_name[$i]} \t\t have sub menu */" >> $outputfile
else
echo -e "\t${array_have_submenu[$i]}, \t/*${array_menu_name[$i]} \t\t not have sub menu */" >> $outputfile
echo
fi
else
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t${array_have_submenu[$i]} \t/*${array_menu_name[$i]} \t\t have sub menu */" >> $outputfile
else
echo -e "\t${array_have_submenu[$i]} \t/*${array_menu_name[$i]} \t\t not have sub menu */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
}
generate_haveValueString()
{
echo "" >> $outputfile
echo "unsigned int haveValueString[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
if [ $i -ne $((${#array_menu_name[@]} - 1)) ]; then
if [ ${array_have_value_string[$i]} -eq 1 ]; then
echo -e "\t${array_have_value_string[$i]}, \t/*${array_menu_name[$i]} \t\t have value string */" >> $outputfile
else
echo -e "\t${array_have_value_string[$i]}, \t/*${array_menu_name[$i]} \t\t not have value string */" >> $outputfile
echo
fi
else
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t${array_have_value_string[$i]} \t/*${array_menu_name[$i]} \t\t have value string */" >> $outputfile
else
echo -e "\t${array_have_value_string[$i]} \t/*${array_menu_name[$i]} \t\t not have value string */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
echo "" >> $outputfile
}
generate_submenu_content0_cmd()
{
echo "" >> $outputfile
echo "int subMenuContent0Cmd[] = {">> $outputfile
i=0
while [ $i -lt ${#array_have_submenu[@]} ]
do
if [ $i -ne $((${#array_have_submenu[@]} - 1)) ]; then
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\tLANG_LABEL_SUBMENU_${array_menu_name[$i]}_CONTENT0," >> $outputfile
else
echo -e "\t-1, \t/*${array_menu_name[$i]} not have sub menu */" >> $outputfile
fi
else
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e " \tLANG_LABEL_SUBMENU_${array_menu_name[$i]}_CONTENT0" >> $outputfile
else
echo -e "\t-1 \t/*${array_menu_name[$i]} not have sub menu */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
echo "" >> $outputfile
}
generate_mlflags()
{
echo "" >> $outputfile
echo "MLFlags mlFlags[MENU_LIST_COUNT] = {">> $outputfile
echo "/***** 1. image flag2. value flags 3. value counts *****************/" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
echo -e "\t/*${array_menu_name[$i]}*/">> $outputfile
if [ ${array_menu_name[$i]} == "FIRMWARE" ]; then
echo -e "\t{ IMGFLAG_IMAGE, {VMFLAG_STRING}, 1}," >> $outputfile
let i++
continue
fi
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t{ IMGFLAG_IMAGE, {VMFLAG_STRING, VMFLAG_IMAGE}, 2}," >> $outputfile
else
if [ ${array_have_checkbox[$i]} -eq 1 ]; then
echo -e "\t{ IMGFLAG_IMAGE, {VMFLAG_IMAGE}, 1}," >> $outputfile
else
echo -e "\t{ IMGFLAG_IMAGE, {0}, 0}," >> $outputfile
fi
fi
echo "" >> $outputfile
let i++
done
echo "};" >> $outputfile
echo "" >> $outputfile
}
str=`grep -n -P '^\[menu\]' $inputfile` # 行首字符:如果我想要让 the 只在行首列出呢? 这个时候就得要使用定位字节
if [ $? -eq 0 ]; then
echo str is $str
else
echo "not find [menu]"
exit 1
fi
start_line=`echo $str | cut -d ":" -f 1`
echo "start_line is $start_line"
total_line=`wc -l $inputfile | cut -d " " -f 1`
echo "total lines is $total_line"
line=$((start_line + 1))
count=0
while [ $line -le $total_line ]
do
str=`sed -n ' '"$line"' p' $inputfile`
# echo "line $line is $str"
menulist_name=`echo $str | cut -d "," -f 1`
# echo "menulist_name is $menulist_name"
array_menu_name[$count]=$menulist_name
echo $str | cut -d ',' -f 2 | grep -q "have sub menu"
if [ $? -eq 0 ]; then
array_have_submenu[$count]=1
else
array_have_submenu[$count]=0
fi
echo $str | cut -d ',' -f 3 | grep -q "have check box"
if [ $? -eq 0 ]; then
array_have_checkbox[$count]=1
else
array_have_checkbox[$count]=0
fi
echo $str | cut -d ',' -f 4 | grep -q "have value string"
if [ $? -eq 0 ]; then
array_have_value_string[$count]=1
else
array_have_value_string[$count]=0
fi
let line++
let count++
done
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
echo "array_menu_name[$i] is ${array_menu_name[$i]}"
echo "array_have_submenu[$i] is ${array_have_submenu[$i]}"
echo "array_have_checkbox[$i] is ${array_have_checkbox[$i]}"
echo "array_have_value_string[$i] is ${array_have_value_string[$i]}"
let i++
done
write_head
echo "#define MENU_LIST_COUNT ${#array_menu_name[@]}">> $outputfile
generate_menuIndex
generate_menuResourceID
generate_haveCheckBox
generate_haveSubMenu
generate_haveValueString
generate_submenu_content0_cmd
generate_mlflags
write_tail
exit 0
# File Name: autogenMenu_h.sh
# Author: xxxx
# mail:
# Created Time:
#########################################################################
#!/bin/sh
outputfile="Menu.h"
echo "$#"
if [ $# -ne 1 ]; then
echo "Usage: $0 "configuration_file" "
exit 1
fi
inputfile=$1
if [ -e $inputfile ];then
echo "your menu configuration file is $inputfile"
else
echo "configuration file not exsist"
exit 1
fi
array_menu_name=()
array_have_submenu=()
array_have_checkbox=()
array_have_value_string=()
write_head()
{
echo "" > $outputfile
echo "/*************************************************************************" >> $outputfile
echo -e " > File Name: Menu.h">> $outputfile
echo -e " > Description:">> $outputfile
echo -e " > \tGenerated by script">> $outputfile
echo " ************************************************************************/" >> $outputfile
echo "#ifndef __MENU_H__" >> $outputfile
echo "#define __MENU_H__" >> $outputfile
echo "#include <xxx/common.h>" >> $outputfile
echo "#include <xxxx/xxx.h>" >> $outputfile
echo "#include <xxx/gdi.h>" >> $outputfile
echo "#include <xxxx/window.h>" >> $outputfile
echo "#include <xxxx/control.h>" >> $outputfile
echo "" >> $outputfile
echo "#include \"windows.h\"" >> $outputfile
echo "#include \"xxx_widgets.h\"" >> $outputfile
echo "#include \"keyEvent.h\"" >> $outputfile
echo "#include \"xxx_message.h\"" >> $outputfile
echo "#include \"StorageManager.h\"" >> $outputfile
echo "#include \"ResourceManager.h\"" >> $outputfile
echo "" >> $outputfile
}
write_tail()
{
echo "" >> $outputfile
echo "#endif" >> $outputfile
echo "" >> $outputfile
}
generate_menuIndex()
{
echo "" >> $outputfile
echo -e "enum menuIndex {" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
if [ $i -ne $((${#array_menu_name[@]} - 1)) ]; then
echo -e "\tMENU_INDEX_${array_menu_name[$i]}," >> $outputfile
else
echo -e "\tMENU_INDEX_${array_menu_name[$i]}" >> $outputfile
fi
let i++
done
echo "};" >> $outputfile
}
generate_menuResourceID()
{
echo "" >> $outputfile
echo "enum ResourceID menuResourceID[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
if [ $i -ne $((${#array_menu_name[@]} - 1)) ]; then
echo -e "\tID_MENU_LIST_${array_menu_name[$i]}," >> $outputfile
else
echo -e "\tID_MENU_LIST_${array_menu_name[$i]}" >> $outputfile
fi
let i++
done
echo "};" >> $outputfile
}
generate_haveCheckBox()
{
echo "" >> $outputfile
echo "unsigned int haveCheckBox[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_have_checkbox[@]} ]
do
if [ $i -ne $((${#array_have_checkbox[@]} - 1)) ]; then
if [ ${array_have_checkbox[$i]} -eq 1 ]; then
echo -e "\t${array_have_checkbox[$i]}, \t/*${array_menu_name[$i]} \t\t have check box */" >> $outputfile
else
echo -e "\t${array_have_checkbox[$i]}, \t/*${array_menu_name[$i]} \t\t not have check box */" >> $outputfile
echo
fi
else
if [ ${array_have_checkbox[$i]} -eq 1 ]; then
echo -e "\t${array_have_checkbox[$i]} \t/*${array_menu_name[$i]} \t\t have check box */" >> $outputfile
else
echo -e "\t${array_have_checkbox[$i]} \t/*${array_menu_name[$i]} \t\t not have check box */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
}
generate_haveSubMenu()
{
echo "" >> $outputfile
echo "unsigned int haveSubMenu[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_have_submenu[@]} ]
do
if [ $i -ne $((${#array_have_submenu[@]} - 1)) ]; then
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t${array_have_submenu[$i]}, \t/*${array_menu_name[$i]} \t\t have sub menu */" >> $outputfile
else
echo -e "\t${array_have_submenu[$i]}, \t/*${array_menu_name[$i]} \t\t not have sub menu */" >> $outputfile
echo
fi
else
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t${array_have_submenu[$i]} \t/*${array_menu_name[$i]} \t\t have sub menu */" >> $outputfile
else
echo -e "\t${array_have_submenu[$i]} \t/*${array_menu_name[$i]} \t\t not have sub menu */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
}
generate_haveValueString()
{
echo "" >> $outputfile
echo "unsigned int haveValueString[] = {" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
if [ $i -ne $((${#array_menu_name[@]} - 1)) ]; then
if [ ${array_have_value_string[$i]} -eq 1 ]; then
echo -e "\t${array_have_value_string[$i]}, \t/*${array_menu_name[$i]} \t\t have value string */" >> $outputfile
else
echo -e "\t${array_have_value_string[$i]}, \t/*${array_menu_name[$i]} \t\t not have value string */" >> $outputfile
echo
fi
else
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t${array_have_value_string[$i]} \t/*${array_menu_name[$i]} \t\t have value string */" >> $outputfile
else
echo -e "\t${array_have_value_string[$i]} \t/*${array_menu_name[$i]} \t\t not have value string */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
echo "" >> $outputfile
}
generate_submenu_content0_cmd()
{
echo "" >> $outputfile
echo "int subMenuContent0Cmd[] = {">> $outputfile
i=0
while [ $i -lt ${#array_have_submenu[@]} ]
do
if [ $i -ne $((${#array_have_submenu[@]} - 1)) ]; then
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\tLANG_LABEL_SUBMENU_${array_menu_name[$i]}_CONTENT0," >> $outputfile
else
echo -e "\t-1, \t/*${array_menu_name[$i]} not have sub menu */" >> $outputfile
fi
else
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e " \tLANG_LABEL_SUBMENU_${array_menu_name[$i]}_CONTENT0" >> $outputfile
else
echo -e "\t-1 \t/*${array_menu_name[$i]} not have sub menu */" >> $outputfile
fi
fi
let i++
done
echo "};" >> $outputfile
echo "" >> $outputfile
}
generate_mlflags()
{
echo "" >> $outputfile
echo "MLFlags mlFlags[MENU_LIST_COUNT] = {">> $outputfile
echo "/***** 1. image flag2. value flags 3. value counts *****************/" >> $outputfile
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
echo -e "\t/*${array_menu_name[$i]}*/">> $outputfile
if [ ${array_menu_name[$i]} == "FIRMWARE" ]; then
echo -e "\t{ IMGFLAG_IMAGE, {VMFLAG_STRING}, 1}," >> $outputfile
let i++
continue
fi
if [ ${array_have_submenu[$i]} -eq 1 ]; then
echo -e "\t{ IMGFLAG_IMAGE, {VMFLAG_STRING, VMFLAG_IMAGE}, 2}," >> $outputfile
else
if [ ${array_have_checkbox[$i]} -eq 1 ]; then
echo -e "\t{ IMGFLAG_IMAGE, {VMFLAG_IMAGE}, 1}," >> $outputfile
else
echo -e "\t{ IMGFLAG_IMAGE, {0}, 0}," >> $outputfile
fi
fi
echo "" >> $outputfile
let i++
done
echo "};" >> $outputfile
echo "" >> $outputfile
}
str=`grep -n -P '^\[menu\]' $inputfile` # 行首字符:如果我想要让 the 只在行首列出呢? 这个时候就得要使用定位字节
if [ $? -eq 0 ]; then
echo str is $str
else
echo "not find [menu]"
exit 1
fi
start_line=`echo $str | cut -d ":" -f 1`
echo "start_line is $start_line"
total_line=`wc -l $inputfile | cut -d " " -f 1`
echo "total lines is $total_line"
line=$((start_line + 1))
count=0
while [ $line -le $total_line ]
do
str=`sed -n ' '"$line"' p' $inputfile`
# echo "line $line is $str"
menulist_name=`echo $str | cut -d "," -f 1`
# echo "menulist_name is $menulist_name"
array_menu_name[$count]=$menulist_name
echo $str | cut -d ',' -f 2 | grep -q "have sub menu"
if [ $? -eq 0 ]; then
array_have_submenu[$count]=1
else
array_have_submenu[$count]=0
fi
echo $str | cut -d ',' -f 3 | grep -q "have check box"
if [ $? -eq 0 ]; then
array_have_checkbox[$count]=1
else
array_have_checkbox[$count]=0
fi
echo $str | cut -d ',' -f 4 | grep -q "have value string"
if [ $? -eq 0 ]; then
array_have_value_string[$count]=1
else
array_have_value_string[$count]=0
fi
let line++
let count++
done
i=0
while [ $i -lt ${#array_menu_name[@]} ]
do
echo "array_menu_name[$i] is ${array_menu_name[$i]}"
echo "array_have_submenu[$i] is ${array_have_submenu[$i]}"
echo "array_have_checkbox[$i] is ${array_have_checkbox[$i]}"
echo "array_have_value_string[$i] is ${array_have_value_string[$i]}"
let i++
done
write_head
echo "#define MENU_LIST_COUNT ${#array_menu_name[@]}">> $outputfile
generate_menuIndex
generate_menuResourceID
generate_haveCheckBox
generate_haveSubMenu
generate_haveValueString
generate_submenu_content0_cmd
generate_mlflags
write_tail
exit 0