Source code for timelinelib.wxgui.dialogs.filenew.view

# 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.wxgui.dialogs.filenew.controller import FileNewDialogController
from timelinelib.wxgui.framework import Dialog
from timelinelib.calendar.gregorian.timetype import GregorianTimeType
from timelinelib.calendar.bosparanian.timetype.timetype import BosparanianTimeType
from timelinelib.calendar.pharaonic.timetype.timetype import PharaonicTimeType
from timelinelib.calendar.coptic.timetype.timetype import CopticTimeType
from timelinelib.calendar.num.timetype.timetype import NumTimeType


[docs]class FileNewDialog(Dialog): """ <BoxSizerVertical> <StaticText label="$(explanation_text)" border="ALL" /> <BoxSizerHorizontal proportion="1" border="LEFT|RIGHT" > <ListBox name="type_list" width="150" height="200" event_EVT_LISTBOX="on_selection_changed" /> <StaticBoxSizerVertical proportion="1" label="$(description_text)" border="LEFT" > <StaticText name="description" width="200" style="ST_NO_AUTORESIZE" proportion="1" border="ALL" /> </StaticBoxSizerVertical> </BoxSizerHorizontal> <DialogButtonsOkCancelSizer border="ALL" /> </BoxSizerVertical> """
[docs] def __init__(self, parent, items): Dialog.__init__(self, FileNewDialogController, parent, { "explanation_text": _("Choose what type of timeline you want to create."), "description_text": _("Description"), }, title=_("Create new timeline"), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) self.controller.on_init(items)
[docs] def SetItems(self, items): self.type_list.SetItems(items) self.type_list.SetFocus()
[docs] def SelectItem(self, index): self.type_list.SetSelection(index) event = wx.CommandEvent() event.SetInt(index) self.controller.on_selection_changed(event)
[docs] def SetDescription(self, text): self.description.SetLabel(text)
[docs] def GetSelection(self): return self.controller.get_selection()
[docs]def open_file_new_dialog(parent): items = [ { "text": _("Gregorian"), "description": _("This creates a timeline using the standard calendar."), "timetype": GregorianTimeType, }, { "text": _("Numeric"), "description": _("This creates a timeline that has numbers on the x-axis instead of dates."), "timetype": NumTimeType, }, { "text": _("Directory"), "description": _("This creates a timeline where the modification date of files in a directory are shown as events."), "timetype": lambda: "dir", }, { "text": _("Bosparanian"), "description": _("This creates a timeline using the fictional Bosparanian calendar from the German pen-and-paper RPG \"The Dark Eye\" (\"Das schwarze Auge\", DSA)."), "timetype": BosparanianTimeType, }, { "text": _("Pharaonic"), "description": _("This creates a timeline using the ancient egypt pharaonic calendar"), "timetype": PharaonicTimeType, }, { "text": _("Coptic"), "description": _("This creates a timeline using the coptic calendar"), "timetype": CopticTimeType, }, ] dialog = FileNewDialog(parent, items) if dialog.ShowModal() == wx.ID_OK: parent.controller.create_new_timeline(timetype=dialog.GetSelection()["timetype"]()) dialog.Destroy()