Continuing the discussion from Permanent place for ASObj-C database:
I tried to edit the "Permanent place for ASObj-C database" post to update the page but it wouldn't let me change the post. Is there some kind of lock on this post? So I am posting to a new topic.
I am only posting 2 files at this time (7/17/2017):
* ASObj-C Database A19.0.fmpur.zip
* ASObj-C Database A19.0 release notes.pdf
These files can be found at:
The dropbox link above is the same one found on "Permanent place for ASObj-C database" so there is no real advantage to linking to the link I just provided.
I have been really busy and have been unable to finish the documentation for the new database version. So I am releasing the database file and the "release notes" now and will update the documentation and post it when time permits. There are a lot of useful enhancements which I thought people would like to use right now.
A big part of the what the enhancements provide is better documentation to ASObj-C. Providing documentation in a completely different language and giving it to ASObj-C programmers has always seemed pretty strange to me.
For now the release notes is the only documentation available but I tried to explain everything new in the release notes. The release in the dropbox folder and the release notes posted below are exactly the same. I'll let people decide which one they want to read. For now I will be focused on getting more new entries into the database.
The NSDataDetector has some good stuff in it. It can read regular text and detects things it can pull out of the text. NSDimension's subclasses can do some powerful and highly accurate conversions from one unit to another. PDFDocument and PDFSelection can do some nice things with PDFs. Doing the NSDateIntervalFormatter finished off a big collection of various kinds of formatters for different kinds of data.
Here is the release notes:
Database has very nearly tripled in size since the A18 release. I've added 364 entries to the database since the last release so there are now 552 class items. Currently I don't have time to produce updated documentation but I think the enhancements in the database would be helpful to users so I'm releasing the database now with documentation to follow. For now the release notes will serve as documentation for the new features in the database.
The goal of this database is not just to make using ASObj-C easier. Large parts of Apple's documented was translated into text that's easier to understand and the unfamiliar Objective-C jargon was removed and replaced with more familiar words and references. Every effort was made to allow this database to be used "in place of Apple documentation," not to be used "in addition to Apple documentation."
There is one known bug in this version of the database. The record status in the top right of the item window occasionally fails to update. I haven't had time to work with the database to reliably reproduce the bug. I have been clicking the "Go to Class list" button in the lower left of the "Item Window." Then when I'm in the class window I just just hit the "Go to item list" button and go right back to the "Item" window which forces the window to update the record status. If anyone figures out how to reproduce the bug please let me know and I can fix that and release an update.
The original database design had a flaw with using a popup menu to directly choose a particular class to display. I failed to comprehend just how big that popup menu would be so I will have to come up with a new way to implement that feature. Currently the popup is so large it is bigger then will fully fit on a 27 inch iMac screen. For now the popup is still in the interface since it does in fact work. By the time the number of items in the database is doubled it will be very slow since the names in the popup will have to be scrolled a lot.
The original database design has now been fully implemented. The original window size scheme has been replaced by a more flexible system that gives the user a higher degree of customization.
Removed the "Show Omitted" and "Omit Record" buttons
Moved the "Show All Records" icon from top left to the right top of the window.
Added some text to all the note fields for all methods, functions and properties that require pipes. It basically says pipes are required and for methods and it says which parameters need the pipes. All these notes are in red and always appear at the very top of the notes field.
Currently I only know of one class name that requires pipes and that is NSURL. If I find more classes whose names have to have pipes I will create a list of classes that require pipes and add that information to the database.
Added new methods, properties and functions to previously existing classes. I also added the following 31 new classes along with some of their their methods and properties :
Added the following Foundation functions
Added the following 12 "constants & enums" items. There are now 25 "constants & enums" items.
Foundation constants & enums
NSCalendar constants & enums
NSDate constants & enums
NSDateFormatter constants & enums
NSDateIntervalFormatter constants & enums
NSDimension Unit Names, Symbols, Constants, Coefficients & Definitions
NSLocale Component Keys
NSLocale constants & enums
NSTextCheckingType constants & enums
NSWindow constants & enums
PDFDocument constants & enums
Added a "sorted by" indicator just above the large scrolling list, just a little to the left of the scrolling list's center. The indicator has the text "Sorted by" with the name of the column just under the "Sorted by" text. The name of the column is displayed in gold letters.
A "search help" button was added to the "Item List" window. When clicked a small window will appear that contains the syntax for advanced searching. This syntax can be used inside any of the live search fields.
Added two fields, just under the live search fields, on the far left of the window. There is a field labeled "Read" and another field under that which is labeled "Write." If a database item containing a property is selected then one or both of these fields will be filled in with the literal text used for for getting and setting the property. This includes any pipes that might be needed. If the property is "read only" then the "read field is used, and the "write" field is dimmed; otherwise both fields are used.
Added the parameters to the Foundation functions. Originally it only listed function names.
Added a "read only" column to the "Item List window. Only properties will have an entry in this column. If the property can both be set and read then a "no" appears in the column. If the property is read-only then a "yes" will appear in the column.
Added a new button to the "Item List" window called "Turn on Parameter & Return Type display." When this button is clicked the entries in the "Class items and Nonclass items" column will change from just listing properties, functions and methods to list the same information along with an indication of what type of input, and what type of output, is required or expected. Once clicked the button name will change to "Turn off Parameter & Return Type display." The button just toggles between these two states each time it is clicked. The text in the "Parameter & Return Type" text is color coded. All green text shows what type of input is expected, red text shows what type of output will be returned, blue is further explanatory text, and black is the actual text from the method, function, property, ....
When the "Parameter & Return Type" information is being displayed it makes the text in the "Class items and Nonclass items" column (third column from the left) wider and some text may run off the right edge of the field. At the top of the fourth column from the left there text that says "Text Past," but it is printed printed vertically instead of horizontally. This thin column is where a purple capital letter "P" sometimes appears. The "P" appears any time the text has gone past the right end of the second field. The "P" is just a visual indication to the user that some text is not visible. Clicking the field in the third column will cause the bottom of the field to drop down so all the text in the field can be seen simultaneously. Clicking outside the field will cause the field to return to its previous size. The "Text Past" column header at the top of the fourth column can be clicked to cause the record to be sorted, so all the rows with the "P" in fourth column will move to the top of the scrolling list.
The items list column (second column from the left side) lists some very large method calls and it doesn't make sense to make the column big enough to fit every single method call. Therefore the column is wide enough to fit most of the items in the column. When the method calls are too big to fit in the column a purple capital "P" will appear just to the right of the method call. The "P" indicates appear in its own column called "Text Past." "Text Past" is written vertically (as opposed to horizontally). Clicking in the "class items" field will cause all the text to be displayed. Clicking anywhere but the "class items" field will cause the field to go back to its normal size.
Added a feature so when the "Item List" window is first opened the "Notes" field is automatically selected. This will make the scroll bar in the notes field visible so the user can tell if there is any unseen information in the notes field (i.e. there is text not scrolled into view). If their is some unseen information in the field the scroll bar thumb will be visible.
Added "zoom in" and "zoom out" buttons to the "Item List" window in the top left of the window. They look like magnifying classes with either a plus or minus signs in them. A a "Set window zoom" popup menu was also added to the left left of the "zoom in" and "zoom out" buttons. Either of these can be used to control the window zoom.
There are 8 zoom settings ranging from 25% to 400% which should provide a more than adequate zoom range, even in extreme cases. Both the "Less compact window" and "More compact window" can be zoomed in and out. This will provide a good fit for a far bigger range of screen sizes.
The old window size popup has been replaced with with a "Window format" popup. The old "2560 X 1440 (big text)" setting is the same layout as the new "Less compact window" in the new popup. The old "1280 X 735" is the same layout as the "More compact window" in the new popup. The major difference in these window layouts is how closely things are pushed together in the window layout, and the "More compact window" window size has smaller field widths. The top of the "Item Window" is the same for both window formats, and the scrolling list are the same for both window styles. Only the bottom part of the window changes when the window style is changed.
Added a "Find constants and enums for select words" menu command to the "ASObj-C" menu. Selecting the enum or constant in the text and selecting the menu item will cause a search to be performed to find where the selected item is defined. Since all the constant, enums and other such things are defined in the "Constants and Symbols" entries in the "Item" widow that is where the search is performed. If the search is successful a window containing the item with the definition will be opened and the word being searched will highlighted. Currently if the word appears in more then 1 item in the database it errors. But this does not happen very often. This something I'll look into later. This same search can also be done manually by typing the constant or enum name into the "Note Live search" field. All of the constants, enums and other such things are defined in the "Notes" field of some item in the "Item List" window.
Added 4 menu items to the ASObj-C menu.
* Find All Instance Methods - List all instance methods in the database.
* Find All Properties - List all properties in the database.
* New Database Window Showing Pipes - Displays all "class items" that require pipes.
* List of items with pipes - Displays all "class items" that require pipes in text format.
When the database is large enough I will work on figuring out key words so the database cab be searched by keywords.