Pārlūkot izejas kodu

CH: several bug fixes on the OnClose event of the main form, Open file at Cursor, lua output window...

Jean-Francois Goulet 20 gadi atpakaļ
vecāks
revīzija
63e7c01da1
6 mainītis faili ar 99 papildinājumiem un 46 dzēšanām
  1. BIN
      LuaEdit/Bin/LuaEdit.exe
  2. 10 19
      LuaEdit/LuaEdit.dof
  3. BIN
      LuaEdit/LuaEdit.res
  4. 2 0
      LuaEdit/LuaOutput.dfm
  5. 2 1
      LuaEdit/Main.dfm
  6. 85 26
      LuaEdit/Main.pas

BIN
LuaEdit/Bin/LuaEdit.exe


+ 10 - 19
LuaEdit/LuaEdit.dof

@@ -3,21 +3,21 @@ Version=7.0
 [Compiler]
 A=8
 B=0
-C=1
-D=1
+C=0
+D=0
 E=0
 F=0
 G=1
 H=1
-I=1
+I=0
 J=0
 K=0
-L=1
+L=0
 M=0
 N=1
 O=0
 P=1
-Q=1
+Q=0
 R=0
 S=0
 T=0
@@ -25,7 +25,7 @@ U=0
 V=1
 W=0
 X=1
-Y=1
+Y=0
 Z=1
 ShowHints=1
 ShowWarnings=1
@@ -83,7 +83,7 @@ UnsafeCast=0
 MapFile=3
 OutputObjs=0
 ConsoleApp=1
-DebugInfo=1
+DebugInfo=0
 RemoteSymbols=0
 MinStackSize=16384
 MaxStackSize=1048576
@@ -94,7 +94,7 @@ OutputDir=.\bin
 UnitOutputDir=
 PackageDLLOutputDir=
 PackageDCPOutputDir=
-SearchPath=$(DELPHI)\Lib\Debug;C:\Prog\Delphi\Component\JEDI\jcl\lib\D7\debug;.\Syntax
+SearchPath=.\Syntax
 Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvCmpD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvCtrlsD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;JvCryptD7R;JvCustomD7R;JvBDED7R;JvDBD7R;JvDlgsD7R
 Conditionals=
 DebugSourceDirs=
@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=2
 MinorVer=0
 Release=1
-Build=585
+Build=595
 Debug=0
 PreRelease=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=1252
 [Version Info Keys]
 CompanyName=Open Source
 FileDescription=IDE for Lua 5.0.2
-FileVersion=2.0.1.585
+FileVersion=2.0.1.595
 InternalName=LuaEdit
 LegalCopyright=LuaEdit Copyright 2004-2005 ©
 LegalTrademarks=
@@ -134,12 +134,3 @@ OriginalFilename=LuaEdit.exe
 ProductName=LuaEdit for Lua 5.0
 ProductVersion=2.0.1.0
 Comments=This project was originally created by Jean-Francois Goulet
-[HistoryLists\hlUnitAliases]
-Count=1
-Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-[HistoryLists\hlSearchPath]
-Count=1
-Item0=$(DELPHI)\Lib\Debug;C:\Prog\Delphi\Component\JEDI\jcl\lib\D7\debug;.\Syntax
-[HistoryLists\hlOutputDirectorry]
-Count=1
-Item0=.\bin

BIN
LuaEdit/LuaEdit.res


+ 2 - 0
LuaEdit/LuaOutput.dfm

@@ -32,7 +32,9 @@ object frmLuaOutput: TfrmLuaOutput
     Font.Style = []
     ParentFont = False
     ReadOnly = True
+    ScrollBars = ssBoth
     TabOrder = 0
+    WantTabs = True
   end
   object JvDockClient1: TJvDockClient
     LRDockWidth = 100

+ 2 - 1
LuaEdit/Main.dfm

@@ -222,7 +222,7 @@ object frmMain: TfrmMain
     object tlbBaseFile: TToolBar
       Left = 11
       Top = 2
-      Width = 283
+      Width = 296
       Height = 22
       Align = alLeft
       AutoSize = True
