Source code for timelinelib.wxgui.dialogs.preferences.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 os

import wx

from timelinelib.wxgui.components.font import deserialize_font
from timelinelib.wxgui.framework import Controller
from timelinelib.config.paths import EVENT_ICONS_DIR


[docs]class PreferencesDialogController(Controller):
[docs] def on_init(self, config, experimental_features): self.config = config self.experimental_features = experimental_features self.weeks_map = ((0, "monday"), (1, "sunday")) self._set_initial_values()
[docs] def on_close(self): self.config.minor_strip_divider_line_colour = str(self.view.GetMinorStripColor()) self.config.major_strip_divider_line_colour = str(self.view.GetMajorStripColor()) self.config.now_line_colour = str(self.view.GetNowLineColor()) self.config.weekend_colour = str(self.view.GetWeekendColor()) self.config.bg_colour = str(self.view.GetBgColor()) self.config.legend_pos = self.view.GetLegendPos() self.config.time_scale_pos = self.view.GetTimeScalePos() self.config.default_year = self.view.GetDefaultYear() self.config.default_month = self.view.GetDefaultMonth() self.config.default_day = self.view.GetDefaultDay() self.config.workday_length = self.view.GetWorkdayLength()
[docs] def on_open_recent_change(self, event): self.config.open_recent_at_startup = event.IsChecked()
[docs] def on_inertial_scrolling_changed(self, event): self.config.use_inertial_scrolling = event.IsChecked()
[docs] def on_never_period_point_changed(self, event): self.config.never_show_period_events_as_point_events = event.IsChecked()
[docs] def on_center_text_changed(self, event): self.config.center_event_texts = event.IsChecked()
[docs] def on_display_checkmark_on_events_done_changed(self, event): self.config.display_checkmark_on_events_done = event.IsChecked()
[docs] def on_week_start_changed(self, event): self.config.set_week_start(self._index_week(event.GetSelection()))
[docs] def on_date_formatter_click(self, event): self.view.ShowSelectDateFormatDialog(self.config) self.view.SetCurrentDateFormat("%s: %s" % (_("Current"), self.config.date_format))
[docs] def on_uncheck_time_for_new_events(self, event): self.config.uncheck_time_for_new_events = event.IsChecked()
[docs] def on_text_below_icon(self, event): self.config.text_below_icon = event.IsChecked()
[docs] def on_filtered_listbox_export(self, event): self.config.filtered_listbox_export = event.IsChecked()
[docs] def on_tab_order_click(self, event): self.view.ShowSelectTabOrderDialog(self.config)
[docs] def on_balloon_click(self, evt): font = deserialize_font(self.config.balloon_font) if self.view.ShowEditFontDialog(font): self.config.balloon_font = font.serialize() self.view.SetBalloonFont(font)
[docs] def on_event_click(self, evt): font = deserialize_font(self.config.event_font) if self.view.ShowEditFontDialog(font): self.config.event_font = font.serialize() self.view.SetEventFont(font)
[docs] def on_era_click(self, evt): font = deserialize_font(self.config.era_font) if self.view.ShowEditFontDialog(font): self.config.era_font = font.serialize() self.view.SetEraFont(font)
[docs] def on_major_strip_click(self, event): font = deserialize_font(self.config.major_strip_font) if self.view.ShowEditFontDialog(font): self.config.major_strip_font = font.serialize() self.view.SetMajorStripFont(font)
[docs] def on_minor_strip_click(self, event): font = deserialize_font(self.config.minor_strip_font) if self.view.ShowEditFontDialog(font): self.config.minor_strip_font = font.serialize() self.view.SetMinorStripFont(font)
[docs] def on_legend_click(self, event): font = deserialize_font(self.config.legend_font) if self.view.ShowEditFontDialog(font): self.config.legend_font = font.serialize() self.view.SetLegendFont(font)
[docs] def on_experimental_changed(self, event): self.experimental_features.set_active_state_on_feature_by_name( event.GetEventObject().GetLabel(), event.IsChecked()) self.config.experimental_features = str(self.experimental_features)
[docs] def on_fuzzy_icon_changed(self, event): self.config.fuzzy_icon = event.GetString() self.view.DisplayIcons()
[docs] def on_locked_icon_changed(self, event): self.config.locked_icon = event.GetString() self.view.DisplayIcons()
[docs] def on_vertical_space_between_events_click(self, event): self.config.vertical_space_between_events = self.view.GetVerticalSpaceBetweenEvents()
[docs] def on_use_bold_nowline(self, event): self.config.use_bold_nowline = self.view.GetUseBoldNowline()
[docs] def on_colorize_weekends(self, event): self.config.colorize_weekends = self.view.GetColorizeWeekends()
[docs] def on_skip_s_in_decade_text(self, event): self.config.skip_s_in_decade_text = self.view.GetSkipSInDecadeText()
[docs] def on_never_use_time_change(self, event): self.config.never_use_time = self.view.GetNeverUseTime()
[docs] def on_use_second_change(self, event): self.config.use_second = self.view.GetUseSecond()
[docs] def on_use_date_default_values(self, event): self.config.use_date_default_values = self.view.GetUseDateDefaultValues()
def on_use_sidebar_text_coloring(self, evt): self.config.use_sidebar_text_coloring = self.view.GetUseSidebarTextColoring()
[docs] def on_use_sidebar_text_coloring(self, evt): self.config.use_sidebar_text_coloring = self.view.GetUseSidebarTextColoring()
[docs] def on_use_sidebar_filter_hint(self, evt): self.config.use_sidebar_filter_hint = self.view.GetUseSidebarFilterHint()
def _set_initial_values(self): self.view.SetOpenRecentCheckboxValue(self.config.open_recent_at_startup) self.view.SetInertialScrollingCheckboxValue(self.config.use_inertial_scrolling) self.view.SetNeverPeriodPointCheckboxValue(self.config.never_show_period_events_as_point_events) self.view.SetCenterTextCheckboxValue(self.config.center_event_texts) self.view.SetWeekStartSelection(self._week_index(self.config.get_week_start())) self.view.AddExperimentalFeatures(self.experimental_features.get_all_features()) self.view.SetUncheckTimeForNewEventsCheckboxValue(self.config.uncheck_time_for_new_events) self.view.SetTextBelowIconCheckboxValue(self.config.text_below_icon) self.view.SetFilteredListboxExport(self.config.filtered_listbox_export) self.view.SetMinorStripColor(wx.Colour(*self.config.minor_strip_divider_line_colour)) self.view.SetMajorStripColor(wx.Colour(*self.config.major_strip_divider_line_colour)) self.view.SetNowLineColor(wx.Colour(*self.config.now_line_colour)) self.view.SetWeekendColor(wx.Colour(*self.config.weekend_colour)) self.view.SetBgColor(wx.Colour(*self.config.bg_colour)) choices = [f for f in os.listdir(EVENT_ICONS_DIR) if f.endswith(".png")] self.view.SetIconsChoices(choices) self.view.SetFuzzyIcon(self.config.fuzzy_icon) self.view.SetLockedIcon(self.config.locked_icon) self.view.SetHyperlinkIcon(self.config.hyperlink_icon) self.view.SetCurrentDateFormat("%s: %s" % (_("Current"), self.config.date_format)) self.view.DisplayIcons() self.view.SetVerticalSpaceBetweenEvents(self.config.vertical_space_between_events) self.view.SetColorizeWeekends(self.config.colorize_weekends) self.view.SetUseBoldNowline(self.config.use_bold_nowline) self.view.SetSkipSInDecadeText(self.config.skip_s_in_decade_text) self.view.SetDisplayCheckmarkOnEventsDone(self.config.display_checkmark_on_events_done) self.view.SetNeverUseTime(self.config.never_use_time) self.view.SetUseSecond(self.config.use_second) self.view.SetUseDateDefaultValues(self.config.use_date_default_values) self.view.SetDefaultYear(self.config.default_year) self.view.SetDefaultMonth(self.config.default_month) self.view.SetDefaultDay(self.config.default_day) self.view.SetMajorStripFont(deserialize_font(self.config.major_strip_font)) self.view.SetMinorStripFont(deserialize_font(self.config.minor_strip_font)) self.view.SetLegendFont(deserialize_font(self.config.legend_font)) self.view.SetBalloonFont(deserialize_font(self.config.balloon_font)) self.view.SetEventFont(deserialize_font(self.config.event_font)) self.view.SetEraFont(deserialize_font(self.config.era_font)) self.view.SetLegendPos(self.config.legend_pos) self.view.SetTimeScalePos(self.config.time_scale_pos) self.view.SetWorkdayLength(self.config.workday_length) self.view.SetUseSidebarTextColoring(self.config.use_sidebar_text_coloring) self.view.SetUseSidebarFilterHint(self.config.use_sidebar_filter_hint) def _week_index(self, week): for (i, w) in self.weeks_map: if w == week: return i raise ValueError("Unknown week '%s'." % week) def _index_week(self, index): for (i, w) in self.weeks_map: if i == index: return w raise ValueError("Unknown week index '%s'." % index)