- 论坛徽章:
- 0
|
我在gtk_widget_show(wbus->window);之前调用了wbus_init_actions,可我按下ctrl+c的时候并不会打印出东西
//menu activate callbacks
void on_menu_start_vidcap_activate(GtkMenuItem *item ,gpointer data)
{
dprintk("ASDLFJALSDFJALDFLAK\n");
}
void on_menu_stop_vidcap_activate(GtkMenuItem *item,gpointer data)
{
}
/* menuitem definition */
GtkActionEntry wbus_test_actions[] = {
/* Action name, stock ID, label, accelerator, tooltip, callback */
{"start_vidcap",NULL,N_("start video capture"),"<control>c",NULL,G_CALLBACK(on_menu_start_vidcap_activate)},
{"stop_vidcap",NULL,N_("stop video capture"),"<control>s",NULL,G_CALLBACK(on_menu_stop_vidcap_activate)},
};
char* wbus_test_menu_ui = {
"<ui>"
" <menu name='test'>"
" <menuitem action='start_vidcap'/>"
" <menuitem action='stop_vidcap'/>"
" </menu>"
"</ui>"
};
void wbus_init_actions(const char *ui,GtkActionEntry *entries)
{
wbus->action_group = gtk_action_group_new("Actions");
gtk_action_group_set_translation_domain(wbus->action_group,GETTEXT_PACKAGE);
gtk_action_group_add_actions(wbus->action_group,entries,G_N_ELEMENTS(entries),NULL);
wbus->ui_manager = gtk_ui_manager_new();
gtk_ui_manager_insert_action_group(wbus->ui_manager,wbus->action_group,0);
if((gtk_ui_manager_add_ui_from_string (wbus->ui_manager,ui, -1, NULL)) < 0){
dprintk("WBUSCANNER: can't add ui from string\n");
}
wbus->ui_id = gtk_ui_manager_new_merge_id (wbus->ui_manager);
/* Bind the accelerators */
gtk_window_add_accel_group(GTK_WINDOW(wbus->window),gtk_ui_manager_get_accel_group(wbus->ui_manager));
/* Do this so that the menu is packed now instead of in the idle loop */
gtk_ui_manager_ensure_update(wbus->ui_manager);
return;
}
void wbus_remove_actions(void)
{
gtk_ui_manager_remove_ui(wbus->ui_manager,wbus->ui_id);
g_object_unref(wbus->action_group);
g_object_unref(wbus->ui_manager);
}
[ 本帖最后由 chenzhixin 于 2007-12-11 18:51 编辑 ] |
|