Android Tutorial [B4X] B4A, B4i, B4J and B4r API documentation - B4X Object Browser

Status
Not open for further replies.
API documentation - B4a, B4i, B4J and B4R (i.e. B4X) Object Browser (which also includes Code Snippet Management)

Hi everyone,

As you may or may not be aware, I have embarked on a project to bring better documentation to us all.

The first problem I have had is that the official and semi-official documentation tools aren't what I was hoping for. Not saying they aren't good, they just aren't what I need.

My first thankyou was called the B4a Object Browser. This version was for B4Android only. It is my own version of the XML file loader. I call it the B4a Object Browser.

The second thankyou is an updated version that supports B4A, B4I and B4J. This is called the B4X Object Browser.

If you know the Visual Studio Object Browser, you should have a good idea of what I am trying to emulate.

To run it you must have .NET Framework 3.5 SP1 installed, and you must install it from my setup.

I have only tested it on Windows, and not with Mono.
I am assuming that everyone that wants to use it, will be on Windows.

Here are some screenshots:

B4AObjectBrowser3.1.4.0.png


upload_2014-12-18_21-26-19.png


Download the appropriate zip, unzip it and run the setup. I suggest you scan it for viruses before you run it of course.

B4A Object Browser:
When it runs the first time, it will need to know where the B4a Library XML files are, so ensure you go into the Options and configure them.
If you are upgrading, you can Import your old settings, and in fact are prompted to do so if you have a blank configuration.

If you are asked to find the B4A Library XML files, browse to your B4a Library folder (usually C:\Program Files\Anywhere Software\Basic4android\Libraries, or if you are using 64 bit Windows, it is C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries)

From this point, it will remember the path, so you will not have to enter it again.

B4X Object Browser:
The paths to your B4A, B4I and B4J installations (and the Libraries folders under them) will be determined automatically.

In the Options screen you can set multiple paths, with the ability to modify them.

It has multi-language support, and will detect your PC's language and apply the changes automatically. If you want to over-ride this, you may do so from the Options screen.

In B4A Object Browser, the following languages are supported:

Afrikaans
Arabic
Bulgarian
Chinese
Czech
Danish
Dutch
English
French
German
Hebrew
Indonesian
Italian
Japanese
Norwegian
Persian
Polish
Portuguese
Romanian
Russian
Spanish
Swedish
Thai
Ukrainian
Vietnamese

B4X Object Browser adds support for:
Catalan
Greek


I suggest everyone that uses this tool subscribe to the thread so you are informed of changes.

Have fun!

Dave

Change history:
B4A Object Browser
2.0.0.0 - First public release.
2.0.1.0 - Minor GUI update, remove the need to click Reload button during initial setup.
2.1.0.0 - See post #8
2.2.0.0 - See post #23
2.3.0.0 - see post #31
2.3.0.0 - see post #35
2.4.0.0 - see post #60
2.5.0.0 - see post #63
2.6.0.0 - see post #70
2.6.1.0 - see post #75
2.7.0.0 - see post #79
3.0.0.0 - (Pre-release)
3.0.1.0 - Major GUI updates
3.0.1.1 - Minor fixes to correct some "Copy" functionality that had been removed
3.1.0.0 - All known bugs fixed, plus multiple language support added. Separate link provided below. See post 112 for full info.
3.1.1.0 - Additional languages, ability to override GUI language, Chinese language fixed. See post 122 for more info.
3.1.2.0 - Fixes to French, German and Italian language translations. 15 languages now provided. Search history added.
3.1.3.0 - Portuguese language added, making this language number 16
3.1.4.0 - Updated ru and ja translations, Moved Options to View menu, Added support for DesignerName attribute. See post 128 for full details.
3.1.5.0 - Corrected some logic problems around Version Number and DependsOn. Fixed URL Links. See post 147 for full details.
3.1.6.0 - Increased search options, fixed some search bugs, added Hebrew. Full details in post 156.
3.2.0.0 - AutoUpdate, new language, a couple of minor bugfixes. Full details in post 157.
3.2.1.0 - New languages, a few bugfixes. Full details in post 164.
3.2.2.0 - Updated Thai translation.
3.2.3.0 - Fixed further Thai translation strings, arabic and Thai language settings, memory corruption error when switching from R-L and L-R languages and more
3.2.4.0 - Added the ability to override language settings.* See "How to override language setting.txt" in the installation directory.
3.2.4.1 - Fixed bug when overriding language settings.
3.2.4.2 - Fixed bug when selecting the following languages: Arabic, Bulgarian, Hebrew, Thai
3.2.4.3 - Fixed bug when showing empty parentheses, Search and Clear Search buttons, bug where Clear Search button forced library reload even if no search text was entered
3.2.4.4 - Fixed bug where installer did not remove previous version
3.2.5.0 - Added ability to select viewing of Class_Globals and Property Get / Property Set
3.2.5.1 - Added ability to select viewing of DesignerCreateView
3.2.5.2 - Added Romanian language
3.2.5.3 - Fixed problem when selecting Romanian
3.2.5.4 - Fixed 2nd problem when selecting Romanian
3.2.5.5 - Added Vietnamese language
3.2.5.6 - Added preliminary support for B4a 3.0 (Beta)
3.2.5.7 - Added ability to show duplicate Library Short Names
3.2.5.8 - Forced GUI to always show Full type name when showing Class and Library annotations
3.2.5.9 - Fixed a bug when reloading libraries after performing a search. Also added Donate form.
3.2.5.10 - Set XML Reader to null after closing the file, plus set properties to remove flickering when displaying file data.
3.2.5.11 - Corrected an issue where a blank History would cause an application error
3.2.5.12 - Added Czech, Danish and Persian languages
3.2.5.13 - Persian language updated
3.2.5.14 - Added "Always on top" setting (under "Always on top" menu setting) and modified each Form to follow this setting
----------- Note: No further updates will be performed to B4a Object Browser

