Rated 5 stars at SnapFiles
   Shareware and Freeware



This Month's Donators C. Jordan (Top Donator) C. Robinson R. Hammerslag W. Randall R. Niswonger ... more PayPal

 

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.

joejoe May-27-16 9:06 PM UTC

Global/Shared Permanent Clips 3

The coding is almost done for this feature and will likely be available as a Public Beta tomorrow.

The "Databases" tab has been updated to include a Shared Permanent Groups link. This will bring up a window that can be used to convert a group to be global.

When a group is converted, all clips and hotkeys of the group are copied to a single database. Each instance will create a copy of the group in it's local database. Instances will be updated either by a timer or when the program is first run. Any changes made to that group's clips will also trigger an update.

A new "shared.ini" file in the "clipdatabase" folder is used to keep track of synchronization. A setting has also been added to this file to not include importing hotkeys for each machine. By default, all machines will import both the clips and their hotkey settings.

joejoe May-26-16 2:09 AM UTC

Global/Shared Permanent Clips 2

The design phase is almost complete. I've found a method that satisfies all the goals, and this was probably the hardest part. This method requires only 3 small changes to the existing database functions and the rest of the program remains unchanged. The only exception is a change to the user interface to set a Permanent Group to "shared".

joejoe May-20-16 12:13 AM UTC

Global/Shared Permanent Clips

This feature has been the most requested: the ability to have Permanent Clips that can be shared with all instances. When run from an external drive, AC automatically uses a single database, so all computers use one set of clips. For other installs, you can import from other databases, but there is no sync mechanic to keep them all up to date.

This is the feature that is currently being researched and designed. There are a few ways to do it, and they all have drawbacks. The goal is for the method to be fast, reliable, and requires the least amount of changes to the code. The methods to detect a shared group and keep it synced needs to have little impact on performance of the Popup. The design requires a separate database for shared clips, to remove read/write conflicts. The last goal removes most of the possibilities to introduce bugs.

joejoe Apr-30-16 2:39 AM UTC

AC Mini

While AC Mini is not in full development, it's still getting some maintenance. The current beta fixes an intermittent crash issue for some systems. Also, the Google App changed the internal name of it's search textbox, so the program was updated to detect it.

joejoe Dec-19-15 6:05 PM UTC

A "Killer Script"

To be successful to more than just advanced users, I think the new JavaScript feature needs a script(s) that shows off what it can do.

This is more difficult than it sounds. Usually, a script is so specific for one user's needs that it won't work for anyone else. This is the point of adding JavaScript support in the first place. In Rename Master, having example scripts was an easy task. I'd often get questions about "how can you rename X to Y?" and it would be the same renaming process for other users.

Something as simple as "extract all URLs" sounds great, but is an extremely difficult task to do correctly. Several libraries exist for this task and almost all of them have issues. I've even written my own for the MakeLinks browser extension, to detect "may be" links. Still, this is a candidate for a "killer script".

I've one user that is copying address information and pasting it into a form. The addresses can be in multiple forms and each needs special detection and treatment. While this is another difficult task, it sounds like it may also be a candidate.

I'll be looking through my archive of user feedback to find more.

---

Another feature that might need to included is a way to get scripts from the website, instead of just using hard coded examples. Will scripts be added or updated frequently enough to merit this work? I'm not sure. This feature may have to wait for a future version.

joejoe Dec-17-15 8:49 PM UTC

ArsClip JavaScript Explained

In the newest Public Beta, a new clip type has been added: JavaScript (technically JScript/ECMAScript3 for this implementation). This is obviously for advanced user.

Currently, the clipboard state is passed as a parameter to the "main" function. The Popup Clips are optionally included as an array of string. This is the only data that AC directly includes in the script. Indirectly, the script can have AC execute the [TOTEXTFILE=""] command to store the changed clipboard to a file. This may change in a later version.

The JavaScript clip uses 2 special labels for embedding AC macros. The "start_ac_macro:" and "end_ac_macro:' labels mark the beginning and ending of this code. This is just syntax sugar for using the "manuallyExecuteMacro(macro)" function.

Some notes about the implementation:

Currently, cscript is used to execute the "main.js" file. This command line program has been a part of Windows since XP. Mozilla's SpiderMonkey engine may be used instead in a future update. The simplest method was tried first.

Cscript is executed using a hidden command prompt to prevent any focus issues with the script.

Any number of start/end label can be used and they conditionally executed or loop executed by the script.

