OXT Community Sample Stacks, Extension & Resource Management

Forum rules
A place to discuss and plan OpenSource xTalk (not exclusively LCC based) and Community Builds of LCC
Ask NOT what xTalk can do for you... get involved you DO have something to contribute, no matter your skillset!

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: OXT Community Sample Stacks, Extension & Resource Management

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Wed May 22, 2024 12:13 am

NOT listed in the above source file comments is the 'samples' folder, that's where you can put demo stacks to show off the capabilities of your extension.
Also apparently 'Snippets' can apply to extension packages, not sure if they're supposed to go in a 'Snippets' folder. I have no example for this to go on so I'll have to sift through the libraries and see if I can find any more references to them.

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Tue May 21, 2024 3:04 am

There's some interesting notes on the IDE's 'package' format used with extension in the source C++ comments:
https://github.com/OpenXTalk-org/OpenXT ... C1-L157C86

I'll add my own emphasis and responses here in an attempt to correct some no-longer accurate or updated things:
// Packages are a collection of modules which share a common set of foreign
// code and resources.
Just to be clear here, package modules don't necessarily use any foreign code or other resources.
Library modules don't even need to be written using XTension Buider, they can be written in regular XT script so long as they have the extension initialization/uninitialize handlers (a few examples script-libraries-as-extensions already come with the IDE)
// When a package is loaded into memory, all its modules are loaded also making
// them available in the module namespace and accessible through the module functions.
I remember reading somewhere that you could have main-module and sub-modules but I've still never seen a package that did this
// A package loaded from a particular file, or with a particular name can only
// be loaded once - if an attempt is made to load a package from a file and that
// package has the same name as a loaded package it is an error. If an attempt
// is made to load a package by name and such a package is already loaded it just
// returns that package.
Good to know how conflicting extensions module names are resolved.
// Packages can be unloaded from memory, however they are not completely removed
// until it is possible to do so - i.e. until there are no instances of any module
// within the package in use.
I've hit up against this many times (a bug in Extension Builder stack probably) where I've left a widget demo stack opened, then 'unloaded' the widget's module and then tried loading a recompiled version of the same module, only to have it error loading, because the first build never really unloaded. If you're letting Extension Builder stack manage the test stack generating then this isn't a probably, but I usually wind up with a separate custom tester stack.
// Packages are a zip archive with the following structure:
// <root>/
// manifest.xml
// module.lcm
manifest.xml, module.lcm get auto-generated by extension builder stack
// support/
// <files for the IDE / store etc.>
This is where the module's PNG icons can (optionally) go, there can be two bitmapped icons, old-school regular size and plus one for HiDPI screens. These icons can represent the module in the IDE when no SVGIcon is included in the module.

This is also where a _defaultScript file can (optionally) go, which is a file that can contain multiple pre-written script handlers that can be use with the module, these with appear in the available handlers list in script editor.
// modules/
// <compiled submodule files>
Ah hah! This is where linked sub-modules should go!
// symbols/
// <compiled module debug info>
I HAVE NO IDEA WHAT THIS FOLDER IS! I've never seen it. Maybe it has something to do with debugging symbols/name space? In Foreign Code libraries?
// resources/
// <shared resources>
You can put images that go along with your module or whatever sort of files you want to include here.
OXT SVGIcons loader thing stores tab-sep-value files here where the module can always find them.
// code/
// <compiled foriegn code>
This is where foreign code library binaries go, they go in a sub-folders name by platform+architecture.
// source/
// <original source code>
Usually I have a single source file at the root level, but maybe this is meant for source for any sub-modules?
// docs/
// <docs tree>
This is where the 'guide' folder would go for your module.
// There is either a widget or a library node. Widgets can have properties and events,
// libraries only handlers.
There's also a third kind for language modules ( the Builder language can be expanded)

This info should be in the XT Builder guide.

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Sat May 18, 2024 12:21 am

Yeah, It's non-trivial to try to match the macOS dark drop-down menus using the classic controls. I could actually get closer by switching the 'lookAndFeel' to classic macOS, because that enables a few more colorizing options for the controls (but introduces other retro-look problems of course).

