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")
}
}