Full list of changes here (before 3.2.5.1): http://www.b4x.com/android/forum/th...n-b4a-object-browser.25682/page-9#post-172076

B4X Object Browser
1.0.0.0 - First public release
4.0.0.1 - Minor changes - mainly updating graphics to reflect Anywhere Software changes.
4.0.0.2 - Bug fixes, Desktop icon.
4.1.0.0 - Code Snippet Management added.
4.1.1.1 - Spanish language updates
4.1.1.2 - Modified the Method / Property / Field Copy function appropriately to copy either the selected text or all text
4.1.1.3 - Performed multiple bug-fixes to correct issues with right-click commands
4.1.1.4 - Performed another bug-fix to the right-click menu (for Events list)
4.1.1.5 - Performed another bug-fix to the right-click menu (for copying Fullname)
4.1.2.0 - Added support for B4R
4.1.3.0 - Changed auto-update download to .msi (instead of .exe)

I have put together a pdf to understand how to use it. It is included in the setup, but you can get it separately here (559 Kb).
Grab the setup and unzip and install it. This must be done this way because of the file size being too big for the forum. (>2 MB)...

B4a Object Browser
Version 3.2.0.0 (NOT AutoUpdate) is available here.
Version 3.2.1.0 (AutoUpdate enabled) is available here.
All newer versions (from Version 3.2.2.0 onwards) are available through AutoUpdate, and will not be provided here (other than the link below).
The latest version is always available from here.

B4X Object Browser
The latest B4x Version is available from here. AutoUpdate will take over from that point.
 

Attachments

  • upload_2014-12-11_22-32-46.png
    upload_2014-12-11_22-32-46.png
    106.1 KB · Views: 2,537
Last edited:

moster67

Expert
Licensed User
Longtime User
Great stuff, Vader. :sign0098:

Any chance you can enlarge the event-descriptions? It is difficult to see, for instance, which parameters are accepted within the description since the field is not large (broad) enough.

Keep up the good work.
 

Informatix

Expert
Licensed User
Longtime User
what Events are generated by the Class.
This last one is a favourite of mine, because I don't know where else in the IDE this information is shown (if at all).

The events declaration is optional and it is made to see them in the events list appearing with space+tab in the B4A IDE. Some of (or all) these events may miss. For example, I forgot one of them in the latest version of the Reflection library. That doesn't mean it is not fired or cannot be received by your program.

I still don't have a solution to the Unicode problem (sorry Informatix)

It's not a real problem for me (or for most people I guess) so let it as is.
 

Vader

Well-Known Member
Licensed User
Longtime User
Great stuff, Vader. :sign0098:

Any chance you can enlarge the event-descriptions? It is difficult to see, for instance, which parameters are accepted within the description since the field is not large (broad) enough.

Keep up the good work.

Done.

In the following screenshot, resize the red bars as necessary.
B4AObjectBrowser2.4.1.png


This new version also has the ability to Export and Import the configuration. Export is performed automatically for you (every time you click OK in the Options screen), plus when you load the app, if your configuration is blank, but you have a config export, it prompts for you to load it.

No more having to re-enter settings.
:sign0060:

See Post #1 for download link.
 

derez

Expert
Licensed User
Longtime User
Thanks again for your effort Vader !
I attach a code module library that fails, please check why.
 

Attachments

  • size.zip
    3.4 KB · Views: 331

moster67

Expert
Licensed User
Longtime User
Another feature which would be nice to add (unless it is already there and I have managed to miss it) is a search-function by name for methods, properties and fields.

Many times I know the name of the method but I don't recall in which library it is located. A search for the method would show method(s) with that name.

Nothing essential but still a nice feature.....

...this is turning into another Bug & Wish-section :D
 

Vader

Well-Known Member
Licensed User
Longtime User
Thanks again for your effort Vader !
I attach a code module library that fails, please check why.

