From 479672c10cc7f70cb8945df8a767d720540181c2 Mon Sep 17 00:00:00 2001 From: Evgenii Pashkin Date: Fri, 23 Feb 2018 08:29:44 +0300 Subject: [PATCH] Generate WidgetPath --- Gir.toml | 5 + src/auto/container.rs | 11 +- src/auto/icon_info.rs | 32 ++--- src/auto/mod.rs | 5 +- src/auto/style_context.rs | 23 ++-- src/auto/style_provider.rs | 33 +++-- src/auto/widget.rs | 13 +- src/auto/widget_path.rs | 261 +++++++++++++++++++++++++++++++++++++ 8 files changed, 335 insertions(+), 48 deletions(-) create mode 100644 src/auto/widget_path.rs diff --git a/Gir.toml b/Gir.toml index 216eee142a..0c322ae5cc 100644 --- a/Gir.toml +++ b/Gir.toml @@ -223,6 +223,7 @@ generate = [ "Gtk.Viewport", "Gtk.VolumeButton", "Gtk.WidgetHelpType", + "Gtk.WidgetPath", "Gtk.WindowGroup", "Gtk.WindowPosition", "Gtk.WindowType", @@ -1802,6 +1803,10 @@ status = "generate" [[object.function]] name = "style_get_property" ignore = true + [[object.function]] + name = "get_path" + [object.function.return] + nullable = false [[object.signal]] name = "button-press-event" inhibit = true diff --git a/src/auto/container.rs b/src/auto/container.rs index a35597bf0f..4413a7d4b0 100644 --- a/src/auto/container.rs +++ b/src/auto/container.rs @@ -6,6 +6,7 @@ use Adjustment; use Buildable; use ResizeMode; use Widget; +use WidgetPath; use cairo; use ffi; use glib; @@ -68,7 +69,7 @@ pub trait ContainerExt { fn get_focus_vadjustment(&self) -> Option; - //fn get_path_for_child>(&self, child: &P) -> /*Ignored*/Option; + fn get_path_for_child>(&self, child: &P) -> Option; #[cfg_attr(feature = "v3_12", deprecated)] fn get_resize_mode(&self) -> ResizeMode; @@ -207,9 +208,11 @@ impl + IsA> ContainerExt for O { } } - //fn get_path_for_child>(&self, child: &P) -> /*Ignored*/Option { - // unsafe { TODO: call ffi::gtk_container_get_path_for_child() } - //} + fn get_path_for_child>(&self, child: &P) -> Option { + unsafe { + from_glib_full(ffi::gtk_container_get_path_for_child(self.to_glib_none().0, child.to_glib_none().0)) + } + } fn get_resize_mode(&self) -> ResizeMode { unsafe { diff --git a/src/auto/icon_info.rs b/src/auto/icon_info.rs index f677a336ce..ec345e6aca 100644 --- a/src/auto/icon_info.rs +++ b/src/auto/icon_info.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ 8b9d0bb) +// This file was generated by gir (https://github.com/gtk-rs/gir @ ef40528) // from gir-files (https://github.com/gtk-rs/gir-files @ 77d1f70) // DO NOT EDIT @@ -68,7 +68,7 @@ pub trait IconInfoExt { fn load_icon(&self) -> Result; #[cfg(any(feature = "v3_8", feature = "dox"))] - fn load_icon_async<'a, P: Into>, Q: FnOnce(Result<(), Error>) + Send + 'static>(&self, cancellable: P, callback: Q); + fn load_icon_async<'a, P: Into>, Q: FnOnce(Result) + Send + 'static>(&self, cancellable: P, callback: Q); #[cfg(any(feature = "v3_10", feature = "dox"))] fn load_surface<'a, P: Into>>(&self, for_window: P) -> Result; @@ -76,12 +76,12 @@ pub trait IconInfoExt { fn load_symbolic<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, fg: &gdk::RGBA, success_color: P, warning_color: Q, error_color: R) -> Result<(gdk_pixbuf::Pixbuf, bool), Error>; #[cfg(any(feature = "v3_8", feature = "dox"))] - fn load_symbolic_async<'a, 'b, 'c, 'd, P: Into>, Q: Into>, R: Into>, S: Into>, T: FnOnce(Result) + Send + 'static>(&self, fg: &gdk::RGBA, success_color: P, warning_color: Q, error_color: R, cancellable: S, callback: T); + fn load_symbolic_async<'a, 'b, 'c, 'd, P: Into>, Q: Into>, R: Into>, S: Into>, T: FnOnce(Result<(gdk_pixbuf::Pixbuf, bool), Error>) + Send + 'static>(&self, fg: &gdk::RGBA, success_color: P, warning_color: Q, error_color: R, cancellable: S, callback: T); fn load_symbolic_for_context(&self, context: &StyleContext) -> Result<(gdk_pixbuf::Pixbuf, bool), Error>; #[cfg(any(feature = "v3_8", feature = "dox"))] - fn load_symbolic_for_context_async<'a, P: Into>, Q: FnOnce(Result) + Send + 'static>(&self, context: &StyleContext, cancellable: P, callback: Q); + fn load_symbolic_for_context_async<'a, P: Into>, Q: FnOnce(Result<(gdk_pixbuf::Pixbuf, bool), Error>) + Send + 'static>(&self, context: &StyleContext, cancellable: P, callback: Q); #[cfg_attr(feature = "v3_14", deprecated)] fn set_raw_coordinates(&self, raw_coordinates: bool); @@ -153,15 +153,15 @@ impl> IconInfoExt for O { } #[cfg(any(feature = "v3_8", feature = "dox"))] - fn load_icon_async<'a, P: Into>, Q: FnOnce(Result<(), Error>) + Send + 'static>(&self, cancellable: P, callback: Q) { + fn load_icon_async<'a, P: Into>, Q: FnOnce(Result) + Send + 'static>(&self, cancellable: P, callback: Q) { let cancellable = cancellable.into(); let cancellable = cancellable.to_glib_none(); let user_data: Box> = Box::new(Box::new(callback)); - unsafe extern "C" fn load_icon_async_trampoline) + Send + 'static>(_source_object: *mut gobject_ffi::GObject, res: *mut gio_ffi::GAsyncResult, user_data: glib_ffi::gpointer) + unsafe extern "C" fn load_icon_async_trampoline) + Send + 'static>(_source_object: *mut gobject_ffi::GObject, res: *mut gio_ffi::GAsyncResult, user_data: glib_ffi::gpointer) { let mut error = ptr::null_mut(); - let _ = ffi::gtk_icon_info_load_icon_finish(_source_object as *mut _, res, &mut error); - let result = if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }; + let ret = ffi::gtk_icon_info_load_icon_finish(_source_object as *mut _, res, &mut error); + let result = if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }; let callback: Box> = Box::from_raw(user_data as *mut _); callback(result); } @@ -198,7 +198,7 @@ impl> IconInfoExt for O { } #[cfg(any(feature = "v3_8", feature = "dox"))] - fn load_symbolic_async<'a, 'b, 'c, 'd, P: Into>, Q: Into>, R: Into>, S: Into>, T: FnOnce(Result) + Send + 'static>(&self, fg: &gdk::RGBA, success_color: P, warning_color: Q, error_color: R, cancellable: S, callback: T) { + fn load_symbolic_async<'a, 'b, 'c, 'd, P: Into>, Q: Into>, R: Into>, S: Into>, T: FnOnce(Result<(gdk_pixbuf::Pixbuf, bool), Error>) + Send + 'static>(&self, fg: &gdk::RGBA, success_color: P, warning_color: Q, error_color: R, cancellable: S, callback: T) { let success_color = success_color.into(); let success_color = success_color.to_glib_none(); let warning_color = warning_color.into(); @@ -208,12 +208,12 @@ impl> IconInfoExt for O { let cancellable = cancellable.into(); let cancellable = cancellable.to_glib_none(); let user_data: Box> = Box::new(Box::new(callback)); - unsafe extern "C" fn load_symbolic_async_trampoline) + Send + 'static>(_source_object: *mut gobject_ffi::GObject, res: *mut gio_ffi::GAsyncResult, user_data: glib_ffi::gpointer) + unsafe extern "C" fn load_symbolic_async_trampoline) + Send + 'static>(_source_object: *mut gobject_ffi::GObject, res: *mut gio_ffi::GAsyncResult, user_data: glib_ffi::gpointer) { let mut error = ptr::null_mut(); let mut was_symbolic = mem::uninitialized(); - let _ = ffi::gtk_icon_info_load_symbolic_finish(_source_object as *mut _, res, &mut was_symbolic, &mut error); - let result = if error.is_null() { Ok(from_glib(was_symbolic)) } else { Err(from_glib_full(error)) }; + let ret = ffi::gtk_icon_info_load_symbolic_finish(_source_object as *mut _, res, &mut was_symbolic, &mut error); + let result = if error.is_null() { Ok((from_glib_full(ret), from_glib(was_symbolic))) } else { Err(from_glib_full(error)) }; let callback: Box> = Box::from_raw(user_data as *mut _); callback(result); } @@ -233,16 +233,16 @@ impl> IconInfoExt for O { } #[cfg(any(feature = "v3_8", feature = "dox"))] - fn load_symbolic_for_context_async<'a, P: Into>, Q: FnOnce(Result) + Send + 'static>(&self, context: &StyleContext, cancellable: P, callback: Q) { + fn load_symbolic_for_context_async<'a, P: Into>, Q: FnOnce(Result<(gdk_pixbuf::Pixbuf, bool), Error>) + Send + 'static>(&self, context: &StyleContext, cancellable: P, callback: Q) { let cancellable = cancellable.into(); let cancellable = cancellable.to_glib_none(); let user_data: Box> = Box::new(Box::new(callback)); - unsafe extern "C" fn load_symbolic_for_context_async_trampoline) + Send + 'static>(_source_object: *mut gobject_ffi::GObject, res: *mut gio_ffi::GAsyncResult, user_data: glib_ffi::gpointer) + unsafe extern "C" fn load_symbolic_for_context_async_trampoline) + Send + 'static>(_source_object: *mut gobject_ffi::GObject, res: *mut gio_ffi::GAsyncResult, user_data: glib_ffi::gpointer) { let mut error = ptr::null_mut(); let mut was_symbolic = mem::uninitialized(); - let _ = ffi::gtk_icon_info_load_symbolic_for_context_finish(_source_object as *mut _, res, &mut was_symbolic, &mut error); - let result = if error.is_null() { Ok(from_glib(was_symbolic)) } else { Err(from_glib_full(error)) }; + let ret = ffi::gtk_icon_info_load_symbolic_for_context_finish(_source_object as *mut _, res, &mut was_symbolic, &mut error); + let result = if error.is_null() { Ok((from_glib_full(ret), from_glib(was_symbolic))) } else { Err(from_glib_full(error)) }; let callback: Box> = Box::from_raw(user_data as *mut _); callback(result); } diff --git a/src/auto/mod.rs b/src/auto/mod.rs index f7387cc861..41fa03d4ae 100644 --- a/src/auto/mod.rs +++ b/src/auto/mod.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ 8b9d0bb) +// This file was generated by gir (https://github.com/gtk-rs/gir @ bd67955+) // from gir-files (https://github.com/gtk-rs/gir-files @ 77d1f70) // DO NOT EDIT @@ -885,6 +885,9 @@ pub use self::tree_path::TreePath; mod tree_row_reference; pub use self::tree_row_reference::TreeRowReference; +mod widget_path; +pub use self::widget_path::WidgetPath; + mod enums; pub use self::enums::Align; pub use self::enums::ArrowType; diff --git a/src/auto/style_context.rs b/src/auto/style_context.rs index b4b0934858..2a475ac045 100644 --- a/src/auto/style_context.rs +++ b/src/auto/style_context.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ 8b9d0bb) +// This file was generated by gir (https://github.com/gtk-rs/gir @ bd67955+) // from gir-files (https://github.com/gtk-rs/gir-files @ 77d1f70) // DO NOT EDIT @@ -13,6 +13,7 @@ use StateType; use StyleContextPrintFlags; use StyleProvider; use TextDirection; +use WidgetPath; use ffi; use gdk; use glib; @@ -113,7 +114,7 @@ pub trait StyleContextExt { fn get_parent(&self) -> Option; - //fn get_path(&self) -> /*Ignored*/Option; + fn get_path(&self) -> Option; #[cfg(any(feature = "v3_10", feature = "dox"))] fn get_scale(&self) -> i32; @@ -184,7 +185,7 @@ pub trait StyleContextExt { fn set_parent<'a, P: Into>>(&self, parent: P); - //fn set_path(&self, path: /*Ignored*/&mut WidgetPath); + fn set_path(&self, path: &WidgetPath); #[cfg(any(feature = "v3_10", feature = "dox"))] fn set_scale(&self, scale: i32); @@ -317,9 +318,11 @@ impl + IsA> StyleContextExt for O { } } - //fn get_path(&self) -> /*Ignored*/Option { - // unsafe { TODO: call ffi::gtk_style_context_get_path() } - //} + fn get_path(&self) -> Option { + unsafe { + from_glib_none(ffi::gtk_style_context_get_path(self.to_glib_none().0)) + } + } #[cfg(any(feature = "v3_10", feature = "dox"))] fn get_scale(&self) -> i32 { @@ -487,9 +490,11 @@ impl + IsA> StyleContextExt for O { } } - //fn set_path(&self, path: /*Ignored*/&mut WidgetPath) { - // unsafe { TODO: call ffi::gtk_style_context_set_path() } - //} + fn set_path(&self, path: &WidgetPath) { + unsafe { + ffi::gtk_style_context_set_path(self.to_glib_none().0, path.to_glib_none().0); + } + } #[cfg(any(feature = "v3_10", feature = "dox"))] fn set_scale(&self, scale: i32) { diff --git a/src/auto/style_provider.rs b/src/auto/style_provider.rs index 1968fabd10..3d7b45ef5b 100644 --- a/src/auto/style_provider.rs +++ b/src/auto/style_provider.rs @@ -1,7 +1,10 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ 8b9d0bb) +// This file was generated by gir (https://github.com/gtk-rs/gir @ bd67955+) // from gir-files (https://github.com/gtk-rs/gir-files @ 77d1f70) // DO NOT EDIT +use IconFactory; +use StyleProperties; +use WidgetPath; use ffi; use glib::object::IsA; use glib::translate::*; @@ -19,25 +22,29 @@ glib_wrapper! { } pub trait StyleProviderExt { - //#[cfg_attr(feature = "v3_8", deprecated)] - //fn get_icon_factory(&self, path: /*Ignored*/&mut WidgetPath) -> Option; + #[cfg_attr(feature = "v3_8", deprecated)] + fn get_icon_factory(&self, path: &WidgetPath) -> Option; - //#[cfg_attr(feature = "v3_8", deprecated)] - //fn get_style(&self, path: /*Ignored*/&mut WidgetPath) -> Option; + #[cfg_attr(feature = "v3_8", deprecated)] + fn get_style(&self, path: &WidgetPath) -> Option; - //fn get_style_property>(&self, path: /*Ignored*/&mut WidgetPath, state: StateFlags, pspec: &P) -> Option; + //fn get_style_property>(&self, path: &WidgetPath, state: StateFlags, pspec: &P) -> Option; } impl> StyleProviderExt for O { - //fn get_icon_factory(&self, path: /*Ignored*/&mut WidgetPath) -> Option { - // unsafe { TODO: call ffi::gtk_style_provider_get_icon_factory() } - //} + fn get_icon_factory(&self, path: &WidgetPath) -> Option { + unsafe { + from_glib_none(ffi::gtk_style_provider_get_icon_factory(self.to_glib_none().0, path.to_glib_none().0)) + } + } - //fn get_style(&self, path: /*Ignored*/&mut WidgetPath) -> Option { - // unsafe { TODO: call ffi::gtk_style_provider_get_style() } - //} + fn get_style(&self, path: &WidgetPath) -> Option { + unsafe { + from_glib_full(ffi::gtk_style_provider_get_style(self.to_glib_none().0, path.to_glib_none().0)) + } + } - //fn get_style_property>(&self, path: /*Ignored*/&mut WidgetPath, state: StateFlags, pspec: &P) -> Option { + //fn get_style_property>(&self, path: &WidgetPath, state: StateFlags, pspec: &P) -> Option { // unsafe { TODO: call ffi::gtk_style_provider_get_style_property() } //} } diff --git a/src/auto/widget.rs b/src/auto/widget.rs index 47d6cb6f30..8ed2573fc7 100644 --- a/src/auto/widget.rs +++ b/src/auto/widget.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ 8b9d0bb) +// This file was generated by gir (https://github.com/gtk-rs/gir @ bd67955+) // from gir-files (https://github.com/gtk-rs/gir-files @ 77d1f70) // DO NOT EDIT @@ -21,6 +21,7 @@ use TargetList; use TextDirection; use Tooltip; use WidgetHelpType; +use WidgetPath; use Window; use cairo; use cairo_ffi; @@ -289,7 +290,7 @@ pub trait WidgetExt { fn get_parent_window(&self) -> Option; - //fn get_path(&self) -> /*Ignored*/Option; + fn get_path(&self) -> WidgetPath; fn get_preferred_height(&self) -> (i32, i32); @@ -1432,9 +1433,11 @@ impl + IsA + glib::object::ObjectExt> Widge } } - //fn get_path(&self) -> /*Ignored*/Option { - // unsafe { TODO: call ffi::gtk_widget_get_path() } - //} + fn get_path(&self) -> WidgetPath { + unsafe { + from_glib_none(ffi::gtk_widget_get_path(self.to_glib_none().0)) + } + } fn get_preferred_height(&self) -> (i32, i32) { unsafe { diff --git a/src/auto/widget_path.rs b/src/auto/widget_path.rs new file mode 100644 index 0000000000..ed8ea30f1c --- /dev/null +++ b/src/auto/widget_path.rs @@ -0,0 +1,261 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ bd67955+) +// from gir-files (https://github.com/gtk-rs/gir-files @ 77d1f70) +// DO NOT EDIT + +use RegionFlags; +#[cfg(any(feature = "v3_14", feature = "dox"))] +use StateFlags; +use Widget; +use ffi; +use glib; +use glib::object::IsA; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::fmt; +use std::mem; +use std::ptr; + +glib_wrapper! { + pub struct WidgetPath(Shared); + + match fn { + ref => |ptr| ffi::gtk_widget_path_ref(ptr), + unref => |ptr| ffi::gtk_widget_path_unref(ptr), + get_type => || ffi::gtk_widget_path_get_type(), + } +} + +impl WidgetPath { + pub fn new() -> WidgetPath { + assert_initialized_main_thread!(); + unsafe { + from_glib_full(ffi::gtk_widget_path_new()) + } + } + + pub fn append_for_widget>(&self, widget: &P) -> i32 { + unsafe { + ffi::gtk_widget_path_append_for_widget(self.to_glib_none().0, widget.to_glib_none().0) + } + } + + pub fn append_type(&self, type_: glib::types::Type) -> i32 { + unsafe { + ffi::gtk_widget_path_append_type(self.to_glib_none().0, type_.to_glib()) + } + } + + pub fn append_with_siblings(&self, siblings: &WidgetPath, sibling_index: u32) -> i32 { + unsafe { + ffi::gtk_widget_path_append_with_siblings(self.to_glib_none().0, siblings.to_glib_none().0, sibling_index) + } + } + + pub fn copy(&self) -> Option { + unsafe { + from_glib_full(ffi::gtk_widget_path_copy(self.to_glib_none().0)) + } + } + + pub fn get_object_type(&self) -> glib::types::Type { + unsafe { + from_glib(ffi::gtk_widget_path_get_object_type(self.to_glib_none().0)) + } + } + + pub fn has_parent(&self, type_: glib::types::Type) -> bool { + unsafe { + from_glib(ffi::gtk_widget_path_has_parent(self.to_glib_none().0, type_.to_glib())) + } + } + + pub fn is_type(&self, type_: glib::types::Type) -> bool { + unsafe { + from_glib(ffi::gtk_widget_path_is_type(self.to_glib_none().0, type_.to_glib())) + } + } + + pub fn iter_add_class(&self, pos: i32, name: &str) { + unsafe { + ffi::gtk_widget_path_iter_add_class(self.to_glib_none().0, pos, name.to_glib_none().0); + } + } + + #[cfg_attr(feature = "v3_14", deprecated)] + pub fn iter_add_region(&self, pos: i32, name: &str, flags: RegionFlags) { + unsafe { + ffi::gtk_widget_path_iter_add_region(self.to_glib_none().0, pos, name.to_glib_none().0, flags.to_glib()); + } + } + + pub fn iter_clear_classes(&self, pos: i32) { + unsafe { + ffi::gtk_widget_path_iter_clear_classes(self.to_glib_none().0, pos); + } + } + + #[cfg_attr(feature = "v3_14", deprecated)] + pub fn iter_clear_regions(&self, pos: i32) { + unsafe { + ffi::gtk_widget_path_iter_clear_regions(self.to_glib_none().0, pos); + } + } + + pub fn iter_get_name(&self, pos: i32) -> Option { + unsafe { + from_glib_none(ffi::gtk_widget_path_iter_get_name(self.to_glib_none().0, pos)) + } + } + + #[cfg(any(feature = "v3_20", feature = "dox"))] + pub fn iter_get_object_name(&self, pos: i32) -> Option { + unsafe { + from_glib_none(ffi::gtk_widget_path_iter_get_object_name(self.to_glib_none().0, pos)) + } + } + + pub fn iter_get_object_type(&self, pos: i32) -> glib::types::Type { + unsafe { + from_glib(ffi::gtk_widget_path_iter_get_object_type(self.to_glib_none().0, pos)) + } + } + + pub fn iter_get_sibling_index(&self, pos: i32) -> u32 { + unsafe { + ffi::gtk_widget_path_iter_get_sibling_index(self.to_glib_none().0, pos) + } + } + + pub fn iter_get_siblings(&self, pos: i32) -> Option { + unsafe { + from_glib_none(ffi::gtk_widget_path_iter_get_siblings(self.to_glib_none().0, pos)) + } + } + + #[cfg(any(feature = "v3_14", feature = "dox"))] + pub fn iter_get_state(&self, pos: i32) -> StateFlags { + unsafe { + from_glib(ffi::gtk_widget_path_iter_get_state(self.to_glib_none().0, pos)) + } + } + + pub fn iter_has_class(&self, pos: i32, name: &str) -> bool { + unsafe { + from_glib(ffi::gtk_widget_path_iter_has_class(self.to_glib_none().0, pos, name.to_glib_none().0)) + } + } + + pub fn iter_has_name(&self, pos: i32, name: &str) -> bool { + unsafe { + from_glib(ffi::gtk_widget_path_iter_has_name(self.to_glib_none().0, pos, name.to_glib_none().0)) + } + } + + //pub fn iter_has_qclass(&self, pos: i32, qname: /*Ignored*/glib::Quark) -> bool { + // unsafe { TODO: call ffi::gtk_widget_path_iter_has_qclass() } + //} + + //pub fn iter_has_qname(&self, pos: i32, qname: /*Ignored*/glib::Quark) -> bool { + // unsafe { TODO: call ffi::gtk_widget_path_iter_has_qname() } + //} + + //#[cfg_attr(feature = "v3_14", deprecated)] + //pub fn iter_has_qregion(&self, pos: i32, qname: /*Ignored*/glib::Quark) -> Option { + // unsafe { TODO: call ffi::gtk_widget_path_iter_has_qregion() } + //} + + #[cfg_attr(feature = "v3_14", deprecated)] + pub fn iter_has_region(&self, pos: i32, name: &str) -> Option { + unsafe { + let mut flags = mem::uninitialized(); + let ret = from_glib(ffi::gtk_widget_path_iter_has_region(self.to_glib_none().0, pos, name.to_glib_none().0, &mut flags)); + if ret { Some(from_glib(flags)) } else { None } + } + } + + pub fn iter_list_classes(&self, pos: i32) -> Vec { + unsafe { + FromGlibPtrContainer::from_glib_container(ffi::gtk_widget_path_iter_list_classes(self.to_glib_none().0, pos)) + } + } + + #[cfg_attr(feature = "v3_14", deprecated)] + pub fn iter_list_regions(&self, pos: i32) -> Vec { + unsafe { + FromGlibPtrContainer::from_glib_container(ffi::gtk_widget_path_iter_list_regions(self.to_glib_none().0, pos)) + } + } + + pub fn iter_remove_class(&self, pos: i32, name: &str) { + unsafe { + ffi::gtk_widget_path_iter_remove_class(self.to_glib_none().0, pos, name.to_glib_none().0); + } + } + + #[cfg_attr(feature = "v3_14", deprecated)] + pub fn iter_remove_region(&self, pos: i32, name: &str) { + unsafe { + ffi::gtk_widget_path_iter_remove_region(self.to_glib_none().0, pos, name.to_glib_none().0); + } + } + + pub fn iter_set_name(&self, pos: i32, name: &str) { + unsafe { + ffi::gtk_widget_path_iter_set_name(self.to_glib_none().0, pos, name.to_glib_none().0); + } + } + + #[cfg(any(feature = "v3_20", feature = "dox"))] + pub fn iter_set_object_name<'a, P: Into>>(&self, pos: i32, name: P) { + let name = name.into(); + let name = name.to_glib_none(); + unsafe { + ffi::gtk_widget_path_iter_set_object_name(self.to_glib_none().0, pos, name.0); + } + } + + pub fn iter_set_object_type(&self, pos: i32, type_: glib::types::Type) { + unsafe { + ffi::gtk_widget_path_iter_set_object_type(self.to_glib_none().0, pos, type_.to_glib()); + } + } + + #[cfg(any(feature = "v3_14", feature = "dox"))] + pub fn iter_set_state(&self, pos: i32, state: StateFlags) { + unsafe { + ffi::gtk_widget_path_iter_set_state(self.to_glib_none().0, pos, state.to_glib()); + } + } + + pub fn length(&self) -> i32 { + unsafe { + ffi::gtk_widget_path_length(self.to_glib_none().0) + } + } + + pub fn prepend_type(&self, type_: glib::types::Type) { + unsafe { + ffi::gtk_widget_path_prepend_type(self.to_glib_none().0, type_.to_glib()); + } + } + + fn to_string(&self) -> String { + unsafe { + from_glib_full(ffi::gtk_widget_path_to_string(self.to_glib_none().0)) + } + } +} + +impl Default for WidgetPath { + fn default() -> Self { + Self::new() + } +} + +impl fmt::Display for WidgetPath { + #[inline] + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", self.to_string()) + } +}