@@ -3723,6 +3723,7 @@ object frmMain: TfrmMain
   object jvchnNotifier: TJvChangeNotify
     Notifications = <>
     CheckInterval = 1000
+    FreeOnTerminate = False
     OnChangeNotify = jvchnNotifierChangeNotify
     Left = 144
     Top = 342

+ 85 - 26
LuaEdit/Main.pas

@@ -1662,6 +1662,15 @@ begin
           pLuaUnit.IsLoaded := True;
           AddFileInTab(pLuaUnit);
           MonitorFile(odlgOpenUnit.Files.Strings[z]);
+          
+          // Add opened file to recent opens
+          pReg.OpenKey('\Software\LuaEdit', True);
+          pReg.WriteString('RecentPath', ExtractFilePath(odlgOpenUnit.Files.Strings[z]));
+        end
+        else
+        begin
+          Application.MessageBox(PChar('The project "'+odlgOpenUnit.Files.Strings[z]+')" is already opened by LuaEdit.'), 'LuaEdit', MB_OK+MB_ICONERROR);
+          Exit;
         end;
       end
       else if ExtractFileExt(odlgOpenUnit.Files.Strings[z]) = '.lpr' then
@@ -1670,14 +1679,16 @@ begin
         begin
           pNewPrj := TLuaProject.Create(odlgOpenUnit.Files.Strings[z]);
           pNewPrj.GetProjectFromDisk(odlgOpenUnit.Files.Strings[z]);
+          // Add opened file to recent opens
+          pReg.OpenKey('\Software\LuaEdit', True);
+          pReg.WriteString('RecentPath', ExtractFilePath(odlgOpenUnit.Files.Strings[z]));
+        end
+        else
+        begin
+          Application.MessageBox(PChar('The project "'+odlgOpenUnit.Files.Strings[z]+')" is already opened by LuaEdit.'), 'LuaEdit', MB_OK+MB_ICONERROR);
+          Exit;
         end;
-      end
-      else
-        Application.MessageBox(PChar('The project "'+odlgOpenUnit.Files.Strings[z]+')" is already opened by LuaEdit.'), 'LuaEdit', MB_OK+MB_ICONERROR);
-
-      // Add opened file to recent opens
-      pReg.OpenKey('\Software\LuaEdit', True);
-      pReg.WriteString('RecentPath', ExtractFilePath(odlgOpenUnit.Files.Strings[z]));
+      end;
     end;
   end;
 
@@ -1908,7 +1919,7 @@ end;
 
 procedure TfrmMain.actExitExecute(Sender: TObject);
 begin
-  Application.Terminate;
+  Application.MainForm.Close;
 end;
 
 procedure TfrmMain.actSaveExecute(Sender: TObject);
@@ -3112,6 +3123,7 @@ begin
   frmAbout.ShowModal;
 end;
 
+// This function manage debug actions in general and handle initialization of debug session
 procedure TfrmMain.CustomExecute(Pause: Boolean; PauseICI: Integer; PauseFile: string; PauseLine: Integer; FuncName: string; const Args: array of string; Results: TStrings);
 var
   L: Plua_State;
@@ -3258,6 +3270,7 @@ begin
 
     Running := True;
     LuaRegister(L, 'print', lua_print);
+    OnLuaStdout := DoLuaStdout;
     lua_sethook(L, HookCaller, HOOK_MASK, 0);
     CurrentICI := 1;
     frmMain.CheckButtons;
@@ -3932,7 +3945,7 @@ begin
       begin
         pLuaUnit := TLuaUnit(pLuaProject.lstUnits.Items[y]);
 
-        if ((not bProjectAdded) and (pLuaProject.sPrjName <> '[@@SingleUnits@@]')) then
+        if ((not bProjectAdded) and (pLuaProject.sPrjName <> '[@@SingleUnits@@]') and ((pLuaProject.HasChanged) or (pLuaProject.IsNew))) then
         begin
           frmExSaveExit.lstFiles.AddItem(pLuaProject.sPrjName, pLuaProject);
           bProjectAdded := True;
