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 !

Downgrade 2019.R2 to 2019.R1.1

It had to happen sooner or later. But now questions about how to do this are appearing. And the answer is “it depends”.

ALWAYS use a copy or have a backup copy of your entire project JUST in case something goes wrong.

IF you have a license that permits you to save as text (Xojo Project) save your project as a text project. You then need to open the single file called projectname.xojo_project

At the very beginning of this file you will see entries like the following :

Type=Desktop
RBProjectVersion=2019.02
MinIDEVersion=20190200
OrigIDEVersion=20190200

Change the number after MinIDEVersion to 20070100 and save. You can now open the project in whatever version you want.

In an XML project you would see

<?xml version="1.0" encoding="UTF-8"?>
<RBProject version="2019r2" FormatVersion="2" MinIDEVersion="20190200">
<block type="Project" ID="0">

Again change the number following MinIDEVersion to 20070100. Make sure you keep the quotes around the value. And save.

Binary is a lot tougher because it is a proprietary format. And to edit that you WILL need a licensed version of Arbed. Once you have that you can open a binary project and select the top entry which represents the project and change the OriginalVersion to 20070100 and the ProjectSavedInVers to 2007.01 and save.

And now you can open your project in old versions again.

Prepared Statements

Often you’ll hear people say you should use prepared statements to avoid sql injection issues. They’re not wrong. But there can be other reasons to use them.

In some db’s when you create a prepared statement and use it over & over you can avoid a fair amount of a speed hit.

When you initially create a prepared statement many db engines will actually do some work to figure out what the optimal mechanism, or query plan, is to access the data in a table.

And by reusing this over & over you can avoid that computation to determine that optimal query plan.

Not ALL db’s do this, and in some it wont matter if you use a prepared statement because they simply recompute the query plan every time anyways.

But, even if the db engine DOES recompute the query plan over & over you still get all the benefits of avoiding sql injections issues by using them.

I’d say they definitely fall into the category of “best practice”.

Extension methods

Sometimes you run into a situation where you want to add functionality to an existing data type. It might be a string, integer, array or perhaps one of the built in classes that you want to add new functionality to.

Exactly how do you do this ?

You can’t just edit the framework and add new methods to the String type.

And that is probably a good thing. Imagine if every user could edit String and add methods to it. There might be a huge plethora of incompatible implementations of String very rapidly.

Since you cannot edit String what can you do ?

Extension methods!

You CAN create a method type that is almost indistinguishable from a method in the base type itself. First I would suggest creating a Module named with a meaningful name. For a Module to add new method to the String data type I would name the module StringExtensions so its very clear what this module contains.

The in this module you can add GLOBAL methods. And each method in the module should have a signature that uses the extends keyword.

I’ll demonstrate. Suppose we wanted to add a new method to String that checks if the first letter of the string is a digit. We’ll name that method IsDigit.

For create a new desktop project.

Add a Module to the project called StringExtensions.

Then add a method to the StringExtensions module and name the method IsDigit.

The parameters for this method should be

extends aString as String

Note the use of EXTENDS. This is the hint to the compiler that this method should be treated as if it were one of the methods in the framework for the String datatype.

The return type for this method should be Boolean.

The code in the method should be

If aString.Trim = "" Then 
  Return False
End If

If InStr( "0123456789", aString.Left(1) ) > 0 Then
  Return True
End If

return false

The finished method should appear like

Then in the Open, or in 2019r2 the Opening event, you can test the new extension method with code like


Dim s As String

s = "abc"
If s.IsDigit Then
  Break
End If

s = ""
If s.IsDigit Then
  Break
End If

s = "1abc"
If s.IsDigit Then
  Break
End If

The first two cases should return false. And the last one should return true.

The only thing to be careful about with extension methods is :

  • you cant name the Module the same as the datatype. The IDE will generally prevent you from doing this.
  • you have to not create a new extension that may conflict with one that is in the framework.
  • you have to be careful not to create one that will cause the compiler to decide there is an ambiguous use case where it cant decide which one to call. This can happen when you use optional parameters.

But other than that you can extend most datatypes, even ones in the framework, relatively easily.

Moving to 2019r2

2019r2 changes a LOT of things.

Some of the things it changed are subtle and search and replace may NOT be the best approach to updating these.

For instance string method like Mid changed from being a 1 based offset for the starting position to a 0 based offset.

If all you do is change mid to middle you will inadvertently cause an off by one error because the start is now 0 based not 1 based.

For instance

var foo as string = "1234"
var midString as string = foo.mid(2,2)
var middleString as string = foo.middle(2,2)

will give you different results in midString and middleString.

There are many other places where the offsets have changed from 1 based to 0 based so be careful updating your code. Make sure you examine all the parameters being used as well to avoid causing yourself a lot of extra work trying to hunt down those off by one errors.

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

About Events

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

Lets start with event handlers and event definitions.

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

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

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

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

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

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

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

Lets see this in action

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

Your project should look something like this

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

So lets fix that

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

Then in the CustomPushButtons Open event handler put

raiseevent Open // in 2019r2 put raiseEvent Opening

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

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

ByVal and ByRef

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

So here’s yet another attempt.

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

A statement like

dim i as integer

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

i = 100

the value 100 is put in the spot reserved

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

dim d as Date

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

d = new Date

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