#Rationale Version 150.60 can_be_loaded_by 120.53 uses_features_from 120.53 #-- Start of Prelude -- Node = None Views = [] Loading = True ScratchpadTextSupported = CurrentFileFormat.IsLaterThan(130, 55) PictureSupported = CurrentFileFormat.IsLaterThan(140, 56) TagsSupported = CurrentFileFormat.IsLaterThan(140, 57) TypeSupported = CurrentFileFormat.IsLaterThan(140, 60) EditPromptSupported = CurrentFileFormat.IsLaterThan(140, 57) ShowOutlineSupported = CurrentFileFormat.IsLaterThan(140, 57) LockHeadingSupported = CurrentFileFormat.IsLaterThan(140, 58) OrientationSupported = CurrentFileFormat.IsLaterThan(140, 59) HideChildrenSupported = CurrentFileFormat.IsLaterThan(150, 60) MinimizeNodeSupported = CurrentFileFormat.IsLaterThan(150, 60) HyperlinkSupported = CurrentFileFormat.IsLaterThan(150, 60) if not CurrentFileFormat.IsLaterThan(130, 54): morphTarget = None def Create(type): global Node if morphTarget == None: Node = app.Create(type) else: Morph(morphTarget, type) Node = morphTarget return Node def CreateChild(parent, type): global Node Node = app.CreateChild(parent, type) return Node def CreateAnnotation(parent, type): global Node Node = app.CreateAnnotation(parent, type) return Node def SetText(text): app.SetText(Node, text) def SetTag(key, value): if TagsSupported: app.SetTag(Node, key, value) def SetCustomType(group, type): if TypeSupported: Node.CustomGroup = group Node.CustomType = type def SetEditPrompt(text): if EditPromptSupported: app.SetEditPrompt(Node, text) else: AddMissingFeature("helpful hint") def SetEvaluation(evaluation): app.SetEvaluation(Node, evaluation) def SetTint(tint): app.SetTint(Node, tint) def SetImageKey(key): if PictureSupported: app.SetImageKey(Node, key) else: AddMissingFeature("picture") def SetHyperlink(link, description, openExternally): if HyperlinkSupported: app.SetHyperlink(Node, link, description, openExternally) else: AddMissingFeature("Hyperlink") def MarkAsPureImage(): if PictureSupported and morphTarget == None: Node.IsPureImage = True def RegisterImage(name, image): if PictureSupported: app.RegisterImage(name, image) def StringToImage(guid, imageAsString): return app.StringToImage(guid, imageAsString) def Morph(node, flavor): global Node app.Morph(node, flavor) Node = node def GetFernViews(): global Views global View global Loading Views = [v for v in app.Views if v.TypeName == "FernView"] Loading = len(Views) == 0 if Loading: View = app.Gui.CreateView("FernView") Views = [ View ] else: View = app.CurrentView def SetLocation(node, x, y): for v in Views: v.SetLocation(node, x, y) def SetOffset(offsetFrom, node, x, y): if Loading: View.SetOffset(offsetFrom, node, x, y) else: for v in Views: v.SetOffset(offsetFrom, node, x, y) def SetSize(node, width, height): if Loading: View.SetSize(node, width, height) else: for v in Views: v.SetSize(node, width, height) def ShowPrintPagePreview(show): if Loading: View.ShowPrintPagePreview(show, False) def SetBackgroundImage(image): if Loading: View.SetBackgroundImage(image, False) def SetOpacity(opacity): if Loading: View.SetOpacity(opacity) def SetSelection(node): View.SetSelection(node) def SetScratchpadText(text): if ScratchpadTextSupported: app.Gui.SetScratchpadText(text) else: AddMissingFeature("saved scratchpad") def SetImageWidth(node, width): if PictureSupported: for v in Views: v.SetImageWidth(node, width) def SetShowOutline(node, show): if ShowOutlineSupported: for v in Views: v.SetShowOutline(node, show) def SetLockHeading(node, lockHeading): if LockHeadingSupported: for v in Views: v.SetLockHeading(node, lockHeading) def SetOrientation(node, orientation): if OrientationSupported: for v in Views: v.SetOrientation(node, orientation) else: AddMissingFeature("Sideways layout*") def HideChildren(node): if HideChildrenSupported: for v in Views: v.HideChildren(node) else: AddMissingFeature("Hidden children") def Minimize(node): if MinimizeNodeSupported: for v in Views: v.Minimize(node) else: AddMissingFeature("Minimized node") missing = {} def AddMissingFeature(feature): if feature not in missing: i = 1 else: i = missing[feature] + 1 missing[feature] = i def MissingFeaturesList(): list = '' for k in missing.keys(): n = missing[k] list = list + ' ' + str(n) + ' ' + k if n != 1: list = list + 's' list = list + CR() return list def GenerateMissingFeaturesReport(): if len(missing) > 0: Create("Note") SetSize(Node, 350, 100) SetText( MissingFeaturesHeader() + CR() \ + MissingFeaturesList() + CR() \ + MissingFeaturesFooter()) def MissingFeaturesHeader(): return '*' + 'Warning: This file was created with a more recent version of Rationale' + '*' + CR() \ + 'Unable to load:' def MissingFeaturesFooter(): return 'You can upgrade to the latest version of Rationale at www.austhink.com' def CR(): return '\r\n' #-- End of Prelude -- map0_0 = Create("Claim") SetText("I could have difficulties with the dangerous surf at the beach today") map1_0 = Create("Claim") SetText("I should go to the beach today") map2_0 = Create("Claim") SetText("The surf today has a rip current") map3_0 = Create("Claim") SetText("I am a strong swimmer") GetFernViews() SetLocation(map0_0, -127, -119) SetLocation(map1_0, 61, 39) SetLocation(map2_0, -300, 34) SetSize(map2_0, 167, 62) SetLocation(map3_0, -116, 167) SetSelection(map0_0) ShowPrintPagePreview(False) GenerateMissingFeaturesReport()