## RBDisplayPage

RBDisplayPage — base class for items that appear in the display page tree

## Synopsis

    #define             RB_DISPLAY_PAGE_ICON_SIZE
    struct              RBDisplayPage;
    struct              RBDisplayPageClass;
    gboolean            rb_display_page_receive_drag        (RBDisplayPage *page,
                                                             GtkSelectionData *data);
    gboolean            rb_display_page_selectable          (RBDisplayPage *page);
    void                rb_display_page_selected            (RBDisplayPage *page);
    void                rb_display_page_deselected          (RBDisplayPage *page);
    void                rb_display_page_activate            (RBDisplayPage *page);
    GtkWidget *         rb_display_page_get_config_widget   (RBDisplayPage *page,
                                                             RBShellPreferences *prefs);
    void                rb_display_page_get_status          (RBDisplayPage *page,
                                                             char **text,
                                                             char **progress_text,
                                                             float *progress);
    void                rb_display_page_delete_thyself      (RBDisplayPage *page);
    gboolean            rb_display_page_can_remove          (RBDisplayPage *page);
    void                rb_display_page_remove              (RBDisplayPage *page);
    void                rb_display_page_notify_status_changed
                                                            (RBDisplayPage *page);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkWidget
                   +----GtkContainer
                         +----GtkBox
                               +----GtkHBox
                                     +----RBDisplayPage
                                           +----RBSource
                                           +----RBDisplayPageGroup

## Implemented Interfaces

RBDisplayPage implements AtkImplementorIface, GtkBuildable and GtkOrientable.

## Properties

      "icon"                     GIcon*                : Read / Write / Construct
      "name"                     gchar*                : Read / Write
      "parent"                   RBDisplayPage*        : Read / Write / Construct Only
      "plugin"                   GObject*              : Read / Write / Construct
      "selected"                 gboolean              : Read
      "shell"                    RBShell*              : Read / Write / Construct Only
      "visibility"               gboolean              : Read / Write

## Signals

      "deleted"                                        : Run Last
      "status-changed"                                 : Run Last

## Description

This is the base class for items that appear in the display page tree and can occupy the main display area. Sources and source groups are display pages. Other types of display, such as music visualization, could be implemented as display pages too.

The display page object itself is the widget shown in the main display area. The icon and name properties control its appearance in the display page tree, and its location is determined by its parent display page, the sorting rules for its source group (if any), and insertion order. The visibility property controls whether the display page is actually shown in the display page tree at all.

## Details

### RB_DISPLAY_PAGE_ICON_SIZE

    #define RB_DISPLAY_PAGE_ICON_SIZE GTK_ICON_SIZE_MENU

### struct RBDisplayPage

    struct RBDisplayPage;

### struct RBDisplayPageClass

    struct RBDisplayPageClass {
    	GtkHBoxClass parent_class;

    	/* signals */
    	void (*status_changed) (RBDisplayPage *page);
    	void (*deleted)		(RBDisplayPage *page);

    	/* methods */
    	gboolean (*selectable)		(RBDisplayPage *page);
    	void (*selected)		(RBDisplayPage *page);
    	void (*deselected)		(RBDisplayPage *page);
    	void (*activate)		(RBDisplayPage *page);

    	GtkWidget *(*get_config_widget) (RBDisplayPage *page, RBShellPreferences *prefs);

    	void (*get_status)		(RBDisplayPage *page, char **text, char **progress_text, float *progress);
    	gboolean (*receive_drag) (RBDisplayPage *page, GtkSelectionData *data);
    	void (*delete_thyself) (RBDisplayPage *page);

    	gboolean (*can_remove)		(RBDisplayPage *page);
    	void (*remove)		(RBDisplayPage *page);
    };

### rb_display_page_receive_drag ()

    gboolean            rb_display_page_receive_drag        (RBDisplayPage *page,
                                                             GtkSelectionData *data);

