List of API 1.0 to 2.0 changes I’ve assembled

Working on putting together a really comprehensive list of changes

So far this is what I have (its mostly just desktop stuff)

API 1.0 to API 2.0 changes

new - the new API 2.0 line is shown
rem - the API 1.0 line that was removed is shown
chg - the new API 2.0 line is shown

new     VAR (instead of DIM)
new     <single dimension array>.addrow	
chg     <single dimension array>.append deprecated
new     <single dimension array>.addrowAt 
chg     <single dimension array>.insert deprecated
new     <single dimension array>.count
new     <single dimension array>.RemoveAllRows
new     <single dimension array>.RemoveRowAt 
chg     <single dimension array>.remove deprecated
new     <single dimension array>.ResizeTo

Class Application
new     Event Activated()
new     Event AppleEventReceived(theEvent As AppleEvent, eventClass As String, eventID As String) As Boolean
new     Event CancelClosing() As Boolean
new     Event Closing()
new     Event Deactivated()
new     Event DocumentCreated()
new     Event DocumentOpened(item As FolderItem)
new     Event MenuSelected()
new     Event Opening()
new     Public Property AllowAutoQuit As Boolean
new     Public Property AllowHiDPI As Boolean
chg     Attributes( "Deprecated" = "AllowAutoQuit" ) Public Property AutoQuit As Boolean
new     Public Function Window(index As Integer) As Window
new     Public Function WindowCount() As Integer
new     Public Property LastWindowIndex As Integer
new     Public Sub HideTooltip()
new     Public Sub RefreshMenuBar()
new     Public Sub ShowTooltip(tip As String, x As Integer, y As Integer, autoHide As Boolean = True)
chg     Attributes( "Deprecated" = "AllowHiDPI" ) Public Property SupportsHiDPI As Boolean
End Class

chg Attributes( "DefaultEvent" = "Pressed" ) Class BevelButton
new     Event Pressed()
new     Event MenuSelected(selectedItem As MenuItem)
chg     Attributes( "Deprecated" = "AllowFocus" ) Public Property AcceptFocus As Boolean
new     Public Property AllowFocus As Boolean
chg     Attributes( "Deprecated" = "BackgroundColor" ) Public Property BackColor As Color
new     Public Property BackgroundColor As Color
chg     Attributes( "Deprecated" = "BevelStyle" ) Public Property Bevel As Integer
new     Public Property BevelStyle As BevelStyles
new     Public Enum BevelStyles As Integer
new         Small = 0
new         Normal = 1
new         Large = 2
new         Rounded = 3
new         None = 4
new         Round = 5
new         LargeRound = 6
new         Disclosure = 7
new     End Enum
new     Public Property ButtonStyle As ButtonStyles
new     Public Enum ButtonStyles As Integer
new         PushButton = 0
new         ToggleButton = 1
new         StickyButton = 2
new     End Enum
chg     Attributes( "Deprecated" = "ButtonStyle" ) Public Property ButtonType As integer
chg     Attributes( "Deprecated" = "CaptionAlignment" ) Public Property CaptionAlign As Integer
new     Public Property CaptionAlignment As CaptionAlignments
new     Public Enum CaptionAlignments As Integer
new         Left = 0
new         Right = 1
new         SystemDirection = 2
new         Centered = 3
new     End Enum
chg     Attributes( "Deprecated" = "CaptionPosition" ) Public Property CaptionPlacement As Integer
new     Public Property CaptionPosition As CaptionPositions
new     Public Enum CaptionPositions As Integer
new         SystemDirection = 0
new         Normal = 1
new         RightOfIcon = 2
new         LeftOfIcon = 3
new         BelowIcon = 4
new         AboveIcon = 5
new     End Enum
new     Public Property FontName As string
new     Public Property FontSize As single
new     Public Property FontUnit As FontUnits
chg     Attributes( "Deprecated" = "HasBackgroundColor" ) Public Property HasBackColor As Boolean
new     Public Property HasBackgroundColor As Boolean
chg     Attributes( "Deprecated" = "MenuStyle" ) Public Property HasMenu As Integer
chg     Attributes( "Deprecated" = "IconAlignment" ) Public Property IconAlign As Integer
new     Public Property IconAlignment As IconAlignments
new     Public Enum IconAlignments As Integer
new         SystemDirection = 0
new         Centered = 1
new         Left = 2
new         Right = 3
new         Top = 4
new         Bottom = 5
new         Topleft = 6
new         BottomLeft = 7
new         TopRight = 8
new         BottomRight = 9
new     End Enum
new     Public Property IconDeltaX As Integer
new     Public Property IconDeltaY As Integer
chg     Attributes( "Deprecated" = "IconDeltaX" ) Public Property IconDX As Integer
chg     Attributes( "Deprecated" = "IconDeltaY" ) Public Property IconDY As Integer
new     Public Property Menu As MenuItem
new     Public Property MenuStyle As MenuStyles
new     Public Enum MenuStyles As Integer
new         None = 0
new         Down = 1
new         Right = 2
new     End Enum
chg     Attributes( "Deprecated" = "Use MenuSelected event" ) Public Property MenuValue As Integer
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As string
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
End Class

Class BinaryStream
new     Public Property BytePosition As UInt64
new     Public Function EndOfFile() As Boolean
new     Public Function Handle(type As IOStreamHandleTypes) As Ptr
chg     Attributes( "Deprecated" ) Public Property LastErrorCode As Integer
chg     Attributes( "Deprecated" = "BytePosition" ) Public Property Position As UInt64
End Class

chg Attributes( "DefaultEvent" = "Paint" ) Class Canvas
new     Event Activated()
new     Event Deactivated()
new     Event DoubleClicked(X As Integer, Y As Integer)
new     Event MenuSelected()
chg     Attributes( "Deprecated" = "AllowFocus" ) Public Property AcceptFocus As Boolean
chg     Attributes( "Deprecated" = "AllowTabs" ) Public Property AcceptTabs As Boolean
new     Public Property AllowFocus As Boolean
new     Public Property AllowFocusRing As Boolean
new     Public Property AllowTabs As Boolean
chg     Attributes( "Deprecated" ) Public Property DoubleBuffer As Boolean
chg     Attributes( "Deprecated" = "AllowFocusRing" ) Public Property UseFocusRing As Boolean
End Class

chg Attributes( "DefaultEvent" = "ValueChanged" ) Class CheckBox
new     Event ValueChanged()
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
chg     Attributes( "Deprecated" = "VisualState" ) Public Property State As CheckedStates
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
new     Public Property VisualState As VisualStates
new     Public Enum VisualStates As Integer
new         Unchecked = 0
new         Checked = 1
new         Indeterminate = 2
new     End Enum
End Class

Class Clipboard
new     Public Function RawData(macType As String, Assigns value As String) As String
End Class


chg Attributes( "DefaultEvent" = "ValueChanged" ) Class ComboBox
new     Event ValueChanged()
new     Public Property AllowAutoComplete As Boolean
new     Public Property AllowFocusRing As Boolean
chg     Attributes( "Deprecated" = "AllowAutoComplete" ) Public Property AutoComplete As Boolean
new     Public Property Hint As String
new     Public Property SelectionLength As Integer
new     Public Property SelectionStart As Integer
chg     Attributes( "Deprecated" = "SelectionLength" ) Public Property SelLength As Integer
chg     Attributes( "Deprecated" = "SelectionStart" ) Public Property SelStart As Integer
chg     Attributes( "Deprecated" = "Value" ) Public Property Text As String
chg     Attributes( "Deprecated" = "AllowFocusRing" ) Public Property UseFocusRing As Boolean
new     Public Property Value As String
End Class

Class ContainerControl
chg     Attributes( "Deprecated" = "AllowFocus" ) Public Property AcceptFocus As Boolean
chg     Attributes( "Deprecated" = "AllowTabs" ) Public Property AcceptTabs As Boolean
new     Public Property AllowAutoDeactivate As Boolean
new     Public Property AllowFocus As Boolean
new     Public Property AllowFocusRing As Boolean
new     Public Property AllowTabs As Boolean
chg     Attributes( "Deprecated" = "AllowAutoDeactivate" ) Public Property AutoDeactivate As Boolean
new     Public Property Composited As Boolean
chg     Attributes( "Deprecated" = "Composited" ) Public Property DoubleBuffer As Boolean
chg     Attributes( "Deprecated" = "Tooltip" ) Public Property HelpTag As String
new     Public Property Tooltip As String
chg     Attributes( "Deprecated" = "AllowFocusRing" ) Public Property UseFocusRing As Boolean
End Class

Class Control
new     Event Closing()
new     Event Opening()
End Class

Class Database
chg     Attributes( "Deprecated" ) Public Property Error As Boolean
chg     Attributes( "Deprecated" ) Public Property ErrorCode As Integer
chg     Attributes( "Deprecated" ) Public Property ErrorMessage As String
new     Public Function SelectSQL(sql As String, values() As Variant) As RowSet
new     Public Function SelectSQL(sql As String, ParamArray values() As Variant) As RowSet
new     Public Function TableColumns(tableName As String) As RowSet
new     Public Function TableIndexes(tableName As String) As RowSet
new     Public Function Tables() As RowSet
new     Public Sub AddRow(tableName As String, dbRecord As DatabaseRow)
new     Public Sub BeginTransaction()
new     Public Sub CommitTransaction()
new     Public Sub Connect()
new     Public Sub ExecuteSQL(sql As String, ParamArray values() As Variant)
new     Public Sub ExecuteSQL(sql As String, values() As Variant)
new     Public Sub RollbackTransaction()
End Class

new Class DatabaseColumn
new     Public Property BooleanValue As Boolean
new     Public Property CurrencyValue As Currency
new     Public Property DateTimeValue As DateTime
new     Public Property DateValue As Date
new     Public Property DoubleValue As Double
new     Public Function Operator_Convert() As Double
new     Public Function Operator_Convert() As Date
new     Public Function Operator_Convert() As Boolean
new     Public Function Operator_Convert() As Integer
new     Public Function Operator_Convert() As Picture
new     Public Function Operator_Convert() As String
new     Public Property Int64Value As Int64
new     Public Property IntegerValue As Integer
new     Public Property Name As String
new     Public Property NativeValue As String
new     Public Property PictureValue As Picture
new     Public Property StringValue As String
new     Protected Sub Constructor()
new     Public Sub PictureValue(format As Picture.Formats, quality As Integer = Picture.QualityDefault, Assigns value As Picture)
new     Public Property Value As Variant
new End Class

rem Class DatabaseCursor
rem     Public Property BOF As Boolean
rem     Public Property EOF As Boolean
rem     Public Property FieldCount As Integer
rem     Public Function ColumnType(Index As Integer) As Integer
rem     Public Function Field(Name As String) As DatabaseField
rem     Public Function IdxField(Index As Integer) As DatabaseField
rem     Public Function RecordCount() As Integer
rem     Public Sub Close()
rem     Public Sub DeleteRecord()
rem     Public Sub Edit()
rem     Public Sub MoveFirst()
rem     Public Sub MoveLast()
rem     Public Sub MoveNext()
rem     Public Sub MovePrevious()
rem     Public Sub Update()
rem End Class

new Class DatabaseException
new     Inherits RuntimeException
new End Class

rem Class DatabaseCursorField
rem     Public Property BooleanValue As Boolean
rem     Public Property CurrencyValue As Currency
rem     Public Property DateValue As Date
rem     Public Property DoubleValue As Double
rem     Public Function getString() As String
rem     Public Function Operator_Convert() As Boolean
rem     Public Function Operator_Convert() As String
rem     Public Function Operator_Convert() As Double
rem     Public Function Operator_Convert() As Date
rem     Public Function Operator_Convert() As Integer
rem     Public Function Operator_Convert() As Picture
rem     Public Property Int64Value As Int64
rem     Public Property IntegerValue As Integer
rem     Attributes( "Deprecated" = "PictureValue" ) Public Property JPEGValue As Picture
rem     Public Property Name As String
rem     Public Property NativeValue As String
rem     Public Property StringValue As String
rem     Public Sub setString(v As String)
rem     Public Property Value As Variant
rem End Class

new Attributes( "Deprecated" = "DatabaseColumn" ) Class DatabaseField
chg     Public Property BooleanValue As Boolean
chg     Get
chg     End Property
chg     Public Property CurrencyValue As Currency
chg     Get
chg     End Get
new     Public Property DateTimeValue As DateTime
new     Public Property DateValue As Date
new     Public Property DoubleValue As Double
new     Public Function getString() As String
new     Public Function Operator_Convert() As Boolean
new     Public Function Operator_Convert() As String
new     Public Function Operator_Convert() As Double
new     Public Function Operator_Convert() As Date
new     Public Function Operator_Convert() As Integer
new     Public Function Operator_Convert() As Picture
new     Public Property Int64Value As Int64
new     Public Property IntegerValue As Integer
new     Attributes( "Deprecated" = "PictureValue" ) Public Property JPEGValue As Picture
new     Public Property Name As String
new     Public Property NativeValue As String
new     Public Property PictureValue As Picture
new     Public Property StringValue As String
new     Protected Sub Constructor()
new     Public Sub PictureValue(format As String = Picture.FormatPNG, quality As Integer = Picture.QualityDefault, Assigns value As Picture)
new     Public Sub setString(v As String)
new     Public Property Value As Variant
End Class

chg Attributes( "Deprecated" = "DatabaseRow" ) Class DatabaseRecord
End Class

