## RBDisplayPageTree

RBDisplayPageTree — widget displaying the tree of RBDisplayPage instances

## Synopsis

    struct              RBDisplayPageTree;
    struct              RBDisplayPageTreeClass;
    RBDisplayPageTree * rb_display_page_tree_new            (RBShell *shell);
    void                rb_display_page_tree_edit_source_name
                                                            (RBDisplayPageTree *display_page_tree,
                                                             RBSource *source);
    void                rb_display_page_tree_select         (RBDisplayPageTree *display_page_tree,
                                                             RBDisplayPage *page);
    void                rb_display_page_tree_toggle_expanded
                                                            (RBDisplayPageTree *display_page_tree,
                                                             RBDisplayPage *page);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkWidget
                   +----GtkContainer
                         +----GtkGrid
                               +----RBDisplayPageTree

## Implemented Interfaces

RBDisplayPageTree implements AtkImplementorIface, GtkBuildable and GtkOrientable.

## Properties

      "model"                    GtkTreeModel*         : Read
      "shell"                    RBShell*              : Read / Write / Construct Only

## Signals

      "drop-received"                                  : Run Last
      "selected"                                       : Run Last

## Description

The display page tree widget is a GtkTreeView backed by a GtkListStore containing the display page instances (sources and other things). Display pages include sources, such as the library and playlists, and other things like the visualization display.

Display pages are shown in the list with an icon and the name. The current playing source is displayed in bold.

Sources are divided into groups - library, stores, playlists, devices, network shares. Groups are displayed as headers, with expanders for hiding and showing the sources in the group. Sources themselves may also have child sources, such as playlists on portable audio players.

## Details

### struct RBDisplayPageTree

    struct RBDisplayPageTree;

### struct RBDisplayPageTreeClass

    struct RBDisplayPageTreeClass {
    	GtkGridClass parent_class;

    	/* signals */
    	void (*selected) (RBDisplayPageTree *tree, RBDisplayPage *page);
    	void (*drop_received) (RBDisplayPageTree *tree, RBDisplayPage *page, GtkSelectionData *data);
    };

### rb_display_page_tree_new ()

    RBDisplayPageTree * rb_display_page_tree_new            (RBShell *shell);

Creates the display page tree widget.

`shell` : | the RBShell instance
Returns : | the display page tree widget.

### rb_display_page_tree_edit_source_name ()

    void                rb_display_page_tree_edit_source_name
                                                            (RBDisplayPageTree *display_page_tree,
                                                             RBSource *source);

Initiates editing of the name of the specified source. The row for the source is selected and given input focus, allowing the user to edit the name. source_name_edited_cb is called when the user finishes editing.

`display_page_tree` : | the RBDisplayPageTree
`source` : | the RBSource to edit

### rb_display_page_tree_select ()

    void                rb_display_page_tree_select         (RBDisplayPageTree *display_page_tree,
                                                             RBDisplayPage *page);

Selects the specified page in the tree. This will result in the 'selected' signal being emitted.

`display_page_tree` : | the RBDisplayPageTree
`page` : | the RBDisplayPage to select

### rb_display_page_tree_toggle_expanded ()

    void                rb_display_page_tree_toggle_expanded
                                                            (RBDisplayPageTree *display_page_tree,
                                                             RBDisplayPage *page);

If `page` is expanded (children visible), collapses it, otherwise expands it.

`display_page_tree` : | the RBDisplayPageTree
`page` : | the RBDisplayPage to toggle

## Property Details

### The `"model"` property

      "model"                    GtkTreeModel*         : Read

The GtkTreeModel for the display page tree

### The `"shell"` property

      "shell"                    RBShell*              : Read / Write / Construct Only

The RBShell instance

## Signal Details

### The `"drop-received"` signal

    void                user_function                      (RBDisplayPageTree *tree,
                                                            gpointer           page,
                                                            gpointer           data,
                                                            gpointer           user_data)      : Run Last

Emitted when a drag and drop to the tree completes.

`tree` : | the RBDisplayPageTree
`page` : | the RBDisplagePage receiving the drop
`data` : | the drop data
`user_data` : | user data set when the signal handler was connected.

### The `"selected"` signal

    void                user_function                      (RBDisplayPageTree *tree,
                                                            GObject           *page,
                                                            gpointer           user_data)      : Run Last

Emitted when a page is selected from the tree

`tree` : | the RBDisplayPageTree
`page` : | the newly selected RBDisplayPage
`user_data` : | user data set when the signal handler was connected.