A pop-up menu extension widget could work better (if we had one).

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Sat May 18, 2024 12:07 am

This is why I have said that I wished MacOS and Windows were 'system theme aware' more than they currently are.
...Although in those macOS controls screens, you do see it does have the correct 'little arrows' appearance to the drop down menu, I believe checkboxes and radio buttons do too, so it seems the engine can adapt to Cocoa app appearance somewhat in a similar manner. When you run a stack on Snow Leopard 10.6, Lion 10.7, etc. and then I open the same stack on Big Sur 11 or Sonoma 14 you can see the difference in the way the controls look. This was goof enough for various macOS versions, until they started doing thinkgs like swapping the special adaptive System Colors foregroundColor and backgroundColors so that they could have 'darkmode' in Cocoa apps, which happened fully with 10.14 Mohave. My guess is that the engine doesn't pick up on the finer point changes, in the other adaptive colors secondaryCoolor, tertiary, etc. and doesn't use those colors for regular button fills the way it should.

My answer to these problems was stop-gap measures, setting default values that at minimum allows buttons (tab buttons, menu buttons, etc.) labels to be at least be readable in darkMode (even if they have incorrect fill colors for the 'theme').

It was also why I was getting interested in color palettes, in particular getting system colors from MacOS (via Extension FFI / Objective C), because it's not enough to respond to dark/light, things like control accent color and text selection color can also be dynamically changed by the Mac user (but the Engine currently doesn't get any notification of those more granular user changes).

And this was also why I created that NEW-classic control 'fillButton'. I was trying to match the newer macOSes system grays/whites fill colors for buttons with that. But even then these classic buttons just don't look as good for that purpose, as Widgets or Graphics objects do, the 'anti-alias' rounded edge-smoothing for 'classic buttons' is not very good (non existent).

IIRC, I also did some work on setting via the IDE library the correct font for a particular macOS version. The Mac System font has changed a few times in the past decade, which has been fairly subtle difference (you might remember that discussion on 'hard-coded' fonts, but it was quite a ways back).

Unlike Linux engine (or the others), the macOS engine does receive system notification of when the general 'systemApprearanceChanged' for general 'theme' changes but there's only really 2 themes; light/dark, unless you count different macOS versions.

You can also check 'systemApprearance' engine property on Mac which returns string "light or "dark", I'd like to try to implement something like that for Linux, even if it returns the full theme name like "‘Adwaita Dark".
That engine message is mac-only (maybe works on iOS too? not sure).
The property doesn't currently return accurate theme info for any on other platforms beyond macOS.

But yes, I agree. macOS hasn't really been UI theming friendly since the 1990s / OS8 Appearance Manager, and while there were some hacky theming things for OS X they all seemed to be gone now, 'Carbon' became defunct, and OS security sandboxing has gotten tighter.

The hackery friendliness of Linux is exactly the sort of thing that attracts me to it.
For quite a while there I was working with OXT on Ubuntu Studio with KDE Plasma, and stack UIs did largely follow the theme there too.

But on Linux are they rendered by the engine and not GTK/QT?
I kind of still think the Engine must do the rendering in order to be able to add effects, shadows, control the blending, etc.

Re: OXT Community Sample Stacks, Extension & Resource Management

by tperry2x » Fri May 17, 2024 10:21 pm

OpenXTalkPaul wrote: Fri May 17, 2024 9:56 pm Reflective of whatever theme is installed? I'm not so sure about that.
Indeed it does:
classic-controls-linux.png
classic-controls-linux.png (78.89 KiB) Viewed 4518 times
The only thing I found is it's really not a good idea to change appearance theme with the IDE running under Linux, otherwise it'll promptly crash (also implying that what it was reading from loaded ram is no longer available).

