1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-22 17:22:21 -05:00

Fixed bug where compiling a script wouldn't work when using includes. (#95)

git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@533 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
Raymond 2010-02-07 22:57:08 +00:00
parent d4fbc414ea
commit ff42373876

View File

@ -43,7 +43,7 @@ uses
ColorBox , about, framefunctionlist, ocr, updateform, simbasettings; ColorBox , about, framefunctionlist, ocr, updateform, simbasettings;
const const
SimbaVersion = 532; SimbaVersion = 533;
type type
@ -341,6 +341,7 @@ type
procedure RefreshTab;//Refreshes all the form items that depend on the Script (Panels, title etc.) procedure RefreshTab;//Refreshes all the form items that depend on the Script (Panels, title etc.)
procedure RefreshTabSender(sender : PtrInt); procedure RefreshTabSender(sender : PtrInt);
procedure CreateDefaultEnvironment; procedure CreateDefaultEnvironment;
procedure InitalizeTMThread(var Thread : TMThread);
end; end;
procedure formWriteln( S : String); procedure formWriteln( S : String);
@ -521,16 +522,6 @@ end;
//{$ENDIF} //{$ENDIF}
procedure TForm1.RunScript; procedure TForm1.RunScript;
var
DbgImgInfo : TDbgImgInfo;
fontPath: String;
includePath : string;
AppPath : string;
pluginspath: string;
ScriptPath : string;
UseCPascal: String;
loadFontsOnScriptStart: String;
begin begin
with CurrScript do with CurrScript do
begin begin
@ -545,72 +536,8 @@ begin
Writeln('The script hasn''t stopped yet, so we cannot start a new one.'); Writeln('The script hasn''t stopped yet, so we cannot start a new one.');
exit; exit;
end; end;
AppPath:= MainDir + DS; InitalizeTMThread(scriptthread);
includePath:= IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Includes/Path', ExpandFileName(MainDir+DS+'Includes' + DS))); ScriptThread.CompileOnly:= false;
fontPath := IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Fonts/Path', ExpandFileName(MainDir+DS+ 'Fonts' + DS)));
PluginsPath := IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Plugins/Path', ExpandFileName(MainDir+ DS+ 'Plugins' + DS)));
ScriptErrorLine:= -1;
CurrentSyncInfo.SyncMethod:= @Self.SafeCallThread;
UseCPascal := LoadSettingDef('Settings/Interpreter/UseCPascal', 'False');
try
if lowercase(UseCPascal) = 'true' then
ScriptThread := TCPThread.Create(True,@CurrentSyncInfo,PluginsPath)
else
ScriptThread := TPSThread.Create(True,@CurrentSyncInfo,PluginsPath);
except
writeln('Failed to initialise the library!');
Exit;
end;
{$IFNDEF TERMINALWRITELN}
ScriptThread.SetDebug(@formWriteln);
ScriptThread.DebugMemo := Self.Memo1;
{$ENDIF}
ScriptThread.SetScript(CurrScript.SynEdit.Lines.Text);
DbgImgInfo.DispSize := @DebugImgForm.DispSize;
DbgImgInfo.ShowForm := @DebugImgForm.ShowDebugImgForm;
DbgImgInfo.ToDrawBitmap:= @DebugImgForm.ToDrawBmp;
DbgImgInfo.DrawBitmap:= @DebugImgForm.DrawBitmap;
DbgImgInfo.GetDebugBitmap:= @DebugImgForm.GetDbgBmp;
DbgImgInfo.GetBitmap:= @DebugImgForm.GetDebugImage;
ScriptThread.SetDbgImg(DbgImgInfo);
ScriptThread.ErrorData:= @ErrorData;
ScriptThread.OnError:= @HandleErrorData;
if ScriptFile <> '' then
ScriptPath := ExtractFileDir(ScriptFile);
if DirectoryExists(PluginsPath) then
PluginsGlob.AddPath(PluginsPath);
if not DirectoryExists(IncludePath) then
if FirstRun then
Writeln('Warning: The include directory specified in the Settings isn''t valid.');
if not DirectoryExists(fontPath) then
if FirstRun then
Writeln('Warning: The font directory specified in the Settings isn''t valid. Can''t load fonts now');
ScriptThread.SetPaths(ScriptPath,AppPath,Includepath,PluginsPath,fontPath);
if selector.haspicked then ScriptThread.Client.IOManager.SetTarget(Selector.LastPick);
loadFontsOnScriptStart := LoadSettingDef('Settings/Fonts/LoadOnStartUp', 'True');
// Copy our current fonts
if not assigned(Self.OCR_Fonts) and (lowercase(loadFontsOnScriptStart) = 'true') and DirectoryExists(fontPath) then
begin
Self.OCR_Fonts := TMOCR.Create(ScriptThread.Client);
if DirectoryExists(fontPath) then
begin
OCR_Fonts.InitTOCR(fontPath);
end;{
else
begin
writeln('Warning: The Font directory in the Settings is not valid. Changing to default.');
OCR_Fonts.InitTOCR(IncludeTrailingPathDelimiter(ExpandFileName(MainDir +DS + '..' + DS + '..' + ds)) + 'Fonts' + DS);
end; }
ScriptThread.Client.MOCR.SetFonts(OCR_Fonts.GetFonts);
end else
if assigned(Self.OCR_Fonts) and (lowercase(loadFontsOnScriptStart) = 'true') then
ScriptThread.Client.MOCR.SetFonts(OCR_Fonts.GetFonts);
ScriptThread.OnTerminate:=@ScriptThreadTerminate; ScriptThread.OnTerminate:=@ScriptThreadTerminate;
ScriptState:= ss_Running; ScriptState:= ss_Running;
FirstRun := false; FirstRun := false;
@ -930,6 +857,77 @@ begin
SettingsForm.SaveCurrent; SettingsForm.SaveCurrent;
end; end;
procedure TForm1.InitalizeTMThread(var Thread: TMThread);
var
DbgImgInfo : TDbgImgInfo;
fontPath: String;
includePath : string;
AppPath : string;
pluginspath: string;
ScriptPath : string;
UseCPascal: String;
loadFontsOnScriptStart: boolean;
begin
AppPath:= MainDir + DS;
includePath:= IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Includes/Path', ExpandFileName(MainDir+DS+'Includes' + DS)));
fontPath := IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Fonts/Path', ExpandFileName(MainDir+DS+ 'Fonts' + DS)));
PluginsPath := IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Plugins/Path', ExpandFileName(MainDir+ DS+ 'Plugins' + DS)));
CurrScript.ScriptErrorLine:= -1;
CurrentSyncInfo.SyncMethod:= @Self.SafeCallThread;
UseCPascal := LoadSettingDef('Settings/Interpreter/UseCPascal', 'False');
try
if lowercase(UseCPascal) = 'true' then
Thread := TCPThread.Create(True,@CurrentSyncInfo,PluginsPath)
else
Thread := TPSThread.Create(True,@CurrentSyncInfo,PluginsPath);
except
writeln('Failed to initialise the library!');
Exit;
end;
{$IFNDEF TERMINALWRITELN}
Thread.SetDebug(@formWriteln);
Thread.DebugMemo := Self.Memo1;
{$ENDIF}
Thread.SetScript(CurrScript.SynEdit.Lines.Text);
DbgImgInfo.DispSize := @DebugImgForm.DispSize;
DbgImgInfo.ShowForm := @DebugImgForm.ShowDebugImgForm;
DbgImgInfo.ToDrawBitmap:= @DebugImgForm.ToDrawBmp;
DbgImgInfo.DrawBitmap:= @DebugImgForm.DrawBitmap;
DbgImgInfo.GetDebugBitmap:= @DebugImgForm.GetDbgBmp;
DbgImgInfo.GetBitmap:= @DebugImgForm.GetDebugImage;
Thread.SetDbgImg(DbgImgInfo);
Thread.ErrorData:= @CurrScript.ErrorData;
Thread.OnError:= @CurrScript.HandleErrorData;
if CurrScript.ScriptFile <> '' then
ScriptPath := ExtractFileDir(CurrScript.ScriptFile);
if DirectoryExists(PluginsPath) then
PluginsGlob.AddPath(PluginsPath);
if not DirectoryExists(IncludePath) then
if FirstRun then
Writeln('Warning: The include directory specified in the Settings isn''t valid.');
if not DirectoryExists(fontPath) then
if FirstRun then
Writeln('Warning: The font directory specified in the Settings isn''t valid. Can''t load fonts now');
Thread.SetPaths(ScriptPath,AppPath,Includepath,PluginsPath,fontPath);
if selector.haspicked then Thread.Client.IOManager.SetTarget(Selector.LastPick);
loadFontsOnScriptStart := (lowercase(LoadSettingDef('Settings/Fonts/LoadOnStartUp', 'True')) = 'true');
// Copy our current fonts
if not assigned(Self.OCR_Fonts) and loadFontsOnScriptStart and DirectoryExists(fontPath) then
begin
Self.OCR_Fonts := TMOCR.Create(Thread.Client);
OCR_Fonts.InitTOCR(fontPath);
Thread.Client.MOCR.SetFonts(OCR_Fonts.GetFonts);
end else
if assigned(Self.OCR_Fonts) and loadFontsOnScriptStart then
Thread.Client.MOCR.SetFonts(OCR_Fonts.GetFonts);
end;
procedure TForm1.ActionTabLastExecute(Sender: TObject); procedure TForm1.ActionTabLastExecute(Sender: TObject);
var var
@ -953,31 +951,11 @@ end;
procedure TForm1.ActionCompileScriptExecute(Sender: TObject); procedure TForm1.ActionCompileScriptExecute(Sender: TObject);
var var
UseCPascal : string;
PluginsPath : string;
TempThread : TMThread; TempThread : TMThread;
begin begin
UseCPascal := LoadSettingDef('Settings/Interpreter/UseCPascal', 'False'); InitalizeTMThread(TempThread);
PluginsPath := LoadSettingDef('Settings/Plugins/Path', ExpandFileName(MainDir + DS + 'Plugins'+ DS));
try
if lowercase(UseCPascal) = 'true' then
TempThread := TCPThread.Create(True,nil,PluginsPath)
else
TempThread := TPSThread.Create(True,nil,PluginsPath);
except
writeln('Failed to initialise the library!');
Exit;
end;
{$IFNDEF TERMINALWRITELN}
TempThread.SetDebug(@formWriteln);
TempThread.DebugMemo := Self.Memo1;
{$ENDIF}
TempThread.SetScript(CurrScript.SynEdit.Text);
TempThread.ErrorData:= @CurrScript.ErrorData;
TempThread.OnError:= @CurrScript.HandleErrorData;
TempThread.CompileOnly:= true; TempThread.CompileOnly:= true;
TempThread.Resume; TempThread.Resume;
end; end;
procedure TForm1.ActionCopyExecute(Sender: TObject); procedure TForm1.ActionCopyExecute(Sender: TObject);