MXIi

notes on electronic projects and other things

Next folder, previous folder navigation in Explorer with QTTabBar

QTTabBar surprised us with the update recently, after almost three years of silence. (The changelog also points to an importance of having a full copy of your code somewhere outside of your PC. Version control systems to the rescue.)

To celebrate this fact, I decided to publish a little custom feature I’m using with QTTabBar — a script and UI buttons to navigate between folders within one common parent folder.

There are cases when you need to visit a set of folders, and goind up and down in the folder structure getting tedious. That’s where magic “Next folder”, “Previous folder” buttons come in handy.

Navigation pane, a.k.a. tree view can, in principle, be used for that, but it isn’t always convenient to use. I can only use it for top level navigation, unless Microsoft will come up with some way to reduce clutter in the tree - not showing subfolders that aren’t ascentants or descendants of current folder for example.

My QTTabBar panel looks like this:

QTTabBar panel screenshot

Two triangles looking in opposite directions are the buttons this post is dedicated to.

Below is the code and description for the buttons.

PowerShell, square brackets and apostrophes

This is a follow-up post to the one about square brackets and Unicode in PowerShell.

I discovered recently that there is another PITA character that interferes with my workaround — it’s a single quote, or apostrophe.

It’s fine to start PowerShell inside a folder with an apostrophe in its name, but we have to escape it when using inside Powershell commands or passing into PowerShell from anywhere else.

Below are my experiments to find the best way to open PowerShell in any folder… if ever possible.

JavaScript spoiler with a twist (collapsing up or down)

I thought that I will eventually need to use spoilers in this blog to hide long and optional blocks of text. And at the same time I’m often unhappy with collapsible block implementations across the Internet.

So I decided to design my own spoiler with one useful feature: it can be collapsed not only from the top edge but also from the bottom edge — you will not lose the line you were reading and you don’t have to scroll all the way to the beginning of the spoiler.

Examples:

click to showhide

This spoiler can be expanded up and down. And your mouse is left right over the button you just pressed whenever it is possible (on top and bottom of a page there may be not enough stuff to keep it so, obviously).

click to showhide
click to showhide

This spoiler can be expanded in one direction only. Collapsing behaviour is still the same. The difference is just a few lines in CSS.

click to showhide

Keep reading to see how it is done.

PowerShell, Explorer, square brackets and Unicode paths

Let’s make a folder C:\[test] and try to open PowerShell there from Explorer (using Ribbon or context menu).

set-location: Cannot find path 'C:[test]' because it does not exist. At line:1 char:1

Oops!

Let’s see what we can do with this.

HTML aspect ratio box using Custom Element

There is a standard trick to make HTML block with given proportions:

<div id="containingBlock">
    <div id="wrapper" style="position:relative; width:100%; height:0px; padding-bottom:56.25%;">
        <div id="content" style="position:absolute; left:0; top:0; width:100%; height:100%">
            ...
        </div>
    </div>
</div>

Since padding is computed according to containing element width, it’s possible to use it along with width to get required proportions (16:9 in this example, 56.25% = 100% * 9 / 16). And content block is positioned absolutely to use the space taken by padding.

After learning about Custom Elements I decided to see if I can abstract the trick and turn it into something clean and reusable. So it could be used just like this:

<ratio-box ratio="16:9">
    ...
</ratio-box>

Custom Elements is quite recent feature in HTML, with version 0 available only in Chrome and version 1 just coming into play. It also requires JavaScript to work. So it is not practical to use yet, but still an interesting experiment.

See the code and demo below. In addition, there is also a slightly improved HTML+CSS version.

Parallel processing in PowerShell

Running arbitrary number of tasks in parallel with PowerShell, while showing overall progress.

The main disadvantage of the code I provided in previous post is that it is performed sequentially. We can speed it up by means of parallel processing, since main limiting factor is not an I/O but minifying algorithms performance.

There are a lot of ways to use parallelism in PowerShell and it wasn’t clear for me which one suits well for my task. I.e. to convert my script, which is processing a lot of small files on a local machine.

It also should:

  • provide updates in real time;
  • keep output table formatting as close to original as possible.