new Class DatabaseRow
new     Public Function BlobColumn(Name As String) As String
new     Public Function BooleanColumn(Name As String) As Boolean
new     Public Function Column(Name As String) As String
new     Public Function ColumnAt(index As Integer) As String
new     Public Function ColumnCount() As Integer
new     Public Function ColumnName(idx As Integer) As String
new     Public Function ColumnType(idx As Integer) As Integer
new     Public Function CurrencyColumn(Name As String) As Currency
new     Public Function DateColumn(Name As String) As Date
new     Public Function DateTimeColumn(Name As String) As DateTime
new     Public Function DoubleColumn(Name As String) As Double
new     Public Function Int64Column(Name As String) As Int64
new     Public Function IntegerColumn(Name As String) As Integer
new     Public Function PictureColumn(Name As String) As Picture
new     Public Sub BlobColumn(Name As String, Assigns _value As String)
new     Public Sub BooleanColumn(Name As String, Assigns _value As Boolean)
new     Public Sub Column(Name As String, Assigns _value As String)
new     Public Sub CurrencyColumn(Name As String, Assigns _value As Currency)
new     Public Sub DateColumn(Name As String, Assigns _value As Date)
new     Public Sub DateTimeColumn(Name As String, Assigns value As DateTime)
new     Public Sub DoubleColumn(Name As String, Assigns _value As Double)
new     Public Sub Int64Column(Name As String, Assigns _value As Int64)
new     Public Sub IntegerColumn(Name As String, Assigns _value As Integer)
new     Public Sub PictureColumn(Name As String, format As Picture.Formats = Picture.Formats.PNG, quality As Integer = Picture.QualityDefault, Assigns pic As Picture)
new End Class

chg Attributes( "Deprecated" ) Class DataControl
End Class

chg Attributes( "Deprecated" = "DateTime" ) Class Date
End Class

new Class DateInterval
new     Public Dim Days As Integer
new     Public Dim Hours As Integer
new     Public Dim Minutes As Integer
new     Public Dim Months As Integer
new     Public Dim Nanoseconds As Integer
new     Public Dim Seconds As Integer
new     Public Dim Years As Integer
new     Public Sub Constructor(years As Integer = 0, months As Integer = 0, days As Integer = 0, hours As Integer = 0, minutes As Integer = 0, seconds As Integer = 0, nanoseconds As Integer = 0)
new End Class

new Class DateTime
new     Public Property Day As Integer
new     Public Property DayOfWeek As Integer
new     Public Property DayOfYear As Integer
new     Public Enum FormatStyles As Global.Integer
new         Short = 0
new         Medium = 1
new         Long = 2
new         Full = 3
new         None = 4
new     End Enum
new     Public Function AddInterval(years As Integer = 0, months As Integer = 0, days As Integer = 0, hours As Integer = 0, minutes As Integer = 0, seconds As Integer = 0, nanoseconds As Integer = 0) As DateTime
new     Public Shared Function FromString(dateValue As String, locale As Locale = Nil, timezone As TimeZone = Nil) As DateTime
new     Public Shared Function Now() As DateTime
new     Public Function Operator_Add(interval As DateInterval) As DateTime
new     Public Function Operator_Compare(someDate As DateTime) As Integer
new     Public Function Operator_Subtract(interval As DateInterval) As DateTime
new     Public Function SubtractInterval(years As Integer = 0, months As Integer = 0, days As Integer = 0, hours As Integer = 0, minutes As Integer = 0, seconds As Integer = 0, nanoseconds As Integer = 0) As DateTime
new     Public Function ToString(loc As Locale = Nil, dateStyle As FormatStyles = FormatStyles.Medium, timeStyle As FormatStyles = FormatStyles.Medium) As String
new     Public Property Hour As Integer
new     Public Property Minute As Integer
new     Public Property Month As Integer
new     Public Property Nanosecond As Integer
new     Public Property Second As Integer
new     Public Property SecondsFrom1970 As Double
new     Public Property SQLDate As String
new     Public Property SQLDateTime As String
new     Public Sub Constructor(secondsFrom1970 As Double, timezone As TimeZone = Nil)
new     Public Sub Constructor(source As Date)
new     Public Sub Constructor(source As DateTime)
new     Public Sub Constructor(timezone As TimeZone)
new     Public Sub Constructor(year As integer, month As integer, day As integer, hour As integer = 0, minute As integer = 0, second As integer = 0, nanoseconds As Integer = 0, timezone As TimeZone = Nil)
new     Public Sub _DependencyList()
new     Public Property Timezone As TimeZone
new     Public Property WeekOfYear As Integer
new     Public Property Year As Integer
new End Class

Class Dictionary
new     Implements Iterable
new     Public Delegate Function KeyComparisonDelegate (leftKey As Variant, rightKey As Variant) As Integer
chg     Attributes( "Deprecated" = "KeyCount" ) Public Property Count As Integer
chg     Public Function Clone() As Dictionary
chg     Public Function HasKey(key As Variant) As Boolean
chg     Public Function Iterator() As Iterator
chg     Public Function Key(index As Integer) As Variant
chg     Public Function Keys() As Variant()
chg     Public Function Lookup(key As Variant, defaultValue As Variant) As Variant
chg     Public Function Value(key As Variant) As Variant
chg     End Function
chg     Public Function Values() As Variant()
chg     End Function
chg     Public Property KeyCount As Integer
chg     Get
chg     End Get
chg     End Property
chg     Public Sub Clear()
chg     Public Sub Constructor(keyComparison As KeyComparisonDelegate)
chg     Public Sub Constructor(ParamArray entries() As Pair)
chg     Public Sub Remove(key As Variant)
new     Public Sub RemoveAll()
new     Public Sub Value(key As Variant, Assigns _value As Variant)
new End Class

new Class DictionaryEntry
new     Public Dim Key As Variant
new     Public Dim Value As Variant
new End Class

Class DisclosureTriangle
chg     Event Pressed()
chg     Attributes( "Deprecated" = "AllowFocus" ) Public Property AcceptFocus As Boolean
new     Public Property AllowFocus As Boolean
chg     Attributes( "Deprecated" = "FacingDirection" ) Public Property Facing As Integer
new     Public Property FacingDirection As FacingDirections
new     Public Enum FacingDirections As Integer
new         Right = 0
new         Left = 1
new     End Enum
End Class


Class EasyTCPSocket
new     Public Sub Event_DataReceived() Handles DataReceived
chg     Public Sub Event_Error(err As RuntimeException) Handles Error
End Class

Class EasyUDPSocket
new     Public Sub Event_DataReceived() Handles DataReceived
chg     Public Sub Event_Error(err As RuntimeException) Handles Error
End Class

Class EndOfLine
chg     Attributes( "Deprecated" = "Chr(13)" ) Public Shared Property Macintosh As String
new     Public Shared Property macOS As String
chg     Attributes( "Deprecated" = "macOS" ) Public Shared Property OSX As String
End Class

Class FigureShape
chg     Public Function CurveAt(index As Integer) As CurveShape
chg     Public Function Item(index As Integer) As CurveShape
chg     End Function
new     Public Sub AddCubic(x1 As Single, y1 As Single, x2 As Single, y2 As Single, cx1 As Single, cy1 As Single, cx2 As Single, cy2 As Single)
new     Public Sub AddCurve(curveShape As CurveShape)
new     Public Sub AddCurveAt(index As Integer, curveShape As CurveShape)
new     Public Sub CurveAt(index As Integer, Assigns _value As CurveShape)
new     Public Sub RemoveCurve(curveShape As CurveShape)
new     Public Sub RemoveCurveAt(index As Integer)
End Class

Class FileType
chg     Public Function Operator_AddRight(lhs As FileType) As String
chg     Public Function Operator_AddRight(lhs As String) As String
End Class

Class FolderItem
rem     Public Const CarbonLib As String = "Carbon.framework"
chg     Attributes( "Deprecated" = "PathModes.Native" ) Public Const PathTypeAbsolute = 0
chg     Attributes( "Deprecated" = "PathModes.Native" ) Public Const PathTypeNative = 3
chg     Attributes( "Deprecated" = "PathModes.Shell" ) Public Const PathTypeShell = 1
chg     Attributes( "Deprecated" = "PathModes.URL" ) Public Const PathTypeURL = 2
chg     Attributes( "Deprecated" ) Public Const SaveInfoDefaultMode = 0
chg     Attributes( "Deprecated" ) Public Const SaveInfoRelativeMode = 1
rem     Attributes( "Deprecated" = "NativePath" ) Public Property AbsolutePath As String
chg     Attributes( "Deprecated" = "IsAlias" ) Public Property Alias As Boolean
new     Public Property CreationDateTime As DateTime
chg     Attributes( "Deprecated" = "IsFolder" ) Public Property Directory As Boolean
new     Public Shared Property DriveCount As Integer
chg     Public Function Child(name As String, followAlias As Boolean = True) As FolderItem
new     Public Function ChildAt(index As Integer, followAlias As Boolean = True) As FolderItem
new     Public Function Children(followAlias As Boolean = True) As Iterable
rem     Public Shared Function CreateFromMacFSRef(theFSRef As MemoryBlock) As FolderItem
new     Public Shared Function DriveAt(index As Integer) As FolderItem
new     Public Shared Function FromSaveInfo(saveInfo As String) As FolderItem
chg     Public Function Item(oneBasedIndex As Integer) As FolderItem
rem     Public Function MacFSRef() As MemoryBlock
rem     Public Function OpenResourceMovie(Index As Integer) As Movie
new     Public Function SaveInfo(relativeTo As FolderItem, saveInfoMode As SaveInfoModes = SaveInfoModes.Default) As String
new     Public Shared Function ShowOpenFileDialog(filter As String) As FolderItem
new     Public Shared Function ShowSaveFileDialog(filter As String, defaultName As String) As FolderItem
new     Public Shared Function ShowSelectFolderDialog() As FolderItem
new     Public Shared Function TemporaryFile() As FolderItem
chg     Public Function TrueItem(oneBasedIndex As Integer) As FolderItem
new     Public Property IsAlias As Boolean
new     Public Property IsFolder As Boolean
new     Public Shared Property LastDriveIndex As Integer
chg     Attributes( "Deprecated" ) Public Property LastErrorCode As Integer
rem     Public Property MacCreator As String
rem     Attributes( "Deprecated" ) Public Property MacDirID As Integer
rem     Attributes( "Deprecated" ) Public Property MacType As String
rem     Public Property MacVRefNum As Integer
new     Public Property ModificationDateTime As DateTime
rem     Public Property ResourceForkLength As Integer
new     Public Enum PathModes As Global.Integer
new         Native = 3
new         Shell = 1
new         URL = 2
new     End Enum
new     Public Enum SaveInfoModes As Global.Integer
new         Default = 0
new         Full = 2
new         Relative = 1
new     End Enum
chg     Public Sub Constructor(path As String, pathMode As PathModes, followAlias As Boolean = True)
new     Public Sub Constructor(path As String, pathMode As Integer = 0)
chg     Public Sub Permissions(Assigns _value As Integer)
chg     Public Sub Permissions(Assigns _value As Permissions)
new     Public Sub Remove()
End Class

Class FolderItemDialog
chg     Attributes( "Deprecated" = "InitialFolder" ) Public Property InitialDirectory As FolderItem
new     Public Property InitialFolder As FolderItem
End Class

Class Graphics
rem     Public Const HandleTypeCGrafPtr = 2
rem     Public Const HandleTypeGDIPlusGraphics = 6
chg     Attributes( "Deprecated" = "AntiAliased" ) Public Property AntiAlias As Boolean
new     Public Property AntiAliased As Boolean
new     Public Property DrawingColor As Color
new     Public Property FontAscent As Double
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
chg     Attributes( "Deprecated" = "DrawingColor" ) Public Property ForeColor As Color
new     Public Function Handle(type As HandleTypes) As Ptr
new     Public Function TextDirection(value As String) As TextDirections
new     Public Function TextHeight() As Double
new     Public Function TextHeight(Text As String, WrapWidth As Double) As Double
new     Public Function TextWidth(Text As String) As Double
new     Public Enum HandleTypes As Integer
new         CairoContext = 7
new         CGContextRef = 5
new         HDC = 1
new         Direct2DRenderTarget = 8
new     End Enum
chg     Public Property Height As Double
chg     Attributes( "Deprecated" = "PenSize" ) Public Property PenHeight As Double
new     Public Property PenSize As Double
chg     Attributes( "Deprecated" = "PenSize" ) Public Property PenWidth As Double
new     Public Sub DrawPath(path As GraphicsPath, autoClose As Boolean = False)
new     Public Sub DrawRectangle(x As Double, y As Double, width As Double, height As Double)
new     Public Sub DrawRoundRectangle(x As Double, y As Double, width As Double, height As Double, arcWidth As Double, arcHeight As Double)
new     Public Sub DrawText(str As String, x As Double, y As Double, width As Double = 0, condense As Boolean = False)
new     Public Sub FillPath(path As GraphicsPath, autoClose As Boolean = False)
new     Public Sub FillRectangle(x As Double, y As Double, width As Double, height As Double)
new     Public Sub FillRoundRectangle(x As Double, y As Double, width As Double, height As Double, arcWidth As Double, arcHeight As Double)
chg     Attributes( "Deprecated" = "FontAscent" ) Public Property TextAscent As Double
new     Public Enum TextDirections As Global.Integer
new         Unknown = 0
new         LeftToRight = 1
new         RightToLeft = 2
new     End Enum
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
rem     Public Property TextHeight As Double
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
rem     Attributes( "Deprecated" ) Public Property UseOldRenderer As Boolean
chg     Public Property Width As Double
End Class

