'  
'   Rebex Sample Code License
' 
'   Copyright 2025, REBEX CR s.r.o.
'   All rights reserved.
'   https://www.rebex.net/
' 
'   Permission to use, copy, modify, and/or distribute this software for any
'   purpose with or without fee is hereby granted.
' 
'   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
'   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
'   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
'   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
'   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
'   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
'   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
'   OTHER DEALINGS IN THE SOFTWARE.
' 

Imports System.IO
Imports Rebex.TerminalEmulation

''' <summary>
''' Hold configuration settings.
''' </summary>
Public Class Settings
    Inherits Configuration
    ''' <summary>
    ''' Path to the config file at Local application data storage.
    ''' </summary>
    Private Shared ReadOnly _configFile As String = Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData), String.Format("Rebex{0}TerminalEmulation{0}ScriptingWinForm.xml", Path.DirectorySeparatorChar))

    Private Sub New()
        MyBase.New(_configFile)
    End Sub

    Private Shared _default As New Settings()

    ''' <summary>
    ''' Returns the default instance.
    ''' </summary>
    Public Shared ReadOnly Property [Default]() As Settings
        Get
            Return _default
        End Get
    End Property

    ''' <summary>
    ''' Returns TerminalOptions object stored in the config file.
    ''' If no options are stored, default options are returned.
    ''' </summary>
    ''' <param name="config">An existing instance of the Configuration class.</param>
    ''' <returns>Initialized TerminalOptions object.</returns>
    Public ReadOnly Property TerminalOptions() As TerminalOptions
        Get
            Dim options As TerminalOptions = DirectCast(GetValue("options", GetType(TerminalOptions)), TerminalOptions)

            If options Is Nothing Then
                options = New TerminalOptions()
            End If

            Return options
        End Get
    End Property
End Class
