Source code for timelinelib.wxgui.dialogs.editcontainer.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 EditContainerDialogController(Controller):
"""
This controller is responsible for two things:
1. Creating a new container
2. Updating properties of an existing container
When creating a new container the result is NOT stored in the database.
This happens later when the first event added to the container is saved to
the database.
The reason for this behavior is that we don't want to have empty containers
in the database. When updating the properties of an existing container the
changes are stored in the timeline database.
"""
[docs] def on_init(self, db, container):
self.view.PopulateCategories()
self._create_container(db, container)
self._populate_view()
[docs] def on_ok_clicked(self, event):
if self._validate():
self._populate_container()
if self._is_updating:
self._container.save()
self.view.EndModalOk()
[docs] def get_container(self):
return self._container
def _create_container(self, db, container):
if container is None:
self._is_updating = False
self._container = db.new_container(text="", category=None)
else:
self._is_updating = True
self._container = container
def _populate_view(self):
self.view.SetName(self._container.get_text())
self.view.SetCategory(self._container.get_category())
def _validate(self):
if self.view.GetName() == "":
self.view.DisplayInvalidName(
_("Field '%s' can't be empty.") % _("Name")
)
return False
return True
def _populate_container(self):
self._container.text = self.view.GetName()
self._container.category = self.view.GetCategory()