new Class GraphicsPath
new     Public Property CurrentPoint As Point
new     Public Property IsEmpty As Boolean
new     Public Property IsRectangle As Boolean
new     Public Sub AddArc(x As Double, y As Double, radius As Double, startRadian As Double, endRadian As Double, clockwise As Boolean)
new     Public Sub AddCurveToPoint(cp1X As Double, cp1Y As Double, cp2X As Double, cp2Y As Double, x As Double, y As Double)
new     Public Sub AddLineToPoint(x As Double, y As Double)
new     Public Sub AddQuadraticCurveToPoint(cpX As Double, cpY As Double, x As Double, y As Double)
new     Public Sub AddRectangle(x As Double, y As Double, width As Double, height As Double)
new     Public Sub AddRoundRectangle(x As Double, y As Double, width As Double, height As Double, cornerWidth As Double, cornerHeight As Double)
new     Public Sub MoveToPoint(x As Double, y As Double)
new End Class

Class Group2D
new     Public Sub AddObject(object2D As Object2D)
new     Public Sub AddObjectAt(index As Integer, object2D As Object2D)
new     Public Sub RemoveObject(object2D As Object2D)
new     Public Sub RemoveObjectAt(index As Integer)
End Class

chg Attributes( "DefaultEvent" = "Opening" ) Class GroupBox
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
End Class

Class HTMLViewer
rem     Event CancelLoad(URL As String) As Boolean
rem     Event Close()
rem     Event DocumentBegin(URL As String)
rem     Event DocumentComplete(URL As String)
rem     Event DocumentProgressChanged(URL As String, percentageComplete As Integer)
rem     Event Error(errorNumber As Integer, errorMessage As String)
rem     Event NewWindow() As HTMLViewer
rem     Event Open()
rem     Event StatusChanged(newStatus As String)
rem     Event TitleChanged(newTitle As String)
End Class

Class HTTPSecureSocket
chg     Public Function Post(url As string, timeout As integer) As string
chg     Public Function Post(url As string, file As folderitem, timeout As integer) As boolean
chg     Public Function SendRequest(method As string, url As string, timeout As integer) As string
chg     Public Function SendRequest(method As string, url As string, file As folderitem, timeout As integer) As boolean
chg     Public Sub Get(url As string, file As folderItem)
chg     Public Sub Get(url As string)
chg     Public Sub Post(url As string, file As folderItem)
chg     Public Sub Post(url As string)
End Class

Class HTTPSocket
chg     Public Function Post(url As string, timeout As integer) As string
chg     Public Function Post(url As string, file As folderitem, timeout As integer) As boolean
chg     Public Sub Event_Error(err As RuntimeException) Handles Error
chg     Public Sub Get(url As string, file As folderItem)
chg     Public Sub Get(url As string)
End Class

Class InternetHeaders
chg     Public Function Name(zeroBasedIndex As integer) As string
new     Public Function ValueAt(index As integer) As string
chg     Public Sub AddHeader(name As string, value As string)
new     Public Sub AppendHeader(name As string, value As string)
chg     Public Sub Delete(name As string, zeroBasedIndex As integer)
new     Public Sub RemoveAllHeaders()
new     Public Sub RemoveHeader(name As String, index As Integer = -1)
chg     Public Sub SetHeader(name As string, value As string, zeroBasedIndex As integer)
new     Public Sub Value(name As String, value As String, index As Integer)
new     Public Sub Value(name As String, Assigns value As String)
End Class

new Class InvalidArgumentException
new     Inherits RuntimeException
new End Class


new Class InvalidJSONException
new     Inherits RuntimeException
new     Public Property Offset As UInteger
new End Class


Class IPCSocket
new     Event DataReceived()
chg     Event Error(err As RuntimeException)
new     Public Function EndOfFile() As Boolean
End Class

new Interface Iterable
new     Function Iterator() As Iterator
new End Interface
new Interface Iterator
new     Function MoveNext() As Boolean
new     Function Value() As Variant
new End Interface

Class JSONItem
chg     Protected Const version = 2.0000000000000000000
new     Public Function ChildAt(Index As Integer) As JSONItem
new     Public Function NameAt(index As integer) As String
new     Public Function ValueAt(index As Integer) As Variant
chg     Public Sub Add(Value As Variant)
new     Public Sub AddAt(index As integer, value As Variant)
new     Public Sub Append(Value As Variant)
chg     Public Sub Child(index As Integer, Assigns value As JSONItem)
new     Public Sub ChildAt(Index As Integer, Assigns obj As JSONItem)
new     Public Sub RemoveAll()
new     Public Sub RemoveAt(Index As Integer)
new     Public Sub ValueAt(index As Integer, Assigns value As Variant)
End Class

Class KeychainItem
new     Public Sub Remove()
End Class

chg Attributes( "DefaultEvent" = "AcceleratorKey" ) Class Label
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
chg     Attributes( "Deprecated" = "Value" ) Public Property Text As String
chg     Attributes( "Deprecated" = "TextAlignment" ) Public Property TextAlign As Integer
new     Public Property TextAlignment As TextAlignments
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
new     Public Property Value As String
End Class

chg Attributes( "DefaultEvent" = "Opening" ) Class Line
chg     Attributes( "Deprecated" = "Thickness" ) Public Property BorderWidth As Double
new     Public Property Thickness As Double
chg     Public Property X1 As Double
chg     Public Property X2 As Double
chg     Public Property Y1 As Double
chg     Public Property Y2 As Double
End Class

chg Attributes( "DefaultEvent" = "SelectionChanged" ) Class Listbox
chg     Attributes( "Deprecated" = "Alignments.Center" ) Public Const AlignCenter = 2
chg     Attributes( "Deprecated" = "Alignments.Decimal" ) Public Const AlignDecimal = 4
chg     Attributes( "Deprecated" = "Alignments.Default" ) Public Const AlignDefault = 0
chg     Attributes( "Deprecated" = "Alignments.Left" ) Public Const AlignLeft = 1
chg     Attributes( "Deprecated" = "Alignments.Right" ) Public Const AlignRight = 3
new     Public Const AllColumns = -1
new     Public Const AllRows = -1
chg     Attributes( "Deprecated" = "Borders.Default" ) Public Const BorderDefault = 0
chg     Attributes( "Deprecated" = "Borders.DoubleThinSolid" ) Public Const BorderDoubleThinSolid = 5
chg     Attributes( "Deprecated" = "Borders.None" ) Public Const BorderNone = 1
chg     Attributes( "Deprecated" = "Borders.ThickSolid" ) Public Const BorderThickSolid = 4
chg     Attributes( "Deprecated" = "Borders.ThinDotted" ) Public Const BorderThinDotted = 2
chg     Attributes( "Deprecated" = "Borders.ThinSolid" ) Public Const BorderThinSolid = 3
new     Public Const NoSelection = -1
chg     Attributes( "Deprecated" = "RowSelectionTypes.Multiple" ) Public Const SelectionMultiple = 1
chg     Attributes( "Deprecated" = "RowSelectionTypes.Single" ) Public Const SelectionSingle = 0
chg     Attributes( "Deprecated" = "SortDirections.Ascending" ) Public Const SortAscending = 1
chg     Attributes( "Deprecated" = "SortDirections.Descending" ) Public Const SortDescending = -1
chg     Attributes( "Deprecated" = "SortDirections.None" ) Public Const SortNone = 0
chg     Attributes( "Deprecated" = "CellTypes.Checkbox" ) Public Const TypeCheckbox = 2
chg     Attributes( "Deprecated" = "CellTypes.Default" ) Public Const TypeDefault = 0
chg     Attributes( "Deprecated" = "CellTypes.TextField" ) Public Const TypeEditable = 3
chg     Attributes( "Deprecated" = "CellTypes.TextArea" ) Public Const TypeEditableTextArea = 4
chg     Attributes( "Deprecated" = "CellTypes.TextField" ) Public Const TypeEditableTextField = 3
chg     Attributes( "Deprecated" = "CellTypes.Normal" ) Public Const TypeNormal = 1
new     Event CellPressed(row As Integer, column As Integer, x As double, y As double) As Boolean
new     Event CellTextChanged(row As Integer, column As Integer)
new     Event DoubleClicked()
new     Event MenuSelected()
new     Event PreventSorting(column As Integer) As Boolean
new     Event RowCollapsed(row As Integer)
new     Event RowComparison(row1 As Integer, row2 As Integer, column As Integer, ByRef result As Integer) As Boolean
new     Event RowExpanded(row As Integer)
new     Event SelectionChanged()
chg     Attributes( "Deprecated" = "ActiveTextControl" ) Public Property ActiveCell As TextEdit
new     Public Property ActiveTextControl As TextEdit
new     Public Enum Alignments As Global.Integer
new         Default = 0
new         Left = 1
new         Center = 2
new         Right = 3
new         Decimal = 4
new     End Enum
new     Public Property AllowAutoHideScrollbars As Boolean
new     Public Property AllowExpandableRows As Boolean
new     Public Property AllowFocusRing As Boolean
new     Public Property AllowResizableColumns As Boolean
new     Public Property AllowRowDragging As Boolean
new     Public Property AllowRowReordering As Boolean
chg     Attributes( "Deprecated" = "AllowAutoHideScrollbars" ) Public Property AutoHideScrollbars As Boolean
chg     Attributes( "Deprecated" = "HasBorder" ) Public Property Border As Boolean
new     Public Enum Borders As Global.Integer
new         Default = 0
new         None = 1
new         ThinDotted = 2
new         ThinSolid = 3
new         ThickSolid = 4
new         DoubleThinSolid = 5
new     End Enum
new     Public Enum CellTypes As Global.Integer
new         Default = 0
new         Normal = 1
new         CheckBox = 2
new         TextField = 3
new         TextArea = 4
new     End Enum
chg     Attributes( "Deprecated" = "AllowResizableColumns" ) Public Property ColumnsResizable As Boolean
new     Public Property DropIndicatorVisible As Boolean
chg     Attributes( "Deprecated" = "AllowRowDragging" ) Public Property EnableDrag As Boolean
chg     Attributes( "Deprecated" = "AllowRowReordering" ) Public Property EnableDragReorder As Boolean
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
new     Public Function CellAlignmentAt(row As Integer, column As Integer) As Alignments
new     Public Function CellAlignmentOffsetAt(row As Integer, column As Integer) As Integer
new     Public Function CellBorderBottomAt(row As Integer, column As Integer) As Borders
new     Public Function CellBorderLeftAt(row As Integer, column As Integer) As Borders
new     Public Function CellBorderRightAt(row As Integer, column As Integer) As Borders
new     Public Function CellBorderTopAt(row As Integer, column As Integer) As Borders
new     Public Function CellCheckBoxStateAt(row As Integer, column As Integer) As CheckBox.CheckedStates
new     Public Function CellCheckBoxValueAt(row As Integer, column As Integer) As Boolean
chg     Public Function CellTagAt(row As Integer, column As Integer) As Variant
new     Public Function CellTooltipAt(row As Integer, column As Integer) As String
new     Public Function CellType(row As Integer, column As Integer) As Integer
new     Public Function CellTypeAt(row As Integer, column As Integer) As CellTypes
new     Public Function CellValueAt(row As Integer, column As Integer) As String
new     Public Function ColumnAlignmentAt(index As Integer) As Alignments
new     Public Function ColumnAlignmentOffsetAt(index As Integer) As Integer
new     Public Function ColumnAt(index As Integer) As ListColumn
new     Public Function ColumnSortDirectionAt(index As Integer) As SortDirections
new     Public Function ColumnSortTypeAt(column As Integer) As SortTypes
new     Public Function ColumnTagAt(column As Integer) As Variant
new     Public Function ColumnTypeAt(index As Integer) As CellTypes
new     Public Function ExpandableRowAt(row As Integer) As Boolean
new     Public Function HeaderAt(index As Integer) As String
new     Public Function RowDepthAt(row As Integer) As Integer
new     Public Function RowExpandedAt(v As Integer) As Boolean
new     Public Function RowImageAt(index As Integer) As Picture
new     Public Function RowTagAt(row As Integer) As Variant
chg     Attributes( "Deprecated" = "GridLinesHorizontalStyle" ) Public Property GridLinesHorizontal As Integer
new     Public Property GridLinesHorizontalStyle As Borders
chg     Attributes( "Deprecated" = "GridLinesVerticalStyle" ) Public Property GridLinesVertical As Integer
new     Public Property GridLinesVerticalStyle As Borders
new     Public Property HasBorder As Boolean
new     Public Property HasHeader As Boolean
chg     Attributes( "Deprecated" = "HasHeader" ) Public Property HasHeading As Boolean
new     Public Property HasHorizontalScrollbar As Boolean
new     Public Property HasVerticalScrollbar As Boolean
chg     Attributes( "Deprecated" = "AllowExpandableRows" ) Public Property Hierarchical As Boolean
new     Public Property LastAddedRowIndex As Integer
new     Public Property LastColumnIndex As Integer
chg     Attributes( "Deprecated" = "LastAddedRowIndex" ) Public Property LastIndex As Integer
new     Public Property LastRowIndex As Integer
chg     Attributes( "Deprecated" = "RowCount" ) Public Property ListCount As Integer
chg     Attributes( "Deprecated" = "SelectedRowIndex" ) Public Property ListIndex As Integer
new     Public Property RowCount As Integer
new     Public Property RowSelectionType As RowSelectionTypes
new     Public Enum RowSelectionTypes As Global.Integer
new         Single = 0
new         Multiple = 1
new     End Enum
chg     Attributes( "Deprecated" = "HasHorizontalScrollbar" ) Public Property ScrollBarHorizontal As Boolean
chg     Attributes( "Deprecated" = "HasVerticalScrollbar" ) Public Property ScrollBarVertical As Boolean
chg     Attributes( "Deprecated" = "SelectedRowCount" ) Public Property SelCount As Integer
new     Public Property SelectedRowCount As Integer
new     Public Property SelectedRowIndex As Integer
new     Public Property SelectedRowValue As String
chg     Attributes( "Deprecated" = "RowSelectionType" ) Public Property SelectionType As Integer
chg     Attributes( "Deprecated" = "DropIndicatorVisible""" ) Public Property ShowDropIndicator As Boolean
new     Public Enum SortDirections As Global.Integer
new         Descending = -1
new         None = 0
new         Ascending = 1
new     End Enum
chg     Attributes( "Deprecated" = "SortingColumn" ) Public Property SortedColumn As Integer
new     Public Property SortingColumn As Integer
new     Public Enum SortTypes As Integer
new         Sortable = 0
new         NotSortable = 1
new     End Enum
new     Public Sub AddExpandableRow(Text As String)
new     Public Sub AddExpandableRowAt(row As Integer, text As String, indent As Integer = 0)
new     Public Sub AddRowAt(row As Integer, text As String, indent As Integer = 0)
new     Public Sub CellAlignmentAt(row As Integer, column As Integer, Assigns value As Alignments)
new     Public Sub CellAlignmentOffsetAt(row As Integer, column As Integer, Assigns _value As Integer)
new     Public Sub CellBorderBottomAt(row As Integer, column As Integer, Assigns value As Borders)
new     Public Sub CellBorderLeftAt(row As Integer, column As Integer, Assigns value As Borders)
new     Public Sub CellBorderRightAt(row As Integer, column As Integer, Assigns value As Borders)
new     Public Sub CellBorderTopAt(row As Integer, column As Integer, Assigns value As Borders)
new     Public Sub CellCheckBoxStateAt(row As Integer, column As Integer, Assigns _value As CheckBox.CheckedStates)
new     Public Sub CellCheckBoxValueAt(row As Integer, column As Integer, Assigns _value As Boolean)
chg     Public Sub CellTag(row As Integer, column As Integer, Assigns value As Variant)
new     Public Sub CellTagAt(row As Integer, column As Integer, Assigns value As Variant)
new     Public Sub CellTooltipAt(row As Integer, column As Integer, Assigns _value As String)
new     Public Sub CellTypeAt(row As Integer, column As Integer, Assigns _value As CellTypes)
new     Public Sub CellValueAt(row As Integer, column As Integer, Assigns _value As String)
new     Public Sub ColumnAlignmentAt(Index As Integer, Assigns value As Alignments)
new     Public Sub ColumnAlignmentOffsetAt(Index As Integer, Assigns _value As Integer)
new     Public Sub ColumnAt(Index As Integer, Assigns _value As ListColumn)
chg     Public Sub ColumnSortDirection(Index As Integer, Assigns value As Integer)
new     Public Sub ColumnSortDirectionAt(Index As Integer, Assigns sortDirection As SortDirections)
new     Public Sub ColumnSortTypeAt(column As Integer, Assigns value As SortTypes)
chg     Public Sub ColumnTag(column As Integer, Assigns value As Variant)
new     Public Sub ColumnTagAt(column As Integer, Assigns value As Variant)
new     Public Sub ColumnTypeAt(Index As Integer, Assigns _value As CellTypes)
new     Public Sub EditCellAt(row As Integer, column As Integer)
new     Public Sub ExpandableRowAt(row As Integer, Assigns value As Boolean)
new     Public Sub HeaderAt(Index As Integer, Assigns _value As String)
new     Public Sub RemoveAllRows()
new     Public Sub RemoveRowAt(index As Integer)
new     Public Sub RowExpandedAt(v As Integer, Assigns _value As Boolean)
new     Public Sub RowImageAt(Index As Integer, Assigns _value As Picture)
new     Public Sub RowTagAt(row As Integer, Assigns _value As Variant)
chg     Attributes( "Deprecated" = "SelectedRowValue" ) Public Property Text As String
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
chg     Attributes( "Deprecated" = "AllowFocusRing" ) Public Property UseFocusRing As Boolean
End Class

