GtkWidget *create_menu( intf_thread_t *p_intf ) { intf_sys_t *p_sys = p_intf->p_sys; GtkWidget *main_menu, *item; /* Creating the main menu */ main_menu = gtk_menu_new(); /* Filling the menu */ ADD_MENU_ITEM( "Open", open_cb ); ADD_MENU_ITEM( "Open Address", open_address_cb ); ADD_MENU_ITEM( "Open Webcam", open_webcam_cb ); ADD_SEPARATOR(); item = gtk_menu_item_new_with_label ("Playback"); p_sys->menu_input = GTK_MENU_ITEM(item); gtk_menu_bar_append(main_menu, item); g_signal_connect( GTK_OBJECT(item), "activate", G_CALLBACK( toplevel_menu_callback ), p_intf ); item = gtk_menu_item_new_with_label ("Audio"); p_sys->menu_audio = GTK_MENU_ITEM(item); gtk_menu_bar_append(main_menu, item); g_signal_connect( GTK_OBJECT(item), "activate", G_CALLBACK( toplevel_menu_callback ), p_intf ); item = gtk_menu_item_new_with_label ("Video"); p_sys->menu_video = GTK_MENU_ITEM(item); gtk_menu_bar_append(main_menu, item); g_signal_connect( GTK_OBJECT(item), "activate", G_CALLBACK( toplevel_menu_callback ), p_intf ); toplevel_menu_callback(p_sys->menu_input, p_intf); toplevel_menu_callback(p_sys->menu_video, p_intf); toplevel_menu_callback(p_sys->menu_audio, p_intf); ADD_SEPARATOR(); ADD_MENU_ITEM( "Exit", quit_event ); gtk_widget_show_all( main_menu ); return main_menu; }
static void pkg_window_init (PkgWindow *window) { PkgWindowPrivate *priv; GtkAccelGroup *accel_group; GtkWidget *vbox; GtkWidget *menu_bar; GtkWidget *perfkit_menu; GtkWidget *help_menu; GtkWidget *hpaned; GtkWidget *scroller; GtkTreeViewColumn *column; GtkCellRenderer *text; GtkCellRenderer *cpix; GtkTreeSelection *selection; ENTRY; priv = G_TYPE_INSTANCE_GET_PRIVATE(window, PKG_TYPE_WINDOW, PkgWindowPrivate); window->priv = priv; g_static_rw_lock_init(&priv->rw_lock); gtk_window_set_title(GTK_WINDOW(window), _("Perfkit")); gtk_window_set_default_size(GTK_WINDOW(window), 780, 550); accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(window), accel_group); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show(vbox); menu_bar = gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, TRUE, 0); gtk_widget_show(menu_bar); #define ADD_MENU(_n, _s) \ G_STMT_START { \ GtkWidget *_w; \ _w = gtk_menu_item_new_with_mnemonic((_s)); \ gtk_widget_show((_w)); \ gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), (_w)); \ _n = gtk_menu_new(); \ gtk_menu_item_set_submenu(GTK_MENU_ITEM(_w), _n); \ } G_STMT_END #define ADD_MENU_ITEM(_p, _s, _f) \ G_STMT_START { \ GtkWidget *_w; \ _w = gtk_menu_item_new_with_mnemonic(_s); \ gtk_widget_show((_w)); \ gtk_menu_shell_append(GTK_MENU_SHELL(_p), (_w)); \ g_signal_connect(_w, "activate", G_CALLBACK(_f), \ window); \ } G_STMT_END #define ADD_MENU_ITEM_STOCK(_p, _s, _f) \ G_STMT_START { \ GtkWidget *_w = gtk_image_menu_item_new_from_stock( \ (_s), accel_group); \ gtk_widget_show((_w)); \ gtk_menu_shell_append(GTK_MENU_SHELL(_p), (_w)); \ g_signal_connect(_w, "activate", G_CALLBACK(_f), \ window); \ } G_STMT_END #define ADD_SEPARATOR(_p) \ G_STMT_START { \ GtkWidget *_w = gtk_separator_menu_item_new(); \ gtk_widget_show((_w)); \ gtk_menu_shell_append(GTK_MENU_SHELL(_p), (_w)); \ } G_STMT_END ADD_MENU(perfkit_menu, _("_Perfkit")); ADD_MENU_ITEM(perfkit_menu, _("Connect to _Server"), gtk_false); ADD_SEPARATOR(perfkit_menu); ADD_MENU_ITEM_STOCK(perfkit_menu, GTK_STOCK_REFRESH, pkg_window_refresh_all); ADD_SEPARATOR(perfkit_menu); ADD_MENU_ITEM_STOCK(perfkit_menu, GTK_STOCK_QUIT, gtk_main_quit); ADD_MENU(help_menu, _("_Help")); ADD_MENU_ITEM_STOCK(help_menu, GTK_STOCK_ABOUT, gtk_false); hpaned = gtk_hpaned_new(); gtk_paned_set_position(GTK_PANED(hpaned), 275); gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); gtk_widget_show(hpaned); scroller = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroller), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroller), GTK_SHADOW_IN); gtk_paned_add1(GTK_PANED(hpaned), scroller); gtk_widget_show(scroller); priv->model = gtk_tree_store_new(5, PK_TYPE_CONNECTION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT); priv->treeview = gtk_tree_view_new(); gtk_container_add(GTK_CONTAINER(scroller), priv->treeview); gtk_tree_view_set_model(GTK_TREE_VIEW(priv->treeview), GTK_TREE_MODEL(priv->model)); gtk_tree_view_expand_all(GTK_TREE_VIEW(priv->treeview)); gtk_widget_show(priv->treeview); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(priv->treeview)); g_signal_connect(selection, "changed", G_CALLBACK(pkg_window_selection_changed), window); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, _("Agents")); gtk_tree_view_append_column(GTK_TREE_VIEW(priv->treeview), column); cpix = gtk_cell_renderer_pixbuf_new(); g_object_set(cpix, "stock-size", GTK_ICON_SIZE_LARGE_TOOLBAR, NULL); gtk_tree_view_column_pack_start(column, cpix, FALSE); gtk_tree_view_column_set_cell_data_func(column, cpix, pkg_window_pixbuf_data_func, window, NULL); text = gtk_cell_renderer_text_new(); g_object_set(text, "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_tree_view_column_pack_start(column, text, TRUE); gtk_tree_view_column_set_cell_data_func(column, text, pkg_window_label_data_func, window, NULL); priv->container = gtk_alignment_new(0.5f, 0.5f, 1.0f, 1.0f); gtk_paned_add2(GTK_PANED(hpaned), priv->container); gtk_widget_show(priv->container); EXIT; }