收藏 分销(赏)

分享:gfxmenu定制高级教程(新增可定制菜单).doc

上传人:pc****0 文档编号:9009396 上传时间:2025-03-11 格式:DOC 页数:8 大小:38.50KB
下载 相关 举报
分享:gfxmenu定制高级教程(新增可定制菜单).doc_第1页
第1页 / 共8页
分享:gfxmenu定制高级教程(新增可定制菜单).doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述
分享:gfxmenu定制高级教程(新增可定制菜单) 本教程介绍从源代码的角度来定制gfx的菜单,比较适合喜欢DIY的用户。我修改了一下gfxboot的代码,使得定制工作完全可以在Windows环境下运行,也方便没有Linux的用户了。 1,下载和编译 首先,下载msys工具包: 编译工作需要在sh环境下进行。工具包里没有cpio,但在帖子"grub4dos 的 gfxmenu 支持"的#9可以找到,把文件复制到bin目录或者系统路径能找到的地方。 然后,下载SuSE风格的配置文件: 3.2系列: 3.3系列: 3.3系列可定制菜单: 输入 make 就能编译成功,生成文件在 boot/message。 2、基本定制 back.jpg 背景图片。置换后,再运行一下make就能把新的图片加进message,比用cpio命令要快。 help-boot.en.html, help-boot.zh_CN.html, help-install.en.html, help-install.zh_CN.html 中英文帮助信息,可以按自己的需要进行修改。html语句不要用得太复杂,不然gfxmenu可能处理不了。 po/bootloader.pot, po/zh_CN.po 中英文的信息翻译,bin目录里是一些有用的工具,在README里有介绍。比如说,要加一个新翻译Boot Windows,可以在po目录里输入: bin/add_text bwin "Boot Windows" 然后,打开zh_CN.po,找到 #. txt_bwin msgid "Boot Windows" msgstr "" "" 改为 "启动Windows" 就行了。记得要使用UTF-8编码。 16x16.fnt 在3.2系列里,生成字体的程序getx11font需要X-Window的支持,在Windows下无法使用。因此,不要运行make font来生成字体。里面的16x16.fnt是我预先定制的,包含500个常用汉字。 在3.3系列里,生成字体的程序mkblfont可以在Windows下使用,我把相应的exe文件加上了。目录里的chs.txt是包含的汉字,共有3500个,应该是足够了。如果有缺字的话,可以修改chs.txt,然后运行make font生成新的字体文件。不过,新版字体和旧版是不兼容的,不能把这里生成的字体拿到3.2系列里用。 字体缺省使用宋体,你也可以按需要改动。打开Makefile,找到: aafont:         mkblfont -v -l 18 \         -a 0x20-0x7e,0xa0-0xbf,0xc1-0xcb,0xcd-0xce,0xd0-0xd1,0xd3-0xd8,0xda-0xff \         -t chs.txt \         -f simsun:prop=2:space_width=4:size=17:nobitmap=1:autohint=1 \         16x16.fnt >16x16.log 可以把simsun改为其他值。控制面板的字体里显示了系统里所有的字体,只要把文件名里的后续去掉就行了。比如说,黑体是simhei。 3、使用可定制菜单(3.3系列) 为了方便大家修改message的参数,我制作了一个可定制的message文件。你可以通过编辑message里的gfxboot.cfg文件,来达到定制的目地,而不需要进行重新编译了。 message里的gfxboot.cfg列出所有的选项,不过在变量前都加上了#,变为注释了。使用时,先把#和其后的空格去掉,然后再根据自己需要修改数值。 目前支持的参数有: boot_show (缺省值0) 值为0时,隐藏Options编辑框,值为1时显示。因为options框实际上是没有作用的,建议把它隐藏起来。 xmenu_hide_current (缺省值0) 值为1时,隐藏语言下面的“简体中文”的字样。 menu_start_x, menu_start_y 菜单左上角的x,y坐标。 menu_max_entries(缺省值8) 最多显示的菜单行数 menu_bar_min_width(缺省值300) 选择菜单条的最小宽度。如果不想菜单条过长,可以把这里的值设得很小,例如1,那样的话,菜单条的长度就会自动设为菜单项的最大长度了。 menu_text_normal(缺省值0xfffff,即白色) 一般菜单项的字体颜色,使用rgb的数值 menu_text_select(缺省值0) 当前选择项的字体颜色 boot_text_options (缺省值0xfffff) options框字体颜色 boot_text_normal (缺省值0xfffff) 启动文本字体颜色 infobox_bg (缺省值0xd8deed) 帮助信息框的背景颜色 infobox_text_normal(缺省值0) 帮助信息框的字体颜色 menu_bar_color (缺省值0xffffff) 菜单条的颜色 loading_color (缺省值0x295202) 载入框颜色 title_bg (缺省值0x4f9805) 弹出框标题背景颜色 hide_reboot (缺省值0) 值为1时,不显示重启的按钮。 hide_poweroff (缺省值0) 值为1时,不显示关机的按钮。 disable_num_key(缺省值0) 缺省时,按1-9键就会启动相应的菜单项,把disable_num_key设为1可以屏蔽这一功能。 hide_help(缺省值0) 设为1时,隐藏F1帮助的菜单项 hide_lang(缺省值0) 设为1时,隐藏F2语言选择的菜单项 custom_width,custom_height,custom_depth 自定义屏幕大小,比如说, custom_width=1024 custom_height=768 custom_depth=16 缺省的屏幕大小为800x600x16。 panel_normal 面板的颜色 panel_title 面板标题的颜色 panel_high 面板快捷键的颜色 panel_bg 面板弹出框背景颜色 panel_border 面板弹出框边框颜色 4、风格定制 这就需要修改inc文件。该文件是类似于forth语法的,要看懂不容易。不过,不少文件的开始就是重要常量的定义,只需要修改它们的值就能定制gfxmenu的行为。比如说,在xmenu.inc里面有很多可以定制的参数: /xmenu.normal.bg        lightgray def /xmenu.normal.fg        black def /xmenu.selected.fg        white def /xmenu.selected.bg        0x6c6c6c newcolor 这里就是定义普通文本和选择文本的颜色。颜色可以用常量black,white,blue,red,green, yellow, lightgray, dotcolor, lightdotcolor, somegreen和lightblue(它们在common.inc里定义), 也可以直接使用RGB值。 small_layout {   /xmenu.maxlines        22 def } {   /xmenu.maxlines        28 def } ifelse 这里其实就是设置菜单里显示的最大行数的。这句的意思是在small_layout时,最多显示22个菜单项,否则,最多显示28个菜单项。你可以根据需要修改它的值。 要注意的是,在3.3系列里,修改最大行数的方法改变了。你可以定制菜单框出现的位置和大小,而最大行数则根据框的大小自动算出。 5、修改代码 gfxmenu的配置文件是使用类似于forth语言的结构。它和一般高级语言有很大的区别,它是面对机器的,其核心的概念是堆栈。比如说,对于表达式: 1 + 2 * 3 在forth里表示为: 1 2 3 * + 其操作步骤为: 第一步:数字 1 进栈 第二步:数字 2 进栈 第三步:数字 3 进栈 第四步:操作符 ×,2, 3 出栈,相乘,结果6进栈 第五步:操作符 +,1, 6 出栈,相乘,结果7进栈 最后,堆栈里剩下7,就是1 + 2 * 3的结果。 由于forth和机器的运算非常接近,其解析器很小,运算速度很快,这对于gfxboot来说还是比较合适的。 在gfxboot目录下有gfxboot.html,就是gfxboot的用户指南。里面包含所有基本函数的定义。举例说: * add – addition ( int1 int2 — int3 ) ( string1 int4 — string2 ) ( ptr1 int5 — ptr2 ) int3: int1 + int2 string2: substring of string1 at offset int4 Note: Strings are treated as byte sequences, not Unicode chars. Sizes of string1 and ptr1 are not checked. See also: abs, and, div, max, min, mod, mul, neg, not, or, shl, shr, sub, xor Example 9.   1 2 add         % 3      "abc" 1 add     % "bc" add - addition 函数的名字和简单描述 ( int1 int2 — int3 ) ( string1 int4 — string2 ) ( ptr1 int5 — ptr2 ) 这是参数描述。 - 左边是操作前的堆栈状态,右边是操作后的堆栈状态。这里有三个,就是说add有三种不同的用法。 int3: int1 + int2 string2: substring of string1 at offset int4 对于上面参数值的具体描述。 Note: Strings are treated as byte sequences, not Unicode chars. Sizes of string1 and ptr1 are not checked. 说明。 See also: abs, and, div, max, min, mod, mul, neg, not, or, shl, shr, sub, xor 其他相关的函数。 Example 9.   1 2 add         % 3      "abc" 1 add     % "bc" 例子,% 后是运算的结果。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服