@@ -6418,26 +6431,66 @@ end;
 
 procedure TfrmMain.OpenFileatCursor1Click(Sender: TObject);
 var
+  pLuaUnit: TLuaUnit;
   WordAtCursor: String;
+  x: Integer;
 begin
- { if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelAvail then
-    WordAtCursor := TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText
-  else
-    WordAtCursor := TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.FileAtCursor;
+  if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelAvail then
+    WordAtCursor := ExpandUNCFileName(TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText);
 
-  if not FileExists(WordAtCursor) then
+  if FileExists(WordAtCursor) then
   begin
-    // It Could be a file reference in current dir
-    WordAtCursor := '.\' + WordAtCursor;
-
-    if not FileExists(WordAtCursor) then
+    if ExtractFileExt(WordAtCursor) = '.lua' then
     begin
-      Application.MessageBox(PChar('Cannot open file "'+WordAtCursor+'"'), 'LuaEdit', MB_OK+MB_ICONERROR);
-      Exit;
-    end;
-  end;
+      if not FileIsInTree(WordAtCursor) then
+      begin
+        // Creates the file
+        pLuaUnit := AddFileInProject(WordAtCursor, False, LuaSingleUnits);
+        pLuaUnit.IsLoaded := True;
+        AddFileInTab(pLuaUnit);
+        MonitorFile(pLuaUnit.sUnitPath);
+      end
+      else
+      begin
+        // Finding unit in the tree
+        for x := 0 to frmProjectTree.trvProjectTree.Items.Count - 1 do
+        begin
+          pLuaUnit := TLuaUnit(frmProjectTree.trvProjectTree.Items[x].Data);
 
-  ShellExecute(Self.Handle, 'open', PChar(WordAtCursor), nil, nil,  SW_SHOWNORMAL);}
+          // Check if unit is found
+          if pLuaUnit.sUnitPath = WordAtCursor then
+          begin
+            // Add file in tab bar
+            if LuaOpenedUnits.IndexOf(pLuaUnit) = -1 then
+            begin
+              frmMain.AddFileInTab(pLuaUnit);
+            end
+            else
+            begin
+              frmMain.GetAssociatedTab(pLuaUnit).Selected := True;
+
+              if pLuaUnit.HasChanged then
+                frmMain.stbMain.Panels[2].Text := 'Modified'
+              else
+                frmMain.stbMain.Panels[2].Text := '';
+
+              frmMain.synEditClick(pLuaUnit.synUnit);
+            end;
+            
+            Break;
+          end;
+        end;
+      end;
+
+      // Reinitialize stuff...
+      frmProjectTree.BuildProjectTree();
+      CheckButtons();
+    end
+    else
+      ShellExecute(Self.Handle, 'open', PChar(WordAtCursor), nil, nil,  SW_SHOWNORMAL);
+  end
+  else
+    Application.MessageBox(PChar('Cannot open file "'+WordAtCursor+'"'), 'LuaEdit', MB_OK+MB_ICONERROR);
 end;
 
 function LocalOutput(L: PLua_State): Integer; cdecl;
@@ -6449,10 +6502,16 @@ end;
 
 procedure TfrmMain.ppmEditorPopup(Sender: TObject);
 begin
-{  if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelAvail then
-    OpenFileatCursor1.Caption := 'Open Document "'+TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText+'"'
+  if TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelAvail then
+  begin
+    OpenFileatCursor1.Enabled := True;
+    OpenFileatCursor1.Caption := 'Open Document "'+TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.SelText+'"';
+  end
   else
-    OpenFileatCursor1.Caption := 'Open Document "'+TLuaUnit(jvUnitBar.SelectedTab.Data).synUnit.FileAtCursor+'"';}
+  begin
+    OpenFileatCursor1.Caption := 'Open Document ""';
+    OpenFileatCursor1.Enabled := False;
+  end;
 end;
 
 function TfrmMain.GetAssociatedTab(pLuaUnit: TLuaUnit): TJvTabBarItem;