Difference between revisions of "Date Setting by Script"

From Scribus Wiki
Jump to navigation Jump to search
Line 4: Line 4:
  
 
[[File:Dateheader.png]]
 
[[File:Dateheader.png]]
 +
 +
To the left is a static title, then the date is displayed with a particular format, and there is a right tab to place the date properly in the frame. Top and Left distances bring the line of text in the middle of the frame. I thought it would be nice to just run a short script to update the date each time I made another, and such commands are avaiable in a standard Python distribution.
 +
 +
Here is the script that does what you see here:
 +
 +
<pre>
 +
#!/usr/bin/env python
 +
# -*- coding: utf-8  -*-
 +
# header_date.py
 +
 +
try:
 +
    import scribus
 +
except ImportError:
 +
    print "Unable to import the 'scribus' module. This script will only run within"
 +
    print "the Python interpreter embedded in Scribus. Try Script->Execute Script."
 +
    sys.exit(1)
 +
 +
from datetime import date
 +
 +
if not scribus.haveDoc():
 +
    scribus.messageBox('Scribus - Script Error', "No document open", scribus.ICON_WARNING, scribus.BUTTON_OK)
 +
    sys.exit(1)
 +
 +
if scribus.selectionCount() == 0:
 +
    scribus.messageBox('Scribus - Script Error',
 +
            "There is no object selected.\nPlease select a text frame and try again.",
 +
            scribus.ICON_WARNING, scribus.BUTTON_OK)
 +
    sys.exit(2)
 +
if scribus.selectionCount() > 1:
 +
    scribus.messageBox('Scribus - Script Error',
 +
            "You have more than one object selected.\nPlease select one text frame and try again.",
 +
            scribus.ICON_WARNING, scribus.BUTTON_OK)
 +
    sys.exit(2)
 +
textbox = scribus.getSelectedObject()
 +
ftype = scribus.getObjectType(textbox)
 +
 +
if (ftype != "TextFrame"):
 +
    scribus.messageBox('Scribus - Script Error', "This is not a textframe. Try again.", scribus.ICON_WARNING, scribus.BUTTON_OK)
 +
    sys.exit(2)
 +
 +
scribus.deleteText(textbox)
 +
 +
today = date.today()
 +
d = today.strftime("%A, %B %d, %Y")
 +
headerstr = "Scribus Times & Gazette\t" + d
 +
scribus.setText(headerstr, textbox)
 +
scribus.setStyle("header", textbox)
 +
 +
</pre>

Revision as of 02:07, 21 September 2012

A small chore I have been having is to daily create a page which has a header including the date. This kind of thing might come up with someone making a newsletter or other periodical.

Here is something like I wanted my header to look:

Dateheader.png

To the left is a static title, then the date is displayed with a particular format, and there is a right tab to place the date properly in the frame. Top and Left distances bring the line of text in the middle of the frame. I thought it would be nice to just run a short script to update the date each time I made another, and such commands are avaiable in a standard Python distribution.

Here is the script that does what you see here:

#!/usr/bin/env python
# -*- coding: utf-8  -*-
# header_date.py

try:
     import scribus
except ImportError:
     print "Unable to import the 'scribus' module. This script will only run within"
     print "the Python interpreter embedded in Scribus. Try Script->Execute Script."
     sys.exit(1)

from datetime import date

if not scribus.haveDoc():
     scribus.messageBox('Scribus - Script Error', "No document open", scribus.ICON_WARNING, scribus.BUTTON_OK)
     sys.exit(1)

if scribus.selectionCount() == 0:
     scribus.messageBox('Scribus - Script Error',
             "There is no object selected.\nPlease select a text frame and try again.",
             scribus.ICON_WARNING, scribus.BUTTON_OK)
     sys.exit(2)
if scribus.selectionCount() > 1:
     scribus.messageBox('Scribus - Script Error',
             "You have more than one object selected.\nPlease select one text frame and try again.",
             scribus.ICON_WARNING, scribus.BUTTON_OK)
     sys.exit(2)
textbox = scribus.getSelectedObject()
ftype = scribus.getObjectType(textbox)

if (ftype != "TextFrame"):
     scribus.messageBox('Scribus - Script Error', "This is not a textframe. Try again.", scribus.ICON_WARNING, scribus.BUTTON_OK)
     sys.exit(2)

scribus.deleteText(textbox)

today = date.today()
d = today.strftime("%A, %B %d, %Y")
headerstr = "Scribus Times & Gazette\t" + d
scribus.setText(headerstr, textbox)
scribus.setStyle("header", textbox)