1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use std::fmt;
use events::Event;
#[derive(Clone, PartialEq)]
pub enum SystemError {
SystemClassCreation,
WindowCreationFail,
UiCreation,
}
impl SystemError {
fn translate(&self) -> String {
use low::other_helper::get_system_error;
let (code, code_txt) = unsafe{ get_system_error() };
let tr = match self {
&SystemError::SystemClassCreation => format!("Failed to create a system class for a control"),
&SystemError::WindowCreationFail => format!("Failed to create a system window for a control"),
&SystemError::UiCreation => format!("The system could not initialize the Ui"),
};
format!("{}.\nID {:?} - {}", tr, code, code_txt)
}
}
impl fmt::Debug for SystemError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.translate())
}
}
#[derive(Clone, PartialEq)]
pub enum Error {
KeyExists,
KeyNotFound,
BadType,
BadParent(String),
BorrowError,
EventNotSupported(Event),
ControlRequired,
ControlOrResourceRequired,
ControlInUse,
Unimplemented,
System(SystemError)
}
impl Error {
fn translate(&self) -> String {
match self {
&Error::KeyExists => format!("The same key already exists in the UI"),
&Error::KeyNotFound => format!("The key was not found in the ui"),
&Error::BadType => format!("The key exists in the Ui, but the type requested did not match the type of the underlying object"),
&Error::BadParent(ref r) => format!("Could not add a control to the requested parent: {}", r),
&Error::BorrowError => format!("The Ui element was already borrowed"),
&Error::EventNotSupported(ref e) => format!("The event of type {:?} is not supported on this control", e),
&Error::ControlRequired => format!("The key passed to the command must identify a control"),
&Error::ControlOrResourceRequired => format!("The key passed to the command must identify a control or a resource", ),
&Error::ControlInUse => format!("Impossible to modify the control, it is currently in use."),
&Error::Unimplemented => format!("Feature not yet implemented"),
&Error::System(ref e) => format!("A system error was raised: {:?}", e),
}
}
}
impl fmt::Debug for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.translate())
}
}