Mercurial > parpg-core
annotate src/parpg/components/lockable.py @ 87:b764229a0fad
Added ChangeMap component.
author | KarstenBock@gmx.net |
---|---|
date | Sun, 18 Sep 2011 16:07:07 +0200 |
parents | 96af64cf3b81 |
children | 0f659c7675f6 |
rev | line source |
---|---|
34
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
1 # This program is free software: you can redistribute it and/or modify |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
2 # it under the terms of the GNU General Public License as published by |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
3 # the Free Software Foundation, either version 3 of the License, or |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
4 # (at your option) any later version. |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
5 # |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
6 # This program is distributed in the hope that it will be useful, |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
7 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
8 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
9 # GNU General Public License for more details. |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
10 # |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
11 # You should have received a copy of the GNU General Public License |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
12 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
13 |
66
96af64cf3b81
Renamed grease to bGrease (Basic Grease) to get rid of conflicts with an already installed grease.
KarstenBock@gmx.net
parents:
49
diff
changeset
|
14 from bGrease.component import Component |
34
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
15 |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
16 class Lockable(Component): |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
17 """Component that stores the data of a lock""" |
49 | 18 |
34
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
19 def __init__(self): |
5ac50245e42c
Refactored components and began defining basic Entities and Systems.
M. George Hansen <technopolitica@gmail.com>
parents:
diff
changeset
|
20 """Constructor""" |
49 | 21 Component.__init__(self, closed=bool, locked=bool) |
22 | |
23 class LockedError(Exception): | |
24 | |
25 def __str__(self): | |
26 return "Is locked" | |
27 | |
28 class OpenError(Exception): | |
29 | |
30 def __str__(self): | |
31 return "Is open" | |
32 | |
33 def lock(lock): | |
34 if not lock.closed: | |
35 raise OpenError | |
36 lock.locked = True | |
37 | |
38 def unlock(lock): | |
39 lock.locked = False | |
40 | |
41 def open(lock): | |
42 if lock.locked: | |
43 raise LockedError | |
44 lock.closed = False | |
45 | |
46 def close(lock): | |
47 lock.closed = True |