Package Gnumed :: Package timelinelib :: Package wxgui :: Package dialogs :: Module categorieseditor
[frames] | no frames]

Source Code for Module Gnumed.timelinelib.wxgui.dialogs.categorieseditor

  1  # Copyright (C) 2009, 2010, 2011  Rickard Lindberg, Roger Lindberg 
  2  # 
  3  # This file is part of Timeline. 
  4  # 
  5  # Timeline is free software: you can redistribute it and/or modify 
  6  # it under the terms of the GNU General Public License as published by 
  7  # the Free Software Foundation, either version 3 of the License, or 
  8  # (at your option) any later version. 
  9  # 
 10  # Timeline is distributed in the hope that it will be useful, 
 11  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 12  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 13  # GNU General Public License for more details. 
 14  # 
 15  # You should have received a copy of the GNU General Public License 
 16  # along with Timeline.  If not, see <http://www.gnu.org/licenses/>. 
 17   
 18   
 19  import wx 
 20   
 21  import timelinelib.wxgui.utils as gui_utils 
 22  from timelinelib.wxgui.utils import BORDER 
 23  from timelinelib.wxgui.components.cattree import CategoriesTree 
 24  from timelinelib.wxgui.components.cattree import add_category 
 25  from timelinelib.wxgui.components.cattree import edit_category 
 26  from timelinelib.wxgui.components.cattree import delete_category 
 27   
 28   
29 -class CategoriesEditor(wx.Dialog):
30 """ 31 Dialog used to edit categories of a timeline. 32 33 The edits happen immediately. In other words: when the dialog is closing 34 all edits have been applied already. 35 """ 36
37 - def __init__(self, parent, timeline):
38 wx.Dialog.__init__(self, parent, title=_("Edit Categories")) 39 self.db = timeline 40 self.cat_tree = self._create_gui() 41 self._fill_controls_with_data()
42
43 - def _fill_controls_with_data(self):
44 self.cat_tree.initialize_from_db(self.db)
45
46 - def _create_gui(self):
47 vbox = wx.BoxSizer(wx.VERTICAL) 48 cat_tree = self._create_cat_tree(vbox) 49 self._create_buttons(vbox) 50 self.SetSizerAndFit(vbox) 51 self.Bind(wx.EVT_CLOSE, self._window_on_close) 52 return cat_tree
53
54 - def _window_on_close(self, e):
55 self.cat_tree.destroy() 56 self.EndModal(wx.ID_CLOSE)
57
58 - def _create_cat_tree(self, vbox):
59 cat_tree = CategoriesTree(self, self.db_error_handler) 60 cat_tree.SetMinSize((-1, 200)) 61 self.Bind(wx.EVT_TREE_SEL_CHANGED, self._cat_tree_on_sel_changed, 62 cat_tree) 63 vbox.Add(cat_tree, flag=wx.ALL|wx.EXPAND, border=BORDER) 64 return cat_tree
65
66 - def _cat_tree_on_sel_changed(self, e):
67 self._updateButtons()
68
69 - def _create_buttons(self, vbox):
70 button_box = wx.BoxSizer(wx.HORIZONTAL) 71 self.btn_edit = self._create_edit_button(button_box) 72 self._create_add_button(button_box) 73 self.btn_del = self._create_delete_button(button_box) 74 self._create_close_button(button_box) 75 vbox.Add(button_box, flag=wx.ALL|wx.EXPAND, border=BORDER)
76
77 - def _create_edit_button(self, button_box):
78 btn = wx.Button(self, wx.ID_EDIT) 79 btn.Disable() 80 self.Bind(wx.EVT_BUTTON, self._btn_edit_on_click, btn) 81 button_box.Add(btn, flag=wx.RIGHT, border=BORDER) 82 return btn
83
84 - def _btn_edit_on_click(self, e):
85 selected_category = self.cat_tree.get_selected_category() 86 if selected_category is not None: 87 edit_category(self, self.db, selected_category, 88 self.db_error_handler) 89 self._updateButtons()
90
91 - def _create_add_button(self, button_box):
92 btn = wx.Button(self, wx.ID_ADD) 93 self.Bind(wx.EVT_BUTTON, self._btn_add_on_click, btn) 94 button_box.Add(btn, flag=wx.RIGHT, border=BORDER) 95 return btn
96
97 - def _btn_add_on_click(self, e):
98 add_category(self, self.db, self.db_error_handler) 99 self._updateButtons()
100
101 - def _create_delete_button(self, button_box):
102 btn = wx.Button(self, wx.ID_DELETE) 103 btn.Disable() 104 self.Bind(wx.EVT_BUTTON, self._btn_del_on_click, btn) 105 button_box.Add(btn, flag=wx.RIGHT, border=BORDER) 106 return btn
107
108 - def _btn_del_on_click(self, e):
109 selected_category = self.cat_tree.get_selected_category() 110 if selected_category is not None: 111 delete_category(self, self.db, selected_category, 112 self.db_error_handler) 113 self._updateButtons()
114
115 - def _create_close_button(self, button_box):
116 btn = wx.Button(self, wx.ID_CLOSE) 117 self.Bind(wx.EVT_BUTTON, self._btn_close_on_click, btn) 118 button_box.Add(btn, flag=wx.LEFT, border=BORDER) 119 return btn
120
121 - def _btn_close_on_click(self, e):
122 self.Close()
123
124 - def db_error_handler(self, e):
125 gui_utils.handle_db_error_in_dialog(self, e)
126
127 - def _updateButtons(self):
128 selected_category = self.cat_tree.get_selected_category() is not None 129 self.btn_edit.Enable(selected_category) 130 self.btn_del.Enable(selected_category)
131