diff --git a/Projects/SAMufasaGUI/testunit.pas b/Projects/SAMufasaGUI/testunit.pas
index 1c7b980..3bdf575 100644
--- a/Projects/SAMufasaGUI/testunit.pas
+++ b/Projects/SAMufasaGUI/testunit.pas
@@ -42,7 +42,7 @@ uses
SynEditMarkupHighAll, LMessages, Buttons,
stringutil,mufasatypesutil,mufasabase,
about, framefunctionlist, ocr, updateform, simbasettings, psextension, virtualextension,
- extensionmanager;
+ extensionmanager, settingssandbox;
const
SimbaVersion = 587;
@@ -1112,6 +1112,7 @@ var
pluginspath: string;
ScriptPath : string;
UseCPascal: String;
+ Se: TMMLSettingsSandbox;
loadFontsOnScriptStart: boolean;
begin
AppPath:= MainDir + DS;
@@ -1172,6 +1173,9 @@ begin
if assigned(Self.OCR_Fonts) and loadFontsOnScriptStart then
Thread.Client.MOCR.SetFonts(OCR_Fonts.GetFonts);
+ Se := TMMLSettingsSandbox.Create(SettingsForm.Settings);
+ Se.SetPrefix('Scripts/');
+ Thread.SetSettings(Se);
end;
procedure TForm1.HandleParameters;
diff --git a/Units/MMLAddon/PSInc/Wrappers/settings.inc b/Units/MMLAddon/PSInc/Wrappers/settings.inc
new file mode 100644
index 0000000..a7ebba3
--- /dev/null
+++ b/Units/MMLAddon/PSInc/Wrappers/settings.inc
@@ -0,0 +1,66 @@
+{
+ This file is part of the Mufasa Macro Library (MML)
+ Copyright (c) 2009 by Raymond van Venetiƫ and Merlijn Wajer
+
+ MML is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ MML is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with MML. If not, see .
+
+ See the file COPYING, included in this distribution,
+ for details about the copyright.
+
+ Settings.inc for the Mufasa Macro Library
+}
+
+function SettingsIsKey(KeyName: String): Boolean;
+begin
+ if CurrThread.Sett <> nil then
+ result:= CurrThread.Sett.IsKey(KeyName)
+ else
+ result:=false;
+end;
+
+function SettingsIsDirectory(KeyName: String): Boolean;
+begin
+ if CurrThread.Sett <> nil then
+ result:= CurrThread.Sett.IsDirectory(KeyName)
+ else
+ result := false;
+end;
+
+function SettingsGetKeyValue(KeyName: String): String;
+begin
+ writeln('ZO');
+ if CurrThread.Sett <> nil then
+ result:= CurrThread.Sett.GetKeyValue(KeyName)
+ else
+ begin
+ result:='kanker';
+ end;
+end;
+
+function SettingsGetSetDefaultKeyValue(KeyName, defVal: String): String;
+begin
+ if CurrThread.Sett <> nil then
+ result:= CurrThread.Sett.GetSetDefaultKeyValue(KeyName, defVal)
+ else
+ result:='';
+end;
+
+procedure SettingsListKeys(KeyName: String; var KeyReturn: TStringArray);
+begin
+ if CurrThread.Sett <> nil then
+ KeyReturn := CurrThread.Sett.ListKeys(KeyName)
+ else
+ setlength(KeyReturn, 0);
+end;
+
diff --git a/Units/MMLAddon/PSInc/psexportedmethods.inc b/Units/MMLAddon/PSInc/psexportedmethods.inc
index ba220ec..d994d8e 100644
--- a/Units/MMLAddon/PSInc/psexportedmethods.inc
+++ b/Units/MMLAddon/PSInc/psexportedmethods.inc
@@ -365,3 +365,10 @@ AddFunction(@ClearTPAFromTPAWrap,'procedure ClearTPAFromTPAWrap(arP, ClearPoints
AddFunction(@FilterPointsLine,'procedure FilterPointsLine(var Points: TPointArray; Radial: Extended; Radius, MX, MY: Integer);');
AddFunction(@SameTPA,'function SameTPA(aTPA, bTPA: TPointArray): Boolean;');
AddFunction(@TPAInATPA,'function TPAInATPA(TPA: TPointArray; InATPA: T2DPointArray; var Index: LongInt): Boolean;');
+
+SetCurrSection('Settings');
+AddFunction(@SettingsIsKey, 'function SettingsIsKey(KeyName: String): Boolean;');
+AddFunction(@SettingsIsDirectory, 'function SettingsIsDirectory(KeyName: String): Boolean;');
+AddFunction(@SettingsGetKeyValue, 'function SettingsGetKeyValue(KeyName: String): String;');
+AddFunction(@SettingsGetSetDefaultKeyValue, 'function SettingsGetSetDefaultKeyValue(KeyName, defVal: String): String;');
+AddFunction(@SettingsListKeys, 'procedure SettingsListKeys(KeyName: String; var KeyReturn: TStringArray);');
diff --git a/Units/MMLAddon/mmlpsthread.pas b/Units/MMLAddon/mmlpsthread.pas
index 769370f..b367b28 100644
--- a/Units/MMLAddon/mmlpsthread.pas
+++ b/Units/MMLAddon/mmlpsthread.pas
@@ -32,7 +32,8 @@ interface
uses
Classes, SysUtils, client, uPSComponent,uPSCompiler,
uPSRuntime,stdCtrls, uPSPreProcessor,MufasaTypes,MufasaBase, web,
- bitmaps, plugins, libloader, dynlibs,internets,scriptproperties;
+ bitmaps, plugins, libloader, dynlibs,internets,scriptproperties,
+ settingssandbox;
type
@@ -89,6 +90,7 @@ type
Client : TClient;
MInternet : TMInternet;
StartTime : LongWord;
+ Sett: TMMLSettingsSandbox;
SyncInfo : PSyncInfo; //We need this for callthreadsafe
ErrorData : PErrorData; //We need this for thread-safety etc
@@ -104,6 +106,8 @@ type
procedure SetDebugClear( clearProc : TClearDebugProc );
procedure SetDbgImg( DebugImageInfo : TDbgImgInfo);
procedure SetPaths(ScriptP,AppP,IncludeP,PluginP,FontP : string);
+ procedure SetSettings(S: TMMLSettingsSandbox);
+
procedure OnThreadTerminate(Sender: TObject);
procedure SetScript(script: string); virtual; abstract;
procedure Execute; override; abstract;
@@ -281,6 +285,7 @@ begin
OnError:= nil;
Includes := TStringList.Create;
Includes.CaseSensitive:= {$ifdef linux}true{$else}false{$endif};
+ Sett := nil;
Prop := TScriptProperties.Create;
@@ -417,6 +422,11 @@ begin
DebugImg := DebugImageInfo;
end;
+procedure TMThread.SetSettings(S: TMMLSettingsSandbox);
+begin
+ Self.Sett := S;
+end;
+
procedure TMThread.SetPaths(ScriptP, AppP,IncludeP,PluginP,FontP: string);
begin
AppPath:= AppP;
@@ -436,6 +446,7 @@ begin
end;
{$I PSInc/Wrappers/other.inc}
+{$I PSInc/Wrappers/settings.inc}
{$I PSInc/Wrappers/bitmap.inc}
{$I PSInc/Wrappers/window.inc}
{$I PSInc/Wrappers/tpa.inc}
@@ -461,8 +472,8 @@ end;
procedure AddFunction( Ptr : Pointer; DeclStr : String);
begin;
- if c >= 300 then
- raise exception.create('PSThread.LoadMethods: Exported more than 300 functions');
+ if c >= 400 then
+ raise exception.create('PSThread.LoadMethods: Exported more than 400 functions');
Result[c].FuncDecl:= DeclStr;
Result[c].FuncPtr:= Ptr;
Result[c].Section:= CurrSection;
@@ -472,7 +483,7 @@ end;
begin
c := 0;
CurrSection := 'Other';
- SetLength(Result,300);
+ SetLength(Result,400);
{$i PSInc/psexportedmethods.inc}
diff --git a/Units/MMLAddon/settingssandbox.pas b/Units/MMLAddon/settingssandbox.pas
new file mode 100644
index 0000000..c87d842
--- /dev/null
+++ b/Units/MMLAddon/settingssandbox.pas
@@ -0,0 +1,104 @@
+{
+ This file is part of the Mufasa Macro Library (MML)
+ Copyright (c) 2009 by Raymond van Venetiƫ and Merlijn Wajer
+
+ MML is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ MML is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with MML. If not, see .
+
+ See the file COPYING, included in this distribution,
+ for details about the copyright.
+
+ Settings Sandbox class for Mufasa Macro Library
+}
+unit settingssandbox;
+
+{$mode objfpc}
+
+interface
+
+uses
+ Classes, SysUtils, settings, strutils, mufasatypes;
+
+type
+ TMMLSettingsSandbox = class(TObject)
+ public
+ constructor Create(sett: TMMLSettings);
+ destructor Destroy; override;
+
+ function IsKey(KeyName: String): Boolean;
+ function IsDirectory(KeyName: String): Boolean;
+ function GetKeyValue(KeyName: String): String;
+ function GetSetDefaultKeyValue(KeyName, defVal: String): String;
+ function ListKeys(KeyName: String): TStringArray;
+ public
+ function GetPrefix: String;
+ procedure SetPrefix(s: String);
+ private
+ ST: TMMLSettings;
+ Prefix: String;
+
+ end;
+
+implementation
+
+constructor TMMLSettingsSandbox.Create(sett: TMMLSettings);
+begin
+ Self.ST := sett;
+end;
+
+destructor TMMLSettingsSandbox.Destroy;
+
+begin
+ { Don't free the settings object. ;-) }
+ Self.ST := nil;
+ inherited;
+end;
+
+function TMMLSettingsSandbox.GetPrefix: String;
+begin
+ result := Prefix;
+end;
+
+procedure TMMLSettingsSandbox.SetPrefix(s: String);
+begin
+ Prefix := s;
+end;
+
+function TMMLSettingsSandbox.ListKeys(KeyName: String): TStringArray;
+begin
+ exit(ST.ListKeys(Prefix + KeyName))
+end;
+
+function TMMLSettingsSandbox.GetKeyValue(KeyName: String): String;
+begin
+ writeln('getkeyvalue');
+ exit(ST.GetKeyValue(Prefix + KeyName))
+end;
+
+function TMMLSettingsSandbox.GetSetDefaultKeyValue(KeyName, defVal: String): String;
+begin
+ exit(ST.GetSetDefaultKeyValue(Prefix + KeyName, defVal))
+end;
+
+function TMMLSettingsSandbox.IsKey(KeyName: String): Boolean;
+begin
+ exit(ST.IsKey(Prefix + KeyName))
+end;
+
+function TMMLSettingsSandbox.IsDirectory(KeyName: String): Boolean;
+begin
+ exit(ST.IsDirectory(Prefix + KeyName))
+end;
+
+end.
+
diff --git a/Units/PascalScript/uPSR_menus.pas b/Units/PascalScript/uPSR_menus.pas
index 1920d16..501ded3 100644
--- a/Units/PascalScript/uPSR_menus.pas
+++ b/Units/PascalScript/uPSR_menus.pas
@@ -19,10 +19,10 @@ implementation
{$IFDEF LINUX}
{$IFNDEF FPC}
Uses
- Libc, SysUtils, Classes, QControls, QMenus, QGraphics;
+ SysUtils, Classes, QControls, QMenus, QGraphics;
{$ELSE}
Uses
- Libc, SysUtils, Classes, Controls, Menus, Graphics, LCLType, ImgList;
+ SysUtils, Classes, Controls, Menus, Graphics, LCLType, ImgList;
{$ENDIF}
{$ELSE}
Uses {$IFNDEF FPC}WINDOWS,{$ELSE} LCLType,{$ENDIF} SYSUTILS, CLASSES, CONTNRS, MESSAGES, GRAPHICS, IMGLIST, ACTNLIST, Menus;