Source code for timelinelib.wxgui.dialogs.editcategory.controller

# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018  Rickard Lindberg, Roger Lindberg
#
# This file is part of Timeline.
#
# Timeline is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Timeline is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Timeline.  If not, see <http://www.gnu.org/licenses/>.


from timelinelib.wxgui.framework import Controller


[docs]class EditCategoryDialogController(Controller):
[docs] def on_init(self, db, category): self._db = db self._create_category(category) self.view.PopulateCategories(exclude=category) self._populate_view()
[docs] def on_ok_clicked(self, event): if self._validate(): self._populate_category() self._category.save() self.view.EndModalOk()
[docs] def get_edited_category(self): return self._category
def _create_category(self, category): if category is None: self._category = self._db.new_category() else: self._category = category def _populate_view(self): self.view.SetName(self._category.name) self.view.SetColor(self._category.color) self.view.SetProgressColor(self._category.progress_color) self.view.SetDoneColor(self._category.done_color) self.view.SetFontColor(self._category.font_color) self.view.SetParent(self._category.parent) def _validate(self): new_name = self.view.GetName() if not self._is_name_valid(new_name): self.view.HandleInvalidName(new_name) return False if self._is_name_in_use(new_name): self.view.HandleUsedName(new_name) return False return True def _is_name_valid(self, name): return len(name) > 0 def _is_name_in_use(self, name): for cat in self._db.get_categories(): if cat != self._category and cat.get_name() == name: return True return False def _populate_category(self): self._category.name = self.view.GetName() self._category.color = self.view.GetColor() self._category.progress_color = self.view.GetProgressColor() self._category.done_color = self.view.GetDoneColor() self._category.font_color = self.view.GetFontColor() self._category.parent = self.view.GetParent()