1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 from __future__ import with_statement
20
21
22 import os.path
23
24 import wx
25
26 from timelinelib.plugin.factory import EXPORTER
27 from timelinelib.plugin.pluginbase import PluginBase
28 from timelinelib.wxgui.dialogs.export.controller import CSV_FILE
29 from timelinelib.wxgui.dialogs.export.view import ExportDialog
30 from timelinelib.wxgui.utils import _ask_question
31 from timelinelib.wxgui.utils import WildcardHelper
32
33
35
38
40 return _("Export Timeline to File...")
41
45
46 - def run(self, main_frame):
52
58
59
61
62 - def __init__(self, timeline, path, dlg):
71
76
78 if self.export_events:
79 self._write_label(f, _("Events"))
80 self._write_heading(f, event_fields)
81 self._write_events_fields(f, event_fields)
82
84 if self.export_categories:
85 self._write_label(f, _("Categories"))
86 self._write_heading(f, category_fields)
87 self._write_categories_fields(f, category_fields)
88
92
94 for field in fields:
95 self._write_encoded_text(f, field)
96 f.write("\n")
97
102
106
108 if _("Text") in event_fields:
109 self._write_encoded_text(f, event.get_text())
110 if _("Description") in event_fields:
111 self._write_encoded_text(f, self._get_event_description(event))
112 if _("Start") in event_fields:
113 self._write_time_value(f, event.get_time_period().start_time)
114 if _("End") in event_fields:
115 self._write_time_value(f, event.get_time_period().end_time)
116 if _("Category") in event_fields:
117 self._write_encoded_text(f, self._get_event_category(event))
118 if _("Fuzzy") in event_fields:
119 self._write_boolean_value(f, event.get_fuzzy())
120 if _("Locked") in event_fields:
121 self._write_boolean_value(f, event.get_locked())
122 if _("Ends Today") in event_fields:
123 self._write_boolean_value(f, event.get_ends_today())
124 if _("Hyperlink") in event_fields:
125 f.write("%s;" % event.get_hyperlink())
126 if _("Progress") in event_fields:
127 f.write("%s;" % event.get_progress())
128 if _("Progress Color") in event_fields:
129 self._write_color_value(f, event.get_progress_color())
130 if _("Done Color") in event_fields:
131 self._write_color_value(f, event.get_done_color())
132 if _("Alert") in event_fields:
133 f.write("%s;" % self._get_alert_string(event.get_alert()))
134 if _("Is Container") in event_fields:
135 self._write_boolean_value(f, event.is_container())
136 if _("Is Subevent") in event_fields:
137 self._write_boolean_value(f, event.is_subevent())
138 f.write("\n")
139
152
158
164
168
170 if cat._get_parent() is not None:
171 return self._encode_text(cat._get_parent().get_name())
172 else:
173 return ""
174
177
179 if alert:
180 time, text = alert
181 return "%s %s" % (self._get_time_string(time), self._encode_text(text))
182 else:
183 return ""
184
185 - def _write_encoded_text(self, f, text):
186 if text is not None:
187 text = text.replace('"', '""')
188 f.write("\"%s\";" % self._encode_text(text))
189
190 - def _encode_text(self, text):
191 if text is not None:
192 return text.encode(self.text_encoding, self.encoding_error_strategy)
193 else:
194 return text
195
198
201
204
205
207 image_type = None
208 path = None
209 file_info = _("export files")
210 file_types = [("csv", "")]
211 images_wildcard_helper = WildcardHelper(file_info, file_types)
212 wildcard = images_wildcard_helper.wildcard_string()
213 dialog = wx.FileDialog(main_frame, message=_("Export"), wildcard=wildcard, style=wx.FD_SAVE)
214 if dialog.ShowModal() == wx.ID_OK:
215 path = images_wildcard_helper.get_path(dialog)
216 image_type = images_wildcard_helper.get_extension_data(path)
217 dialog.Destroy()
218 return path, image_type
219
220
222 if os.path.exists(path):
223 overwrite_question = _("File '%s' exists. Overwrite?") % path
224 return _ask_question(overwrite_question, main_frame) == wx.YES
225 return True
226