20 from .contentassist
import ContentAssistTextCtrl
21 from .gridbase
import GridEditor
22 from ..context
import ctrl_or_cmd, bind_keys_to_evt_menu
23 from ..editor.contentassist
import ContentAssistFileButton
24 from ..namespace.suggesters
import SuggestionSource
25 from ..widgets
import Label
33 _sizer_flags_for_editor = wx.ALL
37 _sizer_flags_for_label = wx.ALL
39 def __init__(self, parent, value, label=None, validator=None,
41 wx.Panel.__init__(self, parent)
43 self.
_sizer_sizer = wx.BoxSizer(wx.VERTICAL)
44 from ..preferences
import RideSettings
48 _settings = RideSettings()
59 self.SetSizer(self.
_sizer_sizer)
62 sizer = wx.BoxSizer(wx.HORIZONTAL)
64 sizer.Add(Label(self, label=self.
_label_label, size=(80, -1)), 0,
72 self.
_editor_editor.AppendText(value)
74 self.
_sizer_sizer.Add(sizer, 1, wx.EXPAND)
79 editor = wx.TextCtrl(self, size=(600, -1))
87 self.
_editor_editor.SetValidator(validator)
91 return self.
_editor_editor.GetValue()
99 keycode, control_down = event.GetKeyCode(), event.CmdDown()
101 if event.CmdDown()
and event.GetKeyCode() == ord(
'1'):
103 elif event.CmdDown()
and event.GetKeyCode() == ord(
'2'):
105 elif event.CmdDown()
and event.GetKeyCode() == ord(
'5'):
109 self.
_editor_editor.WriteText(character +
"{}")
111 self.
_editor_editor.AppendText(
" | " + character +
"{}")
112 _from, _ = self.
_editor_editor.GetSelection()
113 self.
_editor_editor.SetInsertionPoint(_from-1)
121 sizer = wx.BoxSizer(wx.HORIZONTAL)
123 sizer.Add(Label(self, label=self.
_label_label, size=(80, -1)), 0,
128 self.
_sizer_sizer.Add(sizer, 1, wx.EXPAND)
136 _sizer_flags_for_editor = 0
140 _sizer_flags_for_label = wx.TOP | wx.BOTTOM | wx.LEFT
142 def __init__(self, parent, value, label, controller, validator=None,
143 settings=None, suggestion_source=None):
149 ValueEditor.__init__(self, parent, value, label, validator, settings)
165 textctrl = ValueEditor._get_text_ctrl(self)
166 textctrl.Bind(wx.EVT_SET_FOCUS, self.
OnFocusOnFocus)
170 wx.CallAfter(self.
SetSelectionSetSelection, event.GetEventObject())
182 _sizer_flags_for_editor = wx.ALL | wx.EXPAND
185 sizer = wx.BoxSizer(wx.HORIZONTAL)
187 cols = self.
_settings_settings.get(
"list variable columns", 4)
192 self.
_sizer_sizer.Add(sizer, 1, wx.EXPAND)
193 self.Bind(wx.EVT_SIZE, self.
OnSizeOnSize)
196 sizer = wx.BoxSizer(wx.VERTICAL)
197 sizer.Add(self.
_create_label_create_label(label), 0, wx.ALL, 5)
203 return Label(self, label=label_text, size=(80, -1))
206 sizer = wx.BoxSizer(wx.VERTICAL)
207 col_label = Label(self, label=
"Columns", size=(80, -1))
208 sizer.Add(col_label, 0, wx.ALL, 5)
209 combo = wx.ComboBox(self, value=str(cols), size=(60, 25),
210 choices=[str(i)
for i
in range(1, 11)])
211 tool_tip = wx.ToolTip(
"Number of columns that are shown in this editor."
212 " Selected value is stored and used globally.")
213 combo.SetToolTip(tool_tip)
221 self.Bind(wx.EVT_COMBOBOX, self.
OnColumnsOnColumns, source=combo)
228 num_cols =
int(event.String)
229 self.
_settings_settings[
"list variable columns"] = num_cols
246 num_rows = round(len(value) / num_cols + 2)
248 GridEditor.__init__(self, parent, num_rows, num_cols)
250 self.SetBackgroundColour(Colour(200, 222, 40))
251 self.SetOwnBackgroundColour(Colour(200, 222, 40))
252 self.SetForegroundColour(Colour(7, 0, 70))
253 self.SetOwnForegroundColour(Colour(7, 0, 70))
264 self.SetColLabelSize(wx.grid.GRID_AUTOSIZE)
265 self.SetRowLabelSize(wx.grid.GRID_AUTOSIZE)
266 self.SetDefaultColSize(20)
267 self.SetDefaultRenderer(wx.grid.GridCellAutoWrapStringRenderer())
271 self.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.
OnEditorShownOnEditorShown)
279 (wx.ACCEL_NORMAL, wx.WXK_DELETE, self.
OnDeleteOnDelete)]
284 for index, item
in enumerate(value):
285 row, col = divmod(index, self.NumberCols)
286 self.
write_cellwrite_cell(row, col, item,
False)
304 for row
in range(self.NumberRows):
305 for col
in range(self.NumberCols):
306 value.append(self.GetCellValue(row, col))
307 while value
and not value[-1]:
312 if event.Row >= self.NumberRows - 1:
316 if len(self.
selectionselection.rows()) != 1:
320 def insert_cells(data, start, end):
321 return data[:start] + [
''] * (end - start) + data[start:]
326 if len(self.
selectionselection.rows()) != 1:
330 def delete_cells(data, start, end):
331 return data[:start] + data[end:]
338 start = row * self.NumberCols + col
339 data = action(value, start, start + len(self.
selectionselection.cols()))
344 GridEditor.OnInsertCells(self, event)
347 GridEditor.OnDeleteCells(self, event)
369 self.SetDefaultColSize(max(
int(width / self.NumberCols), 100),
True)
372 new_cols = columns - self.NumberCols
375 width = self.NumberCols * self.GetDefaultColSize()
383 self.AppendCols(numCols=new_cols)
385 self.DeleteCols(numCols=-new_cols)
392 _sizer_flags_for_editor = wx.ALL | wx.EXPAND
395 editor = wx.TextCtrl(self, style=wx.TE_MULTILINE|wx.TE_NOHIDESEL, size=(600, 400))
399 editor.SetBackgroundColour(Colour(200, 222, 40))
400 editor.SetOwnBackgroundColour(Colour(200, 222, 40))
401 editor.SetForegroundColour(Colour(7, 0, 70))
402 editor.SetOwnForegroundColour(Colour(7, 0, 70))
409 def __init__(self, parent, value, label=None, validator=None,
410 settings=None, suggestion_source=None):
413 ValueEditor.__init__(self, parent, value, label, validator, settings)
def _create_editor(self, value, label, settings)
def __init__(self, parent, value, label=None, validator=None, settings=None, suggestion_source=None)
def __init__(self, parent, value, label, controller, validator=None, settings=None, suggestion_source=None)
def _create_column_selector(self, cols)
def _create_label(self, label_text)
def OnColumns(self, event)
def _create_components(self, label, cols)
def OnAddRow(self, event)
def _create_editor(self, value, label, settings)
def __init__(self, parent, value, label=None, validator=None, settings=None)
def _create_editor(self, value, label, settings)
color_secondary_foreground
def set_validator(self, validator)
color_secondary_background
def on_key_down(self, event)
def SetSelection(self, event)
def set_number_of_columns(self, columns)
def OnInsertCells(self, event)
def _write_content(self, value)
def _set_cols(self, new_cols)
def OnDelete(self, event)
def resize_columns(self, width)
def _delete_cells_from_multiple_rows(self, event)
def _set_default_sizes(self)
def OnEditorShown(self, event)
def _insert_or_delete_cells_on_single_row(self, action, event)
def __init__(self, parent, value, num_cols)
def _insert_cells_to_multiple_rows(self, event)
def OnSelectAll(self, event)
def OnDeleteCells(self, event)
def _update_history(self)
def write_cell(self, row, col, value, update_history=True)
def bind_keys_to_evt_menu(target, actions)