This is because your _cf Field doesn't have a comment. I have now fixed this problem, and it will be in the next update.
 
Last edited:

Vader

Well-Known Member
Licensed User
Longtime User
:sign0098:

Could you save & reload the window state and size ?

Yes, I can do this. I will add it to the next update.

Edit: Window Size, Location and State are now all saved at Exit() and reloaded at Load().

I also fixed a few bugs.
 
Last edited:

Vader

Well-Known Member
Licensed User
Longtime User
Another feature which would be nice to add (unless it is already there and I have managed to miss it) is a search-function by name for methods, properties and fields.

Many times I know the name of the method but I don't recall in which library it is located. A search for the method would show method(s) with that name.

Nothing essential but still a nice feature.....

...this is turning into another Bug & Wish-section :D

This feature is on my wish list also :D
I haven't put any thought into how it will be performed (the GUI change, plus the results, and obviously how to code it), so in the meanwhile I did the Google search functions. I thought it a worthy compromise while I worked out how to do the search stuff.

I will bring this feature closer, and maybe even into the next version.
 

Vader

Well-Known Member
Licensed User
Longtime User
Ok, so now it is time to release version 2.6.0.0.

The biggest change with this version is the ability to search for text in the following places:
  • Library (Name)
  • Class (Name, Comment)
  • Method (Name, Comment)
  • Property (Name, Comment)
  • Field (Name, Comment)
  • Annotation (Name, Value)
  • Parameter (Name)

Results are returned in a Treeview in a seperate Window.

I haven't added the ability to navigate directly from the search results to the main window (yet), but there is enough visual information to find the correct location of whatever you are searching for.

This was a huge change as I had to extend every .Net Class (Class, Method, Parameter, Annotation etc), plus add a Library Class, to allow me to search through the in-memory Data model, navigating backwards as required. For example, each of the objects now has a Parent Property, which allows me to walk the in-memory tree up and down as required.

There is still a small bug in there around the display of Field descriptions, but I will get to that in time.

I have added the function where screen size and position is now saved (Informatix - that's for you).

Other things fixed are:
Class comment was never cleared
Import Button (Options Screen) didn't do anything
Classes Treeview wasn't sorted fully (Additional Path Libraries were tacked onto the end)

If you find any problems, please be gentle - it's been a tough weekend coding.

Dave
 
Last edited:

Roger Garstang

Well-Known Member
Licensed User
Longtime User
Very nice improvements. Only had an issue on that first startup. It prompted with the messagebox saying to select the library folder, but when I did it gave me a null pointer error. Only way to get past it was to cancel then I went into options and set the folder (My preferred way of doing it anyway...might just change that code to open the setting dialog). If I were to guess it is because the Folder list is empty and it is trying to set it with it being null or something. Could be the new addition allowing more than one folder and the browse for folder code possibly is older which set it as a single entry like it was before or something too.
 

Vader

Well-Known Member
Licensed User
Longtime User
Very nice improvements. Only had an issue on that first startup. It prompted with the messagebox saying to select the library folder, but when I did it gave me a null pointer error. Only way to get past it was to cancel then I went into options and set the folder (My preferred way of doing it anyway...might just change that code to open the setting dialog). If I were to guess it is because the Folder list is empty and it is trying to set it with it being null or something. Could be the new addition allowing more than one folder and the browse for folder code possibly is older which set it as a single entry like it was before or something too.

Thanks for the feedback Roger. I will look into the null issue tonight. If I stay focussed and just concentrate on that one issue, I can do a point release very quickly.
 

jflaplante

Member
Licensed User
Longtime User
Thanks for the feedback Roger. I will look into the null issue tonight. If I stay focussed and just concentrate on that one issue, I can do a point release very quickly.

I had the same error on the first run but after adding the libraries folders manually, everything is going smoothly. Your browser brings us a more unified documentation which was kind of missing at least for a beginner like me.

Thanks and keep up the good work!

JF.
 

Vader

Well-Known Member
Licensed User
Longtime User
I had the same error on the first run but after adding the libraries folders manually, everything is going smoothly. Your browser brings us a more unified documentation which was kind of missing at least for a beginner like me.

Thanks and keep up the good work!

JF.

This issue is now fixed.
I have also added an extra window (Help | About | Libraries) that shows all libraries (in the selected paths), the classes in each Library, and the version of each of these.
Version is dependant upon the Library rather than the Class, however I thought it important to show Classes as well as libraries.

This allows the User to see the version of each installed Library in one easy to get to place.

This is Version 2.6.1.0.
 

Vader

Well-Known Member
Licensed User
Longtime User
Version 2.7.0.0 has been released and is now available at the first post in this thread.

Changes in this version:

Double-click a search result navigates the main screen to that same point
Treeview in search results now sorted, and double-buffered
Removed "Comments" search option as it didn't do anything
 
Status
Not open for further replies.
Top