// Print Size
// (c) 2020 Steve Banham
scriptName = "Printable Size";
scriptVersion = "1.0";
scriptDate = "24/3/2020";
scriptCopyright = "(c) 2020 Steve Banham";
scriptMinVersion = "12";
scriptDesc = "Provides a Column and a Command to show the maximum printable size of image files.";
function OnInit(initData) {
initData.name = scriptName;
initData.version = scriptVersion;
initData.copyright = scriptCopyright;
initData.desc = scriptDesc;
initData.default_enable = true;
initData.min_version = scriptMinVersion;
//initData.log_prefix = "";
initData.config_desc = DOpus.Create.Map();
initData.config_groups = DOpus.Create.Map();
var configName = "";
configName = "DPI";
initData.Config[configName] = "200";
initData.config_desc(configName) = "Select the DPI to use when calculating print size.";
initData.config_groups(configName) = "Both";
configName = "Inches";
initData.Config[configName] = false;
initData.config_desc(configName) = "Display results in inches."
initData.config_groups(configName) = "Both";
configName = "Show Units";
initData.Config[configName] = true;
initData.config_desc(configName) = "Include measurement unit in the column."
initData.config_groups(configName) = "Column Only";
configName = "Show DPI";
initData.Config[configName] = true;
initData.config_desc(configName) = "Include DPI in the column."
initData.config_groups(configName) = "Column Only";
configName = "Directories";
initData.Config[configName] = "
";
initData.config_desc(configName) = "The string used in the column for directories (can be blank).";
initData.config_groups(configName) = "Column Only";
configName = "Files";
initData.Config[configName] = "---";
initData.config_desc(configName) = "The string used in the column for files which aren't images (can be blank).";
initData.config_groups(configName) = "Column Only";
var col = initData.AddColumn();
col.name = "PrintableSize";
col.method = "OnPrintableSize";
col.label = "Printable Size";
col.autogroup = true;
col.autorefresh = true;
col.justify = "left";
col.match.push_back("Yes");
var cmd = initData.AddCommand();
cmd.name = "PrintableSize";
cmd.method = "onPrintSize";
cmd.desc = "Calculate the printable size of an image file.";
cmd.label = "PrintableSize";
cmd.template = "DPI/N,SIMPLE/S,INCHES/S";
}
function onPrintSize(scriptCmdData) {
var srcTab = scriptCmdData.func.sourcetab;
var argDpi = Script.Config["DPI"];
var argInches = Script.Config["Inches"];
var strUnits = "cm";
if (argInches == true){
strUnits = "\"";
}
if (scriptCmdData.func.args.got_arg.inches) {
argInches = true;
strUnits = "\"";
}
if (scriptCmdData.func.args.got_arg.dpi) {
argDpi = scriptCmdData.func.args.dpi;
}
if (srcTab.stats.selfiles == 0) {
return;
}
var showDialog = true;
if (scriptCmdData.func.args.got_arg.simple) {
showDialog = false;
DOpus.ClearOutput();
}
else {
var dlg = DOpus.Dlg;
dlg.window = srcTab;
dlg.title = scriptName;
dlg.template = "dialog1";
dlg.detach = true;
dlg.Show();
showDialog = true;
if (!argInches) dlg.Control("editUnits").value = "Centimetres";
if (argInches) dlg.Control("editUnits").value = "Inches";
dlg.Control("editDPI").value = argDpi;
}
if (scriptCmdData.func.args.got_arg.dpi) argDpi = scriptCmdData.func.args.dpi;
for (var eItems = new Enumerator(srcTab.selected_files); !eItems.atEnd(); eItems.moveNext()) {
if (eItems.item().metadata() == "image") {
var prtMaxWidth = eItems.item().metadata.image_text.picwidth / argDpi;
var prtMaxHeight = eItems.item().metadata.image_text.picheight / argDpi;
if (strUnits == "cm") {
prtMaxWidth = prtMaxWidth * 2.54;
prtMaxHeight = prtMaxHeight * 2.54;
}
prtMaxWidth = prtMaxWidth.toFixed(2);
prtMaxHeight = prtMaxHeight.toFixed(2);
prtComplete = prtMaxWidth + strUnits + " x " + prtMaxHeight + strUnits;
if (showDialog) {
var i = dlg.Control("listviewResults").AddItem(eItems.item().name);
dlg.Control("listviewResults").GetItemAt(i).subitems(0) = prtComplete;
}
if (!showDialog) {
DOpus.Output(prtComplete + " (" + eItems.item().name + ")");
}
}
}
if (!showDialog) return;
dlg.Control("listviewResults").columns.AutoSize();
while (true) {
var msg = dlg.GetMsg();
if (!msg.result) break;
}
}
function OnPrintableSize(scriptColData) {
var argInches = Script.Config["Inches"];
var strUnits = "\"";
if (scriptColData.item.is_dir) {
scriptColData.value = Script.Config["Directories"];
return;
}
if (scriptColData.item.metadata() == "image") {
var prtMaxWidth = scriptColData.item.metadata.image_text.picwidth / Script.Config["DPI"]
var prtMaxHeight = scriptColData.item.metadata.image_text.picheight / Script.Config["DPI"];
if (argInches == false) {
prtMaxWidth = prtMaxWidth * 2.54;
prtMaxHeight = prtMaxHeight * 2.54;
strUnits = "cm";
}
prtMaxWidth = prtMaxWidth.toFixed(2);
prtMaxHeight = prtMaxHeight.toFixed(2);
var strDPI = " (" + Script.Config["DPI"] + " dpi)";
if (Script.Config["Show DPI"] == false) {
var strDPI = "";
}
if (Script.Config["Show Units"] == false) {
strUnits = "";
}
scriptColData.value = prtMaxWidth + strUnits + " x " + prtMaxHeight + strUnits + strDPI;
}
else {
scriptColData.value = Script.Config["Files"];
}
}
function OnAboutScript(aboutData)
{
var dlg = DOpus.Dlg;
dlg.window = aboutData.window;
dlg.title = scriptName;
dlg.message = scriptName + " v" + scriptVersion + "\t\t\t\t" + scriptDate+ "\n\n" + scriptDesc + "\n\n" + scriptCopyright;
dlg.buttons = "Close";
dlg.icon = "info";
dlg.show;
}
==SCRIPT RESOURCES