Robot Framework Integrated Development Environment (RIDE)
resourcedialogs.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 import wx
17 
18 from ..controller.ctrlcommands import DeleteResourceAndImports, DeleteFile, DeleteFolder, DeleteFolderAndImports
19 from ..usages.commands import FindResourceUsages, FindTestFolderUsages
20 from ..usages.usagesdialog import ResourceImportListModel, RecursiveResourceImportListModel
21 from ..widgets import RIDEDialog, VirtualList, VerticalSizer, Label
22 
23 
24 class _UsageDialog(RIDEDialog):
25 
28  _width = 650
29 
32  _height = 250
33 
34  def __init__(self, usages, title, checkbox_label, model=ResourceImportListModel):
35  RIDEDialog.__init__(self, title, size=(self._width_width, self._height_height))
36  # set Left to Right direction (while we don't have localization)
37  self.SetLayoutDirection(wx.Layout_LeftToRight)
38  self._sizer_sizer = VerticalSizer()
39  self._create_controls_create_controls(usages, checkbox_label, model)
40  self._create_horizontal_line(self._sizer_sizer)
41  self._create_buttons(self._sizer_sizer)
42  self.SetSizer(self._sizer_sizer)
43 
44  def _create_controls(self, usages, checkbox_label, model):
45  self._sizer_sizer.add_with_padding(Label(self, label="Usages:"))
46  model = model(usages)
47  self._sizer_sizer.add_expanding(VirtualList(self, model.headers, model))
48  self._add_usages_modifying_help_add_usages_modifying_help(usages)
49  self._checkbox_checkbox = wx.CheckBox(self, label=checkbox_label)
50  self._checkbox_checkbox.SetValue(True)
51  self._sizer_sizer.add_with_padding(self._checkbox_checkbox)
52 
53  def _add_usages_modifying_help(self, usages):
54  if any(u for u in usages if not u.can_be_renamed):
55  help = Label(self,
56  label='Highlighted imports are not modified because they '
57  'contain variables in resource file name.')
58  help.Wrap(self._width_width)
59  help.SetForegroundColour('red')
60  self._sizer_sizer.add_with_padding(help)
61 
62  def show(self):
63  confirmed = self.ShowModal() == wx.ID_OK
64  return confirmed, self._checkbox_checkbox.IsChecked()
65 
66 
68 
69  def __init__(self, usages, title, checkbox_label):
70  _UsageDialog.__init__(self, usages, title, checkbox_label)
71 
72 
74  def __init__(self, controller):
75  self._rename_confirmed_rename_confirmed = True
76  self._rename_usage_rename_usage = False
77  title = 'Rename resource'
78  checkbox_label = 'Also update resource imports'
79 
80  usages = list(controller.execute(FindResourceUsages()))
81  if usages:
82  self._rename_confirmed_rename_confirmed, self._rename_usage_rename_usage = _UsageDialog(usages, title, checkbox_label).show()
83 
84  def execute(self):
85  return self._rename_confirmed_rename_confirmed and self._rename_usage_rename_usage
86 
87 
89  def __init__(self, controller):
90  self._delete_confirmed_delete_confirmed = False
91  self._delete_usage_delete_usage = False
92  self._controller_controller = controller
93  title = 'Delete resource'
94  checkbox_label = 'Also delete resource imports'
95 
96  usages = list(controller.execute(FindResourceUsages()))
97  self._delete_confirmed_delete_confirmed, self._delete_usage_delete_usage = _UsageDialog(usages, title, checkbox_label).show()
98 
99  def execute(self):
100  if self._delete_confirmed_delete_confirmed:
101  if self._delete_usage_delete_usage:
102  self._controller_controller.execute(DeleteResourceAndImports())
103  else:
104  self._controller_controller.execute(DeleteFile())
105 
106 
108  def __init__(self, controller):
109  self._delete_confirmed_delete_confirmed = False
110  self._delete_usage_delete_usage = False
111  self._controller_controller = controller
112  title = 'Delete test data folder'
113  checkbox_label = 'Also delete resource imports'
114 
115  usages = list(controller.execute(FindTestFolderUsages()))
116  self._delete_confirmed_delete_confirmed, self._delete_usage_delete_usage = _UsageDialog(usages, title, checkbox_label,
117  RecursiveResourceImportListModel).show()
118 
119  def execute(self):
120  if self._delete_confirmed_delete_confirmed:
121  if self._delete_usage_delete_usage:
122  self._controller_controller.execute(DeleteFolderAndImports())
123  else:
124  self._controller_controller.execute(DeleteFolder())
def __init__(self, usages, title, checkbox_label)
def _create_controls(self, usages, checkbox_label, model)
def __init__(self, usages, title, checkbox_label, model=ResourceImportListModel)