(This is why under Preferences > Extras in OXT Lite, there's a note that explains appearance themes should be set in the appearance manager).
theme-note.png
theme-note.png (11.28 KiB) Viewed 4490 times
This kind of links into what TerryL was just asking, so I'll link that here to tie things together.

I'll also add that some linux themes have transition effects - like when you click a checkbox or radio-button, they are animated. This is also exactly mirrored in the OXT IDE as well, so I believe it's loading the controls faithfully from a memory buffer. (That would be the most efficient way of doing it as the way these are all supposed to look is already pre-loaded in). Likewise, I'm not sure if this is going through the Cairo or LibSkia rendering thread.

Now some people might think that this is actually a pain, because you have to design your UI with various system themes in mind. While that's true to a certain degree, as long as you provide ample space between things, then it means there's at least a cohesive feel between OXT and the rest of the programs on the system when running in Linux.

And anyway, if you are targeting multiple OS's, you have to design your stack / application with how they might look in alternative appearances so...

This is why I have said that I wished OXT in MacOS and Windows were 'system theme aware' far more than they currently are.

I'll also mention the IDE in linux seems to pick up and render the theme correctly on various distros.
(Richmond's screenshot in Xubuntu on another post):
Image

Here's another example of how it renders correctly. This time on AntiX Linux, using the iceWM window manager:
Image
OpenXTalkPaul wrote: Fri May 17, 2024 9:56 pm There really is no 'Native' when it comes to Linux based OSes.
That was probably a bad choice of words I used. Yes, there's no "native" because it is totally flexible and customizable (much like the rest of anything else on Linux) - there's pretty much a way to change anything if you've got a mindset to do it (and to be honest, that's why I'm an advocate of it over anything else). I believe whoever put the linux version of the engine together had an understanding of this, and very much had that in mind when they were thinking about how to render 'Classic Controls' (and the entire IDE for that matter). For that, I'm hugely thankful, as it's much more 'unified' (would that be the better word?) with the rest of the OS.

An example of how MacOS is not consistent, I reference back here (ages ago now) with this comparison image.

Image
On the left, you have a classic control drawn on MacOS 10.15 within OXT. On the right, same machine - but Apple's System Preferences (which is a good yardstick because you know they draw their controls correctly) shows how it should render.

Similarly, Windows 11 draws it's classic controls as 'emulated' Windows 10 ones. (I don't have windows 11 at hand to demo that though at the moment).

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Fri May 17, 2024 9:56 pm

tperry2x wrote: Fri May 17, 2024 9:47 am
OpenXTalkPaul wrote: Thu May 16, 2024 2:51 am ... rather have that XML UI markup so that I don't even need to write any scripts that create styled 'classic objects' on the fly
Worth mentioning that they are only 'styled classic objects' on MacOS and Windows. In Linux, they are reflective of whatever theme you might have installed, and are correctly referenced from the underlying OS. (This is the way it also needs to work on MacOS and Windows).

This is also why Linux picks up on the native window theme automatically, and MacOS and Windows do not.
Reflective of whatever theme is installed? I'm not so sure about that.

When I made Xtension Builder FFI to create a 'Linux Native" (GTK) Button with only default propertie, it didn't quite look exactly like the basic 'classic control' button, for one thing, unless you've changed it (I think I did at one point) then IDE has the name of Fonts to use as "(System)","(Menu)", etc. 'hardcoded' in the IDE script.

If by 'Reflective' you mean Linux controls inherits all their properties from the OS theme then that's great!

On macOS it seems to inherit only fore/backgroundColors for some controls but not others, which is why I changed some of the default properties to have textColor be black instead of empty, while on the 'tab-buttons control' the backColor is explicitly set to be black. Widgets that paint using 'my background color'/'my foreground color' however toggle between light/dark automatically (inherited from the OS).

I thought the Engine generated all of the 'classic controls' on all three platforms, and they're rendered by the Cairo Graphics library, and so are drawn by the engine rather then 'native' (assuming 'Native' means GTK) rendering them. That doesn't mean they can't still inherit properties from the operating system/UI toolkit theme, which could be GTK, or QT, or something else. There really is no 'Native' when it comes to Linux based OSes.

The reason I think the classic controls are all emulated (even if they do inheriting some properties from system UI toolkit theme) is because you can still set the old 'lookAndFeel' property to "Motif" and instantly change every control to look like 1980s-90s X-Windows theme. Likewise on macOS you can set lookAndFeel to 'Macintosh' and everything changes to look (somewhat) like macOS 8 -9, and a there's also a built-in Windows 95/98 style theme.

I'll try to take a look at the C++ source later to see if I find where it creates these objects.

As I've mentioned elsewhere, I'm in favor of having a set of widget extension controls that are based on the classic controls as far as properties, but theortically widgets could do either, use a truly native controls (as with 'Mac Native Button', 'Android Native Field', etc.), OR use custom rendering (by libSkia) and maybe adjust itself to a platform (as far as Font) but for the most part the later would be rendered a lot more consistent across all desktop and mobile/web platforms.

Re: OXT Community Sample Stacks, Extension & Resource Management

by tperry2x » Fri May 17, 2024 9:47 am

OpenXTalkPaul wrote: Thu May 16, 2024 2:51 am ... rather have that XML UI markup so that I don't even need to write any scripts that create styled 'classic objects' on the fly
Worth mentioning that they are only 'styled classic objects' on MacOS and Windows. In Linux, they are reflective of whatever theme you might have installed, and are correctly referenced from the underlying OS. (This is the way it also needs to work on MacOS and Windows).

This is also why Linux picks up on the native window theme automatically, and MacOS and Windows do not.

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Thu May 16, 2024 2:51 am

So I just took a peek at a 'script-only widget' shared elsewhere, and it looks a LOT like what I imagined it would be.

It's using the same sort of metadata found in our XTension Builder widgets, and the same sort of in-line documentation in revDocsParser format comment blocks. These use setProp and getProp script handlers for properties. Otherwise the code is setup similarly, sans Builder language, and using 'classic controls' to build its AI, objects must be created on the fly. And it also looks like you could edit the thing's properties in their (v10) Prop Inspector, because there's the same property defining metadata.

It seems underneath, this is not really a new concept. I think I would much rather have that XML UI markup so that I don't even need to write any scripts that create styled 'classic objects' on the fly, and instead have a library that does that part for me based on that markup I pass to it. With such as system I could then make a basic 'widget' (basic as in like a scripted search field) just using a chunk of XML markup.

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Thu May 16, 2024 12:19 am

Properties and value ranges for widgets is largely beeing sorted out in that other thread, so I'm going to talk about packaging management here mostly (or try to).

Yes, there's some good stuff on Sons of Thunder site, but DropTools 'widget' system is broken, you can open most of the freebie 'widget' stacks though.

So how could we similarly implement 'stack/groups-of-classic-controls' based widgets?

Part of my reasoning for why in the past I've brought up the idea of creating some sort of xTalk UI XML mark-up library, like to go along with 'script-only'' stacks but for card/controls layout and properties. Perhaps this UI mark-up would be able to be appended on to the end of a script only stack to form a script-only widget? Maybe it could also use the same property meta tags currently only being used for Extension Widgets. I'm just spit-ballin' here.

I rather like the simplicity of revObject 'scrapbook' libraries, but that stack could be MUCH much better, for one thing I want to be able to rename entries after I've saved them to a library. it would be nice to be able to reorder that list too. The preview snapshots it generates when you save some objects look bad like they're in 'light' mode when using macOS's darkMode.

I also think moving that out into its own stack, separate from the revIcons libraries viewer, and making it a palette, I think would have me using that a lot more. I've already added drag-drop to place to it (though it's a little visually off, could use work) which made that stack more useful IMO.

