123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="SF_Writer" script:language="StarBasic" script:moduleType="normal">REM =======================================================================================================================
- REM === The ScriptForge library and its associated libraries are part of the LibreOffice project. ===
- REM === The SFDocuments library is one of the associated libraries. ===
- REM === Full documentation is available on https://help.libreoffice.org/ ===
- REM =======================================================================================================================
- Option Compatible
- Option ClassModule
- Option Explicit
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- ''' SF_Writer
- ''' =========
- '''
- ''' The SFDocuments library gathers a number of methods and properties making easy
- ''' managing and manipulating LibreOffice documents
- '''
- ''' Some methods are generic for all types of documents: they are combined in the SF_Document module.
- ''' Specific properties and methods are implemented in the concerned subclass(es) SF_Calc, SF_Writer, SF_Base, ...
- '''
- ''' To workaround the absence of class inheritance in LibreOffice Basic, some redundancy is necessary
- ''' Each subclass MUST implement also the generic methods and properties, even if they only call
- ''' the parent methods and properties.
- ''' They should also duplicate some generic private members as a subset of their own set of members
- '''
- ''' The SF_Writer module is focused on :
- ''' TBD
- '''
- ''' The current module is closely related to the "UI" service of the ScriptForge library
- '''
- ''' Service invocation examples:
- ''' 1) From the UI service
- ''' Dim ui As Object, oDoc As Object
- ''' Set ui = CreateScriptService("UI")
- ''' Set oDoc = ui.CreateDocument("Writer", ...)
- ''' ' or Set oDoc = ui.OpenDocument("C:\Me\MyFile.odt")
- ''' 2) Directly if the document is already opened
- ''' Dim oDoc As Object
- ''' Set oDoc = CreateScriptService("SFDocuments.Writer", "Untitled 1") ' Default = ActiveWindow
- ''' ' or Set oDoc = CreateScriptService("SFDocuments.Writer", "Untitled 1") ' Untitled 1 is presumed a Writer document
- ''' ' The substring "SFDocuments." in the service name is optional
- '''
- ''' Definitions:
- ''' TBD
- '''
- ''' Detailed user documentation:
- ''' https://help.libreoffice.org/latest/en-US/text/sbasic/shared/03/SF_Writer.html?DbPAR=BASIC
- '''
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- REM ================================================================== EXCEPTIONS
- Private Const WRITERFORMNOTFOUNDERROR = "WRITERFORMNOTFOUNDERROR"
- REM ============================================================= PRIVATE MEMBERS
- Private [Me] As Object
- Private [_Parent] As Object
- Private [_Super] As Object ' Document superclass, which the current instance is a subclass of
- Private ObjectType As String ' Must be WRITER
- Private ServiceName As String
- ' Window component
- Private _Component As Object ' com.sun.star.lang.XComponent
- REM ============================================================ MODULE CONSTANTS
- REM ====================================================== CONSTRUCTOR/DESTRUCTOR
- REM -----------------------------------------------------------------------------
- Private Sub Class_Initialize()
- Set [Me] = Nothing
- Set [_Parent] = Nothing
- Set [_Super] = Nothing
- ObjectType = "WRITER"
- ServiceName = "SFDocuments.Writer"
- Set _Component = Nothing
- End Sub ' SFDocuments.SF_Writer Constructor
- REM -----------------------------------------------------------------------------
- Private Sub Class_Terminate()
- Call Class_Initialize()
- End Sub ' SFDocuments.SF_Writer Destructor
- REM -----------------------------------------------------------------------------
- Public Function Dispose() As Variant
- If Not IsNull([_Super]) Then Set [_Super] = [_Super].Dispose()
- Call Class_Terminate()
- Set Dispose = Nothing
- End Function ' SFDocuments.SF_Writer Explicit Destructor
- REM ================================================================== PROPERTIES
- REM ===================================================================== METHODS
- REM -----------------------------------------------------------------------------
- Public Function Forms(Optional ByVal Form As Variant) As Variant
- ''' Return either
- ''' - the list of the Forms contained in the form document
- ''' - a SFDocuments.Form object based on its name or its index
- ''' Args:
- ''' Form: a form stored in the document given by its name or its index
- ''' When absent, the list of available forms is returned
- ''' To get the first (unique ?) form stored in the form document, set Form = 0
- ''' Exceptions:
- ''' WRITERFORMNOTFOUNDERROR Form not found
- ''' Returns:
- ''' A zero-based array of strings if Form is absent
- ''' An instance of the SF_Form class if Form exists
- ''' Example:
- ''' Dim myForm As Object, myList As Variant
- ''' myList = oDoc.Forms()
- ''' Set myForm = oDoc.Forms("myForm")
- Dim oForm As Object ' The new Form class instance
- Dim oMainForm As Object ' com.sun.star.comp.sdb.Content
- Dim oXForm As Object ' com.sun.star.form.XForm
- Dim vFormNames As Variant ' Array of form names
- Dim oForms As Object ' Forms collection
- Const cstDrawPage = 0 ' Only 1 drawpage in a Writer document
- Const cstThisSub = "SFDocuments.Writer.Forms"
- Const cstSubArgs = "[Form=""""]"
- If ScriptForge.SF_Utils._ErrorHandling() Then On Local Error GoTo Catch
- Check:
- If IsMissing(Form) Or IsEmpty(Form) Then Form = ""
- If ScriptForge.SF_Utils._EnterFunction(cstThisSub, cstSubArgs) Then
- If Not _IsStillAlive() Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(Form, "Form", Array(V_STRING, ScriptForge.V_NUMERIC)) Then GoTo Finally
- End If
- Try:
- ' Start from the document component and go down to forms
- Set oForms = _Component.DrawPages(cstDrawPage).Forms
- vFormNames = oForms.getElementNames()
- If Len(Form) = 0 Then ' Return the list of valid form names
- Forms = vFormNames
- Else
- If VarType(Form) = V_STRING Then ' Find the form by name
- If Not ScriptForge.SF_Array.Contains(vFormNames, Form, CaseSensitive := True) Then GoTo CatchNotFound
- Set oXForm = oForms.getByName(Form)
- Else ' Find the form by index
- If Form < 0 Or Form >= oForms.Count Then GoTo CatchNotFound
- Set oXForm = oForms.getByIndex(Form)
- End If
- ' Create the new Form class instance
- Set oForm = SF_Register._NewForm(oXForm)
- With oForm
- Set .[_Parent] = [Me]
- ._FormType = ISDOCFORM
- Set ._Component = _Component
- ._Initialize()
- End With
- Set Forms = oForm
- End If
- Finally:
- ScriptForge.SF_Utils._ExitFunction(cstThisSub)
- Exit Function
- Catch:
- GoTo Finally
- CatchNotFound:
- ScriptForge.SF_Exception.RaiseFatal(WRITERFORMNOTFOUNDERROR, Form, _FileIdent())
- End Function ' SFDocuments.SF_Writer.Forms
- REM -----------------------------------------------------------------------------
- Public Function GetProperty(Optional ByVal PropertyName As Variant _
- , Optional ObjectName As Variant _
- ) As Variant
- ''' Return the actual value of the given property
- ''' Args:
- ''' PropertyName: the name of the property as a string
- ''' ObjectName: a sheet or range name
- ''' Returns:
- ''' The actual value of the property
- ''' Exceptions:
- ''' ARGUMENTERROR The property does not exist
- Const cstThisSub = "SFDocuments.Writer.GetProperty"
- Const cstSubArgs = ""
- If ScriptForge.SF_Utils._ErrorHandling() Then On Local Error GoTo Catch
- GetProperty = Null
- Check:
- If IsMissing(ObjectName) Or IsEmpty(ObjectName) Then ObjectName = ""
- If ScriptForge.SF_Utils._EnterFunction(cstThisSub, cstSubArgs) Then
- If Not ScriptForge.SF_Utils._Validate(PropertyName, "PropertyName", V_STRING, Properties()) Then GoTo Catch
- If Not ScriptForge.SF_Utils._Validate(ObjectName, "ObjectName", V_STRING) Then GoTo Catch
- End If
- Try:
- ' Superclass or subclass property ?
- If ScriptForge.SF_Array.Contains([_Super].Properties(), PropertyName) Then
- GetProperty = [_Super].GetProperty(PropertyName)
- ElseIf Len(ObjectName) = 0 Then
- GetProperty = _PropertyGet(PropertyName)
- Else
- GetProperty = _PropertyGet(PropertyName, ObjectName)
- End If
- Finally:
- ScriptForge.SF_Utils._ExitFunction(cstThisSub)
- Exit Function
- Catch:
- GoTo Finally
- End Function ' SFDocuments.SF_Writer.GetProperty
- REM -----------------------------------------------------------------------------
- Public Function Methods() As Variant
- ''' Return the list of public methods of the Writer service as an array
- Methods = Array( _
- "Forms" _
- , "PrintOut" _
- )
- End Function ' SFDocuments.SF_Writer.Methods
- REM -----------------------------------------------------------------------------
- Public Function PrintOut(Optional ByVal Pages As Variant _
- , Optional ByVal Copies As Variant _
- , Optional ByVal PrintBackground As Variant _
- , Optional ByVal PrintBlankPages As Variant _
- , Optional ByVal PrintEvenPages As Variant _
- , Optional ByVal PrintOddPages As Variant _
- , Optional ByVal PrintImages As Variant _
- ) As Boolean
- ''' Send the content of the document to the printer.
- ''' The printer might be defined previously by default, by the user or by the SetPrinter() method
- ''' Args:
- ''' Pages: the pages to print as a string, like in the user interface. Example: "1-4;10;15-18". Default = all pages
- ''' Copies: the number of copies
- ''' PrintBackground: print the background image when True (default)
- ''' PrintBlankPages: when False (default), omit empty pages
- ''' PrintEvenPages: print the left pages when True (default)
- ''' PrintOddPages: print the right pages when True (default)
- ''' PrintImages: print the graphic objects when True (default)
- ''' Returns:
- ''' True when successful
- ''' Examples:
- ''' oDoc.PrintOut("1-4;10;15-18", Copies := 2, PrintImages := False)
- Dim bPrint As Boolean ' Return value
- Dim vPrintOptions As Variant ' com.sun.star.text.DocumentSettings
- Const cstThisSub = "SFDocuments.Writer.PrintOut"
- Const cstSubArgs = "[Pages=""""], [Copies=1], [PrintBackground=True], [PrintBlankPages=False], [PrintEvenPages=True]" _
- & ", [PrintOddPages=True], [PrintImages=True]"
- If ScriptForge.SF_Utils._ErrorHandling() Then On Local Error GoTo Catch
- bPrint = False
- Check:
- If IsMissing(Pages) Or IsEmpty(Pages) Then Pages = ""
- If IsMissing(Copies) Or IsEmpty(Copies) Then Copies = 1
- If IsMissing(PrintBackground) Or IsEmpty(PrintBackground) Then PrintBackground = True
- If IsMissing(PrintBlankPages) Or IsEmpty(PrintBlankPages) Then PrintBlankPages = False
- If IsMissing(PrintEvenPages) Or IsEmpty(PrintEvenPages) Then PrintEvenPages = True
- If IsMissing(PrintOddPages) Or IsEmpty(PrintOddPages) Then PrintOddPages = True
- If IsMissing(PrintImages) Or IsEmpty(PrintImages) Then PrintImages = True
-
- If ScriptForge.SF_Utils._EnterFunction(cstThisSub, cstSubArgs) Then
- If Not _IsStillAlive() Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(Pages, "Pages", V_STRING) Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(Copies, "Copies", ScriptForge.V_NUMERIC) Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(PrintBackground, "PrintBackground", ScriptForge.V_BOOLEAN) Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(PrintBlankPages, "PrintBlankPages", ScriptForge.V_BOOLEAN) Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(PrintEvenPages, "PrintEvenPages", ScriptForge.V_BOOLEAN) Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(PrintOddPages, "PrintOddPages", ScriptForge.V_BOOLEAN) Then GoTo Finally
- If Not ScriptForge.SF_Utils._Validate(PrintImages, "PrintImages", ScriptForge.V_BOOLEAN) Then GoTo Finally
- End If
- Try:
- vPrintOptions = _Component.createInstance("com.sun.star.text.DocumentSettings")
- With vPrintOptions
- .PrintPageBackground = PrintBackground
- .PrintEmptyPages = PrintBlankPages
- .PrintLeftPages = PrintEvenPages
- .PrintRightPages = PrintOddPages
- .PrintGraphics = PrintImages
- .PrintDrawings = PrintImages
- End With
- bPrint = [_Super].PrintOut(Pages, Copies, _Component)
- Finally:
- PrintOut = bPrint
- ScriptForge.SF_Utils._ExitFunction(cstThisSub)
- Exit Function
- Catch:
- GoTo Finally
- End Function ' SFDocuments.SF_Writer.PrintOut
- REM -----------------------------------------------------------------------------
- Public Function Properties() As Variant
- ''' Return the list or properties of the Writer class as an array
- Properties = Array( _
- "CustomProperties" _
- , "Description" _
- , "DocumentProperties" _
- , "DocumentType" _
- , "ExportFilters" _
- , "ImportFilters" _
- , "IsBase" _
- , "IsCalc" _
- , "IsDraw" _
- , "IsImpress" _
- , "IsMath" _
- , "IsWriter" _
- , "Keywords" _
- , "Readonly" _
- , "Subject" _
- , "Title" _
- , "XComponent" _
- )
- End Function ' SFDocuments.SF_Writer.Properties
- REM -----------------------------------------------------------------------------
- Private Function SetProperty(Optional ByVal psProperty As String _
- , Optional ByVal pvValue As Variant _
- ) As Boolean
- ''' Set the new value of the named property
- ''' Args:
- ''' psProperty: the name of the property
- ''' pvValue: the new value of the given property
- ''' Returns:
- ''' True if successful
- Dim bSet As Boolean ' Return value
- Static oSession As Object ' Alias of SF_Session
- Dim cstThisSub As String
- Const cstSubArgs = "Value"
- If ScriptForge.SF_Utils._ErrorHandling() Then On Local Error GoTo Catch
- bSet = False
- cstThisSub = "SFDocuments.Writer.set" & psProperty
- If IsMissing(pvValue) Then pvValue = Empty
- 'ScriptForge.SF_Utils._EnterFunction(cstThisSub, cstSubArgs) ' Validation done in Property Lets
- If IsNull(oSession) Then Set oSession = ScriptForge.SF_Services.CreateScriptService("Session")
- bSet = True
- Select Case UCase(psProperty)
- Case UCase("CustomProperties")
- CustomProperties = pvValue
- Case UCase("Description")
- Description = pvValue
- Case UCase("Keywords")
- Keywords = pvValue
- Case UCase("Subject")
- Subject = pvValue
- Case UCase("Title")
- Title = pvValue
- Case Else
- bSet = False
- End Select
- Finally:
- SetProperty = bSet
- 'ScriptForge.SF_Utils._ExitFunction(cstThisSub)
- Exit Function
- Catch:
- GoTo Finally
- End Function ' SFDocuments.SF_Writer.SetProperty
- REM ======================================================= SUPERCLASS PROPERTIES
- REM -----------------------------------------------------------------------------
- Property Get CustomProperties() As Variant
- CustomProperties = [_Super].GetProperty("CustomProperties")
- End Property ' SFDocuments.SF_Writer.CustomProperties
- REM -----------------------------------------------------------------------------
- Property Let CustomProperties(Optional ByVal pvCustomProperties As Variant)
- [_Super].CustomProperties = pvCustomProperties
- End Property ' SFDocuments.SF_Writer.CustomProperties
- REM -----------------------------------------------------------------------------
- Property Get Description() As Variant
- Description = [_Super].GetProperty("Description")
- End Property ' SFDocuments.SF_Writer.Description
- REM -----------------------------------------------------------------------------
- Property Let Description(Optional ByVal pvDescription As Variant)
- [_Super].Description = pvDescription
- End Property ' SFDocuments.SF_Writer.Description
- REM -----------------------------------------------------------------------------
- Property Get DocumentProperties() As Variant
- DocumentProperties = [_Super].GetProperty("DocumentProperties")
- End Property ' SFDocuments.SF_Writer.DocumentProperties
- REM -----------------------------------------------------------------------------
- Property Get DocumentType() As String
- DocumentType = [_Super].GetProperty("DocumentType")
- End Property ' SFDocuments.SF_Writer.DocumentType
- REM -----------------------------------------------------------------------------
- Property Get ExportFilters() As Variant
- ExportFilters = [_Super].GetProperty("ExportFilters")
- End Property ' SFDocuments.SF_Writer.ExportFilters
- REM -----------------------------------------------------------------------------
- Property Get ImportFilters() As Variant
- ImportFilters = [_Super].GetProperty("ImportFilters")
- End Property ' SFDocuments.SF_Writer.ImportFilters
- REM -----------------------------------------------------------------------------
- Property Get IsBase() As Boolean
- IsBase = [_Super].GetProperty("IsBase")
- End Property ' SFDocuments.SF_Writer.IsBase
- REM -----------------------------------------------------------------------------
- Property Get IsCalc() As Boolean
- IsCalc = [_Super].GetProperty("IsCalc")
- End Property ' SFDocuments.SF_Writer.IsCalc
- REM -----------------------------------------------------------------------------
- Property Get IsDraw() As Boolean
- IsDraw = [_Super].GetProperty("IsDraw")
- End Property ' SFDocuments.SF_Writer.IsDraw
- REM -----------------------------------------------------------------------------
- Property Get IsImpress() As Boolean
- IsImpress = [_Super].GetProperty("IsImpress")
- End Property ' SFDocuments.SF_Writer.IsImpress
- REM -----------------------------------------------------------------------------
- Property Get IsMath() As Boolean
- IsMath = [_Super].GetProperty("IsMath")
- End Property ' SFDocuments.SF_Writer.IsMath
- REM -----------------------------------------------------------------------------
- Property Get IsWriter() As Boolean
- IsWriter = [_Super].GetProperty("IsWriter")
- End Property ' SFDocuments.SF_Writer.IsWriter
- REM -----------------------------------------------------------------------------
- Property Get Keywords() As Variant
- Keywords = [_Super].GetProperty("Keywords")
- End Property ' SFDocuments.SF_Writer.Keywords
- REM -----------------------------------------------------------------------------
- Property Let Keywords(Optional ByVal pvKeywords As Variant)
- [_Super].Keywords = pvKeywords
- End Property ' SFDocuments.SF_Writer.Keywords
- REM -----------------------------------------------------------------------------
- Property Get Readonly() As Variant
- Readonly = [_Super].GetProperty("Readonly")
- End Property ' SFDocuments.SF_Writer.Readonly
- REM -----------------------------------------------------------------------------
- Property Get Subject() As Variant
- Subject = [_Super].GetProperty("Subject")
- End Property ' SFDocuments.SF_Writer.Subject
- REM -----------------------------------------------------------------------------
- Property Let Subject(Optional ByVal pvSubject As Variant)
- [_Super].Subject = pvSubject
- End Property ' SFDocuments.SF_Writer.Subject
- REM -----------------------------------------------------------------------------
- Property Get Title() As Variant
- Title = [_Super].GetProperty("Title")
- End Property ' SFDocuments.SF_Writer.Title
- REM -----------------------------------------------------------------------------
- Property Let Title(Optional ByVal pvTitle As Variant)
- [_Super].Title = pvTitle
- End Property ' SFDocuments.SF_Writer.Title
- REM -----------------------------------------------------------------------------
- Property Get XComponent() As Variant
- XComponent = [_Super].GetProperty("XComponent")
- End Property ' SFDocuments.SF_Writer.XComponent
- REM ========================================================== SUPERCLASS METHODS
- REM -----------------------------------------------------------------------------
- Public Function Activate() As Boolean
- Activate = [_Super].Activate()
- End Function ' SFDocuments.SF_Writer.Activate
- REM -----------------------------------------------------------------------------
- Public Function CloseDocument(Optional ByVal SaveAsk As Variant) As Boolean
- CloseDocument = [_Super].CloseDocument(SaveAsk)
- End Function ' SFDocuments.SF_Writer.CloseDocument
- REM -----------------------------------------------------------------------------
- Public Function CreateMenu(Optional ByVal MenuHeader As Variant _
- , Optional ByVal Before As Variant _
- , Optional ByVal SubmenuChar As Variant _
- ) As Object
- Set CreateMenu = [_Super].CreateMenu(MenuHeader, Before, SubmenuChar)
- End Function ' SFDocuments.SF_Writer.CreateMenu
- REM -----------------------------------------------------------------------------
- Public Function ExportAsPDF(Optional ByVal FileName As Variant _
- , Optional ByVal Overwrite As Variant _
- , Optional ByVal Pages As Variant _
- , Optional ByVal Password As Variant _
- , Optional ByVal Watermark As Variant _
- ) As Boolean
- ExportAsPDF = [_Super].ExportAsPDF(FileName, Overwrite, Pages, Password, Watermark)
- End Function ' SFDocuments.SF_Writer.ExportAsPDF
- REM -----------------------------------------------------------------------------
- Public Function RemoveMenu(Optional ByVal MenuHeader As Variant) As Boolean
- RemoveMenu = [_Super].RemoveMenu(MenuHeader)
- End Function ' SFDocuments.SF_Writer.RemoveMenu
- REM -----------------------------------------------------------------------------
- Public Sub RunCommand(Optional ByVal Command As Variant _
- , ParamArray Args As Variant _
- )
- [_Super].RunCommand(Command, Args)
- End Sub ' SFDocuments.SF_Writer.RunCommand
- REM -----------------------------------------------------------------------------
- Public Function Save() As Boolean
- Save = [_Super].Save()
- End Function ' SFDocuments.SF_Writer.Save
- REM -----------------------------------------------------------------------------
- Public Function SaveAs(Optional ByVal FileName As Variant _
- , Optional ByVal Overwrite As Variant _
- , Optional ByVal Password As Variant _
- , Optional ByVal FilterName As Variant _
- , Optional ByVal FilterOptions As Variant _
- ) As Boolean
- SaveAs = [_Super].SaveAs(FileName, Overwrite, Password, FilterName, FilterOptions)
- End Function ' SFDocuments.SF_Writer.SaveAs
- REM -----------------------------------------------------------------------------
- Public Function SaveCopyAs(Optional ByVal FileName As Variant _
- , Optional ByVal Overwrite As Variant _
- , Optional ByVal Password As Variant _
- , Optional ByVal FilterName As Variant _
- , Optional ByVal FilterOptions As Variant _
- ) As Boolean
- SaveCopyAs = [_Super].SaveCopyAs(FileName, Overwrite, Password, FilterName, FilterOptions)
- End Function ' SFDocuments.SF_Writer.SaveCopyAs
- REM -----------------------------------------------------------------------------
- Public Function SetPrinter(Optional ByVal Printer As Variant _
- , Optional ByVal Orientation As Variant _
- , Optional ByVal PaperFormat As Variant _
- ) As Boolean
- SetPrinter = [_Super].SetPrinter(Printer, Orientation, PaperFormat)
- End Function ' SFDocuments.SF_Writer.SetPrinter
- REM =========================================================== PRIVATE FUNCTIONS
- REM -----------------------------------------------------------------------------
- Private Function _FileIdent() As String
- ''' Returns a file identification from the information that is currently available
- ''' Useful e.g. for display in error messages
- _FileIdent = [_Super]._FileIdent()
- End Function ' SFDocuments.SF_Writer._FileIdent
- REM -----------------------------------------------------------------------------
- Private Function _IsStillAlive(Optional ByVal pbForUpdate As Boolean _
- , Optional ByVal pbError As Boolean _
- ) As Boolean
- ''' Returns True if the document has not been closed manually or incidentally since the last use
- ''' If dead the actual instance is disposed. The execution is cancelled when pbError = True (default)
- ''' Args:
- ''' pbForUpdate: if True (default = False), check additionally if document is open for editing
- ''' pbError: if True (default), raise a fatal error
- Dim bAlive As Boolean ' Return value
- If IsMissing(pbForUpdate) Then pbForUpdate = False
- If IsMissing(pbError) Then pbError = True
- Try:
- bAlive = [_Super]._IsStillAlive(pbForUpdate, pbError)
- Finally:
- _IsStillAlive = bAlive
- Exit Function
- End Function ' SFDocuments.SF_Writer._IsStillAlive
- REM -----------------------------------------------------------------------------
- Private Function _PropertyGet(Optional ByVal psProperty As String _
- , Optional ByVal pvArg As Variant _
- ) As Variant
- ''' Return the value of the named property
- ''' Args:
- ''' psProperty: the name of the property
- Dim cstThisSub As String
- Const cstSubArgs = ""
- _PropertyGet = False
- cstThisSub = "SFDocuments.Writer.get" & psProperty
- ScriptForge.SF_Utils._EnterFunction(cstThisSub, cstSubArgs)
- If Not _IsStillAlive() Then GoTo Finally
- Select Case psProperty
- Case Else
- _PropertyGet = Null
- End Select
- Finally:
- ScriptForge.SF_Utils._ExitFunction(cstThisSub)
- Exit Function
- End Function ' SFDocuments.SF_Writer._PropertyGet
- REM -----------------------------------------------------------------------------
- Private Function _Repr() As String
- ''' Convert the SF_Writer instance to a readable string, typically for debugging purposes (DebugPrint ...)
- ''' Args:
- ''' Return:
- ''' "[DOCUMENT]: Type/File"
- _Repr = "[Writer]: " & [_Super]._FileIdent()
- End Function ' SFDocuments.SF_Writer._Repr
- REM ============================================ END OF SFDOCUMENTS.SF_WRITER
- </script:module>
|