Source code for timelinelib.wxgui.dialogs.eraseditor.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/>.


import wx

from timelinelib.canvas.data.era import Era
from timelinelib.wxgui.dialogs.eraeditor.view import EraEditorDialog
from timelinelib.wxgui.framework import Controller


[docs]class ErasEditorDialogController(Controller):
[docs] def on_init(self, db, config): self.db = db self.config = config self.eras = db.get_all_eras() self.view.SetEras(self.eras) self.editor_dialog = None
[docs] def on_edit(self, evt): self._edit(self.view.GetSelectedEra())
[docs] def on_dclick(self, evt): self._edit(self.view.GetSelectedEra())
[docs] def on_add(self, evt): self._operate_with_modal_dialog( _("Add an Era"), self._create_era(), self._after_add )
[docs] def on_remove(self, evt): era = self.view.GetSelectedEra() if era in self.eras: self.eras.remove(era) self.view.RemoveEra(era) self.db.delete_era(era)
def _after_add(self, era): self.eras.append(era) self.view.AppendEra(era) self.db.save_era(era) def _edit(self, era): self._operate_with_modal_dialog( _("Edit an Era"), era, self._after_edit ) def _after_edit(self, era): self.view.UpdateEra(era) self.db.save_era(era) def _create_era(self): start = self.db.time_type.now() end = start return Era().update(start, end, "New Era") def _operate_with_modal_dialog(self, label, era, operation): if self.editor_dialog is None: self.set_editor_dialog(EraEditorDialog(self.view, label, self.db.time_type, self.config, era)) dlg = self.editor_dialog if dlg.ShowModal() == wx.ID_OK: operation(era) dlg.Destroy() self.editor_dialog = None
[docs] def set_editor_dialog(self, dialog): """ This function is used for test purposes only """ self.editor_dialog = dialog