If revObjects Library's allowed for some metadata, specifying info about a grouped-objects control's custom properties (and maybe allow to use PI editors on the placed instances?), then they would be a bit more like stack-based 'Widgets' right?

Re: OXT Community Sample Stacks, Extension & Resource Management

by tperry2x » Tue May 14, 2024 2:20 pm

I'm kind of linking this post with the other one, as they are both about extensions / stacks and resource management in a way.
As in how do we get the properties of widgets.
I had a look at that sons of thunder site. They've got some good stuff on there.
Specifically:
https://droptools.sonsothunder.com/prod ... ts-cp.irev

This table is exactly what I'm talking about. How do I find the equivalent of that information for [any] widget?
Screenshot 2024-05-14 at 15-20-28 DropTools stsColorPicker.png
Screenshot 2024-05-14 at 15-20-28 DropTools stsColorPicker.png (126.65 KiB) Viewed 4038 times
I have been trying in vain, and have got as far as reading the keys, but no luck actually getting / setting the properties.

Edit: Think we are there now, with a working method:
viewtopic.php?p=8688#p8688

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Sun May 12, 2024 4:10 pm

It was my son's old ASUS sub-notebook (Chromebook-like) thing that I was experimenting with Elemental OS on, replacing Win 10 that it came with, my OXT App Image ran on it, but not with the correct UI theme and of course the Browser Widget problems, although Browser Widget did 'sort of' worked sometimes). My main takeaway at the time was that you could run an up to date lightweight Linux OS (and a rather macOS-like one at that) and the v9.x OXT engine reasonably well on very limited hardware (some version of low power-Intel Atom CPU I think with 32mb NAND 8GB ram).

