1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import wx
20 import wx.lib.colourselect as colourselect
21
22 import timelinelib.wxgui.utils as gui_utils
23 from timelinelib.wxgui.utils import _display_error_message
24 from timelinelib.wxgui.utils import _set_focus_and_select
25 from timelinelib.wxgui.utils import BORDER
26 from timelinelib.editors.category import CategoryEditor
27 from timelinelib.repositories.dbwrapper import DbWrapperCategoryRepository
28
29
31
32 - def __init__(self, parent, title, timeline, category):
37
39 def add_tree(tree, indent=""):
40 for (root, subtree) in tree:
41 self.parentlistbox.Append(indent + root.name, root)
42 add_tree(subtree, indent + " ")
43 self.parentlistbox.Clear()
44 self.parentlistbox.Append("", None)
45 add_tree(tree)
46 self.SetSizerAndFit(self.vbox)
47
49 return self.txt_name.GetValue().strip()
50
53
55
56 (r, g, b) = self.colorpicker.GetValue()
57 return (r, g, b)
58
60
61 (r, g, b) = self.fontcolorpicker.GetValue()
62 return (r, g, b)
63
66
68 self.fontcolorpicker.SetValue(new_color)
69
71 selection = self.parentlistbox.GetSelection()
72 if selection == wx.NOT_FOUND:
73 return None
74 return self.parentlistbox.GetClientData(selection)
75
77 no_items = self.parentlistbox.GetCount()
78 for i in range(0, no_items):
79 if self.parentlistbox.GetClientData(i) is parent:
80 self.parentlistbox.SetSelection(i)
81 return
82
84 self.EndModal(wx.ID_OK)
85
87 msg = _("Category name '%s' not valid. Must be non-empty.")
88 _display_error_message(msg % name, self)
89 _set_focus_and_select(self.txt_name)
90
92 msg = _("Category name '%s' already in use.")
93 _display_error_message(msg % name, self)
94 _set_focus_and_select(self.txt_name)
95
98
101
103 self.vbox = wx.BoxSizer(wx.VERTICAL)
104 field_grid = self._create_field_grid()
105 button_box = self._create_button_box()
106 self.vbox.Add(field_grid, flag=wx.ALL|wx.EXPAND, border=BORDER)
107 self.vbox.Add(button_box, flag=wx.ALL|wx.EXPAND, border=BORDER)
108 _set_focus_and_select(self.txt_name)
109
111 self.txt_name = wx.TextCtrl(self, size=(150, -1))
112 self.colorpicker = colourselect.ColourSelect(self)
113 self.fontcolorpicker = colourselect.ColourSelect(self)
114 self.parentlistbox = wx.Choice(self, wx.ID_ANY)
115 grid = wx.FlexGridSizer(3, 2, BORDER, BORDER)
116 self._add_ctrl_to_grid(_("Name:"), self.txt_name, grid)
117 self._add_ctrl_to_grid(_("Color:"), self.colorpicker, grid)
118 self._add_ctrl_to_grid(_("Font Color:"), self.fontcolorpicker, grid)
119 self._add_ctrl_to_grid(_("Parent:"), self.parentlistbox, grid)
120 return grid
121
123 grid.Add(wx.StaticText(self, label=name), flag=wx.ALIGN_CENTER_VERTICAL)
124 grid.Add(ctrl)
125
130
132 self.controller.save()
133