From 482f9fef6645684d42c04cfb8b66109de2497ee4 Mon Sep 17 00:00:00 2001 From: BenLand100 Date: Thu, 21 Jan 2010 22:01:49 +0000 Subject: [PATCH] Finished fixing #68 moved TPA into core. Also made the eios plugin loader global, and changed the oop of the plugin loader to be more oop. git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@446 3f818213-9676-44b0-a9b4-5e4c4e03d09d --- trunk/Projects/SAMufasaGUI/project1.lpi | 229 ++++++++++++---------- trunk/Projects/SAMufasaGUI/testunit.lfm | 4 +- trunk/Projects/SAMufasaGUI/testunit.lrs | 2 +- trunk/Projects/SAMufasaGUI/testunit.pas | 4 +- trunk/Units/MMLCore/iomanager.pas | 33 +++- trunk/Units/MMLCore/libloader.pas | 21 +- trunk/Units/MMLCore/os_linux.pas | 6 + trunk/Units/MMLCore/os_windows.pas | 6 + trunk/Units/{MMLAddon => MMLCore}/tpa.pas | 0 9 files changed, 179 insertions(+), 126 deletions(-) rename trunk/Units/{MMLAddon => MMLCore}/tpa.pas (100%) diff --git a/trunk/Projects/SAMufasaGUI/project1.lpi b/trunk/Projects/SAMufasaGUI/project1.lpi index 26ca752..08c92ce 100644 --- a/trunk/Projects/SAMufasaGUI/project1.lpi +++ b/trunk/Projects/SAMufasaGUI/project1.lpi @@ -10,7 +10,7 @@ <UseXPManifest Value="True"/> - <ActiveEditorIndexAtStart Value="8"/> + <ActiveEditorIndexAtStart Value="7"/> </General> <VersionInfo> <ProjectVersion Value=""/> @@ -24,7 +24,7 @@ <RunParams> <local> <FormatVersion Value="1"/> - <LaunchingApplication PathPlusParams="$(TargetCmdLine)"/> + <LaunchingApplication Use="True" PathPlusParams="$(TargetCmdLine)"/> </local> </RunParams> <RequiredPackages Count="2"> @@ -36,14 +36,14 @@ <PackageName Value="LCL"/> </Item2> </RequiredPackages> - <Units Count="289"> + <Units Count="290"> <Unit0> <Filename Value="project1.lpr"/> <IsPartOfProject Value="True"/> <UnitName Value="project1"/> <CursorPos X="27" Y="29"/> <TopLine Value="11"/> - <EditorIndex Value="8"/> + <EditorIndex Value="10"/> <UsageCount Value="205"/> <Loaded Value="True"/> </Unit0> @@ -139,10 +139,9 @@ <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="TestUnit"/> - <ComponentState Value="1"/> - <CursorPos X="74" Y="536"/> - <TopLine Value="515"/> - <EditorIndex Value="12"/> + <CursorPos X="31" Y="1267"/> + <TopLine Value="1250"/> + <EditorIndex Value="14"/> <UsageCount Value="202"/> <Loaded Value="True"/> </Unit13> @@ -190,8 +189,8 @@ <Filename Value="../../Units/MMLCore/client.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="Client"/> - <CursorPos X="26" Y="55"/> - <TopLine Value="34"/> + <CursorPos X="1" Y="70"/> + <TopLine Value="51"/> <EditorIndex Value="0"/> <UsageCount Value="201"/> <Loaded Value="True"/> @@ -202,7 +201,7 @@ <UnitName Value="MufasaTypes"/> <CursorPos X="20" Y="32"/> <TopLine Value="26"/> - <EditorIndex Value="3"/> + <EditorIndex Value="5"/> <UsageCount Value="201"/> <Loaded Value="True"/> </Unit21> @@ -269,8 +268,8 @@ <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="mmlpsthread"/> - <CursorPos X="19" Y="34"/> - <TopLine Value="18"/> + <CursorPos X="1" Y="242"/> + <TopLine Value="225"/> <EditorIndex Value="1"/> <UsageCount Value="202"/> <Loaded Value="True"/> @@ -492,8 +491,8 @@ <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/mouse.inc"/> <CursorPos X="11" Y="26"/> <TopLine Value="12"/> - <EditorIndex Value="7"/> - <UsageCount Value="18"/> + <EditorIndex Value="9"/> + <UsageCount Value="19"/> <Loaded Value="True"/> </Unit63> <Unit64> @@ -540,15 +539,17 @@ <UnitName Value="plugins"/> <CursorPos X="23" Y="67"/> <TopLine Value="56"/> - <EditorIndex Value="4"/> + <EditorIndex Value="6"/> <UsageCount Value="200"/> <Loaded Value="True"/> </Unit70> <Unit71> <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> - <CursorPos X="1" Y="1"/> - <TopLine Value="2"/> - <UsageCount Value="6"/> + <CursorPos X="1" Y="37"/> + <TopLine Value="4"/> + <EditorIndex Value="2"/> + <UsageCount Value="10"/> + <Loaded Value="True"/> </Unit71> <Unit72> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/math.inc"/> @@ -629,7 +630,7 @@ <UnitName Value="windowselector"/> <CursorPos X="37" Y="34"/> <TopLine Value="12"/> - <EditorIndex Value="10"/> + <EditorIndex Value="12"/> <UsageCount Value="201"/> <Loaded Value="True"/> </Unit82> @@ -1201,7 +1202,7 @@ <UnitName Value="colourhistory"/> <CursorPos X="7" Y="73"/> <TopLine Value="55"/> - <EditorIndex Value="9"/> + <EditorIndex Value="11"/> <UsageCount Value="200"/> <Loaded Value="True"/> </Unit166> @@ -1372,8 +1373,8 @@ <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/keyboard.inc"/> <CursorPos X="26" Y="43"/> <TopLine Value="13"/> - <EditorIndex Value="6"/> - <UsageCount Value="18"/> + <EditorIndex Value="8"/> + <UsageCount Value="19"/> <Loaded Value="True"/> </Unit191> <Unit192> @@ -1488,7 +1489,7 @@ <UnitName Value="debugimage"/> <CursorPos X="1" Y="1"/> <TopLine Value="1"/> - <EditorIndex Value="11"/> + <EditorIndex Value="13"/> <UsageCount Value="202"/> <Loaded Value="True"/> </Unit207> @@ -1598,7 +1599,7 @@ <UnitName Value="framefunctionlist"/> <CursorPos X="26" Y="295"/> <TopLine Value="7"/> - <UsageCount Value="166"/> + <UsageCount Value="167"/> </Unit223> <Unit224> <Filename Value="../../../usr/local/share/lazarus/lcl/comctrls.pp"/> @@ -1653,7 +1654,7 @@ <UnitName Value="simpleanalyzer"/> <CursorPos X="52" Y="104"/> <TopLine Value="193"/> - <UsageCount Value="153"/> + <UsageCount Value="154"/> </Unit231> <Unit232> <Filename Value="../../Units/Misc/mPasLex.pas"/> @@ -1728,7 +1729,7 @@ <UnitName Value="updater"/> <CursorPos X="38" Y="211"/> <TopLine Value="65"/> - <UsageCount Value="126"/> + <UsageCount Value="127"/> </Unit242> <Unit243> <Filename Value="updateform.pas"/> @@ -1739,7 +1740,7 @@ <ComponentState Value="1"/> <CursorPos X="111" Y="102"/> <TopLine Value="207"/> - <UsageCount Value="121"/> + <UsageCount Value="122"/> </Unit243> <Unit244> <Filename Value="../../../Documents/lazarus/lcl/fileutil.pas"/> @@ -1860,7 +1861,7 @@ <UnitName Value="simbasettings"/> <CursorPos X="26" Y="9"/> <TopLine Value="11"/> - <UsageCount Value="84"/> + <UsageCount Value="85"/> </Unit261> <Unit262> <Filename Value="../../Units/MMLAddon/settings.pas"/> @@ -1905,7 +1906,7 @@ <UnitName Value="reportbug"/> <CursorPos X="53" Y="23"/> <TopLine Value="21"/> - <UsageCount Value="67"/> + <UsageCount Value="68"/> </Unit267> <Unit268> <Filename Value="../../Units/Synapse/synsock.pas"/> @@ -1960,9 +1961,11 @@ <Filename Value="../../Units/MMLAddon/newinternets.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="newinternets"/> - <CursorPos X="80" Y="2"/> - <TopLine Value="1"/> - <UsageCount Value="63"/> + <CursorPos X="37" Y="171"/> + <TopLine Value="153"/> + <EditorIndex Value="15"/> + <UsageCount Value="64"/> + <Loaded Value="True"/> </Unit275> <Unit276> <Filename Value="reportbug.lrs"/> @@ -2008,19 +2011,19 @@ <Unit282> <Filename Value="../../Units/MMLCore/iomanager.pas"/> <UnitName Value="IOManager"/> - <CursorPos X="83" Y="29"/> - <TopLine Value="1"/> - <EditorIndex Value="2"/> - <UsageCount Value="22"/> + <CursorPos X="1" Y="249"/> + <TopLine Value="232"/> + <EditorIndex Value="4"/> + <UsageCount Value="23"/> <Loaded Value="True"/> </Unit282> <Unit283> <Filename Value="../../Units/MMLCore/os_linux.pas"/> <UnitName Value="os_linux"/> - <CursorPos X="5" Y="21"/> - <TopLine Value="1"/> - <EditorIndex Value="14"/> - <UsageCount Value="22"/> + <CursorPos X="21" Y="322"/> + <TopLine Value="320"/> + <EditorIndex Value="17"/> + <UsageCount Value="23"/> <Loaded Value="True"/> </Unit283> <Unit284> @@ -2033,14 +2036,14 @@ <Unit285> <Filename Value="../../Units/MMLCore/os_windows.pas"/> <UnitName Value="os_windows"/> - <CursorPos X="4" Y="21"/> - <TopLine Value="299"/> - <EditorIndex Value="13"/> - <UsageCount Value="18"/> + <CursorPos X="3" Y="314"/> + <TopLine Value="300"/> + <EditorIndex Value="16"/> + <UsageCount Value="19"/> <Loaded Value="True"/> </Unit285> <Unit286> - <Filename Value="../../../../../../../usr/local/share/lazarus/components/mouseandkeyinput/xkeyinput.pas"/> + <Filename Value="../../../../../../usr/local/share/lazarus/components/mouseandkeyinput/xkeyinput.pas"/> <UnitName Value="XKeyInput"/> <CursorPos X="19" Y="19"/> <TopLine Value="164"/> @@ -2057,133 +2060,142 @@ <Filename Value="../../Units/MMLCore/libloader.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="libloader"/> - <CursorPos X="51" Y="120"/> - <TopLine Value="1"/> - <EditorIndex Value="5"/> - <UsageCount Value="21"/> + <CursorPos X="7" Y="74"/> + <TopLine Value="59"/> + <EditorIndex Value="7"/> + <UsageCount Value="22"/> <Loaded Value="True"/> </Unit288> + <Unit289> + <Filename Value="../../Units/MMLAddon/tpa.pas"/> + <UnitName Value="tpa"/> + <CursorPos X="17" Y="1696"/> + <TopLine Value="1677"/> + <EditorIndex Value="3"/> + <UsageCount Value="11"/> + <Loaded Value="True"/> + </Unit289> </Units> <JumpHistory Count="30" HistoryIndex="29"> <Position1> - <Filename Value="../../Units/MMLCore/iomanager.pas"/> - <Caret Line="441" Column="22" TopLine="424"/> + <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> + <Caret Line="231" Column="1" TopLine="214"/> </Position1> <Position2> - <Filename Value="../../Units/MMLCore/iomanager.pas"/> - <Caret Line="564" Column="7" TopLine="550"/> + <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> + <Caret Line="232" Column="1" TopLine="215"/> </Position2> <Position3> - <Filename Value="../../Units/MMLCore/iomanager.pas"/> - <Caret Line="574" Column="76" TopLine="551"/> + <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> + <Caret Line="25" Column="1" TopLine="3"/> </Position3> <Position4> - <Filename Value="../../Units/MMLCore/iomanager.pas"/> - <Caret Line="546" Column="17" TopLine="529"/> + <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> + <Caret Line="27" Column="1" TopLine="4"/> </Position4> <Position5> - <Filename Value="../../Units/MMLCore/iomanager.pas"/> - <Caret Line="549" Column="16" TopLine="532"/> + <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> + <Caret Line="28" Column="1" TopLine="4"/> </Position5> <Position6> - <Filename Value="testunit.pas"/> - <Caret Line="566" Column="18" TopLine="551"/> + <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> + <Caret Line="29" Column="1" TopLine="4"/> </Position6> <Position7> - <Filename Value="testunit.pas"/> - <Caret Line="560" Column="69" TopLine="551"/> + <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> + <Caret Line="30" Column="1" TopLine="4"/> </Position7> <Position8> - <Filename Value="testunit.pas"/> - <Caret Line="564" Column="41" TopLine="551"/> + <Filename Value="../../Units/MMLAddon/PSInc/psdefines.inc"/> + <Caret Line="37" Column="1" TopLine="4"/> </Position8> <Position9> - <Filename Value="testunit.pas"/> - <Caret Line="566" Column="18" TopLine="551"/> + <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> + <Caret Line="236" Column="1" TopLine="219"/> </Position9> <Position10> - <Filename Value="testunit.pas"/> - <Caret Line="567" Column="18" TopLine="551"/> + <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> + <Caret Line="238" Column="1" TopLine="221"/> </Position10> <Position11> <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="216" Column="18" TopLine="206"/> + <Caret Line="239" Column="1" TopLine="222"/> </Position11> <Position12> - <Filename Value="../../Units/MMLAddon/plugins.pas"/> - <Caret Line="69" Column="31" TopLine="56"/> + <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> + <Caret Line="241" Column="1" TopLine="224"/> </Position12> <Position13> - <Filename Value="../../Units/MMLCore/iomanager.pas"/> - <Caret Line="247" Column="52" TopLine="234"/> + <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> + <Caret Line="242" Column="1" TopLine="225"/> </Position13> <Position14> - <Filename Value="../../Units/MMLCore/client.pas"/> - <Caret Line="64" Column="43" TopLine="45"/> + <Filename Value="testunit.pas"/> + <Caret Line="538" Column="1" TopLine="521"/> </Position14> <Position15> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="328" Column="27" TopLine="96"/> + <Filename Value="testunit.pas"/> + <Caret Line="539" Column="1" TopLine="522"/> </Position15> <Position16> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="217" Column="137" TopLine="200"/> + <Filename Value="../../Units/MMLAddon/newinternets.pas"/> + <Caret Line="2" Column="80" TopLine="1"/> </Position16> <Position17> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="213" Column="28" TopLine="185"/> + <Filename Value="../../Units/MMLCore/libloader.pas"/> + <Caret Line="48" Column="1" TopLine="31"/> </Position17> <Position18> - <Filename Value="../../Units/MMLAddon/plugins.pas"/> - <Caret Line="71" Column="18" TopLine="51"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="255" Column="1" TopLine="238"/> </Position18> <Position19> - <Filename Value="../../Units/MMLAddon/plugins.pas"/> - <Caret Line="55" Column="36" TopLine="38"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="249" Column="1" TopLine="232"/> </Position19> <Position20> - <Filename Value="../../Units/MMLCore/libloader.pas"/> - <Caret Line="8" Column="31" TopLine="1"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="250" Column="1" TopLine="233"/> </Position20> <Position21> - <Filename Value="../../Units/MMLCore/libloader.pas"/> - <Caret Line="35" Column="9" TopLine="1"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="251" Column="1" TopLine="234"/> </Position21> <Position22> <Filename Value="../../Units/MMLCore/iomanager.pas"/> - <Caret Line="529" Column="43" TopLine="516"/> + <Caret Line="252" Column="1" TopLine="235"/> </Position22> <Position23> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="114" Column="95" TopLine="97"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="253" Column="1" TopLine="236"/> </Position23> <Position24> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="290" Column="29" TopLine="1"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="254" Column="1" TopLine="237"/> </Position24> <Position25> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="35" Column="28" TopLine="23"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="255" Column="1" TopLine="238"/> </Position25> <Position26> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="33" Column="29" TopLine="18"/> + <Filename Value="../../Units/MMLCore/os_linux.pas"/> + <Caret Line="325" Column="1" TopLine="308"/> </Position26> <Position27> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="35" Column="14" TopLine="33"/> + <Filename Value="testunit.pas"/> + <Caret Line="1267" Column="31" TopLine="1250"/> </Position27> <Position28> - <Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/> - <Caret Line="34" Column="19" TopLine="18"/> + <Filename Value="../../Units/MMLCore/os_linux.pas"/> + <Caret Line="70" Column="28" TopLine="55"/> </Position28> <Position29> - <Filename Value="../../Units/MMLCore/libloader.pas"/> - <Caret Line="120" Column="50" TopLine="105"/> + <Filename Value="../../Units/MMLCore/os_windows.pas"/> + <Caret Line="314" Column="3" TopLine="300"/> </Position29> <Position30> - <Filename Value="project1.lpr"/> - <Caret Line="25" Column="12" TopLine="15"/> + <Filename Value="../../Units/MMLCore/iomanager.pas"/> + <Caret Line="249" Column="1" TopLine="232"/> </Position30> </JumpHistory> </ProjectOptions> @@ -2198,6 +2210,7 @@ <UnitOutputDirectory Value="$(ProjPath)../../build/$(TargetOS)"/> </SearchPaths> <CodeGeneration> + <TargetOS Value="Linux"/> <Optimizations> <VariablesInRegisters Value="True"/> <OptimizationLevel Value="2"/> diff --git a/trunk/Projects/SAMufasaGUI/testunit.lfm b/trunk/Projects/SAMufasaGUI/testunit.lfm index f08b393..c2f9fee 100644 --- a/trunk/Projects/SAMufasaGUI/testunit.lfm +++ b/trunk/Projects/SAMufasaGUI/testunit.lfm @@ -1,7 +1,7 @@ object Form1: TForm1 - Left = 593 + Left = 1040 Height = 557 - Top = 321 + Top = 323 Width = 734 ActiveControl = ScriptPanel Caption = 'THA FUKING SIMBA' diff --git a/trunk/Projects/SAMufasaGUI/testunit.lrs b/trunk/Projects/SAMufasaGUI/testunit.lrs index 44be78d..e577b69 100644 --- a/trunk/Projects/SAMufasaGUI/testunit.lrs +++ b/trunk/Projects/SAMufasaGUI/testunit.lrs @@ -1,7 +1,7 @@ { This is an automatically generated lazarus resource file } LazarusResources.Add('TForm1','FORMDATA',[ - 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'Q'#2#6'Height'#3'-'#2#3'Top'#3'A'#1#5'Wid' + 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#16#4#6'Height'#3'-'#2#3'Top'#3'C'#1#5'Wid' +'th'#3#222#2#13'ActiveControl'#7#11'ScriptPanel'#7'Caption'#6#16'THA FUKING ' +'SIMBA'#12'ClientHeight'#3#20#2#11'ClientWidth'#3#222#2#10'KeyPreview'#9#4'M' +'enu'#7#8'MainMenu'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9 diff --git a/trunk/Projects/SAMufasaGUI/testunit.pas b/trunk/Projects/SAMufasaGUI/testunit.pas index 2383d37..695ec37 100644 --- a/trunk/Projects/SAMufasaGUI/testunit.pas +++ b/trunk/Projects/SAMufasaGUI/testunit.pas @@ -558,7 +558,7 @@ begin end else if not Assigned(PluginsGlob) then begin PluginsGlob := TMPlugins.Create; - PluginsGlob.PluginDirs.Add(PluginsPath); + PluginsGlob.AddAndLoadPath(PluginsPath); end; if not DirectoryExists(IncludePath) then if FirstRun then @@ -1264,7 +1264,7 @@ begin Tabs := TList.Create; AddTab;//Give it alteast 1 tab ;-). FunctionListShown(True); //Show this function list bitch! - Manager := TIOManager.Create(''); //No need to load plugins for the Global manager + Manager := TIOManager.Create; //No need to load plugins for the Global manager Picker := TMColorPicker.Create(Manager); Selector := TMWindowSelector.Create(Manager); MainDir:= ExtractFileDir(Application.ExeName); diff --git a/trunk/Units/MMLCore/iomanager.pas b/trunk/Units/MMLCore/iomanager.pas index 5d7af72..ecee64b 100644 --- a/trunk/Units/MMLCore/iomanager.pas +++ b/trunk/Units/MMLCore/iomanager.pas @@ -29,7 +29,7 @@ interface Classes, SysUtils, mufasatypes, graphics, LCLType, bitmaps, LCLIntf, libloader, dynlibs; type - + { This is the base class for the target functionality. If it provides a target, it extends this. | Some methods in heregratuitous provide default functionality as a convinence. Only override as nessessary } TTarget = class(TObject) @@ -165,7 +165,7 @@ interface | Sexy, right? ;} TEIOS_Controller = class(TGenericLoader) public - constructor Create(plugin_dir: string); + constructor Create(); destructor Destroy; override; function ClientExists(name: string): boolean; @@ -187,6 +187,7 @@ interface | since they sometimes are treated as seperate entities. } TIOManager_Abstract = class(TObject) public + constructor Create; constructor Create(plugin_dir: string); destructor Destroy; override; @@ -219,7 +220,6 @@ interface function isKeyDown(key: Word): Boolean; protected - controller: TEIOS_Controller; keymouse: TTarget; image: TTarget; frozen: TTarget; @@ -239,12 +239,24 @@ implementation {$IFDEF MSWINDOWS} os_windows {$ENDIF} {$IFDEF LINUX} os_linux {$ENDIF}; + var eios_controller: TEIOS_Controller; + //***implementation*** TIOManager constructor TIOManager_Abstract.Create(plugin_dir: string); begin inherited Create; - controller:= TEIOS_Controller.Create(plugin_dir); + eios_controller.AddAndLoadPath(plugin_dir); + keymouse:= nil; + image:= nil; + frozen:= nil; + NativeInit; + SetDesktop; + end; + + constructor TIOManager_Abstract.Create; + begin + inherited Create; keymouse:= nil; image:= nil; frozen:= nil; @@ -260,7 +272,6 @@ implementation image.Free(); end; if frozen <> nil then frozen.Destroy(); - if controller <> nil then controller.Destroy(); end; procedure TIOManager_Abstract.SetImageTarget(target: TTarget); @@ -332,8 +343,8 @@ implementation var client: TEIOS_Client; begin - if not controller.ClientExists(name) then raise Exception.Create('EIOS Client by specified name does not exist'); - client:= controller.GetClient(name); + if not eios_controller.ClientExists(name) then raise Exception.Create('EIOS Client by specified name does not exist'); + client:= eios_controller.GetClient(name); SetBothTargets(TEIOS_Target.Create(client, initargs)); end; @@ -526,11 +537,9 @@ implementation //***implementation*** TEIOS_Controller - constructor TEIOS_Controller.Create(plugin_dir: string); + constructor TEIOS_Controller.Create(); begin inherited Create; - PluginDirs.Add(plugin_dir); - LoadPluginsDir(0); end; destructor TEIOS_Controller.Destroy; @@ -607,4 +616,8 @@ implementation result:= plugs[i].client end; + initialization + eios_controller:= TEIOS_Controller.Create; + finalization + eios_controller.Free; end. diff --git a/trunk/Units/MMLCore/libloader.pas b/trunk/Units/MMLCore/libloader.pas index cdad365..b5b5db9 100644 --- a/trunk/Units/MMLCore/libloader.pas +++ b/trunk/Units/MMLCore/libloader.pas @@ -17,15 +17,16 @@ interface private PluginLen : integer; Loaded: TGenericLibArray; + PluginDirs : TStringList; procedure FreePlugins; + procedure LoadPluginsDir(DirIndex : integer); protected function InitPlugin(plugin: TLibHandle): boolean; virtual; abstract; public - PluginDirs : TStringList; constructor Create; destructor Destroy; override; procedure ValidateDirs; - procedure LoadPluginsDir(DirIndex : integer); + procedure AddAndLoadPath(path: string); function LoadPlugin(PluginName : string) : integer; end; @@ -33,6 +34,19 @@ implementation uses MufasaTypes,FileUtil; + + procedure TGenericLoader.AddAndLoadPath(path: string); + var + idx: integer; + begin + if PluginDirs.Find(path,idx) then + LoadPluginsDir(idx) + else begin + PluginDirs.Add(path); + LoadPluginsDir(PluginDirs.Count-1); + end; + end; + procedure TGenericLoader.FreePlugins; var I : integer; @@ -58,7 +72,7 @@ implementation for i := 0 to PluginDirs.Count - 1 do begin; if DirectoryExists(PluginDirs.Strings[i]) = false then - raise Exception.createFMT('Directory(%s) does not exist',[PluginDirs[i]]); + raise Exception.createFMT('Directory(%s) does not exist',[PluginDirs[i]]); TempStr := PluginDirs.Strings[i]; if (TempStr[Length(TempStr)] <> DS) then begin; @@ -133,6 +147,7 @@ implementation inherited Create; PluginLen := 0; PluginDirs := TStringList.Create; + PluginDirs.CaseSensitive:= {$IFDEF LINUX}true{$ELSE}false{$ENDIF}; end; destructor TGenericLoader.Destroy; diff --git a/trunk/Units/MMLCore/os_linux.pas b/trunk/Units/MMLCore/os_linux.pas index 414b9b9..ae61e4f 100644 --- a/trunk/Units/MMLCore/os_linux.pas +++ b/trunk/Units/MMLCore/os_linux.pas @@ -67,6 +67,7 @@ interface TIOManager = class(TIOManager_Abstract) public + constructor Create; constructor Create(plugin_dir: string); function SetTarget(target: TNativeWindow): integer; overload; procedure SetDesktop; override; @@ -319,6 +320,11 @@ implementation //***implementation*** IOManager + constructor TIOManager.Create; + begin + inherited Create; + end; + constructor TIOManager.Create(plugin_dir: string); begin inherited Create(plugin_dir); diff --git a/trunk/Units/MMLCore/os_windows.pas b/trunk/Units/MMLCore/os_windows.pas index 6277ce8..4289744 100644 --- a/trunk/Units/MMLCore/os_windows.pas +++ b/trunk/Units/MMLCore/os_windows.pas @@ -68,6 +68,7 @@ interface TIOManager = class(TIOManager_Abstract) public + constructor Create; constructor Create(plugin_dir: string); function SetTarget(target: Hwnd): integer; overload; procedure SetDesktop; override; @@ -306,6 +307,11 @@ implementation //***implementation*** IOManager + constructor TIOManager.Create; + begin + inherited Create; + end; + constructor TIOManager.Create(plugin_dir: string); begin inherited Create(plugin_dir); diff --git a/trunk/Units/MMLAddon/tpa.pas b/trunk/Units/MMLCore/tpa.pas similarity index 100% rename from trunk/Units/MMLAddon/tpa.pas rename to trunk/Units/MMLCore/tpa.pas