PhotoVision Plugins Plugins is an extension to use third party app from PhotoVision. 1. Create Plugin: * Plugins\[plugin_name].ini * PS\[Plugin_name].pas 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.