new Class Locale
new     Public Property CurrencySymbol As String
new     Public Property DecimalSeparator As String
new     Public Shared Function Current() As Locale
new     Public Shared Function Raw() As Locale
new     Public Property GroupingSeparator As String
new     Public Property Identifier As String
new     Public Sub Constructor(localeIdentifier As String)
new End Class



Class MemoryBlock
chg     Public Function MidB(offset As Integer) As MemoryBlock
chg     Public Function MidB(offset As Integer, length As Integer) As MemoryBlock
End Class

Class MenuItem
chg     Event MenuItemSelected() As Boolean
chg     Event MenuSelected()
chg     Attributes( "Deprecated" = "AutoEnabled" ) Public Property AutoEnable As Boolean
new     Public Property AutoEnabled As Boolean
chg     Attributes( "Deprecated" = "HasCheckMark" ) Public Property Checked As Boolean
new     Public Function LastRowIndex() As Integer
new     Public Function MenuAt(index As Integer) As MenuItem
new     Public Property HasCheckMark As Boolean
chg     Attributes( "Deprecated" = "Shortcut" ) Public Property KeyboardShortcut As String
new     Public Property Shortcut As String
new     Public Sub AddMenu(item As MenuItem)
new     Public Sub AddMenuAt(index As Integer, item As MenuItem)
new     Public Sub RemoveMenuAt(index As Integer)
chg     Attributes( "Deprecated" = "Value" ) Public Property Text As String
new     Public Property Value As String
End Class

Class MessageDialog
new     Public Shared Sub Show(Message As String)
End Class

Class MessageDialogButton
chg     Attributes( "Deprecated" = "IsCancel" ) Public Property Cancel As Boolean
chg     Attributes( "Deprecated" = "IsDefault" ) Public Property Default As Boolean
new     Public Property IsCancel As Boolean
new     Public Property IsDefault As Boolean
new     Public Property IsVisible As Boolean
End Class

Class Movie
new     Public Shared Function Open(movieFile As FolderItem) As Movie
new     Public Shared Function OpenURL(url As String) As Movie
chg     Public Property Handle As Ptr
End Class

chg Attributes( "DefaultEvent" = "PlayingStarted" ) Class MoviePlayer
new     Event MovieStarted()
new     Event MovieStopped()
new     Public Property AutoAdjustToMovieSize As Boolean
chg     Public Property AutoRepeat As Boolean
new     Attributes( "Deprecated" = "AutoAdjustToMovieSize" ) Public Property AutoResize As Boolean
chg     Attributes( "Deprecated" = "HasController" ) Public Property Controller As Integer
new     Public Property HasController As Boolean
chg     Attributes( "Deprecated" = "HasStepControls" ) Public Property HasStep As Boolean
new     Public Property HasStepControls As Boolean
new     Public Property HasVolumeControl As Boolean
chg     Attributes( "Deprecated" = "AutoRepeat" ) Public Property Looping As Boolean
chg     Attributes( "Deprecated" = "OLEMovieObject" ) Public Property MovieController As OLEObject
new     Public Property OLEMovieObject As OLEObject
chg     Attributes( "Deprecated" = "RepeatInReverse" ) Public Property Palindrome As Boolean
new     Public Property RepeatInReverse As Boolean
chg     Attributes( "Deprecated" = "HasVolumeControl" ) Public Property Speaker As Boolean
End Class

new Class NetworkException
new     Inherits RuntimeException
new End Class

new Class ObjCBlock
new     Public Property Handle As Ptr
new     Public Sub Constructor(theDelegate As Object)
new End Class

Class Object2D
chg     Attributes( "Deprecated" = "BorderOpacity" ) Public Property Border As Double
new     Public Property BorderOpacity As Double
chg     Attributes( "Deprecated" = "FillOpacity" ) Public Property Fill As Double
new     Public Property FillOpacity As Double
End Class

Class OLEObject
chg     Public Function ValueArray2D(name As String) As Variant(,)
chg     Public Function ValueArray2D(name As String, parameters() As Variant) As Variant(,)
chg     Public Sub Constructor(programID As String)
chg     Public Sub Constructor(programID As String, newInstance As Boolean)
End Class

chg Attributes( "Deprecated" = "OpenFileDialog" ) Class OpenDialog
chg     Public Function Item(index As Integer) As FolderItem
End Class

new Class OpenFileDialog
new     Inherits FolderItemDialog
new     Public Property AllowMultipleSelections As Boolean
new     Public Property Count As Integer
new     Public Function SelectedFiles(followAlias As Boolean = True) As Iterable
new     Public Sub Constructor()
new End Class



chg Attributes( "DefaultEvent" = "Opening" ) Class Oval
new     Public Property BorderThickness As Double
chg     Attributes( "Deprecated" = "BorderThickness" ) Public Property BorderWidth As Integer
End Class

chg Attributes( "DefaultEvent" = "PanelChanged" ) Class PagePanel
new     Event PanelChanged()
rem     Public Property Enabled As Boolean
new     Public Property LastAddedPanelIndex As Integer
new     Public Property SelectedPanelIndex As Integer
new     Public Sub AddPanel()
new     Public Sub AddPanelAt(index As Integer)
new     Public Sub RemovePanelAt(index As Integer)
chg     Attributes( "Deprecated" = "SelectedPanelIndex" ) Public Property Value As Integer
End Class

Class Paragraph
chg     Attributes( "Deprecated" = "TextAlignment" ) Public Property Alignment As Integer
new     Public Property TextAlignment As TextAlignments
End Class

Class Picture
chg     Attributes( "Deprecated" = "QualityMaximum" ) Public Const QualityMax = 100
new     Public Const QualityMaximum = 100
chg     Attributes( "Deprecated" = "QualityMinimum" ) Public Const QualityMin = 0
new     Public Const QualityMinimum = 0
new     Public Enum Formats As Integer
new         BMP = 350
new         GIF = 402
new         JPEG = 151
new         PNG = 150
new         TIFF = 403
new     End Enum
new     Public Function ImageAt(v As Integer) As Picture
chg     Public Shared Function IsExportFormatSupported(format As Picture.Formats) As Boolean
chg     Public Shared Function IsImportFormatSupported(format As Picture.Formats) As Boolean
new     Public Shared Function OpenVector(file As FolderItem) As Picture
new     Public Function ToData(format As Picture.Formats, quality As Integer = QualityDefault) As MemoryBlock
chg     Attributes( "Deprecated" = "IsAlphaChannel" ) Public Property HasAlphaChannel As Boolean
new     Public Property IsAlphaChannel As Boolean
new     Public Sub Save(file As FolderItem, format As Picture.Formats, quality As Integer = QualityDefault)
chg     Attributes( "Deprecated" = "Alpha channels" ) Public Property Transparent As Integer
msngEnd Class

Class PixmapShape
chg     Public Property SourceLeft As Double
chg     Public Property SourceTop As Double
End Class

Class POP3SecureSocket
chg     Attributes( "Deprecated" = "IsEncryptPassword" ) Public Dim encryptPassword As boolean
new     Public Dim IsEncryptPassword As boolean
chg     Event LoginSucceeded()
new     Event LoginSuccessful()
new     Event MessagesCounted(count As integer)
chg     Event RollbackSucceeded()
new     Event RollbackSuccessful()
new     Event ServerReplied(command As string, data As string)
new     Public Sub RequestMessageAt(id As integer)
new     Public Sub RequestMessages()
new     Public Sub RequestMessages(id As integer)
new     Public Sub RetrieveLinesAt(id As integer, lineCount As integer)
new     Public Sub RetrieveMessageAt(index As integer)
new     Public Sub SendCommand(command As string)
End Class

Class POP3Socket
chg     Public Sub Event_Error(err As RuntimeException) Handles Error
End Class

Class PopupArrow
chg     Attributes( "Deprecated" = "FacingDirection" ) Public Property Facing As Integer
new     Public Property FacingDirection As FacingDirections
new     Public Enum FacingDirections As Integer
new         East = 0
new         West = 1
new         North = 2
new         South = 3
new         SmallEast = 4
new         SmallWest = 5
new         SmallNorth = 6
new         SmallSouth = 7
new     End Enum
End Class

chg Attributes( "DefaultEvent" = "SelectionChanged" ) Class PopupMenu
chg     Public Const NoSelection = -1
chg     Event Change()
chg     Event GotFocus()
chg     Event LostFocus()
chg     Event MouseDown(X As Integer, Y As Integer) As Boolean
new     Event MouseUp(X As Integer, Y As Integer) As Boolean
new     Event SelectionChanged()
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
new     Public Function RowTagAt(index As Integer) As Variant
new     Public Function RowValueAt(index As Integer) As String
new     Public Property LastAddedRowIndex As Integer
new     Public Property LastRowIndex As Integer
chg     Attributes( "Deprecated" = "RowCount" ) Public Property ListCount As Integer
chg     Attributes( "Deprecated" = "SelectedRowIndex" ) Public Property ListIndex As Integer
new     Public Property RowCount As Integer
new     Public Property SelectedRowIndex As Integer
new     Public Property SelectedRowValue As String
new     Public Sub AddAllRows(rows() As String)
chg     Public Sub AddRow(item As String)
new     Public Sub AddRowAt(row As Integer, str As String)
new     Public Sub RemoveAllRows()
new     Public Sub RemoveRowAt(index As Integer)
new     Public Sub RowTagAt(Index As Integer, Assigns _value As Variant)
chg     Attributes( "Deprecated" = "SelectedRowValue" ) Public Property Text As String
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
End Class

