Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
bf9b255f
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bf9b255f
编写于
4月 26, 2013
作者:
A
Anthony Liguori
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
gtk: refactor menu creation
Signed-off-by:
N
Anthony Liguori
<
aliguori@us.ibm.com
>
上级
c34688f9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
56 addition
and
37 deletion
+56
-37
ui/gtk.c
ui/gtk.c
+56
-37
未找到文件。
ui/gtk.c
浏览文件 @
bf9b255f
...
...
@@ -1126,7 +1126,8 @@ static gboolean gd_vc_in(GIOChannel *chan, GIOCondition cond, void *opaque)
return
TRUE
;
}
static
GSList
*
gd_vc_init
(
GtkDisplayState
*
s
,
VirtualConsole
*
vc
,
int
index
,
GSList
*
group
)
static
GSList
*
gd_vc_init
(
GtkDisplayState
*
s
,
VirtualConsole
*
vc
,
int
index
,
GSList
*
group
,
GtkWidget
*
view_menu
)
{
const
char
*
label
;
char
buffer
[
32
];
...
...
@@ -1193,7 +1194,7 @@ static GSList *gd_vc_init(GtkDisplayState *s, VirtualConsole *vc, int index, GSL
g_signal_connect
(
vc
->
menu_item
,
"activate"
,
G_CALLBACK
(
gd_menu_switch_vc
),
s
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
vc
->
menu_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
vc
->
menu_item
);
qemu_chr_be_generic_open
(
vc
->
chr
);
if
(
vc
->
chr
->
init
)
{
...
...
@@ -1268,121 +1269,139 @@ static void gd_connect_signals(GtkDisplayState *s)
G_CALLBACK
(
gd_focus_out_event
),
s
);
}
static
void
gd_create_menus
(
GtkDisplayState
*
s
)
static
GtkWidget
*
gd_create_menu_machine
(
GtkDisplayState
*
s
,
GtkAccelGroup
*
accel_group
)
{
GtkStockItem
item
;
GtkAccelGroup
*
accel_group
;
GSList
*
group
=
NULL
;
GtkWidget
*
machine_menu
;
GtkWidget
*
separator
;
int
i
;
GtkStockItem
item
;
accel_group
=
gtk_accel_group_new
();
s
->
machine_menu
=
gtk_menu_new
();
gtk_menu_set_accel_group
(
GTK_MENU
(
s
->
machine_menu
),
accel_group
);
s
->
machine_menu_item
=
gtk_menu_item_new_with_mnemonic
(
_
(
"_Machine"
));
machine_menu
=
gtk_menu_new
();
gtk_menu_set_accel_group
(
GTK_MENU
(
machine_menu
),
accel_group
);
s
->
pause_item
=
gtk_check_menu_item_new_with_mnemonic
(
_
(
"_Pause"
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
machine_menu
),
s
->
pause_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
machine_menu
),
s
->
pause_item
);
separator
=
gtk_separator_menu_item_new
();
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
machine_menu
),
separator
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
machine_menu
),
separator
);
s
->
reset_item
=
gtk_image_menu_item_new_with_mnemonic
(
_
(
"_Reset"
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
machine_menu
),
s
->
reset_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
machine_menu
),
s
->
reset_item
);
s
->
powerdown_item
=
gtk_image_menu_item_new_with_mnemonic
(
_
(
"Power _Down"
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
machine_menu
),
s
->
powerdown_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
machine_menu
),
s
->
powerdown_item
);
separator
=
gtk_separator_menu_item_new
();
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
machine_menu
),
separator
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
machine_menu
),
separator
);
s
->
quit_item
=
gtk_image_menu_item_new_from_stock
(
GTK_STOCK_QUIT
,
NULL
);
gtk_stock_lookup
(
GTK_STOCK_QUIT
,
&
item
);
gtk_menu_item_set_accel_path
(
GTK_MENU_ITEM
(
s
->
quit_item
),
"<QEMU>/Machine/Quit"
);
gtk_accel_map_add_entry
(
"<QEMU>/Machine/Quit"
,
item
.
keyval
,
item
.
modifier
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
machine_menu
),
s
->
quit_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
machine_menu
),
s
->
quit_item
);
s
->
view_menu
=
gtk_menu_new
();
gtk_menu_set_accel_group
(
GTK_MENU
(
s
->
view_menu
),
accel_group
);
s
->
view_menu_item
=
gtk_menu_item_new_with_mnemonic
(
_
(
"_View"
));
return
machine_menu
;
}
static
GtkWidget
*
gd_create_menu_view
(
GtkDisplayState
*
s
,
GtkAccelGroup
*
accel_group
)
{
GSList
*
group
=
NULL
;
GtkWidget
*
view_menu
;
GtkWidget
*
separator
;
int
i
;
view_menu
=
gtk_menu_new
();
gtk_menu_set_accel_group
(
GTK_MENU
(
view_menu
),
accel_group
);
s
->
full_screen_item
=
gtk_image_menu_item_new_from_stock
(
GTK_STOCK_FULLSCREEN
,
NULL
);
gtk_menu_item_set_accel_path
(
GTK_MENU_ITEM
(
s
->
full_screen_item
),
"<QEMU>/View/Full Screen"
);
gtk_accel_map_add_entry
(
"<QEMU>/View/Full Screen"
,
GDK_KEY_f
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
full_screen_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
full_screen_item
);
separator
=
gtk_separator_menu_item_new
();
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
separator
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
separator
);
s
->
zoom_in_item
=
gtk_image_menu_item_new_from_stock
(
GTK_STOCK_ZOOM_IN
,
NULL
);
gtk_menu_item_set_accel_path
(
GTK_MENU_ITEM
(
s
->
zoom_in_item
),
"<QEMU>/View/Zoom In"
);
gtk_accel_map_add_entry
(
"<QEMU>/View/Zoom In"
,
GDK_KEY_plus
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
zoom_in_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
zoom_in_item
);
s
->
zoom_out_item
=
gtk_image_menu_item_new_from_stock
(
GTK_STOCK_ZOOM_OUT
,
NULL
);
gtk_menu_item_set_accel_path
(
GTK_MENU_ITEM
(
s
->
zoom_out_item
),
"<QEMU>/View/Zoom Out"
);
gtk_accel_map_add_entry
(
"<QEMU>/View/Zoom Out"
,
GDK_KEY_minus
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
zoom_out_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
zoom_out_item
);
s
->
zoom_fixed_item
=
gtk_image_menu_item_new_from_stock
(
GTK_STOCK_ZOOM_100
,
NULL
);
gtk_menu_item_set_accel_path
(
GTK_MENU_ITEM
(
s
->
zoom_fixed_item
),
"<QEMU>/View/Zoom Fixed"
);
gtk_accel_map_add_entry
(
"<QEMU>/View/Zoom Fixed"
,
GDK_KEY_0
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
zoom_fixed_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
zoom_fixed_item
);
s
->
zoom_fit_item
=
gtk_check_menu_item_new_with_mnemonic
(
_
(
"Zoom To _Fit"
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
zoom_fit_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
zoom_fit_item
);
separator
=
gtk_separator_menu_item_new
();
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
separator
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
separator
);
s
->
grab_on_hover_item
=
gtk_check_menu_item_new_with_mnemonic
(
_
(
"Grab On _Hover"
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
grab_on_hover_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
grab_on_hover_item
);
s
->
grab_item
=
gtk_check_menu_item_new_with_mnemonic
(
_
(
"_Grab Input"
));
gtk_menu_item_set_accel_path
(
GTK_MENU_ITEM
(
s
->
grab_item
),
"<QEMU>/View/Grab Input"
);
gtk_accel_map_add_entry
(
"<QEMU>/View/Grab Input"
,
GDK_KEY_g
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
grab_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
grab_item
);
separator
=
gtk_separator_menu_item_new
();
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
separator
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
separator
);
s
->
vga_item
=
gtk_radio_menu_item_new_with_mnemonic
(
group
,
"_VGA"
);
group
=
gtk_radio_menu_item_get_group
(
GTK_RADIO_MENU_ITEM
(
s
->
vga_item
));
gtk_menu_item_set_accel_path
(
GTK_MENU_ITEM
(
s
->
vga_item
),
"<QEMU>/View/VGA"
);
gtk_accel_map_add_entry
(
"<QEMU>/View/VGA"
,
GDK_KEY_1
,
GDK_CONTROL_MASK
|
GDK_MOD1_MASK
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
vga_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
vga_item
);
for
(
i
=
0
;
i
<
nb_vcs
;
i
++
)
{
VirtualConsole
*
vc
=
&
s
->
vc
[
i
];
group
=
gd_vc_init
(
s
,
vc
,
i
,
group
);
group
=
gd_vc_init
(
s
,
vc
,
i
,
group
,
view_menu
);
s
->
nb_vcs
++
;
}
separator
=
gtk_separator_menu_item_new
();
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
separator
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
separator
);
s
->
show_tabs_item
=
gtk_check_menu_item_new_with_mnemonic
(
_
(
"Show _Tabs"
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
view_menu
),
s
->
show_tabs_item
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
view_menu
),
s
->
show_tabs_item
);
g_object_set_data
(
G_OBJECT
(
s
->
window
),
"accel_group"
,
accel_group
);
gtk_window_add_accel_group
(
GTK_WINDOW
(
s
->
window
),
accel_group
);
s
->
accel_group
=
accel_group
;
return
view_menu
;
}
static
void
gd_create_menus
(
GtkDisplayState
*
s
)
{
GtkAccelGroup
*
accel_group
;
accel_group
=
gtk_accel_group_new
();
s
->
machine_menu
=
gd_create_menu_machine
(
s
,
accel_group
);
s
->
view_menu
=
gd_create_menu_view
(
s
,
accel_group
);
s
->
machine_menu_item
=
gtk_menu_item_new_with_mnemonic
(
_
(
"_Machine"
));
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
s
->
machine_menu_item
),
s
->
machine_menu
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
menu_bar
),
s
->
machine_menu_item
);
s
->
view_menu_item
=
gtk_menu_item_new_with_mnemonic
(
_
(
"_View"
));
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
s
->
view_menu_item
),
s
->
view_menu
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
s
->
menu_bar
),
s
->
view_menu_item
);
g_object_set_data
(
G_OBJECT
(
s
->
window
),
"accel_group"
,
accel_group
);
gtk_window_add_accel_group
(
GTK_WINDOW
(
s
->
window
),
accel_group
);
s
->
accel_group
=
accel_group
;
}
static
const
DisplayChangeListenerOps
dcl_ops
=
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录