(define-object Notification
  (in-module "Notify")
  (parent "GObject")
  (c-name "NotifyNotification")
  (gtype-id "NOTIFY_TYPE_NOTIFICATION")
  (import-header "libnotify/notification.h")
)

(define-function notify_notification_new
  (is-constructor-of "NotifyNotification")
  (c-name "notify_notification_new")
  (caller-owns-return #t)
  (return-type "NotifyNotification*")
  (parameters
    '("const-gchar*" "summary")
    '("const-gchar*" "body" (null-ok))
    '("const-gchar*" "icon" (null-ok))
  )
)

(define-method update
  (of-object "NotifyNotification")
  (c-name "notify_notification_update")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "summary")
    '("const-gchar*" "body" (null-ok))
    '("const-gchar*" "icon" (null-ok))
  )
)

(define-method show
  (of-object "NotifyNotification")
  (c-name "notify_notification_show")
  (return-type "gboolean")
  (parameters
    '("GError**" "error")
  )
)

(define-method set_timeout
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_timeout")
  (return-type "none")
  (parameters
    '("gint" "timeout")
  )
)

(define-method set_category
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_category")
  (return-type "none")
  (parameters
    '("const-char*" "category")
  )
)

(define-method set_urgency
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_urgency")
  (return-type "none")
  (parameters
    '("NotifyUrgency" "urgency")
  )
)

(define-method set_icon_from_pixbuf
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_icon_from_pixbuf")
  (return-type "none")
  (parameters
    '("GdkPixbuf*" "icon")
  )
)

(define-method set_hint_int32
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_hint_int32")
  (return-type "none")
  (parameters
    '("const-gchar*" "key")
    '("gint" "value")
  )
)

(define-method set_hint_double
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_hint_double")
  (return-type "none")
  (parameters
    '("const-gchar*" "key")
    '("gdouble" "value")
  )
)

(define-method set_hint_string
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_hint_string")
  (return-type "none")
  (parameters
    '("const-gchar*" "key")
    '("const-gchar*" "value")
  )
)

(define-method set_hint_byte
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_hint_byte")
  (return-type "none")
  (parameters
    '("const-gchar*" "key")
    '("guchar" "value")
  )
)

(define-method set_hint_byte_array
  (of-object "NotifyNotification")
  (c-name "notify_notification_set_hint_byte_array")
  (return-type "none")
  (parameters
    '("const-gchar*" "key")
    '("const-guchar*" "value")
    '("gsize" "len")
  )
)

(define-method clear_hints
  (of-object "NotifyNotification")
  (c-name "notify_notification_clear_hints")
  (return-type "none")
)

(define-method add_action
  (of-object "NotifyNotification")
  (c-name "notify_notification_add_action")
  (return-type "none")
  (parameters
    '("const-char*" "action")
    '("const-char*" "label")
    '("NotifyActionCallback" "callback")
    '("gpointer" "user_data")
    '("GFreeFunc" "free_func")
  )
)

(define-method clear_actions
  (of-object "NotifyNotification")
  (c-name "notify_notification_clear_actions")
  (return-type "none")
)

(define-method close
  (of-object "NotifyNotification")
  (c-name "notify_notification_close")
  (return-type "gboolean")
  (parameters
    '("GError**" "error")
  )
)

(define-virtual closed
  (of-object "NotifyNotification")
  (return-type "none")
)

(define-virtual action
  (of-object "NotifyNotification")
  (return-type "none")
  (parameters
    '("gchar*" "action")
  )
)
