1use atk_sys;
6use glib::object::IsA;
7use glib::translate::*;
8use std::fmt;
9use std::mem;
10use Object;
11
12glib_wrapper! {
13 pub struct TableCell(Interface<atk_sys::AtkTableCell>) @requires Object;
14
15 match fn {
16 get_type => || atk_sys::atk_table_cell_get_type(),
17 }
18}
19
20pub const NONE_TABLE_CELL: Option<&TableCell> = None;
21
22pub trait TableCellExt: 'static {
23 fn get_column_span(&self) -> i32;
26
27 fn get_position(&self) -> Option<(i32, i32)>;
28
29 fn get_row_column_span(&self) -> Option<(i32, i32, i32, i32)>;
30
31 fn get_row_span(&self) -> i32;
34
35 fn get_table(&self) -> Option<Object>;
36}
37
38impl<O: IsA<TableCell>> TableCellExt for O {
39 fn get_column_span(&self) -> i32 {
44 unsafe { atk_sys::atk_table_cell_get_column_span(self.as_ref().to_glib_none().0) }
45 }
46
47 fn get_position(&self) -> Option<(i32, i32)> {
48 unsafe {
49 let mut row = mem::uninitialized();
50 let mut column = mem::uninitialized();
51 let ret = from_glib(atk_sys::atk_table_cell_get_position(
52 self.as_ref().to_glib_none().0,
53 &mut row,
54 &mut column,
55 ));
56 if ret {
57 Some((row, column))
58 } else {
59 None
60 }
61 }
62 }
63
64 fn get_row_column_span(&self) -> Option<(i32, i32, i32, i32)> {
65 unsafe {
66 let mut row = mem::uninitialized();
67 let mut column = mem::uninitialized();
68 let mut row_span = mem::uninitialized();
69 let mut column_span = mem::uninitialized();
70 let ret = from_glib(atk_sys::atk_table_cell_get_row_column_span(
71 self.as_ref().to_glib_none().0,
72 &mut row,
73 &mut column,
74 &mut row_span,
75 &mut column_span,
76 ));
77 if ret {
78 Some((row, column, row_span, column_span))
79 } else {
80 None
81 }
82 }
83 }
84
85 fn get_row_span(&self) -> i32 {
90 unsafe { atk_sys::atk_table_cell_get_row_span(self.as_ref().to_glib_none().0) }
91 }
92
93 fn get_table(&self) -> Option<Object> {
94 unsafe {
95 from_glib_full(atk_sys::atk_table_cell_get_table(
96 self.as_ref().to_glib_none().0,
97 ))
98 }
99 }
100}
101
102impl fmt::Display for TableCell {
103 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
104 write!(f, "TableCell")
105 }
106}