### rb_display_page_selectable ()

    gboolean            rb_display_page_selectable          (RBDisplayPage *page);

Checks if `page` can be selected

`page` : | a RBDisplayPage

### rb_display_page_selected ()

    void                rb_display_page_selected            (RBDisplayPage *page);

Called when the page is selected in the page tree.

`page` : | a RBDisplayPage

### rb_display_page_deselected ()

    void                rb_display_page_deselected          (RBDisplayPage *page);

Called when the page is deselected in the page tree.

`page` : | a RBDisplayPage

### rb_display_page_activate ()

    void                rb_display_page_activate            (RBDisplayPage *page);

Called when the page is activated (double clicked, etc.) in the page tree.

`page` : | a RBDisplayPage

### rb_display_page_get_config_widget ()

    GtkWidget *         rb_display_page_get_config_widget   (RBDisplayPage *page,
                                                             RBShellPreferences *prefs);

Source implementations can use this to return an optional configuration widget. The widget will be displayed in a page in the preferences dialog.

`page` : | a RBDisplayPage
`prefs` : | the RBShellPreferences object
Returns : | configuration widget. [transfer none]

### rb_display_page_get_status ()

    void                rb_display_page_get_status          (RBDisplayPage *page,
                                                             char **text,
                                                             char **progress_text,
                                                             float *progress);

Retrieves the details to display in the status bar for the page. If the progress value returned is less than zero, the progress bar will pulse. If the progress value is greater than or equal to 1, the progress bar will be hidden.

`page` : | a RBDisplayPage
`text` : | holds the returned status text. [inout][allow-none][transfer full]
`progress_text` : | holds the returned text for the progress bar. [inout][allow-none][transfer full]
`progress` : | holds the progress value. [inout][allow-none]

### rb_display_page_delete_thyself ()

    void                rb_display_page_delete_thyself      (RBDisplayPage *page);

This is called when the page should delete itself. The 'deleted' signal will be emitted, which removes the page from the page model. This will not actually dispose of the page object, so reference counting must still be handled correctly.

`page` : | a RBDisplayPage

### rb_display_page_can_remove ()

    gboolean            rb_display_page_can_remove          (RBDisplayPage *page);

Called to check whether the user is able to remove the page

`page` : | a RBDisplayPage
Returns : | `TRUE` if the page can be removed

### rb_display_page_remove ()

    void                rb_display_page_remove              (RBDisplayPage *page);

Called when the user requests removal of a page.

`page` : | a RBDisplayPage

### rb_display_page_notify_status_changed ()

    void                rb_display_page_notify_status_changed
                                                            (RBDisplayPage *page);

Page implementations call this when their status bar information changes.

`page` : | a RBDisplayPage

## Property Details

### The `"icon"` property

      "icon"                     GIcon*                : Read / Write / Construct

Icon to display in the page tree

### The `"name"` property

      "name"                     gchar*                : Read / Write

Page name as displayed in the tree

Default value: NULL

### The `"parent"` property

      "parent"                   RBDisplayPage*        : Read / Write / Construct Only

The parent page in the tree (may be NULL)

### The `"plugin"` property

      "plugin"                   GObject*              : Read / Write / Construct

The plugin that created this page.

### The `"selected"` property

      "selected"                 gboolean              : Read

TRUE when the page is selected in the page tree.

Default value: FALSE

### The `"shell"` property

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

The rhythmbox shell object

### The `"visibility"` property

      "visibility"               gboolean              : Read / Write

If FALSE, the page will not be displayed in the tree

Default value: TRUE

## Signal Details

### The `"deleted"` signal

    void                user_function                      (RBDisplayPage *page,
                                                            gpointer       user_data)      : Run Last

Emitted when the page is being deleted.

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

### The `"status-changed"` signal

    void                user_function                      (RBDisplayPage *page,
                                                            gpointer       user_data)      : Run Last

Emitted when the page's status changes.

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