// 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