PhotoVision Plugins

Plugins is an extension to use third party app from PhotoVision.

1. Create Plugin:

All settings is stored in PV global config file

[MSPaint]
Path=C:\WINDOWS\system32\mspaint.exe
OpenFile={File}
{File}     - selected file 
{FILENAME} - selected file
{DIR_Or_FILE} - selected directory or file
{DIR}   - selected directory
{SelectedDialogDir} - folder selection dialog selected directory
{QJPEG} - global settings - JPEG Quality

[plugin_name].ini - plugin file

[Plugin_name].pas - plugin configuration page file.

Ini file description:

[Config]
;Caption - Title in menu "Plugins"
Caption=MS Paint
;Name - Internal plugin name, no space or special char. This name is used in app config file as section name.
Name=MSPaint
;Type - plugin configuration type. 1 - pascal script file.
Type=1
CFGPath=Path
;EnableCMD - enable command line input for plugin. Value: 0/1
EnableCMD=1
ToolBar_Button_0=[Section_Name]

PascalScript functions and constants:

//Constants
CfgFile // Path to PhotoVision configuration file
 
//Controls
//Bottom panel with button - Apply
procedure CreateButtonPanel;
//Header panel with Plugin name
procedure CreateHeaderPanel(pluginName: string);
//Bottom pannel with plugin informations
procedure CreateAboutPanel(const pluginCreatorName, pluginCreatorURL, appCreatorName, AppCreatorUrl:string);
procedure CreateLabel(Caption: string; Top, Left: Integer; Parent: TWinControl);
 
//UI Languages
function TranslateUI(const default_text:string;const id: string):string;
 
//File and Directory Functions
function FileExists(const FileName: string):boolean;
function GetFileVersion(const FileName: string): String;
function GetSystemFolder():string;
function GetAppDirectory():String;
function ExtractFilePath ( const FullFileName : String ) : String;
 
//Registry Functions
function RegQueryStringValue(const RootKey: cardinal; const SubKeyName, ValueName: String; var ResultStr: String): Boolean;
function RegQueryStringValueSearchKey(const RootKey: cardinal; const SubKeyName, KeyToSearch,  ValueName: String; var ResultStr: String): Boolean;
 
//INI Functions
function GetIniString(const Section, Key, Default, Filename: String): String;
procedure SetIniString(const Section, Key, Value, Filename: String);
function GetIniInt(const Section, Key: String; const Default: Integer; const Filename: String): Integer;
procedure SetIniInt(const Section, Key: String; const Value: Integer; const Filename: String);
function GetIniBool(const Section, Key: string ;const Default:boolean; Filename: String): boolean;
Const
	plugin_Name		= 'Plugin Name';
	plugin_CreatorName 	= 'Plugin Author Name';
	plugin_CreatorWWW	= 'Plugin Author URL';
	plugin_AppCreatorName 	= 'APP manufacturer';
	plugin_AppCreatorWWW  	= 'App url';
        plugin_IniSection	= 'MSPaint';
	App_EXE			= 'app.exe';		//App filename 
 
 
 
function IsPluginConfigured:boolean; 
begin
	result:=false;
	if FileExists(GetIniString(plugin_IniSection, 'Path', '',CfgFile)) then
	result:=true;
end;
 
procedure SetSettings(); 
begin
   	SetIniString(plugin_IniSection, 'Path', TB_Path.Text,CfgFile); 
	SetIniString(plugin_IniSection, 'OpenFile', '{File}',CfgFile);
end;
 
//Autodetect. If plugin not configured then check if app is installed or exist
//set path and save settings.
Procedure AutoDetect;
begin
if not IsPluginConfigured then
	begin
		if FileExists(GetSystemFolder+'\'+App_EXE) then 
		   TB_Path.Text:=GetSystemFolder+'\'+App_EXE;
		SetSettings;		
	end;
end;
 
procedure GetSettings; 
begin
    TB_Path.Text := GetIniString(plugin_IniSection, 'Path', '',CfgFile);
end;
 
procedure CreateControls;
begin
 
end;
 
begin
	CreateControls;
	GetSettings();
	AutoDetect;
	LBL_Version.caption:=TranslateUI('Version','100')+': '+GetFileVersion(TB_Path.Text);
 
 
	CreateAboutPanel(plugin_CreatorName,plugin_CreatorWWW,plugin_AppCreatorName,plugin_AppCreatorWWW);
	CreateButtonPanel();
	CreateHeaderPanel(plugin_Name);	
end.