|
Use with caution. These public beta programs contain new fixes and new features that haven't been fully tested. I need you to tell me if you find any problems with these program or even if the changes listed work as you expect. |
Current Beta Roadmap
Rename Master is getting ready for an official release. It's been in beta for a long time, since there weren't many changes to the program to warrant a new release. The last beta fixed a freeze issue, so I figured this would be a good time for a new release. Unless new issues are found, the current build will be the official release.
I've a few ideas for an ArsCip update to help with outside automation and scripting. The problem with these ideas is they're very niche and for advanced users. I wouldn't use the features, but I could see how they could be useful.
The first idea is to add a command line parameters to execute a Permanent Clip/Macro. Currently, the only way for outside programs to trigger AC is to simulate a global hotkey associated with a clip. Having a command line parameter option would be less limiting.
The second idea is to add a command to execute another script before or after the current script. This would help to reduce clutter in macros that perform common tasks. You could chain together several clips, so this would take some work to figure out.
ArsClip Pending Release
The current Public Beta of ArsClip is likely to be an official Release soon. I was waiting for some new features to be added first, but it's been a long time since an official release.
More Rename Master Tweaks
There's a small tweak to the Remove/Replace Expression step that makes incredibly more flexible. When in Remove mode, you can now specify which parts of the expression to remove. By default, all parts are removed.
In the above example, it will find anything between parenthesis and only remove the middle part. For removal options, it can remove all parts, one part, or all but one part.
Rename Master New Renaming Option
It's been a while since I found a renaming option that RM didn't support. Above is the new Replace/Remove Between feature.
This was a request from a user to "remove text between (something) and (something else)". The "Remove Expression" Renaming Step could do the task, but it would also remove the conditional phrases. While the Full Regular Expression support was able to do the task, this feature was common enough that I feel RM should support directly. Regular Expressions are also complicated and for very advanced users.
The current Public Beta includes this update and a fix for the "before and including" option of the Renaming Step.
ArsClip Exception when Exiting
The latest Public Beta of ArsClip adds sequence information to the debug log when exiting the program. I'm currently trying to track down an intermittent issue that can cause an exception during shutdown.
Previously, during the finalization of the program, the debug log information would be cleared when the debug window was destroyed. The debug log has been updated that it is the last to be finalized.
EDIT: This issue has been fixed in the next Public Beta upload (Test 17).
Text Inspector and JavaScript
I've updated the Text Inspector window with a JavaScript section. This is designed to auto-generate code for the selected control to use in a Permanent Clip/Macro. The current two functions are "clickInWindow" and "focusControlByPath".
The clickInWindow() function is designed to click inside a specific top-level window using coordinates based on the top-left of this window. As long as the control is always located in the same location on the window, the relative coordinates will always click the same location independent of the top-left position of the window. The "ClassName" of the window is used to specify which window to focus. The simulated mouseclick can either set focus on a control or activate a control like a Button.
The focusControlByPath() function uses a relational path to navigate to specific control by ClassName/id instead of a coordinate location. The control is then given "keyboard focus". Windows controls have a designed parent>child relationship, similar to folders on a hard drive. The path string is similar to the full path name of a file.
Both functions may fail for specific programs if the window dynamically changes the location or the parent>child relationship of controls.
The Edit Permanent Clip window has a new [JavaScript > Text Inspector] section. This is mainly used for reference, but a programmer may be able to manually set the parameters of these functions.
Text Inspector Update
The current Public Beta of ArsClip adds "Extract" commands to Text Inspector. ListView Headers, ListBoxes, and TreeViews have their own control specific methods for extracting text.
For ListViews Headers, there are options to extract the text from all column headers and an option for an entire column. For example, you can copy the date column from a list of files in Explorer. For Listboxes, there is an option to extract all rows from the control. By default, only the currently selected row is extracted. For TreeViews, there is an option to extract the full path of an item. By default, only the current tree item is extracted. There's plenty of room for growth here.
This feature can sometimes interact with a page in a web browser. When it works, copying the name of a link and/or the target is trivial. When a page formats it's information as a grid or list, Text Inspector can extract individual data from the row and column.
Currently, the only commands for the content window are "Copy", "Copy + Exit", and "Extract". Since this window is mainly a textbox, ArsClip's own macros can already be run on this text. There is an idea to have a Permanent Group dedicated to the Text Inspector and integrate it into the window as a context menu. Such a feature wouldn't likely appear in the first version.
ArsClip and the Text Inspector
A new prototype feature has been added to ArsClip call the Text Inspector. This window is semi-transparent so you can click on program controls of other programs and receive information about them. The goal is to have an interactive tool that can extract text from Windows controls, even if you normally cannot copy text from the control. A secondary goal is to be able to use this window to generate JavaScript that can target specific controls in a window (not implemented).
Text Inspector targets Windows Common Controls. This include the Edit, ListBox, ListView (and it's column Header), Button, ComboBox, and TreeView controls. These controls are used in a variety of programs, but are generated and interacted with by Windows itself. Windows uses a messaging system for communication that any program can also use to interact with these controls. Programs with UAC protection (running as Admin) and custom made controls that don't respond to standard message cannot be interacted with.
In this example, Text Inspector is targeting a Header control and specifically showing the first column. The first textbox in Text Inspector itself shows the type and class name of the control. The second textbox shows the text retrieved from the control using standard Windows Messaging routines. The third textbox shows the parent-child information for the control.
This example shows the text extracted from the entire row of a ListView control in details mode. The grey and dark grey boxes are generated by ArsClip to show the selected control and the selected item of a control. Note that some "save as" dialogs use a standard ListView control, so Text Inspector can extract filenames and other file text from a selected item. Controls using the "Explorer Shell" to show files are not yet supported, since they are not standard "Common Controls" and are interacted with differently.
The next feature to implement is a context-sensitive interface. A panel of controls can show near the clicked control with routines to execute specific to the type of control selected. For example, the text of a single column of a ListView in "report" mode can be extracted. All items of a ListBox or the dropdown items of a ComboBox can be extracted.
Even though this feature lacks polish, it's important to gather feedback on wanted features. To get to this point, it has take a full week of research and testing. Feedback is needed to proceed in the right direction.

