home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/env python
- # -*- coding: iso-8859-1 -*-
-
- """ This script changes quotation marks from " " to french style """
-
- import sys
-
- try:
- from scribus import *
- except ImportError:
- print "This script only runs from within Scribus."
- sys.exit(1)
-
- import re
-
- TITLE = "Text quoting"
-
- # These need to be declared as unicode strings until some
- # charset issues in the scripter are worked out.
- QUOTE_START = u""
- QUOTE_END = u""
-
- def quote(textobj):
- quoted_re = re.compile('"[^"]*"')
- try:
- text = getText(textobj)
- except WrongFrameTypeError:
- messageBox("quote.py", "Cannot quote text in a non-text frame", ICON_INFORMATION);
- sys.exit(1)
- if len(text) == 0:
- return 0 # We can't very well change anything in an empty frame
- count = 0
- i = 0
- selectText(0, 0, textobj)
- while i < len(text):
- match = quoted_re.match(text[i:])
- if match:
- end = match.end()
- selectText(i, 1, textobj)
- deleteText(textobj)
- insertText(QUOTE_START, i, textobj)
- selectText(i + end - 1, 1, textobj)
- deleteText(textobj)
- insertText(QUOTE_END, i + end - 1, textobj)
- count += 1
- i = i + end
- else:
- i = i + 1
- return count
-
-
- def main():
- changed = 0
- sel_count = selectionCount()
- if sel_count:
- for i in range(sel_count):
- changed += quote(getSelectedObject(i))
- else:
- for page in range(pageCount()):
- gotoPage(page)
- for obj in getAllObjects():
- changed += quote(obj)
- messageBox(TITLE, "%s quotations changed" % changed,
- ICON_INFORMATION, BUTTON_OK)
-
- if __name__ == '__main__':
- if haveDoc():
- try:
- setRedraw(False)
- main()
- finally:
- setRedraw(True)
- redrawAll()
- else:
- messageBox(TITLE, "No document open", ICON_WARNING, BUTTON_OK)
-