Class PrefsMenuItem
chg     Event MenuItemSelected() As Boolean
chg     Public Function Event_Action() As Boolean Handles Action
new     Public Function Event_MenuItemSelected() As Boolean Handles MenuItemSelected
End Class

Interface PreparedSQLStatement
chg     Sub BindType(index As Integer, type As Integer)
new     Function SelectSQL(ParamArray bindItems() As Variant) As RowSet
End Interface


Interface PreparedSQLStatementInterface
chg     Sub BindType(index As Integer, type As Integer)
End Interface


Class PrinterSetup
new     Public Shared Function OpenPrinter(setup As PrinterSetup) As Graphics
new     Public Function ShowPageSetupDialog(parentWindow As Window = Nil) As Boolean
new     Public Function ShowPrinterDialog(parentWindow As Window = Nil) As Graphics
chg     Public Property IsLandscape As Boolean
new     Attributes( "Deprecated" = "IsLandscape" ) Public Property Landscape As Boolean
chg     Attributes( "Deprecated" = "MaximumHorizontalResolution" ) Public Property MaxHorizontalResolution As Integer
new     Public Property MaximumHorizontalResolution As Integer
new     Public Property MaximumVerticalResolution As Integer
chg     Attributes( "Deprecated" = "MaximumVerticalResolution" ) Public Property MaxVerticalResolution As Integer
new     Public Property Settings As String
chg     Attributes( "Deprecated" = "Settings" ) Public Property SetupString As String
End Class

chg Attributes( "DefaultEvent" = "Opening" ) Class ProgressBar
new     Public Property Indeterminate As Boolean
chg     Attributes( "Deprecated" = "MaximumValue" ) Public Property Maximum As Integer
new     Public Property MaximumValue As Integer
chg     Public Property Value As Double
End Class

chg Attributes( "DefaultEvent" = "Pressed" ) Class PushButton
new     Event Pressed()
chg     Attributes( "Deprecated" = "MacButtonStyles" ) Public Enum ButtonFrameStyle As Integer
        End Enum
chg     Attributes( "Deprecated" = "MacButtonStyle" ) Public Property ButtonStyle As ButtonFrameStyle
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
new     Public Property MacButtonStyle As MacButtonStyles
new     Public Enum MacButtonStyles As Integer
new         Push = 0
new         Gradient = 1
new         Recessed = 3
new         Textured = 4
new         RoundedTextured = 5
new         Square = 6
new         Bevel = 7
new         Round = 8
new         Help = 9
new     End Enum
new     Public Sub Press()
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
End Class

Class QuitMenuItem
new     Event MenuItemSelected() As Boolean
new     Public Function Event_MenuItemSelected() As Boolean Handles MenuItemSelected
End Class

chg Attributes( "DefaultEvent" = "Pressed" ) Class RadioButton
new     Event ValueChanged()
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
End Class

Class Range
chg     Attributes( "Deprecated" = "EndPosition" ) Public Property EndPos As Integer
new     Public Property EndPosition As Integer
chg     Attributes( "Deprecated" = "StartPosition" ) Public Property StartPos As Integer
new     Public Property StartPosition As Integer
End Class

Interface Readable
new     Function EndOfFile() As Boolean
End Interface

Attributes( "Deprecated" = "SQLiteBlob" ) Class REALSQLBlob
new     Public Function EndOfFile() As Boolean
End Class

Attributes( "Deprecated" = "SQLitePreparedStatement" ) Class REALSQLPreparedStatement
chg     Public Function SelectSQL(ParamArray params() As Variant) As RowSet
new     Public Function SQLSelect(ParamArray params() As Variant) As RecordSet
End Class

chg Attributes( "Deprecated" = "RowSet" ) Class RecordSet
chg     Attributes( "Deprecated" = "RowSet.BeforeFirstRow" ) Public Property BOF As Boolean
chg     Attributes( "Deprecated" = "RowSet.AfterLastRow" ) Public Property EOF As Boolean
chg     Attributes( "Deprecated" = "RowSet.ColumnCount" ) Public Property FieldCount As Integer
chg     Public Function IdxField(oneBasedIndex As Integer) As DatabaseField
End Class

Interface RecordSetInterface
chg     Function ColumnType(index As UInt32) As Integer
chg     Function IdxField(index As UInt32) As DatabaseFieldInterface
End Interface


chg Attributes( "DefaultEvent" = "Opening" ) Class Rectangle
new     Public Property BorderThickness As Double
chg     Attributes( "Deprecated" = "BorderThickness" ) Public Property BorderWidth As Integer
End Class

Class RectControl
new     Public Property AllowAutoDeactivate As Boolean
new     Public Property AllowTabStop As Boolean
chg     Attributes( "Deprecated" = "AllowAutoDeactivate" ) Public Property AutoDeactivate As Boolean
chg     Attributes( "Deprecated" = "Tooltip" ) Public Property HelpTag As String
new     Public Property Tooltip As String
End Class

Class RegEx
chg     Public Function Replace(TargetString As String, SearchStartPosition As Integer) As String
chg     Public Function Replace(TargetString As String) As String
End Class

chg Attributes( "DefaultEvent" = "Opening" ) Class RoundRectangle
new     Public Property BorderThickness As Double
chg     Attributes( "Deprecated" = "BorderThickness" ) Public Property BorderWidth As Integer
new     Public Property CornerHeight As Double
new     Public Property CornerWidth As Double
End Class

new Class RowSet
new     Implements Iterable
new     Public Property AfterLastRow As Boolean
new     Public Property BeforeFirstRow As Boolean
new     Public Property ColumnCount As Integer
new     Public Function Column(Name As String) As DatabaseColumn
new     Public Function ColumnAt(index As Integer) As DatabaseColumn
new     Public Function ColumnType(index As Integer) As Integer
new     Public Function Iterator() As Iterator
new     Public Function RowCount() As Integer
new     Public Property LastColumnIndex As Integer
new     Public Sub Close()
new     Protected Sub Constructor()
new     Public Sub EditRow()
new     Public Sub MoveToFirstRow()
new     Public Sub MoveToLastRow()
new     Public Sub MoveToNextRow()
new     Public Sub MoveToPreviousRow()
new     Public Sub RemoveRow()
new     Public Sub SaveRow()
new End Class

Class RuntimeException
chg     Public Function StackFrames() As StackFrame()
chg     End Function
chg     Public Property Message As String
chg     End Property
chg     Public Property Reason As Text
new     Public Sub Constructor()
new     Public Sub Constructor(message As String, errorCode As Integer = 0)
End Class

chg Attributes( "Deprecated" = "SaveFileDialog" ) Class SaveAsDialog
End Class

new Class SaveFileDialog
new     Inherits FolderItemDialog
new     Public Sub Constructor()
new End Class

Class Screen
new     Public Property ColorDepth As Integer
chg     Attributes( "Deprecated" = "ColorDepth" ) Public Property Depth As Integer
new     Public Shared Function ScreenAt(index As Integer) As Screen
new     Public Shared Property LastScreenIndex As Integer
new     Public Shared Property ScreenCount As Integer
End Class

chg Attributes( "DefaultEvent" = "ValueChanged" ) Class ScrollBar
chg     Attributes( "Deprecated" = "AllowFocus" ) Public Property AcceptFocus As Boolean
new     Public Property AllowFocus As Boolean
new     Public Property AllowLiveScrolling As Boolean
chg     Attributes( "Deprecated" = "AllowLiveScrolling" ) Public Property LiveScroll As Boolean
chg     Attributes( "Deprecated" = "MaximumValue" ) Public Property Maximum As Integer
new     Public Property MaximumValue As Integer
new     Attributes( "Deprecated" = "MinimumValue" ) Public Property Minimum As Integer
chg     Public Property MinimumValue As Integer
End Class

new Class Segment
new     Public Property Enabled As Boolean
new     Public Property Icon As Picture
new     Public Property Selected As Boolean
new     Public Property Title As String
new     Public Property Tooltip As String
new     Public Property Width As Integer
new End Class

new Class SegmentedButton
new     Inherits RectControl
new     Event Pressed(segmentIndex As integer)
new     Public Function SegmentAt(index As Integer) As Segment
new     Public Property LastSegmentIndex As Integer
new     Public Property MacButtonStyle As MacButtonStyles
new     Public Enum MacButtonStyles As Integer
new         Automatic = 0
new         Capsule = 1
new         RoundRectangle = 2
new         Rounded = 3
new         TexturedRounded = 4
new         TexturedSquare = 5
new         SmallSquare = 6
new     End Enum
new     Public Property SegmentCount As Integer
new     Public Property SelectedSegment As Segment
new     Public Property SelectedSegmentIndex As Integer
new     Public Property SelectionStyle As SelectionStyles
new     Public Enum SelectionStyles As Integer
new         Single = 0
new         Multiple = 1
new         None = 2
new     End Enum
new     Public Sub AddSegment(segment As Segment)
new     Public Sub AddSegmentAt(index As Integer, segment As Segment)
new     Public Sub Event_CreatePane() Handles CreatePane
new     Public Sub RemoveAllSegments()
new     Public Sub RemoveSegmentAt()
new     Public Sub ResizeSegmentsToFit()
new End Class

chg Attributes( "Deprecated" = "SegmentedButton" ) Class SegmentedControl
End Class

chg Attributes( "Deprecated" = "SerialConnection" ) Class Serial
new     Public Function EndOfFile() As Boolean
End Class

new Class SerialConnection
new     Implements Writeable
new     Implements Readable
new     Public Const AccessDenied = 100
new     Public Const Baud115200 = 14
new     Public Const Baud1200 = 2
new     Public Const Baud14400 = 9
new     Public Const Baud1800 = 3
new     Public Const Baud19200 = 10
new     Public Const Baud230400 = 15
new     Public Const Baud2400 = 4
new     Public Const Baud28800 = 11
new     Public Const Baud300 = 0
new     Public Const Baud3600 = 5
new     Public Const Baud38400 = 12
new     Public Const Baud4800 = 6
new     Public Const Baud57600 = 13
new     Public Const Baud600 = 1
new     Public Const Baud7200 = 7
new     Public Const Baud9600 = 8
new     Public Const Bits5 = 0
new     Public Const Bits6 = 1
new     Public Const Bits7 = 2
new     Public Const Bits8 = 3
new     Public Const BreakCondition = 103
new     Public Const FramingError = 104
new     Public Const InvalidOptions = 102
new     Public Const NoError = 0
new     Public Const PortNotFound = 101
new     Event DataReceived()
new     Event Error(e As RuntimeException)
new     Event LineStateChanged(changedLines() As LineStates)
new     Public Property Baud As Integer
new     Public Property Bits As Integer
new     Public Property BytesAvailable As Integer
new     Public Property BytesLeftToSend As Integer
new     Public Property ClearToSend As Boolean
new     Public Property CTS As Boolean
new     Public Property DataCarrierDetect As Boolean
new     Public Property DataSetReady As Boolean
new     Public Property DataTerminalReady As Boolean
new     Public Property Device As SerialDevice
new     Public Property DTR As Boolean
new     Public Function Connect() As Boolean
new     Public Function EndOfFile() As Boolean
new     Public Function EOF() As Boolean
new     Public Function LookAhead(encoding As TextEncoding = Nil) As String
new     Public Function Read(byteCount As Integer, encoding As TextEncoding = Nil) As String
new     Public Function ReadAll(encoding As TextEncoding = Nil) As String
new     Public Function ReadError() As Boolean
new     Public Function WriteError() As Boolean
new     Public Property Handle As Integer
new     Public Enum LineStates As Global.Integer
new         ClearToSend = 4
new         DataCarrierDetect = 8
new         DataSetReady = 32
new         DataTerminalReady = 1
new         RequestToSend = 2
new         RingIndicator = 16
new     End Enum
new     Public Enum Parities As Global.Integer
new         None = 0
new         Odd = 1
new         Even = 2
new     End Enum
new     Public Property Parity As Parities
new     Public Property RequestToSend As Boolean
new     Public Property RingIndicator As Boolean
new     Public Property StopBit As StopBits
new     Public Enum StopBits As Global.Integer
new         None = -1
new         One = 0
new         OnePointFive = 1
new         Two = 2
new     End Enum
new     Public Sub ClearBreak()
new     Public Sub Close()
new     Public Sub Flush()
new     Public Sub LeaveDTROnClose()
new     Public Sub Poll()
new     Public Sub RequestLineChangeNotification(linesToWatch() As LineStates)
new     Public Sub RequestLineChangeNotification(ParamArray linesToWatch() As LineStates)
new     Public Sub Reset()
new     Public Sub SetBreak()
new     Public Sub Write(str As String)
new     Public Sub XmitWait()
new     Public Property XON As Boolean
new End Class

new Class SerialDevice
new     Public Shared Property Count As Integer
new     Public Shared Function At(index As Integer) As SerialDevice
new     Public Shared Function WithName(name As String) As SerialDevice
new     Public Property InputDriverName As String
new     Public Property MaximumSpeed As Integer
new     Public Property Name As String
new     Public Property OutputDriverName As String
new     Public Property RatedSpeed As Integer
new End Class

