Operator_Convert

Operator_Convert is a very handy method to implement on a lot of classes. It not only lets you create a mechanism to make your classes convert themselves into other types but it also lets you create new instances FROM other data types.

So let’s start with the simple forms of operator_convert – the “convert TO” forms.

Suppose you have some class defined called “myClass”

Class myClass
End Class

and you want to make it easy to have this class write log messages to the DebugLog. You most certainly could write a “ToString” method as an explicit way to convert this class to a String

Class myClass
   Function ToString() as string
   End Function
End Class

and then in your code you’d use it like :

dim instance as new MyClass

// lots of intervening code

system.debuglog instance.ToString

And maybe this isn’t so bad. It IS explicit which is most times a good thing. Your code will have a certain clarity to it because of this style.

But there is another way to do much the same thing that is also effective – despite it being slightly hidden and magical like a variants ability to automatically convert itself to other data types by assignment. And this “magic” is operator_convert

In a class like our sample

Class myClass
   Function Operator_Convert() as string
   End Function
End Class

And now your usage could look like

dim instance as new MyClass

// lots of intervening code

system.debuglog instance

Since System.Debuglog takes a string as a parameter the compiler figures out that our class has a suitable Operator_convert method and will call that for us.

You can define many operator_convert functions that convert TO other datatypes and as long as they dont cause any ambiguity you will get the results you expect. You may get an ambiguous situation of you define a Convert To operator_convert for Integer, Int32 and/or Int64 since Integer is simply an alias to one of those types depending on whether you are building for 32 or 64 bit. There can be others but this is the most common.

There is another form for operator_convert – the “convert FROM” form.

In this case operator_convert behaves in many ways like a constructor called with a parameter. However one thing to remember is that Operator_convert is NOT a constructor! Its an initializer at best. If your class depends on constructors being called make sure when you use the convert FROM form you call your constructor !

For our sample class suppose we want to initialize it from a string.

Class myClass
   Function Operator_Convert() as string
   End Function

   Sub Operator_Convert(initializeWith as string)
      // if we rely on the constructor having been called 
      // then call the Constructor here !
       
      // now set our class up from whatever data is in the
      // parameter passed
   End Sub

End Class

and we could use it like

dim instance as MyClass = "123"

// lots of intervening code

system.debuglog instance

Something to note is that these conversions can appear to be hidden away from a casual reader so use them with care and consideration. Often explicit code, like the ToString example above aids a reader in understanding the code because its right there in front of them that you are asking the class to give you a string representation for some purpose.

Keep that in mind and use these with that in mind.

Enjoy !

Thanks !

Flat out I’ll say Thanks to Xojo for the 2.1 decision to revert the event name changes. Of all the changes that one was probably the hardest one to deal with as there’s no easy way to #if around an event definition or event handler.

Properties may still cause some grief if you start a project in 2019r2 or r2.1 since they don’t retain the “old” values” so going back to an old version can be tricky if you start in 2019r2 or 2.1. At least this can be worked around by starting projects in 2019r1.1 or older and its fairly simple to make it so every project behaves like this by using a template that overrides the normal built in one.

WOW !

All I can say is WOW !

The Eagles reuniting was the first time I saw hell freeze over

And now I’ve seen it a second time

You’ll see what I mean

All I can say is OMG THANK YOU !!!!!!!!!

Just wait. You’ll see what I mean in the not too distant future.

Spot the bug

You might run into this one from time to time. I know it has bitten a LOT of people and it’s not intuitive at all.

In a new desktop app add a new Class. The default name of Class1 will work fine. And create a new subclass of this. Again the default of CustomClass1 will work fine.

Then in the default window add the open event handler. In there put these few lines of code.

Dim c As Class1
c = methodThatCreatesSubclassInstance
foo(c)

Then add two methods to Window1

The first should be defined as

Private Function methodThatCreatesSubclassInstance() as Class1
  Return New CustomClass1
End Function

And then we need two versions of Foo

Private Sub foo(c as Class1)
  Break
End Sub

Private Sub foo(c as CustomClass1)
  Break  
End Sub

Thats it. If you run this you might think that because methodThatCreatesSubclassInstance returns a CustomClass1, which you can see in the debugger at runtime, that the sub that takes a CustomClass1 would be the one that is called.

And you might try various tricks to make that happen like changing the return type of methodThatCreatesSubclassInstance to be CustomClass1.

Short of explicitly casting, which you really might want to avoid, you’ll find that the version of Foo that takes a Class1 parameter is the one that gets called.

And this is something I’ve long considered a bug. But various compiler engineers have disagreed 🙁

The important thing here is not the runtime type that the variable c holds. At runtime you can inspect it and see that it has exactly what we expected – an instance of CustomClass1.

What IS important is the declared type of c – a Class1. And the compiler decides, at compile time, that the version of Foo that should be used is the one that has a Class1 parameter.

Careful out there.

About incremental compilation

There are ways to see what is / isnt being recompiled

Its one of those many temporary files xojo creates

First thing you need is the PID of the specific instance of xojo you’re interested in.
It makes life simpler IF you just run one version at a time
Once you start Xojo you can look in Activity Monitor & get its PID

If you find the dir referred to by SpecialFolder.Temporary
a two liner in Xojo like this would suffice

dim f as folderitem = SpecialFolder.Temporary

break

for me on 10.14.6 this is buried in

/private/var/folders/3t/wyqsbmsj4bbf_z_wdrjnp0zw0000gn/T/TemporaryItems


Inside there should be a dir named “xojo scratch <PID>” and the PID will be the one you looked up previously in Activity Monitor

Inside there are different dirs for each open project that you have saved & run
They are generally named in a way that its not so hard to tell which is which

If you open this in the Finder then you can sort by last modified
Every time you run you can see the modification dates of things and tell what is / isnt being recompiled

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

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.

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.