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

use gdk_pixbuf;
#[cfg(any(feature = "v3_18", feature = "dox"))]
use gio;
use glib::object::IsA;
use glib::translate::*;
use glib::GString;
use gtk;
use gtk_source_sys;
use std::fmt;
use CompletionActivation;
use CompletionContext;
use CompletionInfo;
use CompletionProposal;

glib_wrapper! {
    pub struct CompletionProvider(Interface<gtk_source_sys::GtkSourceCompletionProvider>);

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

pub const NONE_COMPLETION_PROVIDER: Option<&CompletionProvider> = None;

pub trait CompletionProviderExt: 'static {
    fn activate_proposal<P: IsA<CompletionProposal>>(
        &self,
        proposal: &P,
        iter: &mut gtk::TextIter,
    ) -> bool;

    fn get_activation(&self) -> CompletionActivation;

    #[cfg(any(feature = "v3_18", feature = "dox"))]
    fn get_gicon(&self) -> Option<gio::Icon>;

    fn get_icon(&self) -> Option<gdk_pixbuf::Pixbuf>;

    #[cfg(any(feature = "v3_18", feature = "dox"))]
    fn get_icon_name(&self) -> Option<GString>;

    fn get_info_widget<P: IsA<CompletionProposal>>(&self, proposal: &P) -> Option<gtk::Widget>;

    fn get_interactive_delay(&self) -> i32;

    fn get_name(&self) -> Option<GString>;

    fn get_priority(&self) -> i32;

    fn get_start_iter<P: IsA<CompletionContext>, Q: IsA<CompletionProposal>>(
        &self,
        context: &P,
        proposal: &Q,
    ) -> Option<gtk::TextIter>;

    fn match_<P: IsA<CompletionContext>>(&self, context: &P) -> bool;

    fn populate<P: IsA<CompletionContext>>(&self, context: &P);

    fn update_info<P: IsA<CompletionProposal>, Q: IsA<CompletionInfo>>(
        &self,
        proposal: &P,
        info: &Q,
    );
}

impl<O: IsA<CompletionProvider>> CompletionProviderExt for O {
    fn activate_proposal<P: IsA<CompletionProposal>>(
        &self,
        proposal: &P,
        iter: &mut gtk::TextIter,
    ) -> bool {
        unsafe {
            from_glib(
                gtk_source_sys::gtk_source_completion_provider_activate_proposal(
                    self.as_ref().to_glib_none().0,
                    proposal.as_ref().to_glib_none().0,
                    iter.to_glib_none_mut().0,
                ),
            )
        }
    }

    fn get_activation(&self) -> CompletionActivation {
        unsafe {
            from_glib(
                gtk_source_sys::gtk_source_completion_provider_get_activation(
                    self.as_ref().to_glib_none().0,
                ),
            )
        }
    }

    #[cfg(any(feature = "v3_18", feature = "dox"))]
    fn get_gicon(&self) -> Option<gio::Icon> {
        unsafe {
            from_glib_none(gtk_source_sys::gtk_source_completion_provider_get_gicon(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    fn get_icon(&self) -> Option<gdk_pixbuf::Pixbuf> {
        unsafe {
            from_glib_none(gtk_source_sys::gtk_source_completion_provider_get_icon(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[cfg(any(feature = "v3_18", feature = "dox"))]
    fn get_icon_name(&self) -> Option<GString> {
        unsafe {
            from_glib_none(
                gtk_source_sys::gtk_source_completion_provider_get_icon_name(
                    self.as_ref().to_glib_none().0,
                ),
            )
        }
    }

    fn get_info_widget<P: IsA<CompletionProposal>>(&self, proposal: &P) -> Option<gtk::Widget> {
        unsafe {
            from_glib_none(
                gtk_source_sys::gtk_source_completion_provider_get_info_widget(
                    self.as_ref().to_glib_none().0,
                    proposal.as_ref().to_glib_none().0,
                ),
            )
        }
    }

    fn get_interactive_delay(&self) -> i32 {
        unsafe {
            gtk_source_sys::gtk_source_completion_provider_get_interactive_delay(
                self.as_ref().to_glib_none().0,
            )
        }
    }

    fn get_name(&self) -> Option<GString> {
        unsafe {
            from_glib_full(gtk_source_sys::gtk_source_completion_provider_get_name(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    fn get_priority(&self) -> i32 {
        unsafe {
            gtk_source_sys::gtk_source_completion_provider_get_priority(
                self.as_ref().to_glib_none().0,
            )
        }
    }

    fn get_start_iter<P: IsA<CompletionContext>, Q: IsA<CompletionProposal>>(
        &self,
        context: &P,
        proposal: &Q,
    ) -> Option<gtk::TextIter> {
        unsafe {
            let mut iter = gtk::TextIter::uninitialized();
            let ret = from_glib(
                gtk_source_sys::gtk_source_completion_provider_get_start_iter(
                    self.as_ref().to_glib_none().0,
                    context.as_ref().to_glib_none().0,
                    proposal.as_ref().to_glib_none().0,
                    iter.to_glib_none_mut().0,
                ),
            );
            if ret {
                Some(iter)
            } else {
                None
            }
        }
    }

    fn match_<P: IsA<CompletionContext>>(&self, context: &P) -> bool {
        unsafe {
            from_glib(gtk_source_sys::gtk_source_completion_provider_match(
                self.as_ref().to_glib_none().0,
                context.as_ref().to_glib_none().0,
            ))
        }
    }

    fn populate<P: IsA<CompletionContext>>(&self, context: &P) {
        unsafe {
            gtk_source_sys::gtk_source_completion_provider_populate(
                self.as_ref().to_glib_none().0,
                context.as_ref().to_glib_none().0,
            );
        }
    }

    fn update_info<P: IsA<CompletionProposal>, Q: IsA<CompletionInfo>>(
        &self,
        proposal: &P,
        info: &Q,
    ) {
        unsafe {
            gtk_source_sys::gtk_source_completion_provider_update_info(
                self.as_ref().to_glib_none().0,
                proposal.as_ref().to_glib_none().0,
                info.as_ref().to_glib_none().0,
            );
        }
    }
}

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