| GTK+ 3 Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Implemented Interfaces | ||||
#include <gtk/gtk.h> struct GtkApplication; GtkApplication * gtk_application_new (const gchar *application_id,GApplicationFlags flags); void gtk_application_add_window (GtkApplication *application,GtkWindow *window); void gtk_application_remove_window (GtkApplication *application,GtkWindow *window); GList * gtk_application_get_windows (GtkApplication *application);
GtkApplication is a class that handles many important aspects of a GTK+ application in a convenient fashion, without enforcing a one-size-fits-all application model.
Currently, GtkApplication handles GTK+ initialization, application uniqueness, provides some basic scriptability by exporting 'actions', and manages a list of toplevel windows whose life-cycle is automatically tied to the life-cycle of your application.
Example 109. A simple application
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
#include <gtk/gtk.h> static void new_window (GApplication *app, GFile *file) { GtkWidget *window, *scrolled, *view; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app)); gtk_window_set_title (GTK_WINDOW (window), "Bloatpad"); scrolled = gtk_scrolled_window_new (NULL, NULL); view = gtk_text_view_new (); gtk_container_add (GTK_CONTAINER (scrolled), view); gtk_container_add (GTK_CONTAINER (window), scrolled); if (file != NULL) { gchar *contents; gsize length; if (g_file_load_contents (file, NULL, &contents, &length, NULL, NULL)) { GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); gtk_text_buffer_set_text (buffer, contents, length); g_free (contents); } } gtk_widget_show_all (GTK_WIDGET (window)); } static void bloat_pad_activate (GApplication *application) { new_window (application, NULL); } static void bloat_pad_open (GApplication *application, GFile **files, gint n_files, const gchar *hint) { gint i; for (i = 0; i < n_files; i++) new_window (application, files[i]); } typedef GtkApplication BloatPad; typedef GtkApplicationClass BloatPadClass; G_DEFINE_TYPE (BloatPad, bloat_pad, GTK_TYPE_APPLICATION) static void bloat_pad_finalize (GObject *object) { G_OBJECT_CLASS (bloat_pad_parent_class)->finalize (object); } static void bloat_pad_init (BloatPad *app) { } static void bloat_pad_class_init (BloatPadClass *class) { G_OBJECT_CLASS (class)->finalize= bloat_pad_finalize; G_APPLICATION_CLASS (class)->activate = bloat_pad_activate; G_APPLICATION_CLASS (class)->open = bloat_pad_open; } BloatPad * bloat_pad_new (void) { g_type_init (); return g_object_new (bloat_pad_get_type (), "application-id", "org.gtk.Test.bloatpad", "flags", G_APPLICATION_HANDLES_OPEN, NULL); } int main (int argc, char **argv) { BloatPad *bloat_pad; int status; bloat_pad = bloat_pad_new (); status = g_application_run (G_APPLICATION (bloat_pad), argc, argv); g_object_unref (bloat_pad); return status; } |
GtkApplication * gtk_application_new (const gchar *application_id,GApplicationFlags flags);
Creates a new GtkApplication instance.
This function calls g_type_init() for you. gtk_init() is called
as soon as the application gets registered as the primary instance.
The application id must be valid. See g_application_id_is_valid().
|
the application id |
|
the application flags |
Returns : |
a new GtkApplication instance |
void gtk_application_add_window (GtkApplication *application,GtkWindow *window);
Adds a window from application.
This call is equivalent to setting the "application"
property of window to application.
Normally, the connection between the application and the window
will remain until the window is destroyed, but you can explicitly
remove it with gtk_application_remove_window().
GTK+ will keep the application running as long as it has any windows.
|
a GtkApplication |
|
a GtkWindow |
Since 3.0
void gtk_application_remove_window (GtkApplication *application,GtkWindow *window);
Remove a window from application.
If window belongs to application then this call is equivalent to
setting the "application" property of window to
NULL.
The application may stop running as a result of a call to this function.
|
a GtkApplication |
|
a GtkWindow |
Since 3.0
GList * gtk_application_get_windows (GtkApplication *application);
Gets a list of the GtkWindows associated with application.
The list that is returned should not be modified in any way.
|
a GtkApplication |
Returns : |
a GList of GtkWindow. [element-type GtkWindow][transfer none] |
Since 3.0