Tool B4Xgoodies: a maintained library/class/code module/... inventory (last updated 2024-03-16)

The workbook (even when zipped) has grown over 512kb and can't be uploaded to the forum any longer; use
- the dropbox download link (the same one that's used by @inakigarm's B4J program - see post #25) instead:
https://www.dropbox.com/s/oib4glqqd4qcx8x/B4Xgoodies.xlsm?dl=1 (Note: this link was changed on 2022-07-24 after a Dropbox issue that lost the original one - thanks to @AnandGupta for raising the issue)
- and/or the online version that @AnandGupta created: https://www.b4x.com/android/forum/threads/b4xgoodies_from_walt61-online.110060/

Hi all,

I, like many others in the forum, wanted to know what the most recent versions are of the non-core libraries I'm using in my apps, without having to resort to manually checking these libraries' forum posts to check their versions. Eventually I took things a step further and thought I'd create an inventory of all the excellent stuff that's being provided by the community, in a sustainable and easily maintainable way (i.e. with minimal manual effort). Enter B4Agoodies, an Excel workbook.

The 'Info' worksheet provides a high-level explanation on what it does.

The inventory contains the following columns:
- B4what: the tool to which the entry relates
- Type: the type of object (presently: libraries, snippets, code modules, classes, icons, and the ominous 'other')
- Category: a categorisation for the object (feel free to suggest more appropriate values where needed)
- Name: the name of the object (e.g. library name)
- Author / owner: the forum nick of the creator or the current owner, if ownership has been transferred
- Latest version: a version number or date (if no number was available in the first post of the thread where the object is found; the date is then the latest update date for that first post)
- License: the license that applies to the object
- Description: guess :)
- Forum thread's (or other) URL: the webpage where the object is described and from which the most recent version data will be fetched from the first post

I intend to update this every week. I keep an eye on forum posts announcing new libraries and library updates, which will then be added. If you'd notice errors or objects that could/should be added, give me a shout.

EDIT 2022-07-24: these are direct download links to the published files:
- b4xgoodies.html: https://www.dropbox.com/s/4punyxbwek8oc8o/b4xgoodies.html?dl=0
- B4Xgoodies.xlsm: https://www.dropbox.com/s/oib4glqqd4qcx8x/B4Xgoodies.xlsm?dl=0
- version.txt: https://www.dropbox.com/s/3l09nngx9msi3ut/version.txt?dl=0

Last but perhaps not least: use worksheet 'My Projects' to list your own projects' .b4a files and, if desired/applicable, your Additional Libraries folder. Click the 'Check them' button and in worksheet 'My projects' libraries' you'll find an overview of the libraries used by your projects, these libraries' latest version according to the 'B4Agoodies' worksheet, and your version (if you specified a value for your Additional Libraries folder). In Excel, macros must be enabled for the workbook to make this work; you can examine the code in the VBA IDE (Alt-F11 takes you there).

Cheers,

walt61

Last updated: see thread title
New as of 2019-08-05: columns 'Att 1' to 'Att 5' with the URLs of the first 5 attachments from the first post of each thread
New as of 2017-10-24: column 'Tags from thread title'
See post #25 for @inakigarm's B4J program if you prefer not to use Excel/LibreOffice/... !
Also available online as a Google Sheet (thank you @AnandGupta ); see
 
Last edited:

walt61

Active Member
Licensed User
Longtime User
LOL I wouldn't put my money on Erel wanting to take some kind of ownership there (and he's releasing great new stuff all the time as it is), as this is community stuff.

I hadn't given any kind of marking any thought: first the data, the presentation comes later (or not, in this case ;)). But don't lose sight of my original goal: 'to know what the most recent versions are of the non-core libraries I'm using in my apps, without having to resort to manually checking these libraries' forum posts to check their versions'. If enhancements can be done through automation, I'm game, but I don't fancy trying to be the next Github ;)
 

DroidLyon

Member
Licensed User
Longtime User
Alas I wouldn't put my money on it either !
- I suspect Erel must be multiple people with the amount of forum responses he manages and code he outputs ;)

I understand your points entirely Walt. To serve my purpose if I detect any deadwood I'll report it to Erel and you ..

"Dont fancy trying to be the next Github .." - Where's your ambition man ?!:eek:

Cheers D :)
 

BPak

Active Member
Licensed User
Longtime User
Hi all,

I, like many others in the forum, wanted to know what the most recent versions are of the non-core libraries I'm using in my apps, without having to resort to manually checking these libraries' forum posts to check their versions. Eventually I took things a step further and thought I'd create an inventory of all the excellent stuff that's being provided by the community, in a sustainable and easily maintainable way (i.e. with minimal manual effort). Enter B4Agoodies, an Excel workbook.

For the time being, consider it beta. The 'Info' worksheet provides a high-level explanation on what it does.

The inventory contains the following columns:
- B4what: the tool to which the entry relates
- Type: the type of object (presently: libraries, snippets, code modules, classes, icons, and the ominous 'other')
- Category: a categorisation for the object (feel free to suggest more appropriate values where needed)
- Name: the name of the object (e.g. library name)
- Author / owner: the forum nick of the creator or the current owner, if ownership has been transferred
- Latest version: a version number or date (if no number was available in the first post of the thread where the object is found; the date is then the latest update date for that first post)
- License: the license that applies to the object
- Description: guess :)
- Forum thread's (or other) URL: the webpage where the object is described and from which the most recent version data will be fetched from the first post

