## app app — Core application interface, window management |

## Functions

void | gwy_app_switch_tool ()
const gchar * | gwy_app_current_tool_name ()
void | gwy_app_add_main_accel_group ()
void | gwy_app_save_window_position ()
void | gwy_app_restore_window_position ()
GtkWidget * | gwy_app_main_window_get ()
void | gwy_app_data_view_change_mask_color ()
gboolean | gwy_app_quit ()
void | gwy_app_init_widget_styles ()
void | gwy_app_init_i18n ()
gboolean | gwy_app_init_common ()

## Includes

    #include <app/gwyapp.h>

## Description

## Functions

### gwy_app_switch_tool ()

    void
    gwy_app_switch_tool (const gchar *toolname);

Switches the current tool to given tool.

If the tool is already active it is shown when hidden and hidden when visible.

#### Parameters

toolname | Tool name, that is type name of the tool object in the GLib type system. This can be for instance "GwyToolGrainMeasure". |

### gwy_app_current_tool_name ()

    const gchar *
    gwy_app_current_tool_name (void);

Obtains the name of currently active tool.

See `gwy_app_switch_tool()` for the name description.

In some rare circumstances, this function can return `NULL` because no tool is active. This includes program startup and shutdown and during the construction of a new GwyTool object while switching tools. Also, `NULL` is typically returned outside Gwyddion in program just using the libraries.

#### Returns

The tool name.

Since: 2.38

### gwy_app_add_main_accel_group ()

    void
    gwy_app_add_main_accel_group (GtkWindow *window);

Adds main (global) application accelerator group to a window.

This includes accelerators for terminating Gwyddion, opening files, etc.

#### Parameters

window | A window. |

### gwy_app_save_window_position ()

    void
    gwy_app_save_window_position (GtkWindow *window,
                                  const gchar *prefix,
                                  gboolean position,
                                  gboolean size);

Saves position and/or size of a window to settings.

Some sanity checks are included, therefore if window position and/or size is too suspicious, it is not saved.

#### Parameters

window | A window to save position of. |
prefix | Unique prefix in settings to store the information under. |
position | `TRUE` to save position information. |
size | `TRUE` to save size information. |

### gwy_app_restore_window_position ()

    void
    gwy_app_restore_window_position (GtkWindow *window,
                                     const gchar *prefix,
                                     gboolean grow_only);

Restores a window position and/or size from settings.

Unlike `gwy_app_save_window_position()`, this function has no `position` and `size` arguments, it simply restores all attributes that were saved.

Note to restore position (not size) it should be called twice for each window to accommodate sloppy window managers: once before the window is shown, second time immediately after showing the window.

Some sanity checks are included, therefore if saved window position and/or size is too suspicious, it is not restored.

#### Parameters

window | A window to restore position of. |
prefix | Unique prefix in settings to get the information from (the same as in `gwy_app_save_window_position()`). |
grow_only | `TRUE` to only attempt set the window default size bigger than it requests, never smaller. |

### gwy_app_main_window_get ()

    GtkWidget *
    gwy_app_main_window_get (void);

Returns Gwyddion main application window (toolbox).

#### Returns

The Gwyddion toolbox.

### gwy_app_data_view_change_mask_color ()

    void
    gwy_app_data_view_change_mask_color (GwyDataView *data_view);

Runs mask color selector on a data view.

This is a convenience function to run `gwy_color_selector_for_mask()`, possibly taking the initial color from settings.

#### Parameters

data_view | A data view (of application's data window). It must have a mask. |

### gwy_app_quit ()

    gboolean
    gwy_app_quit (void);

Quits the application.

This function may present a confirmation dialog to the user and it may let the application to continue running. If it quits the application, it performs some shutdown actions and then quits the Gtk+ main loop with `gtk_main_quit()`.

#### Returns

Always `TRUE` to be usable as an event handler. However, if the application is actually terminated, this function does not return.

### gwy_app_init_widget_styles ()

    void
    gwy_app_init_widget_styles (void);

Sets up style properties for special Gwyddion widgets.

Normally not needed to call explicitly.

### gwy_app_init_i18n ()

    void
    gwy_app_init_i18n (void);

Initializes internationalization.

Normally not needed to call explicitly.

### gwy_app_init_common ()

    gboolean
    gwy_app_init_common (GError **error,
                         ...);

Performs common initialization.

FIXME: Much more to say.

#### Parameters

error | Error location for settings loading error. |
... | List of module types to load, terminated with `NULL`. Possible types are "file", "graph", "layer", "process", "tool" plus two special values "" and "all" for untyped modules (like plug-in proxy) and all modules, respectively. |

#### Returns

Settings loading status.

## Types and Values