Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}