4
« on: May 26, 2023, 06:27:13 AM »
How i make the sumatra read all formats with no need change options!!! have this way?!!! have this way?
plugin.nut
///////////////////////////////////////////////////
//
// Attract-Mode Frontend - SumatraPDF WIP plugin (By Machiminax)
//
// For use with the SumatraPDF Reader
//
///////////////////////////////////////////////////
//
// The UserConfig class identifies plugin settings that can be configured
// from Attract-Mode's configuration menu
//
class UserConfig </ help="Read your Manuals with SumatraPDF" /> {
</ label="Command", help="SumatraPDF launcher", order=1 />
command="SumatraPDF.bat";
</ label="Extension", help="File extension to use", options=".pdf, .chm, .djvu, .djv, .epub, .fb2, .fb2.zip, .mobi, .prc, .oxps, .xps, .cb7, .cbr, .cbt, .cbz", order = 2 />
extension=".pdf";
</ label="Path", help="Path to manuals - can include [Name], [Emulator], [Year], [Manufacturer], [System], [DisplayName]", order = 3 />
path="Game Manuals/[Emulator]";
</ label="View Key", help="Key to use to view", options="custom1,custom2,custom3,custom4,custom5,custom6", order = 4 />
key="custom1";
</ label="Missing Image", help="Path to 'missing' image - can include [Name], [Emulator], [Year], [Manufacturer], [System], [DisplayName]", order = 5 />
missing="png/Manual_not_found.png";
}
local config=fe.get_config(); // get user config settings corresponding to the UserConfig class above
//
// Copy the configured values from uconfig so we can use them
// whenever the transition callback function gets called
//
class PDFManualReader
{
VERSION=1.1;
game_name=null;
constructor()
{
fe.add_signal_handler( this, "on_signal" )
}
function on_signal( signal )
{
if ( signal == config["key"] )
{
local path = get_magic_token_path(config["path"]);
local game_name = fe.game_info(Info.Name);
local filename = "\"" + path + game_name + config["extension"] + "\"";
local missing_path = get_magic_token_path(config["missing"]);
local missing = "\"" + missing_path.slice(0, missing_path.len() - 1) + "\"";
local exe = FeConfigDirectory + "/plugins/SumatraPDF/" + config["command"];
print("Launching SumatraPDF:\n");
print(" " + exe + " " + filename + " " + missing + "\n");
fe.plugin_command_bg( exe, filename + " " + missing );
return true;
}
return false;
}
//replace specified magic tokens in path
function get_magic_token_path(path) {
local tokens = {
"Name": fe.game_info(Info.Name),
"Emulator": fe.game_info(Info.Emulator),
"Year": fe.game_info(Info.Year),
"Manufacturer": fe.game_info(Info.Manufacturer),
"Category": fe.game_info(Info.Category),
"System": fe.game_info(Info.System),
"DisplayName": fe.list.name
}
foreach( key, val in tokens)
path = replace(path, "[" + key + "]", val);
//replace slashes with backslashes
path = replace(path, "\\", "/");
//ensure trailing slash
local trailing = path.slice(path.len() - 1, path.len());
if ( trailing != "/") path += "/";
return path;
}
//replace all instances of 'find' in 'str' with 'repl'
function replace(str, find, repl) {
local start = str.find(find);
if ( start != null ) {
local end = start + find.len();
local before = str.slice(0, start);
local after = str.slice(end, str.len());
str = before + repl + after;
str = replace(str, find, repl);
}
return str;
}
}
PDFManualReader();