Individual contributors are not identified, but thanks to all who participate in the maillist and who make it a very friendly and helpful source of information. Special thanks must go to David Pilling, the author of Ovation Pro, for his many illuminating contributions, and for taking note of every comment raised on the list. Thanks also to Chris Wragg who sent me some hints he had already extracted from the maillist. Some of the material here is based upon his work.
There are some hints and tips available on David Pilling's site, which might also prove useful.
(1) Find the lines in function abbrev_fix() which read:
// check if key is 'space', 'new para', 'tab', 'new line' or 'new page'
if (key == 32 || key == 13 || key == 394 || key == 2061 || key == 6669)
and change the lower line to read:
if (key == 32 || key == 13 || key == 394 || key == 2061 || key == 6669 ||
abbrev_ispunct(key))
(2) Then add the following lines near the top of the file, after the
line which starts 'string abbrev_path=' and before the definition of
function abbrev_readdata():
int abbrev_ispunct(int c)
{
return "!'?.,:;/\""/chars(c)+1;
}
The stuff in the quotes consists of a list of punctuation marks which you want to be able to trigger abbreviation expansion. If you want the plain double quotes to be included, you need to prefix it with a backward slash.
type("{Deleteb}" * l + s);
{type("{Deleteb}" * l + s);if(key==' ') key=-1;}
| Function | Name | Macro |
|---|---|---|
| Normal Title All Caps | aa Aa AA | {case_entry(0,0)} {case_entry(1,0)} {case_entry(2,0)} |
While these don't have the toggle effect of swapcase, they seem to do the trick.
majorversion:1
minorversion:2
ColPal
int colpal_palette = 1;
Change the 1 to a 0.
PagePal
int pagepal_toolbox = 1;
again change 1 to 0.
StylePal
int stylepal_palette = 1;
again change 1 to 0.
int colpal_centre = 1;
The stylesheet will only contain frames that are on the master page and that leads back to the original problem of having frames on the first page via the master page and not on subsequent ones.
So the suggestion is this. Instead of using stylesheets, set up a document, with a full size default master frame. Close the master pages, then on the first document page, set up your logo, address panel etc.. If the master frame is too big, then just overlay it with a frame to make it the right size. Save this document to use as your template. When you load it, you'll get the blank frames, for filling in the address etc. When you enter text that flows, subsequent pages will be of the form of the master page - full size frame with no logo boxes etc..
I made the following simple alteration to the "Facing pages" macro, which enables you to toggle between a single page at 100% and facing pages at 50% with one click of the mouse.
Replace the existing definition of the facingpages macro with the following line.
{if (getfacingpages()==0) setzoom(ZOOM50,0,0);else setzoom(ZOOM100,0,0);
setfacingpages(!getfacingpages())}
Before creating the index, it is important that you have, or create, a new blank chapter at the end of the document Master page after the last chapter; remove the footer if it's copied from a previous chapter. Close the master page. Create the Index as detailed in Peter's help file. You should then find you have the end of the document proper, a blank chapter, followed by the index.
Click in the blank chapter... Then... Click Menu Page->Delete chapter. You should now be left with the document followed by the index.
This uses the auto-link feature of OvnPro that was new with version 2.46. The facility is very flexible. Suppose you want 4 frames on a page for a flowing story and a fifth for a picture or some blurb.
On the master page, set up the frames, and then, using the link tool, link 1 - 2, 2 - 3, 3 - 4 and 4 - 1, which means that overflow in frame 4 will produce a new page. The link from 4 to 1 will be displayed in green to indicate its special function. Frame 5 is not linked with itself and therefore will not generate new pages, but will simply overflow.
{stylepal_entry(0,0)}
{colpal_entry(0,0)}
{pagepal_entry(0,0)}
WimpSlot -min 1388K -max 1388K
WimpSlot -min 1184K -max 1184K
MERGE_02={merge 901 "time" "{gettimestring(\"%24:%MI:%SE\", macv)}"}
MERGE_03={merge 902 "filename" "{fileinfo(currentfile(), macv)}"}
MERGE_04={merge 903 "numpages" "{int
i,n,f,c; f=currentfile(); c=documentchapters(f); for(i=0; i<c; i++)n+=chapterpages(i,f); macv=itos(n)}"}
Note: Merge requires that the CSV field has a valid entry. The First button works OK, but when you try to print without a CSV entry it produces an error
Filing system ADFS: must be given a file name
Any CSV file will do because the merge does not actually read any data from there.
printchoices(0,8505,250,200000);
http://www.davidpilling.com/fix.zip
Note that this fixes the problems for all applications, not just Ovation Pro.
{int b;b=bmcreate(\"k1\");setbmtocaret(b);bmmove(b,1,4);setzonetobm
(b);bmdelete(b);}
That will give you a key press which selects to the end of the current story.
set thesaurus$running 1
and;
unset thesaurus$running
Then define a macro (for C_T) with the body
{string s="thesaurus$running";if(!getenvs(s)) {osclis("wimptask run <Thesaurus$Dir>.!Run");pause(5)}}{'C_T}
Note: It is necessary that <Thesaurus$Dir> needs to have been defined. To ensure this copy the "Set Thesaurus$Dir <Obey$Dir>" line from the !Run file of the Thesaurus application to its !Boot file also. Either allow the filer to "see" the Thesaurus application before attempting to use the macro, or Filer_Boot the Thesaurus application in your boot sequence.
There is more discussion in the January 1998 archive.
// messagebox("Printer type = " + itoxs(i));
Remove the two //'s from the start of the line. Resave, quit OPro, reload OPro, print, and it will stick up a message box telling you the type of printer you have. Now compare with the numbers in the comments at the start of the file...
If this isn't one of the turbo options listed in this file, try changing
the line underneath by adding || i == 0xNN, where NN is the printer type returned. You should then, of course, put the two //'s back into the CCprfix file and resave yet again, to prevent the message box appearing every time.
The line will look something like the following.
if(i == 0x10 || i == 0x11 || i == 0x12 || i == 0x5 || i == 0x13)
defmacro2(0,"select","{picktool(1,0)}","select","Select tool.|MThis is the
default tool used to select objects and edit text.");
You can see the help text - the last argument of defmacro2()
which is an enhanced version of the original defmacro()
function. I suppose it gets complicated because you can't just type the help
text into an icon.