nemo_extension_sys/
lib.rs

1#![deny(bare_trait_objects)]
2
3extern crate gio_sys as gio_ffi;
4extern crate glib_sys as glib_ffi;
5extern crate gobject_sys as gobject_ffi;
6extern crate gtk_sys as gtk_ffi;
7extern crate libc;
8
9use gio_ffi::{GFile, GFileType, GMount};
10use glib_ffi::{GList, GType, gboolean, gpointer};
11use gobject_ffi::{GClosure, GTypeInterface};
12use gtk_ffi::GtkWidget;
13use libc::c_char;
14
15#[repr(C)]
16pub struct NemoFileInfo {
17    g_iface: GTypeInterface,
18    is_gone: Option<extern fn(*mut NemoFileInfo) -> gboolean>,
19    get_name: Option<extern fn(*mut NemoFileInfo) -> *mut c_char>,
20    get_uri: Option<extern fn(*mut NemoFileInfo) -> *mut c_char>,
21    get_parent_uri: Option<extern fn(*mut NemoFileInfo) -> *mut c_char>,
22    get_uri_scheme: Option<extern fn(*mut NemoFileInfo) -> *mut c_char>,
23    get_mime_type: Option<extern fn(*mut NemoFileInfo) -> *mut c_char>,
24    is_mime_type: Option<extern fn(*mut NemoFileInfo) -> gboolean>,
25    is_directory: Option<extern fn(*mut NemoFileInfo) -> gboolean>,
26    add_emblem: Option<extern fn(*mut NemoFileInfo)>,
27    get_string_attribute: Option<extern fn(*mut NemoFileInfo) -> *mut c_char>,
28    add_string_attribute: Option<extern fn(*mut NemoFileInfo)>,
29    invalidate_extension_info: Option<extern fn(*mut NemoFileInfo)>,
30    get_activation_uri: Option<extern fn(*mut NemoFileInfo) -> *mut c_char>,
31    get_file_type: Option<extern fn(*mut NemoFileInfo) -> GFileType>,
32    get_location: Option<extern fn(*mut NemoFileInfo) -> *mut GFile>,
33    get_parent_location: Option<extern fn(*mut NemoFileInfo) -> *mut GFile>,
34    get_parent_info: Option<extern fn(*mut NemoFileInfo) -> *mut NemoFileInfo>,
35    get_mount: Option<extern fn(*mut NemoFileInfo) -> *mut GMount>,
36    can_write: Option<extern fn(*mut NemoFileInfo) -> gboolean>,
37}
38
39#[repr(C)]
40pub struct NemoColumnProviderIface {
41    g_iface: GTypeInterface,
42    pub get_columns: Option<extern fn(gpointer) -> *mut GList>
43}
44
45#[repr(C)]
46pub struct NemoInfoProviderIface {
47    g_iface: GTypeInterface,
48    pub update_file_info: Option<extern fn(*mut NemoInfoProvider, *mut NemoFileInfo, *mut GClosure, *mut *mut NemoOperationHandle) -> NemoOperationResult>,
49    pub cancel_update: Option<extern fn(*mut NemoInfoProvider, *mut NemoOperationHandle)>
50}
51
52#[repr(C)]
53pub struct NemoLocationWidgetProviderIface {
54    g_iface: GTypeInterface,
55    get_widget: Option<extern fn(*mut NemoLocationWidgetProvider, *const c_char, *mut GtkWidget) -> *mut GtkWidget>
56}
57
58#[repr(C)]
59pub struct NemoMenuProviderIface {
60    g_iface: GTypeInterface,
61    pub get_file_items: Option<extern fn(gpointer, *mut GtkWidget, *mut GList) -> *mut GList>,
62    pub get_background_items: Option<extern fn(gpointer, *mut GtkWidget, *mut NemoFileInfo) -> *mut GList>,
63}
64
65#[repr(C)]
66pub struct NemoPropertyPageProviderIface {
67    g_iface: GTypeInterface,
68    pub get_pages: Option<extern fn(*mut NemoPropertyPageProvider, *mut GList) -> *mut GList>
69}
70
71pub enum NemoColumn {}
72pub enum NemoInfoProvider {}
73pub enum NemoLocationWidgetProvider {}
74pub enum NemoMenu {}
75pub enum NemoMenuItem {}
76pub enum NemoOperationHandle {}
77pub enum NemoPropertyPage {}
78pub enum NemoPropertyPageProvider {}
79
80#[link(name = "nemo-extension")]
81extern {
82    pub fn nemo_column_new(name: *const c_char, attribute: *const c_char, label: *const c_char, description: *const c_char) -> *mut NemoColumn;
83    pub fn nemo_column_provider_get_type() -> GType;
84    pub fn nemo_file_info_add_string_attribute(file: *mut NemoFileInfo, attribute_name: *const c_char, value: *const c_char);
85    pub fn nemo_file_info_get_uri(file_info: *mut NemoFileInfo) -> *mut c_char;
86    pub fn nemo_file_info_get_uri_scheme(file_info: *mut NemoFileInfo) -> *mut c_char;
87    pub fn nemo_file_info_invalidate_extension_info(file: *mut NemoFileInfo);
88    pub fn nemo_file_info_list_copy(files: *mut GList) -> *mut GList;
89    pub fn nemo_info_provider_get_type() -> GType;
90    pub fn nemo_info_provider_update_complete_invoke(update_complete: *mut GClosure,
91                                                         provider: *mut NemoInfoProvider,
92                                                         handle: *mut NemoOperationHandle,
93                                                         result: NemoOperationResult);
94    pub fn nemo_menu_append_item(menu: *mut NemoMenu, item: *mut NemoMenuItem);
95    pub fn nemo_menu_item_new(name: *const c_char, label: *const c_char, tip: *const c_char, icon: *const c_char) -> *mut NemoMenuItem;
96    pub fn nemo_menu_item_set_submenu(item: *mut NemoMenuItem, menu: *mut NemoMenu);
97    pub fn nemo_menu_new() -> *mut NemoMenu;
98    pub fn nemo_menu_provider_get_type() -> GType;
99    pub fn nemo_property_page_new(name: *const c_char, label: *mut GtkWidget, page: *mut GtkWidget) -> *mut NemoPropertyPage;
100    pub fn nemo_property_page_provider_get_type() -> GType;
101}
102
103#[repr(C)]
104pub enum NemoOperationResult {
105    NemoOperationComplete,
106    NemoOperationFailed,
107    NemoOperationInProgress,
108}
109
110#[cfg(test)]
111mod tests {
112    #[test]
113    fn it_works() {
114    }
115}