QScintilla/Exporters/ExporterBase.py

changeset 0
de9c2efb9d02
child 13
1af94a91f439
equal deleted inserted replaced
-1:000000000000 0:de9c2efb9d02
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2007 - 2009 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the exporter base class.
8 """
9
10 from PyQt4.QtCore import *
11 from PyQt4.QtGui import *
12
13 import Utilities
14
15 class ExporterBase(QObject):
16 """
17 Class implementing the exporter base class.
18 """
19 def __init__(self, editor, parent = None):
20 """
21 Constructor
22
23 @param editor reference to the editor object (QScintilla.Editor.Editor)
24 @param parent parent object of the exporter (QObject)
25 """
26 QObject.__init__(self, parent)
27 self.editor = editor
28
29 def _getFileName(self, filter):
30 """
31 Protected method to get the file name of the export file from the user.
32
33 @param filter the filter string to be used (string). The filter for
34 "All Files (*)" is appended by this method.
35 """
36 filter_ = filter
37 filter_ += ";;"
38 filter_ += QApplication.translate('Exporter', "All Files (*)")
39 fn, selectedFilter = QFileDialog.getSaveFileNameAndFilter(
40 self.editor,
41 self.trUtf8("Export source"),
42 "",
43 filter_,
44 "",
45 QFileDialog.Options(QFileDialog.DontConfirmOverwrite))
46
47 if fn:
48 ext = QFileInfo(fn).suffix()
49 if not ext:
50 ex = selectedFilter.split("(*")[1].split(")")[0]
51 if ex:
52 fileName += ex
53 if QFileInfo(fn).exists():
54 res = QMessageBox.warning(self.editor,
55 self.trUtf8("Export source"),
56 self.trUtf8("<p>The file <b>{0}</b> already exists.</p>")
57 .format(fn),
58 QMessageBox.StandardButtons(\
59 QMessageBox.Abort | \
60 QMessageBox.Save),
61 QMessageBox.Abort)
62 if res == QMessageBox.Abort or res == QMessageBox.Cancel:
63 return ""
64
65 fn = Utilities.toNativeSeparators(fn)
66
67 return fn
68
69 def exportSource(self):
70 """
71 Public method performing the export.
72
73 This method must be overridden by the real exporters.
74 """
75 raise NotImplementedError

eric ide

mercurial