chg Attributes( "Deprecated" = "SerialDevice" ) Class SerialPort
End Class

Class ServerSocket
chg     Event Error(ErrorCode As Integer, err As RuntimeException)
new     Event SocketRequested() As TCPSocket
End Class

Class Shell
new     Event ResultReturned()
chg     Attributes( "Deprecated" = "ExitCode" ) Public Property ErrorCode As Integer
new     Public Property ExecuteMode As ExecuteModes
new     Public Enum ExecuteModes As Integer
new         Synchronous = 0
new         Asynchronous = 1
new         Interactive = 2
new     End Enum
new     Public Property ExitCode As Integer
chg     Attributes( "Deprecated" = "ExecuteMode" ) Public Property Mode As Integer
End Class

chg Attributes( "DefaultEvent" = "ValueChanged" ) Class Slider
new     Public Property AllowLiveScrolling As Boolean
chg     Attributes( "Deprecated" = "AllowLiveScrolling" ) Public Property LiveScroll As Boolean
chg     Attributes( "Deprecated" = "MaximumValue" ) Public Property Maximum As Integer
new     Public Property MaximumValue As Integer
chg     Attributes( "Deprecated" = "MinimumValue" ) Public Property Minimum As Integer
new     Public Property MinimumValue As Integer
new     Public Property TickMarkStyle As TickMarkStyles
new     Public Enum TickMarkStyles As Integer
new         None = 0
new         TopLeft = 1
new         BottomRight = 2
new     End Enum
chg     Attributes( "Deprecated" = "TickMarkStyle" ) Public Property TickStyle As TickStyles
chg     Attributes( "Deprecated" = "TickMarkStyles" ) Public Enum TickStyles As Integer
        End Enum
End Class

Class SMTPSecureSocket
new     Public Property SMTPConnectionType As SMTPConnectionTypes
new     Public Enum SMTPConnectionTypes As Integer
new         STARTTLS = 0
new         SSLTLS = 1
new     End Enum
new     Public Sub RemoveAllMessages()
End Class

chg Attributes( "Deprecated" ) Class SOAPException
End Class

chg Attributes( "Deprecated" ) Class SOAPMethod
End Class

chg Attributes( "Deprecated" ) Class SOAPResult
End Class

Class SocketCore
new     Event DataReceived()
chg     Event Error(err As RuntimeException)
new     Event SendCompleted(userAborted As Boolean)
chg     Attributes( "Deprecated" ) Public Property LastErrorCode As Integer
End Class

Class Sound
new     Public Shared Function Open(flie As FolderItem) As Sound
End Class

Class SpecialFolder
new     Public Shared Function Resource(name As String) As FolderItem
rem     Public Shared Property Var As FolderItem
new     Public Shared Property Variable As FolderItem
new     Public Shared Property VariableLog As FolderItem
chg     Attributes( "Deprecated" = "SpecialFolder.VariableLog" ) Public Shared Property VarLog As FolderItem
End Class

Class SQLiteBlob
new     Public Function EndOfFile() As Boolean
End Class

Class SQLiteDatabase
chg     Public Function AttachDatabase(file As FolderItem, databaseName As String) As Boolean
chg     Public Function AttachDatabase(file As FolderItem, databaseName As String, encryptionKey As String) As Boolean
chg     Attributes( "Deprecated" = "WriteAheadLogging" ) Public Property MultiUser As Boolean
new     Public Sub AddDatabase(file As FolderItem, databaseName As String, encryptionKey As String)
new     Public Sub Constructor()
new     Public Sub Constructor(dbFile As FolderItem)
new     Public Sub CreateDatabase()
new     Public Sub RemoveDatabase(databaseName As String)
new     Public Property WriteAheadLogging As Boolean
End Class

Class SQLiteException
chg     Inherits DatabaseException
End Class

Class SQLitePreparedStatement
chg     Public Function SelectSQL(ParamArray params() As Variant) As RowSet
new     Public Function SQLSelect(ParamArray params() As Variant) As RecordSet
chg     Public Sub Bind(zeroBasedIndex As Integer, param As Variant)
chg     Public Sub Bind(zeroBasedIndex As Integer, param As Variant, type As Integer)
End Class

Class SSLSocket
chg     Attributes( "Deprecated" = "SSLConnectionType" ) Public Property ConnectionType As Integer
chg     Attributes( "Deprecated" = "SSLEnabled" ) Public Property Secure As Boolean
new     Public Property SSLConnectionType As SSLConnectionTypes
new     Public Enum SSLConnectionTypes As Integer
new         SSLv23 = 2
new         TLSv1 = 3
new         TLSv11 = 4
new         TLSv12 = 5
new     End Enum
new     Public Property SSLEnabled As Boolean
chg     Public Sub Event_Error(err As RuntimeException) Handles Error
End Class

new Class StackFrame
new     Public Property Address As Ptr
new     Public Property Name As String
new End Class

chg Attributes( "Deprecated" = "TextShape" ) Class StringShape
End Class

Class StyledText
new     Public Function FontName(Start As Integer, Length As Integer = 1) As String
chg     Public Sub AddStyleRun(Run As StyleRun)
new     Public Sub AddStyleRunAt(Run As StyleRun, Index As Integer)
new     Public Sub AppendStyleRun(Run As StyleRun)
new     Public Sub FontName(Start As Integer, Length As Integer = 1, Assigns _value As String)
new     Public Sub ParagraphTextAlignment(Index As Integer, Assigns _value As TextAlignments)
new     Public Sub RemoveStyleRunAt(Index As Integer)
End Class

Class StyleRun
new     Public Property FontSize As Single
new     Public Property IsBold As Boolean
new     Public Property IsItalic As Boolean
new     Public Property IsUnderline As Boolean
chg     Attributes( "Deprecated" = "FontSize" ) Public Property Size As Single
End Class


Class TabPanel
rem     Public Property Enabled As Boolean
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
new     Public Function CaptionAt(Index As Integer) As String
new     Public Sub AddTab(name As String)
new     Public Sub CaptionAt(Index As Integer, Assigns _value As String)
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
End Class

Class TCPSocket
new     Event SendingProgressed(bytesSent As Integer, bytesLeft As Integer) As Boolean
new     Public Function EndOfFile() As Boolean
End Class


chg Attributes( "DefaultEvent" = "AllowFocusRing" ) Class TextArea
new     Event MenuSelected()
new     Event SelectionChanged()
new     Event TextChanged()
new     Event ValidationFailed(InvalidText As String, StartPosition As Integer)
chg     Attributes( "Deprecated" = "AllowTabs" ) Public Property AcceptTabs As Boolean
chg     Attributes( "Deprecated" = "TextAlignment" ) Public Property Alignment As Integer
new     Public Property AllowFocusRing As Boolean
new     Public Property AllowStyledText As Boolean
new     Public Property AllowTabs As Boolean
chg     Attributes( "Deprecated" = "BackgroundColor" ) Public Property BackColor As Color
new     Public Property BackgroundColor As Color
chg     Attributes( "Deprecated" = "HasBorder" ) Public Property Border As Boolean
chg     Attributes( "Deprecated" ) Public Property DataField As String
chg     Attributes( "Deprecated" ) Public Property DataSource As String
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
new     Public Function CharacterPosition(lineNumber As Integer) As Integer
new     Public Function CharacterPosition(x As Double, y As Double) As Integer
new     Public Function InsertionPosition(x As Double, y As Double) As Integer
new     Public Function LineNumber(position As Integer) As Integer
new     Public Function VerticalScrollPosition() As Integer
new     Public Property HasBorder As Boolean
new     Public Property HasHorizontalScrollbar As Boolean
new     Public Property HasVerticalScrollbar As Boolean
new     Public Property HorizontalScrollPosition As Integer
chg     Attributes( "Deprecated" = "MaximumCharactersAllowed" ) Public Property LimitText As Integer
chg     Attributes( "Deprecated" ) Public Property LiveUpdate As Boolean
chg     Attributes( "Deprecated" = "ValidationMask" ) Public Property Mask As String
new     Public Property MaximumCharactersAllowed As Integer
chg     Attributes( "Deprecated" = "HasHorizontalScrollbar" ) Public Property ScrollBarHorizontal As Boolean
chg     Attributes( "Deprecated" = "HasVerticalScrollbar" ) Public Property ScrollBarVertical As Boolean
chg     Attributes( "Deprecated" = "SelectionAlignment" ) Public Property SelAlignment As Integer
chg     Attributes( "Deprecated" = "SelectionBold" ) Public Property SelBold As Boolean
new     Public Property SelectedText As String
new     Public Property SelectionAlignment As Integer
new     Public Property SelectionBold As Boolean
new     Public Property SelectionFontName As String
new     Public Property SelectionFontSize As Single
new     Public Property SelectionItalic As Boolean
new     Public Property SelectionLength As Integer
new     Public Property SelectionPlain As Boolean
new     Public Property SelectionStart As Integer
new     Public Property SelectionTextColor As Color
new     Public Property SelectionUnderline As Boolean
chg     Attributes( "Deprecated" = "SelectionItalic" ) Public Property SelItalic As Boolean
chg     Attributes( "Deprecated" = "SelectionLength" ) Public Property SelLength As Integer
chg     Attributes( "Deprecated" = "SelectionPlain" ) Public Property SelPlain As Boolean
chg     Attributes( "Deprecated" = "SelectionStart" ) Public Property SelStart As Integer
chg     Attributes( "Deprecated" = "SelectedText" ) Public Property SelText As String
chg     Attributes( "Deprecated" = "SelectionTextColor" ) Public Property SelTextColor As Color
chg     Attributes( "Deprecated" = "SelectionFontName" ) Public Property SelTextFont As String
chg     Attributes( "Deprecated" = "SelectionFontSize" ) Public Property SelTextSize As Single
chg     Attributes( "Deprecated" = "SelectionUnderline" ) Public Property SelUnderline As Boolean
chg     Attributes( "Deprecated" = "AllowStyledText" ) Public Property Styled As Boolean
new     Public Sub AddText(text As String)
new     Public Sub VerticalScrollPosition(Assigns _value As Integer)
chg     Attributes( "Deprecated" = "Value" ) Public Property Text As String
new     Public Property TextAlignment As TextAlignments
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
chg     Attributes( "Deprecated" = "AllowFocusRing" ) Public Property UseFocusRing As Boolean
new     Public Property ValidationMask As String
new     Public Property Value As String
End Class

Class TextEdit
chg     Attributes( "Deprecated" = "AllowTabs" ) Public Property AcceptTabs As Boolean
new     Public Property AllowFocusRing As Boolean
new     Public Property AllowSpellChecking As boolean
new     Public Property AllowTabs As Boolean
chg     Attributes( "Deprecated" = "AllowSpellChecking" ) Public Property AutomaticallyCheckSpelling As boolean
chg     Attributes( "Deprecated" = "BackgroundColor" ) Public Property BackColor As Color
new     Public Property BackgroundColor As Color
chg     Attributes( "Deprecated" = "IsBold" ) Public Property Bold As Boolean
chg     Attributes( "Deprecated" = "HasBorder" ) Public Property Border As Boolean
chg     Attributes( "Deprecated" ) Public Property DataSource As String
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
new     Public Function CharacterPosition(lineNumber As Integer) As Integer
new     Public Function CharacterPosition(x As Double, y As Double) As Integer
new     Public Function InsertionPosition(x As Double, y As Double) As Integer
new     Public Function LineNumber(position As Integer) As Integer
new     Public Property HasBorder As Boolean
new     Public Property HorizontalScrollPosition As Integer
new     Public Property IsBold As Boolean
new     Public Property IsItalic As Boolean
new     Public Property IsReadOnly As Boolean
new     Public Property IsUnderline As Boolean
chg     Attributes( "Deprecated" = "IsItalic" ) Public Property Italic As Boolean
chg     Attributes( "Deprecated" ) Public Property LiveUpdate As Boolean
chg     Attributes( "Deprecated" = "ValidationMask" ) Public Property Mask As String
chg     Attributes( "Deprecated" = "IsReadOnly" ) Public Property ReadOnly As Boolean
new     Public Property SelectedText As String
new     Public Property SelectionLength As Integer
new     Public Property SelectionStart As Integer
chg     Attributes( "Deprecated" = "SelectionLength" ) Public Property SelLength As Integer
chg     Attributes( "Deprecated" = "SelectionStart" ) Public Property SelStart As Integer
chg     Attributes( "Deprecated" = "SelectedText" ) Public Property SelText As String
new     Public Sub AddText(text As String)
chg     Attributes( "Deprecated" = "Value" ) Public Property Text As String
new     Public Property TextAlignment As TextAlignments
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
chg     Attributes( "Deprecated" = "IsUnderline" ) Public Property Underline As Boolean
chg     Attributes( "Deprecated" = "AllowFocusRing" ) Public Property UseFocusRing As Boolean
new     Public Property ValidationMask As String
new     Public Property Value As String
End Class

