// Create new application func NewApplication(id string, flags GApplicationFlags) *Application { cid := gobject.GString(id) defer cid.Free() app := C.gtk_application_new((*C.gchar)(cid.GetPtr()), C.GApplicationFlags(flags)) C.g_application_register(C.to_GApplication(app), nil, nil) //C.g_application_activate(C.to_GApplication(app)) gtkapp := &Application{app} gtkapp.Connect("activate", func() {}) return gtkapp }
//Attempts registration of the application. //This is the point at which the application discovers if it is the primary instance or merely acting as a remote for an already-existing primary instance. This is implemented by attempting to acquire the application identifier as a unique bus name on the session bus using GDBus. //If there is no application ID or if G_APPLICATION_NON_UNIQUE was given, then this process will always become the primary instance. //Due to the internal architecture of GDBus, method calls can be dispatched at any time (even if a main loop is not running). For this reason, you must ensure that any object paths that you wish to register are registered before calling this function. //If the application has already been registered then TRUE is returned with no work performed. //The “startup” signal is emitted if registration succeeds and application is the primary instance (including the non-unique case). //In the event of an error (such as cancellable being cancelled, or a failure to connect to the session bus), FALSE is returned and error is set appropriately. //Note: the return value of this function is not an indicator that this instance is or is not the primary instance of the application. See g_application_get_is_remote() for that. func (v *Application) Register(cancellable *Cancellable) bool { var gerror **C.GError c := C.g_application_register(v.native(), cancellable.native(), gerror) return gobool(c) }