// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/class.CssProvider.html).
pub type CssProvider

///|
pub(open) trait ICssProvider {
  fn as_css_provider(Self) -> CssProvider
  fn load_from_bytes(Self, Bytes) -> Unit = _
  fn load_from_file(Self, &@gio.IFile) -> Unit = _
  fn load_from_path(Self, String) -> Unit = _
  fn load_from_resource(Self, String) -> Unit = _
  fn load_from_string(Self, String) -> Unit = _
  fn to_string(Self) -> String = _
}

///|
pub impl ICssProvider for CssProvider with fn as_css_provider(self) {
  self
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/ctor.CssProvider.new.html).
pub extern "c" fn CssProvider::new() -> CssProvider = "moonbit_gtk_css_provider_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.CssProvider.load_from_bytes.html).
#borrow(self, data)
pub extern "c" fn CssProvider::load_from_bytes(
  self : CssProvider,
  data : Bytes,
) = "moonbit_gtk_css_provider_load_from_bytes"

///|
#borrow(self_, file)
extern "c" fn moonbit_gtk_css_provider_load_from_file(
  self_ : CssProvider,
  file : @gio.File,
) = "moonbit_gtk_css_provider_load_from_file"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.CssProvider.load_from_file.html).
pub fn CssProvider::load_from_file(
  self : CssProvider,
  file : &@gio.IFile,
) -> Unit {
  moonbit_gtk_css_provider_load_from_file(self, file.as_file())
}

///|
#borrow(self_, path)
extern "c" fn moonbit_gtk_css_provider_load_from_path(
  self_ : CssProvider,
  path : Bytes,
) = "moonbit_gtk_css_provider_load_from_path"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.CssProvider.load_from_path.html).
pub fn CssProvider::load_from_path(self : CssProvider, path : String) -> Unit {
  moonbit_gtk_css_provider_load_from_path(self, @encoding/utf8.encode(path))
}

///|
#borrow(self_, resource_path)
extern "c" fn moonbit_gtk_css_provider_load_from_resource(
  self_ : CssProvider,
  resource_path : Bytes,
) = "moonbit_gtk_css_provider_load_from_resource"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.CssProvider.load_from_resource.html).
pub fn CssProvider::load_from_resource(
  self : CssProvider,
  resource_path : String,
) -> Unit {
  moonbit_gtk_css_provider_load_from_resource(
    self,
    @encoding/utf8.encode(resource_path),
  )
}

///|
#borrow(self_, string)
extern "c" fn moonbit_gtk_css_provider_load_from_string(
  self_ : CssProvider,
  string : Bytes,
) = "moonbit_gtk_css_provider_load_from_string"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.CssProvider.load_from_string.html).
pub fn CssProvider::load_from_string(
  self : CssProvider,
  string : String,
) -> Unit {
  moonbit_gtk_css_provider_load_from_string(self, @encoding/utf8.encode(string))
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_css_provider_to_string(self_ : CssProvider) -> Bytes = "moonbit_gtk_css_provider_to_string"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.CssProvider.to_string.html).
pub fn CssProvider::to_string(self : CssProvider) -> String {
  @encoding/utf8.decode_lossy(moonbit_gtk_css_provider_to_string(self))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.CssProvider.prefers-color-scheme.html).
#borrow(self_)
pub extern "c" fn CssProvider::get_prefers_color_scheme(
  self_ : CssProvider,
) -> InterfaceColorScheme = "moonbit_gtk_css_provider_get_prefers_color_scheme"

///|
#borrow(self_)
pub extern "c" fn CssProvider::set_prefers_color_scheme(
  self_ : CssProvider,
  value : InterfaceColorScheme,
) = "moonbit_gtk_css_provider_set_prefers_color_scheme"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.CssProvider.prefers-contrast.html).
#borrow(self_)
pub extern "c" fn CssProvider::get_prefers_contrast(
  self_ : CssProvider,
) -> InterfaceContrast = "moonbit_gtk_css_provider_get_prefers_contrast"

///|
#borrow(self_)
pub extern "c" fn CssProvider::set_prefers_contrast(
  self_ : CssProvider,
  value : InterfaceContrast,
) = "moonbit_gtk_css_provider_set_prefers_contrast"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.CssProvider.prefers-reduced-motion.html).
#borrow(self_)
pub extern "c" fn CssProvider::get_prefers_reduced_motion(
  self_ : CssProvider,
) -> ReducedMotion = "moonbit_gtk_css_provider_get_prefers_reduced_motion"

///|
#borrow(self_)
pub extern "c" fn CssProvider::set_prefers_reduced_motion(
  self_ : CssProvider,
  value : ReducedMotion,
) = "moonbit_gtk_css_provider_set_prefers_reduced_motion"

///|
impl ICssProvider with fn load_from_bytes(self, data) -> Unit {
  self.as_css_provider().load_from_bytes(data)
}

///|
impl ICssProvider with fn load_from_file(self, file) -> Unit {
  self.as_css_provider().load_from_file(file)
}

///|
impl ICssProvider with fn load_from_path(self, path) -> Unit {
  self.as_css_provider().load_from_path(path)
}

///|
impl ICssProvider with fn load_from_resource(self, resource_path) -> Unit {
  self.as_css_provider().load_from_resource(resource_path)
}

///|
impl ICssProvider with fn load_from_string(self, string) -> Unit {
  self.as_css_provider().load_from_string(string)
}

///|
impl ICssProvider with fn to_string(self) -> String {
  self.as_css_provider().to_string()
}

///|
pub fn CssProvider::as_gobject_object(self : CssProvider) -> @gobject.Object = "%identity"

///|
pub impl @gobject.IObject for CssProvider with fn as_object(self) {
  self.as_gobject_object()
}

///|
pub fn CssProvider::as_style_provider(self : CssProvider) -> StyleProvider = "%identity"

///|
pub impl IStyleProvider for CssProvider with fn as_style_provider(self) {
  self.as_style_provider()
}