Back on topic...

I believe I saw some advertisement that LC was going to add some sort of "'Script Based Widgets" or something to that effect but I haven't been keeping track of their progress so I don't know anything about how they've handled this similar concept to what you're getting at.
What I think OXT should do as far as 'script-based widgets' (for lack of a better terminology) is basically turn the 'Object Libraries" into a palette and then maybe use the same systems that are in place for Extension Builder Widgets and Libraries (which can already be Extension Builder or Script Based) as a package management format for those saved custom objects too. Also we could perhaps take a look at what was done with 'DropTools', and system promoted by "Sons of Thunder" pre-Extension Builder that was (is?) open to 3rd party development. https://droptools.sonsothunder.com/index.irev

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Sun May 12, 2024 3:49 pm

tperry2x wrote: Sat May 11, 2024 6:02 am
OpenXTalkPaul wrote: Sat May 11, 2024 2:59 am I just want to be able to update them whenever I add something new to those demo stacks, but then you'll still have the old version on your server.
That's true, although I have plenty of examples of that- with v1,v2,v3 etc - more so anyone can follow along with changes, as example stacks generally get more complicated as the versions increase. Sometimes a user only wants the bare minimum functionality that is in v1 to adapt, rather than the final version that they might have to sift through extra changes to find that same functionality. (I've probably not made that clear).
I agree about some people are just looking for the most basic example in a demo stack, I often look for such a stack to quickly get the idea (or remember the idea if haven't used it in a while) of how to use one particular syntax and nothing more. Although I think the examples given in the Dictionary entree are supposed to be that exact most basic thing, we know many examples are missing or maybe not very clear.
But I didn't mean for this to be about what sort of content you want to store in your stack repository.

What I'm thinking of is a system like the one used by KODI Media Center, formerly X-Box Media Center, but obviously not using python). I don't know if you're familiar with Kodi but it's been a quite popular app for sort-of-DIY media console UI for many years, and there are standalone Linux Distros have been built around it like LibreELEC (https://libreelec.tv/downloads/)

I already have the working experiments in place for extensions/widgets as that webstack, and a stack that helps generate and outputs the lists.tsv. it could be expanded to handle any sort of content links such as sample stacks. But as I said I'm going to rebuild the front-end to be a simple stack, and so I wanted to discuss it before going any further on that sub-project. In particular what sort of data about a shared resource should be included, or can be optionally included, etc. in the list of resources.
I want to keep it simple:
A single Repo List will be used by a stack UI in the IDE, each line of the file will be: repoName & tab & repoURL.
This stack will replace the Extension Manager's 'Sample Stacks, Snippets" (both of those have been empty, I guess place-holders, tabs on any platform not just Linux), and the formly non-functional "Store" tab, and also replace the 'revOnline"'s "sample stacks" stacks.
Resource list stored on the repo's server at the root of where your repo begins.
It will be simple tabbed delimited text (.tsv) no JSON XML or any of that mess.
Each list entry for a resource will at minimum include a relative URL pointing to a resource, any other info for the resource would be optional.
Optional info would be:
Name (could be the same as the filename), Short Description, Version (needed for extensions), Identifier (needed for extensions), Author, a URL related to a resource.
The along with the file you can optionally include additional files, something like:
filename.whatever
filename.whatever.desciption.txt
filename.whatever.screen.jpg , and perhaps also filename.whatever.screen2.jpg ...
filename.whatever.logo.svg
These files would be used for display in the UI when a resource is selected, a lot like the 'revOnline' UI.
Again, sounds a very good idea - like an 'addons manager'
Yes, like a Addon manager of sorts, but also for sharing demo stacks, code snippets, IDE releases, maybe also URL links to various other resources such as Webstack that's online somewhere (it might even be a stack built with HyperSimulator ;-) ) or perhaps even some website with lots of useful assets ( 'the noun project' SVG Icons site for example).
That would be good, but didn't v7 have no widgets (or no 'widgets' as they currently are understood)?
I thought you were really in favour of keeping widgets, as when I was contemplating the puzzle of reading them in my revised inspector (which I'm still drawing a blank on btw), you mentioned it was a deal breaker to not have them. I don't mind either way to be honest, but I think if we are going to support them - then great,
What I meant by 'deal breaker' is that without Extension support OpenXTalk would be far less interesting to me, and at that point I think I might as well start putting my efforts into working on some other FOSS xTalk, like a fork of StackSmith or ViperCard, something else like that. So I do want to keep supporting Extensions as much as possible.

However, I did use xTalk(s) and similar long before Extensions existed and I think I can be pretty pragmatic in working with what's available. I mean I did get real-time MIDI output working using several different methods before the Extensions were introduced, but with Extensions I now have much better method(s)!

I'd ABSOLUTELY LOVE IT if someone could build and release a version of the Engine based on v8 (widgets) or better v9 (widgets and foreign functions) that ran on RasberryPi (not to mention FreeBSD, SnowLeo, PowerPC CPUs, etc.), but there was only ever v6 and v7 based builds compiled for RPi (Raspbian Linux ARM), so that's what's available to work with on that platform, which means no extensions (but maybe externals). If xBrowser/revBrowser worked, which were Externals NOT extensions, on those builds that means you could still use JavaScript libraries and render Web content, SVG graphics, etc. The point is it's still worth having an xTalk engine on RPi, IMO.

I think I've always been in favor of pragamatic and holistic approach for the goal of a Free Open-Source xTalk.
At one point I even did do some exploring the idea of 'OXT Retro' Edition of the IDE that ran on Snow Leopard (which can run ups to the v8 Engine).
could you piece together a stack for me that retrieves widget properties from...say, the "segmented control" widget? (example using the old inspector)
How do I retrieve this stuff through script?
OK yes I'll work on that, and also I still need to post that text styling palette I made for you to check out.
I'm still in favour of simplfying widgets "for the rest of us" - so if a widget was simply a folder in the tools menu that you can drag off like any other tool to add to your stack, but if you want to edit that widget - you can poke around in the widget folder, in which you'll find the light/dark icon for the widget - the oxtscript file that does it's magic, and any other supporting files that it needs. It could also contain a 'widget.index' file (a text file) which declares all the properties it can have set, a list of all the files it references, and a description of what the widget is/does. This is also something we can read through script easily to get/set properties of.
So like the 'classic controls' or custom grouped controls, but in a way that users drag-drop to add them like with Widgets, and edit their custom properties using Prop Inspector?
My thinking on 'classic controls' and custom control groups as 'widgets' is that they are already essentially the same sort thing. But I was thinking for storing customized controls, we already have revObjectLibrary stack(s), and IMO thart should be turned into a palette that's more easily accessible when working on stacks. We have Drag-Drop added to that stack already.

Did you see that I took what was now a £20 HP chromebook and replaced the system with AntiX linux (removed ChromeOS completely) - this ran OXT Lite 1.04 brilliantly (although I was frustrated by the lack of screen space, and I love SOC boards for the education considerations), but I assume the issue on cheap SOC boards would be they might lack the video memory to drive a larger resolution.
No I missed that, that's awesome!
SoC boards are great for budget restricted Edu, and for hobbyists tinkerers on a budget as well.
I'm pretty sure there's SoC boards that support 4K resolution screens now and I also thought I had a v2 RPi running on at least an HDTV at 1080p (on 0.5v of electricity provided by USB).

Re: OXT Community Sample Stacks, Extension & Resource Management

by tperry2x » Sat May 11, 2024 6:02 am

OpenXTalkPaul wrote: Sat May 11, 2024 2:59 am No no it's fine to share them that's why I put them out in public...
Okay, thank you for clarifying. I didn't want to offend or anything, so glad I haven't.
OpenXTalkPaul wrote: Sat May 11, 2024 2:59 am I just want to be able to update them whenever I add something new to those demo stacks, but then you'll still have the old version on your server.
That's true, although I have plenty of examples of that- with v1,v2,v3 etc - more so anyone can follow along with changes, as example stacks generally get more complicated as the versions increase. Sometimes a user only wants the bare minimum functionality that is in v1 to adapt, rather than the final version that they might have to sift through extra changes to find that same functionality. (I've probably not made that clear).
OpenXTalkPaul wrote: Sat May 11, 2024 2:59 am That's why I'd like to have a some sort of distributed/decentralized method for sharing resources that could be used by either OXT edition, and for the IDE users to also be able to have their own private package/stack repo on local storage too.
I like the idea of that, so if I had an example stack that did that - I'd gladly add it to the help menu of OXT lite (under 'Lessons').
OpenXTalkPaul wrote: Sat May 11, 2024 2:59 am My build could read in your shared resources, and yours could read in my list of stacks, widgets, libraries, URLs, code snippets, etc. A distributed network of community resources that could be downloaded to memory, tried-out, and installed or removed directly within the IDE...
Again, sounds a very good idea - like an 'addons manager'
OpenXTalkPaul wrote: Sat May 11, 2024 2:59 am (it should be a functional system, even on an old v7 build running on an $10 SoC board).
That would be good, but didn't v7 have no widgets (or no 'widgets' as they currently are understood)?
I thought you were really in favour of keeping widgets, as when I was contemplating the puzzle of reading them in my revised inspector (which I'm still drawing a blank on btw), you mentioned it was a deal breaker to not have them. I don't mind either way to be honest, but I think if we are going to support them - then great, could you piece together a stack for me that retrieves widget properties from...say, the "segmented control" widget? (example using the old inspector)
how.png
how.png (137.69 KiB) Viewed 4182 times
How do I retrieve this stuff through script?

I'm still in favour of simplfying widgets "for the rest of us" - so if a widget was simply a folder in the tools menu that you can drag off like any other tool to add to your stack, but if you want to edit that widget - you can poke around in the widget folder, in which you'll find the light/dark icon for the widget - the oxtscript file that does it's magic, and any other supporting files that it needs. It could also contain a 'widget.index' file (a text file) which declares all the properties it can have set, a list of all the files it references, and a description of what the widget is/does. This is also something we can read through script easily to get/set properties of.

Did you see that I took what was now a £20 HP chromebook and replaced the system with AntiX linux (removed ChromeOS completely) - this ran OXT Lite 1.04 brilliantly (although I was frustrated by the lack of screen space, and I love SOC boards for the education considerations), but I assume the issue on cheap SOC boards would be they might lack the video memory to drive a larger resolution.
OXT-Lite-1-04-AntiX-Chromebook.png
OXT-Lite-1-04-AntiX-Chromebook.png (169.08 KiB) Viewed 4187 times
Anyway, I'm wandering again.
I totally forgot that there was a 'Sample Stacks' tucked away in the extensions manager. Not that it does anything on Linux with a broken browser widget. (video here)

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Sat May 11, 2024 2:59 am

tperry2x wrote: Fri May 10, 2024 10:31 am
OpenXTalkPaul wrote: Thu May 09, 2024 10:12 pm I don't like the idea of demo stacks that I shared being hosted somewhere where I can't update them myself. That is the big problem as I see it with having a centralized host for all of the content as you have it here: https://mega.nz/folder/4O9zVLbQ#8LrRAQdF69cr1dghEfhIXg
If you don't want them to be added there, I can remove them (I did ask first), but there's no harm with you ALSO hosting them somewhere else in your OXT deluxe version. My 'Lite' version is intended as only bug fixing and minimal changes, but feel free to 'go to town' of course on your version, that's entirely up to you.
No no it's fine to share them that's why I put them out in public... I just want to be able to update them whenever I add something new to those demo stacks, but then you'll still have the old version on your server. That's why I'd like to have a some sort of distributed/decentralized method for sharing resources that could be used by either OXT edition, and for the IDE users to also be able to have their own private package/stack repo on local storage too. My build could read in your shared resources, and yours could read in my list of stacks, widgets, libraries, URLs, code snippets, etc. A distributed network of community resources that could be downloaded to memory, tried-out, and installed or removed directly within the IDE (it should be a functional system, even on an old v7 build running on an $10 SoC board).

Re: OXT Community Sample Stacks, Extension & Resource Management

by tperry2x » Fri May 10, 2024 10:31 am

OpenXTalkPaul wrote: Thu May 09, 2024 10:12 pm I don't like the idea of demo stacks that I shared being hosted somewhere where I can't update them myself. That is the big problem as I see it with having a centralized host for all of the content as you have it here: https://mega.nz/folder/4O9zVLbQ#8LrRAQdF69cr1dghEfhIXg
If you don't want them to be added there, I can remove them (I did ask first), but there's no harm with you ALSO hosting them somewhere else in your OXT deluxe version. My 'Lite' version is intended as only bug fixing and minimal changes, but feel free to 'go to town' of course on your version, that's entirely up to you.

Re: OXT Community Sample Stacks, Extension & Resource Management

by tperry2x » Fri May 10, 2024 10:30 am

OpenXTalkPaul wrote: Thu May 09, 2024 9:56 pm How does your updater know what filenames to look for, based on what? How would it know how the next version would be named?
Quite simple really - it compares the current version string, looks against that to see what updates are available.
If I want to bump the version up, then the updater just modifies the version string and build number as needed. It does all that automatically, depending on the content of the 'updatepackage' folder. (I have one folder to change things in and read, rather than worrying about reading property information of individual files multiple times).
OpenXTalkPaul wrote: Thu May 09, 2024 9:56 pm This question is why I want to set specific conventions for naming for the repos listings like 'RepoList.tsv' which goes into the root directory of a repo, A RepoList just points to directories wherever they may be. The List.tsv is a at the root level of each repo and contains info about each of the files along with either a relative URL or full URL pointing to the resource to download.
Sorry, I don't understand what you mean by Repo. Do you mean a github repo, or do you mean a tsv file that is already resident on your computer?
Having loads of tsv files seems like a lot of over complication, as all it will take is something to not be referenced correctly, or some typo, in one of those multiple tsv files for download errors to occur. But that's only my take on it. Up to you of course how you want to make your version work.

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Thu May 09, 2024 10:12 pm

I don't like the idea of demo stacks that I shared being hosted somewhere where I can't update them myself. That is the big problem as I see it with having a centralized host for all of the content as you have it here: https://mega.nz/folder/4O9zVLbQ#8LrRAQdF69cr1dghEfhIXg

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Thu May 09, 2024 9:56 pm

How does your updater know what filenames to look for, based on what? How would it know how the next version would be named? This question is why I want to set specific conventions for naming for the repos listings like 'RepoList.tsv' which goes into the root directory of a repo, A RepoList just points to directories wherever they may be. The List.tsv is a at the root level of each repo and contains info about each of the files along with either a relative URL or full URL pointing to the resource to download.

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Thu May 09, 2024 9:43 pm

GitHub's web UI may not offer gallery view for screen shots (a Stack version could be scripted to display as a pict grid ), but GH Web UI does recognize many common file formats and displays them accordingly. For example the tabbed delimited data is displayed as a table in the GH web UI:
https://github.com/OpenXTalk-org/OXT_Re ... sRepos.tsv

The first row in that RepoList file is a list that points to directory on my Laptop that contains the offline version of the repo.
~/My OpenXtalk/ResList.tsv

Re: OXT Community Sample Stacks, Extension & Resource Management

by OpenXTalkPaul » Thu May 09, 2024 9:13 pm

Note: I did try using libURLDownloadToFile, but found it was unreliable and a headache because it could easily be broken with timeout errors.
I did too, that's why I wound up building it in a webpage and then using the exposed JavaScript 'Handlers' (the same way that 'Extension 'Store' was originally setup) to communicate between the IDE and the webpage inside the Browser Widget. But I sort of knew that was overkill when I did it. I just haven't gotten around to building something better to replace it.

Top