AC shows a single JavaScript function to be executed, but this is wrapped with supporting code be hind the scenes before execution.

AC and the script use a named pipe for inter-process communication. This will likely be used even if the implementation changes.

Error messages will reference the line number of "main.js", not the line number of the current clip.

joejoe Dec-15-15 1:10 AM UTC

ArsClip Plans

Version 5.07 of ArsClip will be released as an official version soon. Preparations are being made to ensure that if a hotfix is needed, it can be addressed quickly.

Version 5.08 of ArsClip work has already started. I've adding basic JavaScript support, using the build-in WIndows cscript tool. The change will look like the following:

screen cap

The edit clip window has been altered to support the new clip type. AC will use this single function to generate a full script. The start/end macro labels are a special syntax used to insert a block of AC's macro code directly into JavaScript. More than one of these blocks can be used if needed.

All the details are preliminary and may change. The only incoming data from AC in this version is the clipboard in plaintext format. I'll need to find an efficient way of including other data, like the Popup Clips, into the script. I may use some more special syntax for this, so it's only conditionally included.

joejoe Dec-11-15 6:51 PM UTC

Flexibility Needed 2

I've come to the conclusion that it will most likely be easier to add JavaScript support to ArsClip's macros that it would be to advance AC's macros beyond simple linear routines. While this is not 100% definite, I'll likely be adding this support in v5.08 of ArsClip.

Why add JavaScript, who's going to use it?

Most users won't use it. Most users don't need macros either. Those users that do need macros use the hell out of them. The current process now is that a user must send in a request to support a feature. Usually, an ArsClip macro will already do the task. If the idea seems like a good fit, the program may be updated with a new command to support the feature directly. A lot of requests are too specific or beyond the scope of ArsClip to support directly in the program. Adding in JavaScript support will allow users to customize macros without having to rely on a program update that may never occur.

As an example, look at the new CLIPBOARSPLIT command. With JavaScript, this feature could have been added to the macro window as a template. As a script, a user can customize the command; change the separator string to a Regular Expression. As a hard-coded command, it's extremely limited in use.

How will it work?

Good question. I don't have a 100% answer yet. I do, however, have the requirements. AC macros need to easily integrate with the JavaScript. That means it needs to be trivial to pass information between the two. It also means that the JavaScript needs to be able to control the flow AC macros and possibly create macros dynamically. Most likely, AC will create some custom syntax that will actually be converted to script behind the scenes.

Addons for ArsClip?

With JavaScript support, this could be possible in the future. Just like a Web Browser can be expanded in functionality with addons, Permanent Macros perform a similar task. They add functionality to the program to fit a very specific need - often too specific to be useful for most users. Instead of updating the program itself to support new macro commands, these new commands could be created as addons.

joejoe Dec-10-15 6:36 PM UTC

Flexibility Needed

The Split Clipboard command is great for doing a single routine repeatedly, but it doesn't account for the case when the split pieces need to be treated differently.

[CLIPBOARDONLY][CLIPBOARDSPLIT SEPARATOR="\n"][INSERTPIECE][PUSHCLIPBOARD][ENDCLIPBOARDSPLIT]

The above is a bit of a hack that will fill the Temporary Clip List with pieces. From here, pieces can be removed from the list and pasted using:

[POPFIRST][PASTEDEFAULT]

This works, but it's far from intuitive. Having the Split Clipboard command implicitly be a loop may be a mistake. The command may be better served just saving the clipboard as pieces. Then, the pieces can be inserted one at a time or inserted using a loop. This is much more flexible and more intuitive.

[CLIPBOARDSPLIT SEPARATOR="\n"][SPLITITEM=0][SPLITITEM=1][SPLITITEM=2]

The above shows the case where the number of splits is known ahead of time. The user copies a block of text with 3 separate lines and those lines are pasted without linefeeds.

[CLIPBOARDSPLIT SEPARATOR="\n"][SPLITLOOP="$i"][SPLITITEM=$i][ENDSPLITLOOP]

The above show the case where the number of splits is not known ahead of time or all splits can be treated the same. The Split Item looks the same, but an index variable is used instead of a hardcoded number.

The "Insert" menu would have 2 versions of the Split Command to use for templates. While not perfect, this seems to be a better solution that allows for much more flexibility.

Older Items






Got an idea for improvement, a bug to report? Just want to say hello? Send me your feedback.
I can be contacted at jackass.joejoe@gmail.com English only please.