chg Attributes( "DefaultEvent" = "TextChanged" ) Class TextField
new     Event MenuSelected()
new     Event SelectionChanged()
new     Event TextChanged()
new     Event ValidationFailed(InvalidText As String, StartPosition As Integer)
chg     Attributes( "Deprecated" = "AllowTabs" ) Public Property AcceptTabs As Boolean
chg     Attributes( "Deprecated" = "TextAlignment" ) Public Property Alignment As Integer
new     Public Property AllowFocusRing As Boolean
new     Public Property AllowTabs As Boolean
chg     Attributes( "Deprecated" = "BackgroundColor" ) Public Property BackColor As Color
new     Public Property BackgroundColor As Color
chg     Attributes( "Deprecated" = "HasBorder" ) Public Property Border As Boolean
chg     Attributes( "Deprecated" = "Hint" ) Public Property CueText As String
chg     Attributes( "Deprecated" ) Public Property DataField As String
chg     Attributes( "Deprecated" ) Public Property DataSource As String
new     Public Property FontName As String
new     Public Property FontSize As Single
new     Public Property FontUnit As FontUnits
new     Public Function CharacterPosition(lineNumber As Integer) As Integer
new     Public Function CharacterPosition(x As Double, y As Double) As Integer
new     Public Function InsertionPosition(x As Double, y As Double) As Integer
new     Public Function LineNumber(position As Integer) As Integer
new     Public Property HasBorder As Boolean
new     Public Property Hint As String
new     Public Property HorizontalScrollPosition1 As Integer
chg     Attributes( "Deprecated" = "MaximumCharactersAllowed" ) Public Property LimitText As Integer
chg     Attributes( "Deprecated" ) Public Property LiveUpdate As Boolean
chg     Attributes( "Deprecated" = "ValidationMask" ) Public Property Mask As String
new     Public Property MaximumCharactersAllowed As Integer
new     Public Property SelectedText As String
new     Public Property SelectionLength As Integer
new     Public Property SelectionStart As Integer
chg     Attributes( "Deprecated" = "SelectionLength" ) Public Property SelLength As Integer
chg     Attributes( "Deprecated" = "SelectionStart" ) Public Property SelStart As Integer
chg     Attributes( "Deprecated" = "SelectedText" ) Public Property SelText As String
new     Public Sub AddText(text As String)
chg     Attributes( "Deprecated" = "Value" ) Public Property Text As String
new     Public Property TextAlignment As TextAlignments
chg     Attributes( "Deprecated" = "FontName" ) Public Property TextFont As String
chg     Attributes( "Deprecated" = "FontSize" ) Public Property TextSize As Single
chg     Attributes( "Deprecated" = "FontUnit" ) Public Property TextUnit As FontUnits
chg     Attributes( "Deprecated" = "AllowFocusRing" ) Public Property UseFocusRing As Boolean
new     Public Property ValidationMask As String
new     Public Property Value As String
End Class

Class TextInputStream
new     Public Property BytePosition As UInt64
new     Public Function EndOfFile() As Boolean
new     Public Function Handle(type As IOStreamHandleTypes) As Ptr
chg     Attributes( "Deprecated" ) Public Property LastErrorCode As Integer
chg     Attributes( "Deprecated" = "BytePosition" ) Public Property PositionB As UInt64
new     Public Sub Constructor(handle As Ptr, type As IOStreamHandleTypes)
End Class

Class TextOutputStream
new     Public Property Encoding As TextEncoding
new     Public Function Handle(type As IOStreamHandleTypes) As Ptr
new     Public Shared Function Open(file As FolderItem) As TextOutputStream
chg     Attributes( "Deprecated" ) Public Property LastErrorCode As Integer
new     Public Sub Constructor(handle As Ptr, type As IOStreamHandleTypes)
End Class

new Class TextShape
new     Inherits Object2D
new     Public Enum Alignment As Integer
new         Left = 0
new         Top = 1
new         Center = 2
new         BaseLine = 3
new         Right = 4
new         Bottom = 5
new     End Enum
new     Public Property Bold As Boolean
new     Public Property FontName As String
new     Public Property FontSize As Double
new     Public Property FontUnit As FontUnits
new     Public Property HorizontalAlignment As Alignment
new     Public Property Italic As Boolean
new     Attributes( "Deprecated" = "Value" ) Public Property Text As String
new     Public Property Underline As Boolean
new     Public Property Value As String
new     Public Property VerticalAlignment As Alignment
new End Class

Class Thread
chg     Attributes( "Deprecated" ) Public Const NotRunning = 4
chg     Attributes( "Deprecated" ) Public Const Running = 0
chg     Attributes( "Deprecated" ) Public Const Sleeping = 3
chg     Attributes( "Deprecated" ) Public Const Suspended = 2
chg     Attributes( "Deprecated" ) Public Const Waiting = 1
new     Event UserInterfaceUpdate(data() As Dictionary)
chg     Attributes( "Deprecated" = "ThreadState" ) Public Property State As Integer
new     Public Sub AddUserInterfaceUpdate(data As Dictionary)
new     Public Sub AddUserInterfaceUpdate(ParamArray data() As Pair)
new     Public Sub Pause()
new     Public Sub Start()
new     Public Sub Stop()
new     Public Property ThreadState As ThreadStates
new     Public Enum ThreadStates As Integer
new         Running = 0
new         Waiting = 1
new         Paused = 2
new         Sleeping = 3
new         NotRunning = 4
new     End Enum
End Class

Class Timer
chg     Attributes( "Deprecated" = "RunModes.Multiple" ) Public Const ModeMultiple = 2
chg     Attributes( "Deprecated" = "RunModes.Off" ) Public Const ModeOff = 0
chg     Attributes( "Deprecated" = "RunModes.Single" ) Public Const ModeSingle = 1
new     Event Run()
new     Public Delegate Sub TimerCallLater ()
new     Public Delegate Sub TimerCallLaterWithValue (value As Variant)
chg     Attributes( "Deprecated" = "RunMode" ) Public Property Mode As Integer
new     Public Property RunMode As RunModes
new     Public Enum RunModes As Integer
new         Off = 0
new         Single = 1
new         Multiple = 2
new     End Enum
new     Public Shared Sub CallLater(afterMilliseconds As Integer, method As TimerCallLaterWithValue, value As Variant)
new     Public Shared Sub CallLater(afterMilliseconds As Integer, method As TimerCallLater)
new     Public Shared Sub CancelCallLater(method As TimerCallLater)
new     Public Shared Sub CancelCallLater(method As TimerCallLaterWithValue)
new     Public Property Tolerance As Integer
End Class

new Class TimeZone
new     Public Property Abbreviation As String
new     Public Shared Function Current() As TimeZone
new     Public Property SecondsFromGMT As Integer
new     Public Sub Constructor(gmtOffsetInSeconds As Integer)
new     Public Sub Constructor(name As String)
new     Public Sub Constructor(tz As Xojo.Core.TimeZone)
new End Class

chg Attributes( "DefaultEvent" = "Pressed" ) Class Toolbar
new     Event MenuItemSelected(button As ToolbarItem, selectedItem As MenuItem)
new     Event Pressed(button As ToolbarItem)
new     Public Function ButtonAt(index As Integer) As ToolbarItem
chg     Public Function Item(index As Integer) As ToolItem
new     Public Sub AddButton(item As ToolbarItem)
new     Public Sub AddButtonAt(index As Integer, item As ToolbarItem)
chg     Public Sub Insert(index As Integer, item As ToolItem)
chg     Public Sub Remove(index As Integer)
new     Public Sub RemoveButtonAt(index As Integer)
End Class

new Class ToolbarButton
new     Inherits ToolbarItem
new     Public Property ButtonStyle As ButtonStyles
new     Public Enum ButtonStyles As Integer
new         PushButton = 0
new         ToggleButton = 2
new         Separator = 1
new         DropDownMenu = 3
new         SeparatorDropDownMenu = 4
new         Space = 5
new         FlexibleSpace = 6
new     End Enum
new     Public Property Icon As Picture
new     Public Property Menu As MenuItem
new     Public Property Pressed As Boolean
new End Class

new Class ToolbarItem
new     Public Property Caption As String
new     Public Property Enabled As Boolean
new     Attributes( "Deprecated" = "Tooltip" ) Public Property HelpTag As String
new     Public Property Name As String
new     Public Property Tag As Variant
new     Public Property Tooltip As String
new End Class

chg Attributes( "Deprecated" = "ToolbarButton" ) Class ToolButton
End Class

chg Attributes( "Deprecated" = "ToolbarItem" ) Class ToolItem
End Class

Class TrayItem
new     Event Pressed(pressType As PressTypes)
chg     Attributes( "Deprecated" = "Tooltip" ) Public Property HelpTag As String
new     Public Enum PressTypes As Global.Integer
new         DoubleClick = 102
new         LeftClick = 100
new         RightClick = 101
new     End Enum
new     Public Property Tooltip As String
End Class

Class UpDownArrows
new     Event UpPressed()
new     Event DownPressed()
chg     Attributes( "Deprecated" = "AllowFocus" ) Public Property AcceptFocus As Boolean
new     Public Property AllowFocus As Boolean
End Class

Class URLConnection
new     Public Function ResponseHeaders() As Iterable
End Class

rem Class WebAppSecurityOptions
rem     Public Dim ConnectionType As ConnectionTypes
rem     Public Dim FrameEmbedding As FrameOptions
rem     Public Enum ConnectionTypes As Integer
rem         SSLv2 = 0
rem         SSLv23 = 1
rem         SSLv3 = 2
rem         TLSv1 = 3
rem         TLSv11 = 4
rem         TLSv12 = 5
rem     End Enum
rem     Public Enum FrameOptions As Integer
rem         Deny = 0
rem         SameOrigin = 1
rem         Allow = 2
rem     End Enum
rem End Class

Class Window
new     Event Activated()
new     Event CancelClosing(appQuitting As Boolean) As Boolean
new     Event Closing()
new     Event Deactivated()
new     Event Maximized()
new     Event MenuSelected()
new     Event Minimized()
new     Event Opening()
new     Event Restored()
chg     Attributes( "Deprecated" = "BackgroundColor" ) Public Property BackColor As Color
new     Public Property BackgroundColor As Color
chg     Public Property Bounds As Xojo.Rect
new     Public Property Changed As Boolean
chg     Attributes( "Deprecated" = "HasCloseButton" ) Public Property CloseButton As Boolean
chg     Attributes( "Deprecated" = "Changed" ) Public Property ContentsChanged As Boolean
new     Public Property DefaultLocation As Locations
chg     Attributes( "Deprecated" = "Type" ) Public Property Frame As Integer
chg     Attributes( "Deprecated" = "HasFullScreenButton" ) Public Property FullScreenButton As Boolean
chg     Attributes( "Deprecated" = "HasBackgroundColor" ) Public Property HasBackColor As Boolean
new     Public Property HasBackgroundColor As Boolean
new     Public Property HasCloseButton As Boolean
new     Public Property HasFullScreenButton As Boolean
new     Public Property HasMaximizeButton As Boolean
new     Public Property HasMinimizeButton As Boolean
new     Public Enum Locations As Global.Integer
new         Default = 0
new         ParentWindow = 1
new         MainScreen = 2
new         ParentWindowScreen = 3
new         Staggered = 4
new     End Enum
chg     Attributes( "Deprecated" = "MaximumHeight" ) Public Property MaxHeight As Integer
chg     Attributes( "Deprecated" = "HasMaximizeButton" ) Public Property MaximizeButton As Boolean
new     Public Property MaximumHeight As Integer
new     Public Property MaximumWidth As Integer
chg     Attributes( "Deprecated" = "MaximumWidth" ) Public Property MaxWidth As Integer
chg     Attributes( "Deprecated" ) Public Property MenuBarVisible As Boolean
chg     Attributes( "Deprecated" = "MinimumHeight" ) Public Property MinHeight As Integer
chg     Attributes( "Deprecated" = "HasMinimizeButton" ) Public Property MinimizeButton As Boolean
new     Public Property MinimumHeight As Integer
new     Public Property MinimumWidth As Integer
chg     Attributes( "Deprecated" = "MinimumWidth" ) Public Property MinWidth As Integer
chg     Attributes( "Deprecated" = "DefaultLocation" ) Public Property Placement As Integer
new     Public Property Type As Types
new     Public Enum Types As Global.Integer
new         Document = 0
new         MovableModal = 3
new         ModalDialog = 2
new         Floating = 1
new         PlainBox = 4
new         ShadowedBox = 5
new         Rounded = 6
new         GlobalFloating = 9
new         Sheet = 10
new         ModelessDialog = 12
new     End Enum
End Class

Class XmlDocument
chg     Public Function Transform(xsl As XmlStylesheet) As String
chg     Public Function Transform(xsl As XmlStylesheet, saxHandler As XmlXsltHandler) As String
End Class

Class XmlNode
chg     Public Function Xql(query As String, map() As String) As XmlNodeList
chg     Public Function Xql(query As String) As XmlNodeList
chg     Public Function Xql(query As String, map As XmlNamespaces) As XmlNodeList
End Class

Class XmlReader
chg     Public Sub Constructor(xmlEncoding As String, namespaceSeparator As String)
chg     Public Sub Constructor(xmlEncoding As String)
chg     Public Sub Parse(s As String)
chg     Public Sub Parse(s As String, isFinal As Boolean)
End Class

chg     Global Const RBVersion = 2019.0199999999999818
chg     Global Const RBVersionString = "2019r2"
chg     Global Const XojoVersion = 2019.0199999999999818
chg     Global Const XojoVersionString = "2019r2"

Some of the new extends methods on intrinsic types seem to be in modules which introspection won’t work on so I have to sort them out mostly by hand

About Events

Seems there is some lack of clarity about event handlers and event definitions and how this affects 2019r2.

Lets start with event handlers and event definitions.

When you take a control, like a push button, and drag one onto a layout you are creating an instance of a button on that layout. And you can add event handlers to that control.

The reason you can add those event handlers is because the base class for push buttons has several event definitions. Those that are defined you can add to the instance. Any that are not you cant. Its that simple.

