sourceview 0.9.0

Rust bindings for the GtkSourceView 3 library
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

#[cfg(any(feature = "v3_14", feature = "dox"))]
use gio;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use glib::object::Cast;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use glib::object::IsA;
use glib::translate::*;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use glib::StaticType;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use glib::ToValue;
use gtk_source_sys;
use std::fmt;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use Buffer;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use CompressionType;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use Encoding;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use File;
#[cfg(any(feature = "v3_14", feature = "dox"))]
use NewlineType;

glib_wrapper! {
    pub struct FileLoader(Object<gtk_source_sys::GtkSourceFileLoader, gtk_source_sys::GtkSourceFileLoaderClass, FileLoaderClass>);

    match fn {
        get_type => || gtk_source_sys::gtk_source_file_loader_get_type(),
    }
}

impl FileLoader {
    #[cfg(any(feature = "v3_14", feature = "dox"))]
    pub fn new<P: IsA<Buffer>, Q: IsA<File>>(buffer: &P, file: &Q) -> FileLoader {
        skip_assert_initialized!();
        unsafe {
            from_glib_full(gtk_source_sys::gtk_source_file_loader_new(
                buffer.as_ref().to_glib_none().0,
                file.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    pub fn new_from_stream<P: IsA<Buffer>, Q: IsA<File>, R: IsA<gio::InputStream>>(
        buffer: &P,
        file: &Q,
        stream: &R,
    ) -> FileLoader {
        skip_assert_initialized!();
        unsafe {
            from_glib_full(gtk_source_sys::gtk_source_file_loader_new_from_stream(
                buffer.as_ref().to_glib_none().0,
                file.as_ref().to_glib_none().0,
                stream.as_ref().to_glib_none().0,
            ))
        }
    }
}

#[derive(Clone, Default)]
pub struct FileLoaderBuilder {
    #[cfg(any(feature = "v3_14", feature = "dox"))]
    buffer: Option<Buffer>,
    #[cfg(any(feature = "v3_14", feature = "dox"))]
    file: Option<File>,
    #[cfg(any(feature = "v3_14", feature = "dox"))]
    input_stream: Option<gio::InputStream>,
    #[cfg(any(feature = "v3_14", feature = "dox"))]
    location: Option<gio::File>,
}

impl FileLoaderBuilder {
    pub fn new() -> Self {
        Self::default()
    }

    pub fn build(self) -> FileLoader {
        let mut properties: Vec<(&str, &dyn ToValue)> = vec![];
        #[cfg(any(feature = "v3_14", feature = "dox"))]
        {
            if let Some(ref buffer) = self.buffer {
                properties.push(("buffer", buffer));
            }
        }
        #[cfg(any(feature = "v3_14", feature = "dox"))]
        {
            if let Some(ref file) = self.file {
                properties.push(("file", file));
            }
        }
        #[cfg(any(feature = "v3_14", feature = "dox"))]
        {
            if let Some(ref input_stream) = self.input_stream {
                properties.push(("input-stream", input_stream));
            }
        }
        #[cfg(any(feature = "v3_14", feature = "dox"))]
        {
            if let Some(ref location) = self.location {
                properties.push(("location", location));
            }
        }
        glib::Object::new(FileLoader::static_type(), &properties)
            .expect("object new")
            .downcast()
            .expect("downcast")
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    pub fn buffer<P: IsA<Buffer>>(mut self, buffer: &P) -> Self {
        self.buffer = Some(buffer.clone().upcast());
        self
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    pub fn file<P: IsA<File>>(mut self, file: &P) -> Self {
        self.file = Some(file.clone().upcast());
        self
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    pub fn input_stream<P: IsA<gio::InputStream>>(mut self, input_stream: &P) -> Self {
        self.input_stream = Some(input_stream.clone().upcast());
        self
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    pub fn location<P: IsA<gio::File>>(mut self, location: &P) -> Self {
        self.location = Some(location.clone().upcast());
        self
    }
}

pub const NONE_FILE_LOADER: Option<&FileLoader> = None;

pub trait FileLoaderExt: 'static {
    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_buffer(&self) -> Option<Buffer>;

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_compression_type(&self) -> CompressionType;

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_encoding(&self) -> Option<Encoding>;

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_file(&self) -> Option<File>;

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_input_stream(&self) -> Option<gio::InputStream>;

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_location(&self) -> Option<gio::File>;

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_newline_type(&self) -> NewlineType;
}

impl<O: IsA<FileLoader>> FileLoaderExt for O {
    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_buffer(&self) -> Option<Buffer> {
        unsafe {
            from_glib_none(gtk_source_sys::gtk_source_file_loader_get_buffer(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_compression_type(&self) -> CompressionType {
        unsafe {
            from_glib(gtk_source_sys::gtk_source_file_loader_get_compression_type(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_encoding(&self) -> Option<Encoding> {
        unsafe {
            from_glib_none(gtk_source_sys::gtk_source_file_loader_get_encoding(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_file(&self) -> Option<File> {
        unsafe {
            from_glib_none(gtk_source_sys::gtk_source_file_loader_get_file(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_input_stream(&self) -> Option<gio::InputStream> {
        unsafe {
            from_glib_none(gtk_source_sys::gtk_source_file_loader_get_input_stream(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_location(&self) -> Option<gio::File> {
        unsafe {
            from_glib_none(gtk_source_sys::gtk_source_file_loader_get_location(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_14", feature = "dox"))]
    fn get_newline_type(&self) -> NewlineType {
        unsafe {
            from_glib(gtk_source_sys::gtk_source_file_loader_get_newline_type(
                self.as_ref().to_glib_none().0,
            ))
        }
    }
}

impl fmt::Display for FileLoader {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "FileLoader")
    }
}