Page 1 of 1

tabsets is remembering a deleted tabset

Posted: 28 May 2025 10:12
by mec337
tabsets is remembering a deleted tabset

I once created a tabset named TabsetNewOne, if I open another tabset and delete TabsetNewOne and then do save settings
the tabset is recreated?

I should also mention that Auto-Save tabsets on switch is off, and tabsets can revert after saving settings is off
I see the following in XYplorer.ini this is ultimately the problem but not sure how it got there.

Tabset1=TabsetNewOne
Tabset2=1


Any help in removing this would be appreciated

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 11:12
by admin
How did you delete TabsetNewOne?

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 11:24
by mec337
Deleted from the tabset folder... I fixed the issue by editing the ini file to remove Tabset(n) i.e. tabset1 and tabset2 is there not a better way to remove tabsets than deleting from the tabset folder. My guess is if you do that and depending on the tabset save configuration it can get confused.

I also noted that the back button can get confused and does not take you back to the parent

Regards.
m

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 12:04
by admin
There is no "official" way to delete a tabset. It's a bit weird, but nobody ever asked for it loud enough. :)

Back is back, not up.

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 13:25
by mec337
HOW ABOUT IF I SHOUT LOUD ENOUGH :)

By back arrow I meant parent of the sub folder in my case, but back being back to the previous folder location. However you want to describe it it gets confused at least when my tabsets were confused.

Really would like a save tabs (both sides) button for tabsets to allow easier recall - rather than some half assed scripted mess. See Directory Opus !)

I really want to like XYplorer it has a lot of good features esp. paper / virtual folders ( I assume that works in a saved tabset??) - scripting is not so good (testing, refining and even understanding for example ::#105 how do i get that for all selected files such that i can get the individual parts and format as required in a full script) in my opinion, however I like :: from address bar for quick scripting

Regards.
m

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 13:30
by highend
how do i get that for all selected files such that i can get the individual parts and format as required in a full script
report() with a template or parse the clipboard after using #105;?

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 13:50
by mec337
Tabssets should appear in Tools\List management and should allow you to delete / rename accordingly in my opinion

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 14:14
by mec337
highend wrote: 28 May 2025 13:30
how do i get that for all selected files such that i can get the individual parts and format as required in a full script
report() with a template or parse the clipboard after using #105;?
Thanks for responding, was playing around with scripting looked at report, convinced it didnt give me what I wanted i.e. formatting of {Name} to get file name size (max) and right pad with spaces to align output for names such that MD5 and SHA1 hashes align accordingly.

Hopefully you can see what I am after

Regards.
m

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 14:20
by admin
The next round of improvements will come after the migration to TB/64-bit.

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 14:55
by mec337
:tup: appreciated

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 15:03
by highend
You are free to do the report() and then run over it to apply e.g. padding or just loop over all selected files and get the necessary properties in the loop

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 15:19
by mec337
Can report take the item from the loop? excuse the rubbish from copilot below, assume its pseudo code.

i.e can report be passed an individual file object, its easier to manipulate (pad) an individual text string - obviously this requires two loops one to get the maximum file size and one to do the padding

foreach($file, <get SelectedItemsPathNames |>){
echo "Processing: $file"; // can $file be passed to report?
}

Regards.
m

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 15:25
by highend
report([template], [itemlist], [header], [footer])

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 21:13
by mec337
Unfortunately itemList is an enum/integer so that did not help as you cant pass it a filename. so are forced to get everything in one go i.e. all selected files. If it was possible to pass an individual filename that would allow the returned string to be tokenised and used in a suitable way.

I ended up with this:-

The strings are padded correctly for the filenames so ignore the output in the post as they appear misaligned.

Q. could this have been more efficient, I did it using report because in future I may wish to get file properties,
so a practice exercise.. in this case I wanted Size KBR would there have been another way to get the file properties based on the filename, such as those available to report.. without creating a rounded up version of file bytes.

All help/critique welcomed - I am still learning.

// Generate hash reports for selected files
$mdFiveHash = Array();
// want KB rounded - would like to use something like ::#105 for each individual filename, and be able to get individual items
$reportData = report("#{# @}, {Size KBR}<crlf>", 1);
$pathnames = get("SelectedItemsPathNames","|");
// Loop through each part, extract filename, and find max length
foreach($part, $pathnames, "|") {
$fileName = getpathcomponent($part, "file"); // Extract filename
$length = strlen($fileName);
// max length, min(), max() functions
if ($length > $maxLength) {
$maxLength = $length;
}

// get MD5 hash
$hashvalue = hash("md5", $part,3);
// create a string list
$mdFiveHash = "$mdFiveHash$fileName,$hashvalue|";
}
// string list hack, find a better way to not add the final '|' to the string
$mdFiveHash = substr($mdFiveHash, 0, strlen($mdFiveHash) - 1);
$index = 1; // awkward
foreach($value, $mdFiveHash, "|") {
// Extract individual values
$file = gettoken($value, 1, ",");
// why no get next token
$hash = gettoken($value, 2, ",");
// forced to do this as "$file<pad $maxLength>,$hash" is not interpreted correctly
$replaceWith = "$file<pad $maxLength>".", ".$hash;
$reportData = replace("$reportData","#$index","$replaceWith");
$index++; // messy something like python enumerate would be better
}
copytext "$reportData";

// output
Notifications.database, 9fe8cb79ae2e085e9e73ea049823d4a6, 1 KB
Notifications.state , 421fcc6cd8093eadf6daef6509d76430, 1 KB
TidyTabs.data , bb7649e53dbb83fd435fea70c0997b79, 1 KB

Re: tabsets is remembering a deleted tabset

Posted: 28 May 2025 21:43
by highend
as you cant pass it a filename
What?

Code: Select all

0: [Default] All current list items.
1: All currently selected list items.
2: The currently focused list item.
3: The currently hovered list item.
[else]: Items in a CRLF- or |-separated list of items (full path).
           Only files and folders, drives are not supported here.
another way to get the file properties based on the filename

Code: Select all

hash()
filesize()
property()
?
could this have been more efficient

Code: Select all

    $report = report("{name}|{prop:#hash.md5}|{size kbr}<crlf>", 1);
    $names  = trim(regexmatches($report, "^.+?\|"), "|", "R");
    $maxLen = 0;
    foreach($item, $names, "|", "e") {
        $len = strlen($item);
        if ($len > $maxLen) { $maxLen = $len; }
    }

    $newReport = "";
    foreach($line, $report, <crlf>, "e") {
        $name = gettoken($line, 1, "|");
        $len  = strlen($name);
        if ($len < $maxLen) { $name .= strrepeat(" ", $maxLen - $len); }
        $newReport .= $name . ", " . gettoken($line, 2, "|") . ", " . gettoken($line, 3, "|") . <crlf>;
    }
    copytext $newReport;