Robot Framework Integrated Development Environment (RIDE)
basecontroller.py
Go to the documentation of this file.
1 # Copyright 2008-2015 Nokia Networks
2 # Copyright 2016- Robot Framework Foundation
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 
16 from ..publish.messages import RideModificationPrevented
17 
18 
20 
21  @property
22  display_name = property
23 
24  def display_name(self):
25  return self.data.name
26 
27  def execute(self, command):
28  if not command.modifying or self.is_modifiableis_modifiable():
29  return command.execute(self)
30  else:
31  RideModificationPrevented(controller=self).publish()
32 
33  def is_modifiable(self):
34  return True
35 
36  def is_excluded(self):
37  return False
38 
39 
41 
42  @property
43  parent = property
44 
45  def parent(self):
46  return self._parent_parent
47 
48  def set_parent(self, new_parent):
49  self._parent_parent = new_parent
50 
51  def mark_dirty(self):
52  if self._parent_parent:
53  self._parent_parent.mark_dirty()
54 
55  @property
56  dirty = property
57 
58  def dirty(self):
59  return self._parent_parent.dirty
60 
61  @property
62  datafile_controller = property
63 
65  return self._parent_parent.datafile_controller
66 
67  @property
68  datafile = property
69 
70  def datafile(self):
71  return self._parent_parent.datafile
72 
73  @property
74  datafiles = property
75 
76  def datafiles(self):
77  return self._parent_parent.datafiles
78 
79  def is_modifiable(self):
80  return self.datafile_controllerdatafile_controllerdatafile_controller.is_modifiable()
81 
82 
83 class WithNamespace():
84 
87  _namespace = None # Ensure namespace exists
88 
89  def _set_namespace_from(self, controller):
90  self._set_namespace_set_namespace(controller._namespace)
91 
92  def _set_namespace(self, namespace):
93  self._namespace_namespace = namespace
94 
95  def get_namespace(self):
96  return self._namespace_namespace
97 
98  def update_namespace(self):
99  if not self._namespace_namespace:
100  return
101  self._namespace_namespace.update()
102 
103  def register_for_namespace_updates(self, listener):
104  if not self._namespace_namespace:
105  return
106  self._namespace_namespace.register_update_listener(listener)
107 
108  def unregister_namespace_updates(self, listener):
109  if not self._namespace_namespace:
110  return
111  self._namespace_namespace.unregister_update_listener(listener)
112 
114  self._namespace_namespace.clear_update_listeners()
115 
116  def is_user_keyword(self, datafile, value):
117  return self._namespace_namespace.is_user_keyword(datafile, value)
118 
119  def is_library_keyword(self, datafile, value):
120  return self._namespace_namespace.is_library_keyword(datafile, value)
121 
122  def get_all_keywords_from(self, *datafiles):
123  return self._namespace_namespace.get_all_keywords(*datafiles)
124 
126  return self._namespace_namespace.get_all_cached_library_names()
127 
128  def keyword_info(self, datafile, keyword_name):
129  return self._namespace_namespace.find_keyword(datafile, keyword_name)
130 
131  def is_library_import_ok(self, imp):
132  return self._namespace_namespace.is_library_import_ok(self.datafile, imp)
133 
134  def is_variables_import_ok(self, imp):
135  # print("DEBUG: BaseController is_variables_import_ok %s\n" % imp.name)
136  return self._namespace_namespace.is_variables_import_ok(self.datafile, imp)
137 
138 
140 
141  @property
142  _undo = property
143 
144  def _undo(self):
145  if not hasattr(self, '_undo_stack'):
146  self._undo_stack_undo_stack = []
147  return self._undo_stack_undo_stack
148 
149  @property
150  _redo = property
151 
152  def _redo(self):
153  if not hasattr(self, '_redo_stack'):
154  self._redo_stack_redo_stack = []
155  return self._redo_stack_redo_stack
156 
157  def clear_undo(self):
158  self._undo_stack_undo_stack = []
159 
160  def is_undo_empty(self):
161  return self._undo_undo_undo == []
162 
163  def pop_from_undo(self):
164  return self._undo_undo_undo.pop()
165 
166  def push_to_undo(self, command):
167  self._undo_undo_undo.append(command)
168 
169  def clear_redo(self):
170  self._redo_stack_redo_stack = []
171 
172  def is_redo_empty(self):
173  return self._redo_redo_redo == []
174 
175  def pop_from_redo(self):
176  return self._redo_redo_redo.pop()
177 
178  def push_to_redo(self, command):
179  self._redo_redo_redo.append(command)
def keyword_info(self, datafile, keyword_name)
Sent whenever modifying command is prevented for some reason.
Definition: messages.py:162