I intend to update this every week. I keep an eye on forum posts announcing new libraries and library updates, which will then be added. If you'd notice errors or objects that could/should be added, give me a shout.

Last but perhaps not least: use worksheet 'My Projects' to list your own projects' .b4a files and, if desired/applicable, your Additional Libraries folder. Click the 'Check them' button and in worksheet 'My projects' libraries' you'll find an overview of the libraries used by your projects, these libraries' latest version according to the 'B4Agoodies' worksheet, and your version (if you specified a value for your Additional Libraries folder). In Excel, macros must be enabled for the workbook to make this work; you can examine the code in the VBA IDE.

Cheers,

walt61

Last updated: 2017-01-24
See post #25 for @inakigarm's B4J program if you prefer not to use Excel/LibreOffice/... !

I ran this prog on my Mac computer and it downloaded the xslm file but then displayed an error. Could not find the B4XGoodies.ini file


B4X:
29/01/17 1:14:59.798 PM [0x0-0x24024].com.apple.JarLauncher: Packagename: b4j.B4XGoodies
29/01/17 1:14:59.798 PM [0x0-0x24024].com.apple.JarLauncher: WorkspacePath= /Applications/B4AGoodies
29/01/17 1:15:20.092 PM [0x0-0x24024].com.apple.JarLauncher: JobName = infodownload Tag info.txt^firsttime, Success = true
29/01/17 1:15:20.092 PM [0x0-0x24024].com.apple.JarLauncher: DownloadReady: info.txt^firsttime
29/01/17 1:15:20.092 PM [0x0-0x24024].com.apple.JarLauncher: info.txt^firsttime is written to /Applications/B4AGoodies
29/01/17 1:15:21.885 PM [0x0-0x24024].com.apple.JarLauncher: JobName = Xlsmdownload Tag B4Xgoodies.xlsm^firsttime, Success = true
29/01/17 1:15:21.885 PM [0x0-0x24024].com.apple.JarLauncher: DownloadReady: B4Xgoodies.xlsm^firsttime
29/01/17 1:15:21.887 PM [0x0-0x24024].com.apple.JarLauncher: B4Xgoodies.xlsm is written to /Applications/B4AGoodies
29/01/17 1:15:21.897 PM [0x0-0x24024].com.apple.JarLauncher: main._jobdone (java line: 612)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher: java.io.FileNotFoundException: /Applications/B4AGoodies/B4Xgoodies.ini (No such file or directory)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at java.io.FileInputStream.open0(Native Method)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at java.io.FileInputStream.open(FileInputStream.java:195)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at java.io.FileInputStream.<init>(FileInputStream.java:138)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at anywheresoftware.b4a.objects.streams.File.OpenInput(File.java:225)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at anywheresoftware.b4a.objects.streams.File.ReadString(File.java:279)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at b4j.B4XGoodies.main._jobdone(main.java:612)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at java.lang.reflect.Method.invoke(Method.java:497)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at anywheresoftware.b4a.keywords.Common.CallSub4(Common.java:462)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at anywheresoftware.b4a.keywords.Common.access$0(Common.java:442)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at anywheresoftware.b4a.keywords.Common$CallSubDelayedHelper.run(Common.java:516)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at java.security.AccessController.doPrivileged(Native Method)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(PlatformImpl.java:294)
29/01/17 1:15:21.898 PM [0x0-0x24024].com.apple.JarLauncher:     at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
 

inakigarm

Well-Known Member
Licensed User
Longtime User
I ran this prog on my Mac computer and it downloaded the xslm file but then displayed an error. Could not find the B4XGoodies.ini file

I'll test it (I've no Mac the development was done on Windows OS)
 

BPak

Active Member
Licensed User
Longtime User
I'll test it (I've no Mac the development was done on Windows OS)
Have found the problem on the Mac.
The Ini file is NOT saved in the B4AGoodies Folder it is saved under Applications and therefore can not be found in the expected B4AGoodies folder.
Must be the module that saves the file not working as expected on the Mac.
Tried KeyValueStore prog and it works as expected.

see image.
 

Attachments

  • Ini.png
    Ini.png
    34.2 KB · Views: 360

inakigarm

Well-Known Member
Licensed User
Longtime User
@BPak , can you test this code and write back the result of Pathseparator ?? I've to change which is the folder separator according the Os (windows and Mac-unix)

B4X:
Dim PathSeparator as String= GetOs
B4X:
Sub GetOs  As String
   
    Dim os As String = GetSystemProperty("os.name", "").ToLowerCase
    If os.Contains("win") Then
         Log ($"OS = ${os} "\" "$)
         Return "/"
    Else
         Log ($"OS = ${os} "/" "$)  'Mac-Linux
         Return  "/"
    End If   
   
End Sub
 

DonManfred

Expert
Licensed User
Longtime User
Hey Don, did you post this in the correct thread? If not, I'm not sure what you mean.
It is a answer to Post #24 or #25 in this thread.
 
Top