Comments
Posted: 07 Jun 2009 09:26
here's a useful script.
it emulates the popup menu from the comments column, since apparently it's not accessible anywhere else.
it also adds a few useful commands.
PS: "set last comment" refers to the last comment set using the script.
it emulates the popup menu from the comments column, since apparently it's not accessible anywhere else.
it also adds a few useful commands.
PS: "set last comment" refers to the last comment set using the script.
Code: Select all
"_settings"
global $sing_multi,$last_file;
$sing_multi=s; // "s" for single, "m" for multi-line input
$last_file="%temp%\xy_last_comment.tmp"; // file used to remember the last comment
"Edit Comment... : _edit" //use these labels to call the commands directly
global $label;
$label = edit;
sub menu;
"Set Last Comment : _last"
global $label;
$label = last;
sub menu;
"Prepend Comment : _prepend"
global $label;
$label = prepend;
sub menu;
"Append Comment : _append"
global $label;
$label = append;
sub menu;
"Replacer : _replacer"
global $label;
$label = replacer;
sub menu;
"Eraser : _eraser"
global $label;
$label = eraser;
sub menu;
"Copy Comment : _copy"
global $label;
$label = copy;
sub menu;
"Paste Comment : _paste"
global $label;
$label = paste;
sub menu;
"Remove Comment : _remove"
global $label;
$label = remove;
sub menu;
"menu : menu"
global $label,$clipboard,$crlf,$items,$sing_multi,$last_file;
$total=getinfo(countselected);
if($total<1){
status "Nothing Selected",ffcc00,alert;
end 1;}
sub _settings;
$last=(exists("$last_file")==1)?(readfile("$last_file")):(""); //read last used comment
strlen $len,$last;
substr $last,$last,0,20; //trim to 20 chars
replace $last,$last,"<crlf>","¶"; //replace some dangerous chars
replace $last,$last,'"',"''"; // “
replace $last,$last,'&',"ε";
replace $last,$last,":",":";
if($len>20){$last=$last.'...';} //add "..." if the string was trimmed
$cliptemp=<clipboard>; //save clipboard to a temp variable
strlen $len,$cliptemp;
substr $clip,$cliptemp,0,20;
replace $clip,$clip,"<crlf>","¶";
replace $clip,$clip,'"',"''";
replace $clip,$clip,'&',"ε";
replace $clip,$clip,":",":";
if($len>20){$clip=$clip.'...';}
substr $itemstemp,report("|{fullname}",1),1;
$crlf='$crlf';
$clipboard='$clipboard';
$items='$items';
//create the script
$script=<<<COMMENTSCRIPT
"Edit Comment... : edit"
global $crlf,$items;
$comment=gettoken(report("{fullname}|{comment}$crlf"),2,"<focitem>|"); //get comment from focused item
$comment=gettoken($comment,1,$crlf);
regexreplace $comment,$comment,"¶",$crlf;
$comment = input("Enter New Comment",,"$comment",$sing_multi); //enter new comment
comment $comment,"$items"; //apply comment to selected items
writefile("$last_file",$comment); //save "last used comment"
"Set Last Comment (''$last'') : last"
global $items;
$comment=(exists("$last_file")==1)?(readfile("$last_file")):("");
comment $comment,"$items";
-
"Prepend Comment : prepend"
global $crlf;
$comment=input("Prepend Comment",,(exists("$last_file")==1)?(readfile("$last_file")):(""),$sing_multi);
$itemlist=report("{fullname}$crlf",1);
$commlist=report("{comment}$crlf",1);
$counter=1;
while($counter<=$total){
$curitem=gettoken($itemlist,$counter,$crlf);
$curcomm=gettoken($commlist,$counter,$crlf);
comment "$comment$curcomm",$curitem;
$counter++;}
writefile("$last_file",$comment);
"Append Comment : append"
global $crlf;
$comment=input("Append Comment",,(exists("$last_file")==1)?(readfile("$last_file")):(""),$sing_multi);
$itemlist=report("{fullname}$crlf",1);
$commlist=report("{comment}$crlf",1);
$counter=1;
while($counter<=$total){
$curitem=gettoken($itemlist,$counter,"$crlf");
$curcomm=gettoken($commlist,$counter,"$crlf");
comment "$curcomm$comment",$curitem;
$counter++;}
writefile("$last_file",$comment);
"Replacer : replacer"
global $crlf;
$old=input("Replace this",,,$sing_multi);
$new=input("With this",,,$sing_multi);
$itemlist=report("{fullname}$crlf",1);
$commlist=report("{comment}$crlf",1);
$counter=1;
while($counter<=$total){
$curitem=gettoken($itemlist,$counter,$crlf);
$curcomm=gettoken($commlist,$counter,$crlf);
replace $curcomm,$curcomm,$old,$new;
comment "$curcomm",$curitem;
$counter++;}
"Eraser : eraser"
global $crlf;
$erase=input("Erase this",,,$sing_multi);
$itemlist=report("{fullname}$crlf",1);
$commlist=report("{comment}$crlf",1);
$counter=1;
while($counter<=$total){
$curitem=gettoken($itemlist,$counter,$crlf);
$curcomm=gettoken($commlist,$counter,$crlf);
replace $curcomm,$curcomm,$erase,"";
comment "$curcomm",$curitem;
$counter++;}
-
"Copy Comment : copy"
global $crlf,$items;
$comment=gettoken(report("{fullname}|{comment}$crlf",1),2,"<curitem>|"); //get comment from current item
$comment=gettoken($comment,1,$crlf);
regexreplace $comment,$comment,"¶",$crlf;
if("$comment"!=""){copytext $comment;} //if the comment exists,copy to clipboard
else{status "Current item doesn't have a comment",ffaa00,alert;} //else,print a message
"Paste Comment (''$clip'') : paste"
global $clipboard,$items;
comment $clipboard,"$items"; //paste comment from clipboard
writefile("$last_file",$clipboard);
-
"Remove Comment : remove"
global $items;
comment "","$items";
-
"Cancel : cancel"
end 1;
COMMENTSCRIPT;
$crlf="<crlf>";
$clipboard="$cliptemp";
$items="$itemstemp";
load $script,($label)?($label):(),s; //load the script