Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
4.5 Official Beta Release Thread
#11
Version 4.4.906 is posted, which once again is mostly just following up on issues reported or discovered during testing. All of them still are generally fairly small things.

NOTE That at this point auto-generation and the theme system have both been removed because they are in the process of being updated. So they won't be available. The theme system is likely to stay gone, to be replaced by a much better, more flexible scheme.
  • The CAB is moving it's 'display area' inwards a pixel even if no border is drawn. That makes it not quite come out right if you create a layout template that is an exact division of the CAB height, because the last row won't quite fit. So stop doing that.

  • The DVD Profiler repo driver isn't forcing the All Movies category to have its special category id number. So it's not found when the CAB loads up initially and tries to load the All Movies category. So the CAB fails to load initially and only shows content when you pick a new category to display.

  • The Media Cat Browser shouldn't try to load category info when in the designer. It will fail, and it will overwrite the sample text that the underlying H/V list browser class sets up for designer mode.

  • And the same goes for the CAB, which during the big rework lost that check and is trying to load a default category in the designer. It shouldn't be doing that.

  • Change the opacity value displays in the Intf.Des to use percentages instead of 0 to 0xFF. Percentages would be more non-technical. Meaning just the displays of course, not internally.

  • There are places where we check to see if an image has alpha or if the constant opacity the user has configured is less than fully opaque, and do an alpha blit if so. But, in some of those cases the 'has alpha' flag being passed in was just being set to True, instead of passing in the actual 'has alpha' attribute from the image. So if you lowered the opacity slider, it would just go away since it really had no alpha content.

  • The window class that the web widget uses to embed the web browser instance in has a race condition during cleanup. It stores the pointer to the COM object in the window's extra data storage, so that it's available during any Window message processing (in this case it's all fairly low level and raw, not going through our own windowing framework.) However, when the 'unembed' method is called it was doing the cleanup of the browser, THEN clearing out the pointer from the extra window storage. If anything caused a window message to the browser during that cleanup phase, which could often happen if you loaded another template while the browser window was updating, then it could see that bad pointer still in the window storage. So clear the pointer out FIRST.

  • The Driver Backdoor Image widget isn't setting an error string when it fails to validate because of no driver moniker having been set. So you don't know what is wrong when the Intf Designer complains.

  • The color palette widget isn't copying the current palette size attribute during copy/assignment, so if you edit the attributes, it will sometimes mess up visually in the designer when redrawing.

  • The Linear Multi-patch Image widget was not copying it's horizontal/vertical flag during copy/assign, so it could randomly change orientations.
Dean Roddey
Explorans limites defectum
#12
Version 4.4.4907 is posted. This one, again, is primarily just squashing bugs as they are reported or discovered during testing. This one whacks a number, plus it adds thermostat support to the Lutron Radio RA2 driver.
  • A logic error in the H/V list browser base class would cause an exception in any of the widget types derived from it (all of the simple h/v text list widgets) if you clicked on one when it was empty.

  • The H/V list browser base class mistakenly assumed that various areas it calculates were really just for viewing time, and didn't need to be copied, because they would always be set up during widget initialization or upon any resizing. But, for displaying sample content in the designer, they do need to be, so that the initially calculated areas don't get lost during editing.

  • Some more fixes for the JRiver repo driver, to get it loading artwork correctly. It had a few different subtle issues going on. Hopefully it's better now.

  • Add support to the Lutron RA2 driver for thermostats. Though this is not yet a V2 compliant driver, implement the thermo stuff as though it is, just without the device class field name prefixes, so at least this stuff will be easy to move forward.

  • Have the IV action trace display Exit commands and their statuses, to help with debugging.

  • During some changes to the template initialization sequence, the post-initialization processing on widgets in popups got moved up above the point where the popup is pushed onto the stack. This would cause any actions that were invoked during that post-init phase to actually stick to the underlying layer, usually the base template, not the newly pushed popup layer. So they would run after the popup exited, and that could cause an error if they tried to access any other widgets in that popup, since they no longer exist at that point. Or even stranger errors if the actions happened to be legal for the underlying layer and were done.

  • In a CAB search by title, using a regular expression (contains/starts with), it was actually comparing against the artist name instead of the title name.
Dean Roddey
Explorans limites defectum
#13
Version 4.4.908 is posted. This one is mostly small fixes and stuff moving towards the new auto-gen system.
  • Update the toolbar widget to support an optional background image, i.e. an image that will go behind any of the toolbar buttons (unless one uses the marked image or focus image and has the focus.) This will allow us to do the new auto-generation system's home page selection tiles as a tool bar. That will save a lot of work in the auto-gen, since it can just be loaded with all of the possible buttons, and then the ones not configured can be removed, and it will automatically handle re-positioning the ones that remain.

  • The H/V browser's attribute tab doesn't correctly display the size, spacing, etc... values. The are supposed to have borders around them and be left justified. And they aren't aligned too well either.

  • Define a new CML base class, CQCDeviceSense, which wil be the basis for supporting the auto-sensing of devices. An auto-sensing utility will load manifests, parse them, find the referenced auto-sensing class, if it is set, download it, and allow it to test any so far still available serial ports or IP ports and return whether their device is on one of them. If so, it will return the port config or socket end point and protocol that was successful in connecting to it. It can't use any driver code, it has to just be a standalone CML macro, and should just do the absolute minimum to prove whether the device is there or not.

  • Apparently, a recent firmware upgrade to the RA2 controller made the previous code used by the driver to control switches no longer work to turn them on. So update the code to work correctly. Should be backwards compatible with non-upgraded RA2 systems as well. We seem to have discovered an unintended reaction, which seemed logical, and it worked, but which got whacked with the upgrade.

  • Do a new V2 compatible version of the Omni TCP driver. Basically the differences are that it is now V2 compliant, and it supports auto-configuration by reading the setup from the Omni and using that to make reasonable guesses as to the desired item configuration. It also has some other small improvements like more zone types defined, and assignment of zones to areas.

  • For the purposes of doing the auto-gen raw materials templates, we need to have V2 compatible device simulator drivers we can leave installed all the time, since they have to be there any time we edit those templates. Start by updating the Lighting device simulator driver to both make it V2 compatible and to make it more useful for use in general by orienting it towards a 'virtual house'. That will vastly reduce the confusion of choosing fields for rooms when testing and such. Other sim drivers will be similarly updated.

  • When a widget in an overlay calls LoadNewTemplate to load a new template into its parent overlay, newly loaded templates that are marked as dynamically resizable are not initially resized.

  • Now that are potentially doing a lot of work when something is resized, update the AreaChanged() callback on widgets so that it gets the old and new areas, so that it can determine if the change was purely a change in origin, or if it needs to actually react to a change in size (resize images, contained items, child widgets, etc...) This will make things more efficient.

  • In the new chain of cachings of media data that are involved in getting media cached on the clients now, the one at the client end, that periodically checks the client service for new data, had an unduely long period. It was sometimes taking a couple minutes to get media data to show up in the clients after a system start. And this particular one was taking the longest. But it is always just talking to a local service on the same machine, so the overhead is low. So just make it fast enough that the client proxy object never falls out of the ORB cache, so it won't ever hit the name server but once when the program starts, and it can much more quickly check for new info. Lower the times on the other levels a bit as well, to speed up info propogation.

  • In the new scheme, there will be some more interest in using at least a couple levels of nested overlays in some cases, for positioning purposes during dynamic resizing. This raises issues with how widgets within that nested overlay can cause the top level overlay that they are nested down within reload. The LoadNewTemplate command loads the immediate parent of the widget that invokes the command. Create a new LoadAncestor() command. As with LoadNewTemplate it is on the viewer target, and is just remapped to the parent container of the invoking widget when it's run. But it will then look at the Target parameter (which can be GrandParent, Great GrandParent or Root) and actually target that ancestor container. If it happens to be invoked from within a base template (or root template of a popup) it will be ignored.

  • In those dragging gesture cases where we don't draw all of the scrollable content up front, and use idle time during the scroll to draw more ahead on an as needed basis, we have to clip the output to the update area. Otherwise, any content that is drawn with alpha can draw multiple times into slices of the content that overlap from the last time we drew more. That will make it just add up and become brighter. We should also be better about trying to draw on even content boundaries where that is possible, to avoid multiple drawings of stuff, but that's a separate issue.

  • Update the security sim driver to be V2 compliant, much better structured, and to work with the same 'virtual house' that the updated lighting driver used above. This will again make it much easier to do auto-gen stuff, and will also be much better for setting up on the road demo systems.

  • The tool bar should not do the faux text press if the toolbar has a defined pressed image. It should just show the pressed image. Ultimately I guess for all of the things that are pressable and have the option for a pressed image, we should provide the option to do the faux depress of the text. Sometimes it might still be desirable even if there's a pressed image. But, for now, just don't do it if there's a pressed image.

  • Add support to the Integra RCVR driver for the DTR-40.5 model. Hasn't been tested yet though.

  • In order to allow fancier looking interfaces that include lighting glare effects, provide an option on the static image widget to be transparent to touch. This way, the glare can overlay an input oriented widget like a slider or progress bar, but you can still interact with the widget. It defaults to false since generally you wouldn't want do to that, but it's there as an option.

  • Update the IR client driver to display any previous IR data if you choose to (or have to) paste in IR data manually. This requires that we add a new call to the server side driver to ask it to format the data for us, since only it knows how to format the binary data blob to the blaster specific format.
Dean Roddey
Explorans limites defectum
#14
Version 4.4.909 is posted. This one includes more ongoing fixes to deal with any weirdness introduced during recent big changes, but also introduces some nice new features and performance enhancements.

Some of the biggies are:

Live Tiles. We now have a new container type widget, in addition to Overlays, called Live Tiles. They are essentially overlays but they are non-scrollable and non-interactive. You can't interact with any widgets loaded into them. However, they react to click just like a button, so you can set up OnClick commands to do something when they are clicked. They also can watch one or two fields and automatically load a new template into themselves based on the values of those fields. So they can adapt to the status of this or that and display different info. So they are also sort of a Smart Button.

You probably don't want to put a lot of these on a template that you will leave and come back to. They would be a bit slow to load. They are more for always visible side bar type of stuff, or maybe one or two on some screens. Since they load driven by field data, they have to wait until any field values are obtained before they can load, so they won't pop right up like normal overlay content does.

If you put a static image on the templates loaded into it (set the image initially hidden) and give the image widget the name PressEffect, then when you click the tile, it will show and then hide again that static image, so that you can provide a nice click effect.

Performance Enhancement. There is more caching now of data on the master server side, in this case of images, global actions, and templates. This makes them more quickly available to clients when they have to download them. It does mean that you can't as easily play tricks by copying files into the repository areas, because once files are cached the data server won't go back to the files.

The interface engine now also caches templates data on the client side. Currently, every time you load a new template, the IV engine has to go to the master server to retrieve the template info. But now, after the initial access, that template will be cached, and available immediately for use. So, depending on circumstances, this can make for a big difference in speed of template loading, particularly now as folks start making bigger ones that take advantage of scrollability.

NOTE that, for testing purposes, this can be a bit of an issue. The IV engine will only go back to the server to check for changes at most every 60 seconds for a given template, i.e. if you access template A, it's cached and no matter how many times you access it for the next 60 seconds, it will not see any changes made to the template and stored to the MS. Normally that's a good thing, since in normal usage they almost ever change so this maximizes performance.

However, for testing, you want new changes to show up quickly. So the IV has a menu item now, under Tools, that will let you temporarily disable caching. So it will always go back to the server to check for changes.

Also note that, even if does go back to the server, because we have caching on the server side, the server can track changes and the clients will know if there's actually changes available or not. So, even if it does go back and check, if no changes have occurred, it won't cost much since it doesn't download anything. It already has the latest stuff. So, all around, it's much better for client performance and for minimizing load in the MS.

Relative Template Paths. One things folks have complained about is that, if they move templates, that all of the paths in them that refer to other templates are now invalid, because they are always fully qualified paths. But now you can enter relative paths if you want. You will have to edit the paths yourself if you use the selection dialog, since it will always return a full path. But you can modify them to be relative if you want.

As usual, relative paths begin with a period, e.g. .\Overlays\Music or something like that. If the main template is \User\MyTemplates, and it invokes a LoadOverlay command on an overlay and passes .\Overlays\Music, the full path will be \User\MyTemplates\Overlays\Music. If you were to move these templates from MyTemplates to NewTemplates, then the only thing that has to change is the initial path you pass to the IV to load. Everything else will work the same, as long as you've used relative paths everywhere.


Changes list is in the next post because it was too big for one.
Dean Roddey
Explorans limites defectum
#15
continued from previous post...

List of Changes for 4.4.909
  • The recent changes to all the graphics stuff left the regular (non-alpha) multi-line text drawing method such that it doesn't correctly clip the text output to the target area unless the text is top justified.

  • I completely screwed up the naming conventions on the new V2 HAI Omni driver, so the image builder didn't get it into the release. That meant going through all three DLLs and updating the names of lots of stuff to be correct. Doh!

  • Add support for relative template paths. I figured that I'd spend almost as much time in the new auto-gen stuff making sure paths were updated as I would just implementing support for it. Then the auto-gen doesn't have to do any path updating at all. Relative paths must start with a period, i.e. .\Overlay_Main and that sort of thing.

  • Add a new 'fill slots' option to the toolbar. If this is set, and the Base tab is set to transparent, then the background fill and border settings are applied separately to each slot instead of to the overall toolbar. This provides a simple and convenient way to create color filled slots. It does require a transparent background, but that's not much of an issue for the toolbar widget when it comes to scrolling performance.

  • The changes to support auto-update for the web image widget broke it on the RIVA clients, because I stopped caching the images in the web image cache. So the RIVA client won't find them when it comes looking. I was concerned with the potentially rapid update rate. So, add the caching back, but if in RIVA mode, limit it to no more than once every five seconds.

  • Update the IV widget gesture handling so that the widgets can indicate not only if they want to allow a gesture, but whether they are willing to allow a gesture to propagate up to the parent container. The reason for this is that, say, you have a vertical slider in an overlay. If you do a horizontal gesture, currently that will not cause the overlay to scroll because the slider, despite the fact that he doesn't handle horizontals, will eat the gesture. With this change, only gestures that the widget would actually process (even if that means not actually doing anything, e.g. already at the end) will be eaten by the widget, and the rest can propogate up to the containing overlay, so that it will be scrollable. You could always do a two finger scroll on a MT screen, but this provides more flexibility. If you design it so that you don't use widgets on a scrollable overlay that also scroll in that same direction, you can always use single fingure scrolling on the overlay.

  • Since folks seem to like the 'live tile' concept a lot, provide a much easier way to implement them. There is now a new Live Tile widget type. It is effectively a non-interactive, non-scrollable overlay. I.e. it can load templates like an overlay, but the widgets within it are not accessible. It's for display only. But the tile itself responds to clicks and does an OnClick so you can use it as a button as well. It allows you to associate up to two fields with it. You can then indicate a list of templates you want loaded and, for each one, what the configured field values have to be. So, it will monitor those fields and, if any of them change, it will go down the list and find the first one for which the configured expressions match the field(s). It will then load that template automatically if it's not already the one loaded. You can also configure a global variable and, for each template in the list, indicate a value for that global variable to be set to before the new template is loaded. This value can be set from the field values or something fixed. So this allows for a lot of flexibility for an easy to set up, efficient, and flexible 'smart button' or 'live tile' type of widget. If you name a static image PressEffect (just set it initially hidden), it will be displayed and then hidden again for the press effect when clicked.

  • Size up the widget configuration dialog (and hence all of the tabs that it contains.) This will set new standards in boredom but we really need more real estate in the tabs.

  • The CAB has a one-off issue vertically when calculating how many rows it can hold. It is coming up one pixel short so if the cab is exactly sized to fit X rows, it'll only show X-1.

  • It looks like Z-Wave Scene Actuator type modules can be not just dimmers but also binary switches. So we need to watch for scene actuator reports for binary switches as well.

  • The CAB uses idle time during inertial movement to predraw more content and stay ahead. It was supposed to be drawing on exact item slot boundaries, so that it would never have to draw a given column's worth more than once. But it was failing to add the horizontal spacing to the calculation. So effectively it was drawing almost every column twice, or at least those widgets in the layout that intersected the areas being redrawn.

  • Implement a simple but useful standard file caching framework in the CIDLib layer so that we can provide some more caching without too much extra grunt work when there no special requirements, i.e. just cache the raw contents of files, with some standard functionality that would be always used such as LRU cleanup to make room if they are full. Get some unit tests in place to make sure it's happy.

  • Implement in-memory caching in the data server for images, interfaces, and global actions. Other stuff might be done later as well but that's a good start. This is just the server side, which will be a good performance enhancer, but it also lets us keep track of changes and provide a serial number that clients can use to implement efficient client side caching as well. Images and interfaces don't use the generic caching framework from above, since it's more useful to just cache them in semi-expanded form instead of just the raw file contents. Some info about images was always cached but not the actual image data.

  • Implement a client side cache for templates in the interface engine. This will improve performance from noticeably to substantially depending on usage patterns and how fast a given client is to access the server. And it will reduce load on the MS which speeds things up for everyone. Images have always been fairly heavily cached, but templates not at all. By default it will only check the server for changes every 60 seconds for a given template, and even then will seldom actually have to download anything since it will see nothing has changed. There is an IV menu option under Tools to disable caching, which can be useful for testing, so that you don't have to wait for a minute for changes to show up. Part of the price paid for snappier performance in normal usage.

  • Update the Speech II driver to make use of the above caching to be more efficient. It uses global actions that it needs to check for changes regularly, and the new caching allows it to do that much more efficiently. It just keeps the serial numbers around so it will seldom ever actually have to download them again. It will check once a minute for changes, though it would only actually download if it had changed. This also means we don't need to recompile them unless we actually download changes. The ReloadGlobActs field, which used for force a download, now just zeros the next update timer to force it to check for new content on the next speech operation.

  • Some issues were reported where a failure to load the configured initial template for an overlay would later cause an exception, but it looks like things have changed so much since then that it is no longer an issue. But let me know if it appears to be happening still.
Dean Roddey
Explorans limites defectum
#16
Version 4.4.911 is posted. Mostly it's a fix for a wee problem introduced in the image repository server when I added more caching in the previous drop. It could make access to larger images fail or attempts to upload them (as during a package import.) So, if you installed 909, probably best to upgrade.

Sorry about that, but the performance improvements I think will have been worth a small growing pain or two.

And there a few more fixes as well.
  • A wee glitch in the image caching changes in 4.4.909 broke a couple things, including template package import if included images or referenced images. It could also affect image access or uploading new images.

  • There's a bug in the focus management (regular windows not IV widgets.) If there are nested windows involved, such as the entry field that's inside a combo, it builds a stack of windows so it can start working its way up from the one with the focus until it can move forward (or back.) But, it should really be using a deque because it needs to work with the first one pushed and moving up to the last, not the last one pushed moving to the first. This could cause it not to want to tab to some windows.

  • Improve the configuration screen for the new Live Tile. Allow movement up and down of the configured templates. BTW, you can directly edit the template paths (if you want to make them relative) by double clicking a template entry.

  • There was a (hard to find) problem in the widget config dialog. It was allowing the default dialog box handling of setting up the intitial focus to happen, which was undoing the setting of the initial focus in the first tab. It wasn't at all obvious this was happening, so it took a while to figure out. It would sometimes get the focus on a non-visible tab when the dialog first loaded.

  • Sort the fields in the Interface Designer's Fields tab. Start switching over a V2 aware sort wherever we sort fields or replace any existing sorting of fields. It will sort V2 fields first, and V1 fields second, with each sub-range sorted. Sort the special stats fields last, since they are least likely to be needed. Do the standard field selection dialog as well, which would be the other most common place where fields are listed.

  • The Live Tile attribute tab isn't correctly passing in the previously selected field to the field selection dialog if you edit the field.
Dean Roddey
Explorans limites defectum
#17
Version 4.4.912 is posted, which I think should take care of the remaining issues wrt to the recently introduced image/template caching stuff. As is sometimes the case, there were a few different issues, which were muddying the waters.
  • There's a bug in the by ref keyed hash set collection which causes an error when trying to report an error of a duplicate key. If the collection is adopting, then it's deleting the object before it's formatted the key into the thrown exception.

  • The utility that generates the standard \System\... image repo for the release images is putting the full path to the image into the objects instead of the image name (the \System or \User relative bit.) Until now it's not made any difference so it was never noticed. But now with the new caching this info is being used and it's causing problems.

  • The code that loads the correct system tier logo to display in the Admin Interface assumes that the logo resource ids are in the same order as the system tiers. But, when we moved over to using our resource editor to edit the resource file, it sorts the resource ids and assigns ids in sequential order. So that messed up what got displayed. For instance, Silver would show up as Titanium.

  • Fix (hopefully all) the remaining issues with the new template/image caching stuff.

  • In the Intf. Designer, if the Revert button is used in the config dialog, re-initialize the widget. This insures that things like referenced images, which might have been removed, get reloaded. Otherwise, the configured image paths get restored, but the actual images don't get loaded back up within the editor until you close and re-open the template.

Dean Roddey
Explorans limites defectum
#18
Somehow I lost the list of changes for 4.4.913. I thought I'd posted them but apparently not, and I've already removed them from my local list. Oh well, I'll do it by memory, though I know I'm missing a couple.

The biggie is that there is now the start of a static template pre-scaling feature, which is likely to replace the dynamic resizing stuff. It's sort of sad because so much work when into that dynamic resizing stuff. However, we have to be willing sacrifice stuff if it's for the greater good. Static pre-scaling lets you build a standard working set of templates, then pre-scale it to various other resolutions. The works is all done up front, so as much time as required can be taken, particularly in the scaling of images, and fonts can be scaled as well. And it will also scale popups, which is a big thing.

So give this feature a try and let us know how it works for you. The interface for setting it up is still very simple. I didn't want to commit a lot of work on that until it's clear the actual scaling functionality is all that. It's in the Admin Intf. under Generate in the main menu.

You have to provide:

1. A source scope to convert (and optionally all of its sub-directories, which typically you would do if those contain referenced templates.)
2. A source resolution to scale from (typically the size of the base template which is usually designed to be full screen.)
3. A target scope to put the converted templates into. It will create an XxY type subdirectory here for each target resolution. Into there will be recreated the source scope's content (and contained subdirs as well if you say do that.)
4. A target resolution that will be used to scale everything. The source to target resolution defines X and Y scaling factors that are applied to everything.

It will also create an Images directory under the XxY target, where it will put all referenced images, pre-scaled to their new sizes. It will update any image references in the target templates to point to these new ones.

* You must use the new capability to have relative template paths. It doesn't attempt to update any template paths, so if you don't do this you will end up still pointing to the old source templates. Any templates in the same scope can be referenced as .\NewTempl (where NewTmpl is a template in the same scope as the one that is invoking it), or .\SomeSubDir\NewTmpl and so forth. If you are referencing a template in a parallel scope go up and then down, such as ..\Common\MyPopup which goes up one scope level and then down into a Common scope.

This insures that you can move the whole set of templates to any new location and they will still work, and that the scaling system doesn't have to try to figure out how to update template references (which are often done indirectly using variables and such.)

* For now, you can only generate one resolution at a time, and the tool cleans out the target directory each time, so it will remove any previous one you already did. So, in the short term, give a separate directory for each resolution. Later you'll be able to configure multiple resolutions and spit them all out at once.
  • Implement a new static template pre-scaling scheme, which will probably replace the dynamic resizing system.
  • Take care of remaining issues with the template and image caching recently implemented. There were some tricky issues still hanging around that could cause problems when referencing images.
  • Add the capability for widgets to react to their being pre-scaled so that they have a chance to do 'internal scaling'. This is stuff like the size of the slots in a horizontal or vertical list browser, to scale them along with the overall browser, or the buttons in tool bars and so forth. Otherwise they won't look right when scaled.
Dean Roddey
Explorans limites defectum
#19
Version 4.4.914 is posted. It just takes care of two things. In the previous version, when I 'fixed' the problem with the cache disable option in the IV not actual stopping local caching, I broke it in another way. So this makes it work correctly in both modes now. And applying a couple lessons learned from the image/template server side caching to the global action caching.

Because the IV caching disable is important for testing and it would cause errors, I went ahead and got this drop up quickly to replace it. Sorry about that.
  • Turning off the local caching in the IV would cause an exception. When I 'fixed' the problem with the disablement option not actually disabling the cache I made another mistake. Doh! It should work both ways now.

  • Fix a couple small issues with the global action server side caching.
Dean Roddey
Explorans limites defectum
#20
Version 4.4.915 is posted. It's mainly small fixes, but some small improvements as well.

The primary improvement is the new 'time image' widget, which lets you do things like analog clocks. It can be driven by a time based field, or the local time, so there are variations for each mode. It works not unlike the logo image widget, but it's a bit more flexible and it uses two images, not one. One is for the hours and one for the minutes, though you can choose to use only one of them if you want.
  • Change our standard list box to show its selections in a non-emphasis color when it doesn't have the focus. This will make it a lot easier to figure out where the focus is in dialog boxes. Update the multi-line editor to only show its selection when it has the focus.

  • Most widgets want to stop tracking a drag gesture at their edge. But in some cases, such as the volume knob, that's not optimal. The volume knob adjusts the volume up or down based on a left/right or up/down drag, and if you are limited to the area of the widget, it's not really far enough to make an effective adjustment in many cases. So allow widgets to optionally ask to get drag info beyond their borders.

  • When in RIVA mode, the CAB and AMIB should move the width/height of the display area minus a bit, so that any partial columns on the far end will be fully (or at least almost fully) displayed in the next page. This way you can get to the full display of any items in the list.

  • The Intf. Designer's main frame window is setting its maximum drag size to the desktop size, which is just the main display, when it should be using the virtual screen size so that you can use it across multiple monitors if you have them.

  • Add a new OnExtClick event to the template class. When the user clicks and it is outside of the area of the top-most template, that top-most template will invoke its OnExtClick event so that you can react to that, for instance to exit a popup. It could also be used in the surrounding area of a base template as well if the template doesn't fill the available display area.

  • Add a new 'ScrollParent' command to the Intf Viewer command target. This will allow widgets to ask their parent, grandparent, or great grandparent container to scroll left or right. This only works if the ultimate target is an overlay. If the parent, grand parent, or great grandparent is the template itself, or this would go beyond the actual template, then this will be ignored. This command is processed asynchronously, so it won't happen until after the current action completes.

  • Looks like the static template pre-scaling scheme is going to work, so remove the dynamic resizing stuff from the interface engine. No more improvements to the pre-scaling scheme yet, it's still the same as the previous version.

  • Create a new 'time image' widget, with field and static variations. These take a time, extract the hour and minute, look up a images based on the hour/mnute values and display them. You choose to only do the hour one or the minute or both. It's primarily intended to support analog clocks, but you can probably find some other ways to use it, which is why I didn't make it just an analog clock widget. I wanted to have an analog clock on the home page of the new auto-gen stuff, which is why I did this. It works sort of like a logo widget, except that you can provide a pattern that's used to create the image names, e.g. MinHand_%(n) or Min_%(n,2,0). The former would look for names like MinHand_0 to MinHand_59, while latter would look for Min_01 to Min_59. Similarly for the hour image. For now the images are both just centered. You provide whatever image scope that you have placed these images into, so it builds the full names from the scope plus the expanded image name.

  • Create a clock face and a set of hour/minute images to use with the new time image widget. These are for the auto-gen system, but they could be used by anyone, and the hour/min images could be used over other clock face images.

  • The new PowerState semantic field type didn't get added to the CML level definition. Had to add it for the Denon X4000 driver.

  • The changes made to support V2 repo drivers made a small mistake in that the repo manager now won't find V1 drivers, only V2 ones. The driver search wasn't updated quite correctly to find both types.

  • In the new pre-scaling system, use the original names of the images when we create the scaled ones, though we do still have to use a numeric suffix to avoid dups.

Dean Roddey
Explorans limites defectum


Possibly Related Threads…
Thread Author Replies Views Last Post
  6.x Beta Release Discussions Thread gReatAutomation 30 6,741 12-21-2022, 12:53 PM
Last Post: pilotguy7ca
  Official 5.5 Beta Release Thread Dean Roddey 46 19,142 09-23-2021, 03:32 PM
Last Post: jokermac
  Official 6.x Beta Release Thread Dean Roddey 2 1,662 04-16-2021, 05:55 AM
Last Post: Dean Roddey
  5.5 Beta Discussions Thread Dean Roddey 291 92,330 04-05-2021, 04:10 PM
Last Post: Dean Roddey
  6.X Discussions Thread gReatAutomation 1 1,408 04-01-2021, 03:23 PM
Last Post: Dean Roddey
  Official 5.4 Beta Discussion Thread Dean Roddey 441 191,524 06-15-2019, 02:33 AM
Last Post: Bugman
  Official 5.4 Beta Release Thread Dean Roddey 55 35,768 06-07-2019, 07:02 PM
Last Post: Dean Roddey
  Official 5.3 Beta Discussion Thread Dean Roddey 815 418,995 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.3 Release Thread Dean Roddey 27 21,750 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.2 Beta Discussion Thread Dean Roddey 244 163,707 10-14-2017, 07:57 PM
Last Post: Dean Roddey

Forum Jump:


Users browsing this thread: 1 Guest(s)