## BtEditApplication

BtEditApplication — class for a gtk based buzztard editor application

## Synopsis

    #include "bt-edit.h"

    struct              BtEditApplication;
    BtEditApplication * bt_edit_application_new             (void);
    gboolean            bt_edit_application_new_song        (const BtEditApplication *self);
    gboolean            bt_edit_application_load_song       (const BtEditApplication *self,
                                                             const char *file_name);
    gboolean            bt_edit_application_save_song       (const BtEditApplication *self,
                                                             const char *file_name);
    gboolean            bt_edit_application_run             (const BtEditApplication *self);
    gboolean            bt_edit_application_load_and_run    (const BtEditApplication *self,
                                                             const gchar *input_file_name);
    gboolean            bt_edit_application_quit            (const BtEditApplication *self);
    void                bt_edit_application_show_about      (const BtEditApplication *self);
    void                bt_edit_application_show_tip        (const BtEditApplication *self);
    void                bt_edit_application_crash_log_recover
                                                            (const BtEditApplication *self);
    void                bt_edit_application_attach_child_window
                                                            (const BtEditApplication *self,
                                                             GtkWindow *window);
    void                bt_edit_application_ui_lock         (const BtEditApplication *self);
    void                bt_edit_application_ui_unlock       (const BtEditApplication *self);
    gboolean            bt_edit_application_is_song_unsaved (const BtEditApplication *self);
    void                bt_edit_application_set_song_unsaved
                                                            (const BtEditApplication *self);

## Object Hierarchy

      GObject
       +----BtApplication
             +----BtEditApplication

## Properties

      "ic-registry"              BtIcRegistry*         : Read
      "main-window"              BtMainWindow*         : Read
      "song"                     BtSong*               : Read / Write
      "unsaved"                  gboolean              : Read / Write

## Description

Opens the BtMainWindow and provide application level function like load, save, run and exit.

It also provides functions to invoke some dialogs like about and tips.

The application instance will have exactly one active "song" at a time. I tracks undo/redo-able changes to the song via BtChangeLog and simple flagged changes via the "unsaved" property.

## Details

### struct BtEditApplication

    struct BtEditApplication;

BtApplication subclass for the gtk editor application

### bt_edit_application_new ()

    BtEditApplication * bt_edit_application_new             (void);

Create a new instance on first call and return a reference later on.

Returns : | the new signleton instance

### bt_edit_application_new_song ()

    gboolean            bt_edit_application_new_song        (const BtEditApplication *self);

Creates a new blank song instance. If there is a previous song instance it will be freed.

`self` : | the application instance to create a new song in
Returns : | `TRUE` for success

### bt_edit_application_load_song ()

    gboolean            bt_edit_application_load_song       (const BtEditApplication *self,
                                                             const char *file_name);

Loads a new song. If there is a previous song instance it will be freed.

`self` : | the application instance to load a new song in
`file_name` : | the song filename to load
Returns : | true for success

### bt_edit_application_save_song ()

    gboolean            bt_edit_application_save_song       (const BtEditApplication *self,
                                                             const char *file_name);

Saves a song.

`self` : | the application instance to save a song from
`file_name` : | the song filename to save
Returns : | true for success

### bt_edit_application_run ()

    gboolean            bt_edit_application_run             (const BtEditApplication *self);

Start the gtk based editor application

`self` : | the application instance to run
Returns : | `TRUE` for success

### bt_edit_application_load_and_run ()

    gboolean            bt_edit_application_load_and_run    (const BtEditApplication *self,
                                                             const gchar *input_file_name);

load the file of the supplied name and start the gtk based editor application

`self` : | the application instance to run
`input_file_name` : | the file to load initially
Returns : | true for success

### bt_edit_application_quit ()

    gboolean            bt_edit_application_quit            (const BtEditApplication *self);

End the application. Eventualy asks the user for confirmation.

`self` : | the application instance to quit
Returns : | `TRUE` it ending the application was confirmed

### bt_edit_application_show_about ()

    void                bt_edit_application_show_about      (const BtEditApplication *self);

Shows the applications about window

`self` : | the application instance

### bt_edit_application_show_tip ()

    void                bt_edit_application_show_tip        (const BtEditApplication *self);

Shows the tip of the day window

`self` : | the application instance

Since 0.6

### bt_edit_application_crash_log_recover ()

    void                bt_edit_application_crash_log_recover
                                                            (const BtEditApplication *self);

Shows the crash-log recover window if we have pending crash logs.

`self` : | the application instance

Since 0.6

### bt_edit_application_attach_child_window ()

    void                bt_edit_application_attach_child_window
                                                            (const BtEditApplication *self,
                                                             GtkWindow *window);

The parent and transient relation ship to the applications main-window.

`self` : | the application instance
`window` : | a child window (e.g. dialog)

Since 0.6

### bt_edit_application_ui_lock ()

    void                bt_edit_application_ui_lock         (const BtEditApplication *self);

Sets the main window insensitive and show a wait cursor.

`self` : | the application instance

### bt_edit_application_ui_unlock ()

    void                bt_edit_application_ui_unlock       (const BtEditApplication *self);

Sets the main window sensitive again and unset the wait cursor.

`self` : | the application instance

### bt_edit_application_is_song_unsaved ()

    gboolean            bt_edit_application_is_song_unsaved (const BtEditApplication *self);

Check if the song has unsaved changes.

`self` : | the application instance
Returns : | `TRUE` if there are pending changes

### bt_edit_application_set_song_unsaved ()

    void                bt_edit_application_set_song_unsaved
                                                            (const BtEditApplication *self);

Flag unsaved changes in the applications song.

`self` : | the application instance

## Property Details

### The `"ic-registry"` property

      "ic-registry"              BtIcRegistry*         : Read

the interaction controller registry of this application.

### The `"main-window"` property

      "main-window"              BtMainWindow*         : Read

the main window of this application.

### The `"song"` property

      "song"                     BtSong*               : Read / Write

the current song object.

### The `"unsaved"` property

      "unsaved"                  gboolean              : Read / Write

tell whether the current state of the song has been saved.

Default value: TRUE

## See Also

BtMainWindow