Custom subclasses of controls behave the same. An author might add new event definitions for events that make sense for their control.

So what happens when that author has implemented an event like “Open” and you drag an instance to the layout ?

Simple. You won’t be able to add that event to that control because the author implemented it so its no longer available for you to add when you put an instance on a layout.

So how can an author rectify this so you can once again add code to their custom controls Open event ? By adding an event definition in their custom control also called Open and raising that event in the event handler for the Open event.

What then happens at runtime is that the subclass implementation of the Open Event Handler is called and, as part of that code, it raises the Open event which will call any code added in the instance on the layout.

Lets see this in action

  1. create a new desktop project
  2. drag a Generic Button from the library all the way over to the Navigator & drop it into the Navigator. This will create a new class called CustomPushButton
  3. Now add the Event Handler for the Open event in this new subclass of PushButton (note if you’re using 2019r2 then you would add the Opening event)
  4. Now drag our new Class onto Window1 so you get an instance on the layout

Your project should look something like this

If you now select the instance on the Window and try to add an event you will see that the Open Event is not in the list.

So lets fix that

Select the CustomPushButton in the Navigator. Add an Event Definition and name it Open (in 2019r2 name it Opening)

Then in the CustomPushButtons Open event handler put

raiseevent Open // in 2019r2 put raiseEvent Opening

Now if you select the instance of the control on Window1 you CAN add the Open event (in 2019r2 you can add the Opening event)

IN fact when we added the Open, or Opening, event definition we could have named it ANYTHING we wanted.

ByVal and ByRef

A recent thread on the forums made it clear there is some lack of clarity about ByVal and ByRef

So here’s yet another attempt.

Value types are ones that the data assigned to them is stored right IN the memory location the compiler set aside for them.

A statement like

dim i as integer

reserves a spot in memory when you compile. When you later do

i = 100

the value 100 is put in the spot reserved

For a reference type, one that you create using the NEW keyword, what is reserved by the compiler is a spot to hold the “address” of whatever kind of object defined. A statement like

dim d as Date

sets aside a spot to hold the address of a Date. When you later do

d = new Date

what gets put in the spot that was reserved is not the data for a Date object but the “address” of that data – the reference to the data

Final(ly)

Some languages have to notion of FINAL for methods, events, properties and many other aspects of the language.

But what exactly does FINAL do or mean ?

In other languages, like Java, FINAL has other uses like creating “constants” which there is no need for in Xojo. In those languages a FINAL property is a constant.

In some cases though you might create a class and implement a method that you do NOT want subclasses to override. This could be needed for some algorithm where a subclass overriding the method could negatively affect the operation of the algorithm.

A good example might be something like a StringBuilder class that has an internal buffer that it uses to create a fast string building mechanism. The method that manipulates this internal buffer should be an implementation detail that subclasses should probably not be able to override.

Currently in Xojo the only way to make a method NOT overridable is to make it private. But as soon as you do that subclasses cannot call it.

In Xojo if you want this class to be subclassable you have to make its methods either public or protected. And as soon as you do that a subclass CAN override those methods.

Being able to mark a method as FINAL would prevent the ability of a subclass to subvert and take over certain critical function and still make the method usable by the subclass.

On being a developer

As developers we need to be more than just average consumers of technology.

That means we need to be more realistic about things like system updates and patches than just blindly installing them especially on our primary working machine.

At the very least we need to be able to test the very latest. You know our users are going to install the latest betas and run them as soon as possible. And we still need to be able to test on the oldest systems we say we support.

Maybe that means you have a bunch of bootable systems so you can test your software on older versions of MacOS, Windows, Linux or whatever other OSes you support. VM’s _may_ be sufficient for this although if you have hardware dependencies they can be tough to test.

Or, like many Mac developers have experienced, a VM may hide a problem from you. Windows flickering is almost non-existent in some VM’s running on macOS as the VM is double buffered by the underlying host OS. So you never see that issue running in some VM’s on macOS. But testing on real hardware may show it to you.

For me this has typically meant having several removable drives that I can boot from on my Mac. I have everything from 10.10 up to 10.15 bootable. For Window I have Windows 7, 8 and 10 as bootable drives for my PC. For linux I’ll do similar if the need arises.

In many cases a user may “update first and ask questions later”.

As a software developer we need to do better than that.

A reason

I want Xojo to succeed. My living relies on it. This is the same for others I talk with. We all NEED Xojo to succeed. For us it needs to do more than just survive from day to day. We need it to grow. Our businesses depend on Xojo. We need it to be stable. We need it to be dependable.

The recent API changes seem to ignore the concerns of those businesses that need to support customers that may be using legacy OS versions and legacy hardware. Some of the API changes have spawned their own new bugs that make adopting it problematic.

2019r2 makes it harder to go back and forth between versions. We all realize that Xojo never guaranteed that this would work well; but until now Xojo never deliberately made changes they knew would break this ability. We dont do this because its fun. We do it because our customers demand it as they run older versions of Windows & macOS. Xojo used to make this a simple matter. Now its not so simple.

We’re put in the position of either rewriting code or leaving it with tons of deprecation warnings for no gain in functionality*.

Some of the changes may silently break existing code. A third party supplying a control to a customer can be broken when that customer simply adds the Opening event. This may silently render the control non-functional. This is a support headache for all vendors of third party controls with no real means to fix the problem AND still attract and sell to a wide audience of Xojo users; some of whom are still using older versions. It would be nice if Xojo’s third party market was large enough to not have to cater to old versions; but it’s not.

Many of us are very OCD and all those warnings drive us all crazy as something really important could be hiding in there. So we examine all this code and IF we rewrite it we can’t go back to old versions at all. Certainly not if we use the renamed events. Thats a problem.

In some cases the code that now has deprecation warnings may be many years old. In some cases more than a decade. And if we have to rewrite it there’s no reason not to look at other tools and technologies for those rewrites. I’m not saying that this is what we want to do. We’d rather not. We like Xojo which is why we have used it – but the issues going back and forth between versions make it sufficiently difficult that if we’re going to have to rewrite we might as well look at what other tools exist.

What I’m hoping for is for Xojo to give me, us, a reason NOT to have to even think about such a move. More a direction that says “we value these full time developers” as that seems to have been missing lately which is why I’m even writing this. Full time developers feel like they are simply ignored, their concerns not understood, and generally that we’re just around to pay for Pro licenses and nothing more.

More targets isnt what many of us are looking for. We need a tool that is reliable, eminently capable on the targets it has now & in the projects we use it for, and mostly bug free. We need targets that are capable of taking on real world significant applications on the day we get them. Not ones that require a significant number of declares for basic functionality. And ones that can scale well and handle many users without having to resort to some of the issues that arise with web apps.

Professional level features will retain existing users and still help the citizen developers that find Xojo.  A better reporting tool, PDF export, built-in Date and Date Time controls, and a better grid component, are just a few of the items that would add real value to the product that everyone can use today and keep users from outgrowing Xojo.

There are a number of existing users that are already phasing Xojo out of their businesses and some are actively looking at alternatives to Xojo.  Many of us feel that our needs are being purposely ignored.

If we knew that Xojo was intent on becoming more than a middle tier tool and dedicated to being a truly professional tool we’d be happy to pay more. A lot more.

Our livelihoods depend on Xojo and if that meant we all bought Pro+ licenses I doubt any of us would lose much sleep over that price tag. Its the price of doing business.

Please give us that reason.

*Most of 2019r2 did not improve functionality. macOS for folderitems got warranted updates along with fixes for the the select color panel. Generate and parse json were added and a few url connection fixes. But most of API 2.0 made few other must have changes.

Update Oct 29, 2019 : I made this post available to Xojo Inc prior to removing the password protection. So far I have had no reply or comments.

New Attributes in 2019r2

There’s a lot of things to digest in 2019r2

One of the handy things that was added is a new Attribute you can make use of in your own custom controls – DefaultEvent

By adding this attribute to your custom class’ attributes you can make it so any one of the events your custom controls exposes is the “default event”. This is the one that will be selected when a user puts an instance of your control on a layout and adds events to it.

Handy stuff.

ToHex

Converting numbers, especially ones of a specific size, to hex has long been problematic. The built in functions don’t do a very good job with it and often drop leading zeros even when the integers size is known.


Dim s1 As String 
s1 = Hex(13) // here 13 is an "Integer" literal 
             // and should be treated as a 32 bit integer in a 32 bit build
             // or a 64 bit integer in a 64 bit build

Dim i8 As Int8 = 13
Dim s2 As String
s2 = i8.ToHex

Break

If you look at the values in S1 and S2 produced by the framework functions you’ll see that all leading 0’s are dropped event though the integers are of known size and a proper Hex representation of these should include the leading 0’s. But they don’t.

Most time dropping the leading 0’s is not a big deal. If you are just saving the value into a db, file etc and then eventually converting it back into a value using VAL it wont matter. But when you need it for some other purose then it really does matter. Like when you’re generating a hex key value or something where those leading 0 digits ARE relevant.

So I created a module that does a “proper” hexing of numeric values that does retain the leading 0’s.

Enjoy it

Game of Code

Or “write code like you immediately forget what you wrote” so it’s not a guessing game to figure out why you wrote what you wrote way back when.

What do I mean by that ?

Write code CLEARLY. Use constants liberally and give them good meaningful names.

So instead of writing a line like

If asc(key) = 16 or asc(key) = 204 then

where 16 and 204 are not obvious to everyone maybe write this as

Const ctrlP = 16
Const F5 = 204

if asc(key) = ctrlP  or asc(key) = F5 then

And then even when you go back and look at this code in 6 months even you won’t have to guess what 16 and 204 mean.

Maintaining backwards compatibility in 2019r2

Subclasses, modules and compatibility flags ðŸ˜›

In Xojo it never used to require a lot of hard work to work across multiple versions. If you simply avoided using the new features then a project could mostly move back and forth between versions without much effort. You could even deal with a lot of newer version changes with a few #If XojoVersion wrappers around bits of code.

2019R2 makes this a little more challenging.

Most of the issues I’ve experienced are because one clients code has a lot of custom control subclasses and these subclasses defined new events. And now, with the takeover of so many event names, these subclass events conflict with the names Xojo took over. It makes it so these client projects no longer just open and compile in 2019r2. They get thousands of compilation errors.

This makes updating to 2019r2 tricky for this client. Especially since they also want to maintain the ability to compile and work in older versions of Xojo to be able to compile for older versions of the OSes they support.

If you’re in the same position there is a way to make it so the event names that were taken over won’t affect client projects.

How ? I created a set of subclass of the built in controls and classes which all client subclasses could be based on and, depending on the build version of Xojo, I could switch these custom subclasses on and off and the rest of the clients subclasses are unaware this has occurred.

What I am not sure of is how far back this technique will work.
Really old versions MAY not interpret compatibility flags quite right.

Now for the HOW TO guide :

  1. In this project I opened it in 2019r2
  2. I created a module called For2019r2
  3. I cleared ALL the compatibility flags for the module so its not compatible with ANY targets
  4. In this module I created new subclasses of every control used and set their scope To “global”
  5. In each subclass I add new event definitions for all the OLD events
  6. In these subclasses I implemented the new event handlers that got renamed to raise the old events added in step 5.

I implemented the “new events” and simply had them raise an event with the old name & params. I could have name these events anything I wanted. By doing this I could add my own methods, properties, etc or even rename any properties Xojo also renamed. I could also handle any exceptions raised and just set error codes or whatever I wanted. I’ve written before about how to do this shadowing “properly”. Thats the technique in use here. What we’re adding this time is the ability to have two different sets of these properly subclassed and shadowed controls that we can switch between.

I saved this project and then in 2019r1.1 I reopened this project as there is some work you cannot do in 2019r2. In the subclasses in the For2019r2 module we also need to add the OLD events which still exist but, because you started the project in2019r2, you can’t see them nor can you add them in 2019r2. We need to also implement the old event handlers and have them raise the event with the old name as well. This is important otherwise in R2 you will get errors about the event definition existing and colliding.

For older IDE’s we create a new module named For2019r1AndEarlier and do much the same adding subclasses of all the controls we need. This time we add just the old event name and a matching event definition for the old event.

The important thing to do is in the module fore 2019r2 if you named the Canvas subclass MySubClass then in the 2019r1 module name the canvas subclass the exact same thing. The same is true for all other control subclasses. They need to be named the same in the For2019r2 and For2019r1AndEarlier modules. This way when you create a new instance on a layout and make its super MySubclass, depending on which module has its compatibility flag enabled you will actually be creating an instance derived from a different superclass.

Now when I want to compile in R2 I select the For2019r2 module & enable the Desktop 32 and 64 bit compatibility flags so my custom subclasses which are outside this module use the base classes inside this module.
When I want to compile using 2019r1.1 and earlier I disable the compat flags on the For2019r2 module and enable the compt flag on the For2019r1AndEarlier so my other classes now use these as their base class.

And you can now ignore R2 event name changes and name these events to whatever you want.

Caveat – i have found a couple interesting bugs in the 2019r1.1 IDE doing this

When moving some control subclasses into a folder insances on a layout may “lose” their super especially if neither of the modules has a compat flag set.
So you get an error like

CustomTextField.Super
Can't find a type with this name. Did you mean class For2019r1andEarlier.MyTextFieldBase?
MyTextFieldBase

Fixing this amounts to enabling one of the compat flags and then going to the super field of the affected control and putting the cursor in the super field and pressing enter

Here’s an example  that shows how I’ve set things up