mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 20:00:16 +08:00
Make SaveQueryMemo a member of TQueryTab, and suppress reload dialog when SQL file was saved in Heidi, not from outside. Also, fix non working file modification watch for newly created files - was only started when loading an existing file.
This commit is contained in:
@ -38,11 +38,11 @@ type
|
|||||||
pnlHelpers: TPanel;
|
pnlHelpers: TPanel;
|
||||||
treeHelpers: TVirtualStringTree;
|
treeHelpers: TVirtualStringTree;
|
||||||
Memo: TSynMemo;
|
Memo: TSynMemo;
|
||||||
MemoFilename: String;
|
|
||||||
MemoFileRenamed: Boolean;
|
MemoFileRenamed: Boolean;
|
||||||
MemoLineBreaks: TLineBreaks;
|
MemoLineBreaks: TLineBreaks;
|
||||||
DirectoryWatch: TDirectoryWatch;
|
DirectoryWatch: TDirectoryWatch;
|
||||||
MemofileModifiedTimer: TTimer;
|
MemofileModifiedTimer: TTimer;
|
||||||
|
LastSaveTime: Cardinal;
|
||||||
spltHelpers: TSplitter;
|
spltHelpers: TSplitter;
|
||||||
spltQuery: TSplitter;
|
spltQuery: TSplitter;
|
||||||
tabsetQuery: TTabSet;
|
tabsetQuery: TTabSet;
|
||||||
@ -53,8 +53,13 @@ type
|
|||||||
function GetActiveResultTab: TResultTab;
|
function GetActiveResultTab: TResultTab;
|
||||||
procedure DirectoryWatchNotify(const Sender: TObject; const Action: TWatchAction; const FileName: string);
|
procedure DirectoryWatchNotify(const Sender: TObject; const Action: TWatchAction; const FileName: string);
|
||||||
procedure MemofileModifiedTimerNotify(Sender: TObject);
|
procedure MemofileModifiedTimerNotify(Sender: TObject);
|
||||||
|
procedure SaveQueryMemo(Filename: String; OnlySelection: Boolean);
|
||||||
|
private
|
||||||
|
FMemoFilename: String;
|
||||||
|
procedure SetMemoFilename(Value: String);
|
||||||
public
|
public
|
||||||
property ActiveResultTab: TResultTab read GetActiveResultTab;
|
property ActiveResultTab: TResultTab read GetActiveResultTab;
|
||||||
|
property MemoFilename: String read FMemoFilename write SetMemoFilename;
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
end;
|
end;
|
||||||
@ -854,7 +859,6 @@ type
|
|||||||
procedure PlaceObjectEditor(Obj: TDBObject);
|
procedure PlaceObjectEditor(Obj: TDBObject);
|
||||||
procedure SetTabCaption(PageIndex: Integer; Text: String);
|
procedure SetTabCaption(PageIndex: Integer; Text: String);
|
||||||
function ConfirmTabClose(PageIndex: Integer): Boolean;
|
function ConfirmTabClose(PageIndex: Integer): Boolean;
|
||||||
procedure SaveQueryMemo(Tab: TQueryTab; Filename: String; OnlySelection: Boolean);
|
|
||||||
procedure UpdateFilterPanel(Sender: TObject);
|
procedure UpdateFilterPanel(Sender: TObject);
|
||||||
procedure DatabaseChanged(Database: String);
|
procedure DatabaseChanged(Database: String);
|
||||||
procedure DBObjectsCleared(Database: String);
|
procedure DBObjectsCleared(Database: String);
|
||||||
@ -1961,7 +1965,6 @@ begin
|
|||||||
m.SelStart := 0;
|
m.SelStart := 0;
|
||||||
m.SelEnd := 0;
|
m.SelEnd := 0;
|
||||||
if QueryTabActive then begin
|
if QueryTabActive then begin
|
||||||
SetTabCaption(PageControlMain.ActivePageIndex, '');
|
|
||||||
ActiveQueryTab.MemoFilename := '';
|
ActiveQueryTab.MemoFilename := '';
|
||||||
ActiveQueryTab.Memo.Modified := False;
|
ActiveQueryTab.Memo.Modified := False;
|
||||||
end;
|
end;
|
||||||
@ -3113,7 +3116,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if CanSave = mrYes then begin
|
if CanSave = mrYes then begin
|
||||||
SaveQueryMemo(ActiveQueryTab, SaveDialogSQLFile.FileName, (Sender as TAction).Tag = 1);
|
ActiveQueryTab.SaveQueryMemo(SaveDialogSQLFile.FileName, (Sender as TAction).Tag = 1);
|
||||||
for i:=0 to QueryTabs.Count-1 do begin
|
for i:=0 to QueryTabs.Count-1 do begin
|
||||||
if QueryTabs[i] = ActiveQueryTab then
|
if QueryTabs[i] = ActiveQueryTab then
|
||||||
continue;
|
continue;
|
||||||
@ -3130,7 +3133,7 @@ var
|
|||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
if ActiveQueryTab.MemoFilename <> '' then begin
|
if ActiveQueryTab.MemoFilename <> '' then begin
|
||||||
SaveQueryMemo(ActiveQueryTab, ActiveQueryTab.MemoFilename, False);
|
ActiveQueryTab.SaveQueryMemo(ActiveQueryTab.MemoFilename, False);
|
||||||
for i:=0 to QueryTabs.Count-1 do begin
|
for i:=0 to QueryTabs.Count-1 do begin
|
||||||
if QueryTabs[i] = ActiveQueryTab then
|
if QueryTabs[i] = ActiveQueryTab then
|
||||||
continue;
|
continue;
|
||||||
@ -3143,31 +3146,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.SaveQueryMemo(Tab: TQueryTab; Filename: String; OnlySelection: Boolean);
|
|
||||||
var
|
|
||||||
Text, LB: String;
|
|
||||||
begin
|
|
||||||
Screen.Cursor := crHourGlass;
|
|
||||||
if OnlySelection then
|
|
||||||
Text := Tab.Memo.SelText
|
|
||||||
else
|
|
||||||
Text := Tab.Memo.Text;
|
|
||||||
LB := '';
|
|
||||||
case Tab.MemoLineBreaks of
|
|
||||||
lbsUnix: LB := LB_UNIX;
|
|
||||||
lbsMac: LB := LB_MAC;
|
|
||||||
lbsWide: LB := LB_WIDE;
|
|
||||||
end;
|
|
||||||
if LB <> '' then
|
|
||||||
Text := StringReplace(Text, CRLF, LB, [rfReplaceAll]);
|
|
||||||
SaveUnicodeFile( Filename, Text );
|
|
||||||
SetTabCaption(Tab.Number+tabData.PageIndex, ExtractFilename(Filename));
|
|
||||||
Tab.MemoFilename := Filename;
|
|
||||||
Tab.Memo.Modified := False;
|
|
||||||
Screen.Cursor := crDefault;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.actSaveSQLSnippetExecute(Sender: TObject);
|
procedure TMainForm.actSaveSQLSnippetExecute(Sender: TObject);
|
||||||
var
|
var
|
||||||
snippetname : String;
|
snippetname : String;
|
||||||
@ -5124,11 +5102,8 @@ begin
|
|||||||
Tab.Memo.SelText := filecontent;
|
Tab.Memo.SelText := filecontent;
|
||||||
Tab.Memo.SelStart := ActiveQueryMemo.SelEnd;
|
Tab.Memo.SelStart := ActiveQueryMemo.SelEnd;
|
||||||
Tab.Memo.EndUpdate;
|
Tab.Memo.EndUpdate;
|
||||||
SetTabCaption(PageControlMain.ActivePageIndex, sstr(ExtractFilename(filename), 70));
|
|
||||||
Tab.Memo.Modified := False;
|
Tab.Memo.Modified := False;
|
||||||
Tab.MemoFilename := filename;
|
Tab.MemoFilename := filename;
|
||||||
Tab.DirectoryWatch.Directory := ExtractFilePath(filename);
|
|
||||||
Tab.DirectoryWatch.Start;
|
|
||||||
Result := True;
|
Result := True;
|
||||||
except on E:Exception do
|
except on E:Exception do
|
||||||
// File does not exist, is locked or broken
|
// File does not exist, is locked or broken
|
||||||
@ -8839,9 +8814,9 @@ begin
|
|||||||
mrNo: Result := True;
|
mrNo: Result := True;
|
||||||
mrYes: begin
|
mrYes: begin
|
||||||
if Tab.MemoFilename <> '' then
|
if Tab.MemoFilename <> '' then
|
||||||
SaveQueryMemo(Tab, Tab.MemoFilename, False)
|
Tab.SaveQueryMemo(Tab.MemoFilename, False)
|
||||||
else if SaveDialogSQLFile.Execute then
|
else if SaveDialogSQLFile.Execute then
|
||||||
SaveQueryMemo(Tab, SaveDialogSQLFile.FileName, False);
|
Tab.SaveQueryMemo(SaveDialogSQLFile.FileName, False);
|
||||||
// The save dialog can be cancelled.
|
// The save dialog can be cancelled.
|
||||||
Result := not Tab.Memo.Modified;
|
Result := not Tab.Memo.Modified;
|
||||||
end;
|
end;
|
||||||
@ -9658,6 +9633,7 @@ begin
|
|||||||
MemofileModifiedTimer.Interval := 1000;
|
MemofileModifiedTimer.Interval := 1000;
|
||||||
MemofileModifiedTimer.Enabled := False;
|
MemofileModifiedTimer.Enabled := False;
|
||||||
MemofileModifiedTimer.OnTimer := MemofileModifiedTimerNotify;
|
MemofileModifiedTimer.OnTimer := MemofileModifiedTimerNotify;
|
||||||
|
LastSaveTime := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -9695,7 +9671,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
waModified:
|
waModified:
|
||||||
if IsCurrentFile then begin
|
if IsCurrentFile and (LastSaveTime < GetTickCount-MemofileModifiedTimer.Interval) then begin
|
||||||
MemofileModifiedTimer.Enabled := False;
|
MemofileModifiedTimer.Enabled := False;
|
||||||
MemofileModifiedTimer.Enabled := True;
|
MemofileModifiedTimer.Enabled := True;
|
||||||
end;
|
end;
|
||||||
@ -9707,8 +9683,6 @@ begin
|
|||||||
waRenamedNew:
|
waRenamedNew:
|
||||||
if (not IsCurrentFile) and (MemoFilename <> '') and MemoFileRenamed then begin
|
if (not IsCurrentFile) and (MemoFilename <> '') and MemoFileRenamed then begin
|
||||||
MemoFilename := DirectoryWatch.Directory + FileName;
|
MemoFilename := DirectoryWatch.Directory + FileName;
|
||||||
Mainform.SetTabCaption(TabSheet.PageIndex, Filename);
|
|
||||||
Mainform.ValidateQueryControls(Sender);
|
|
||||||
MemoFileRenamed := False;
|
MemoFileRenamed := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -9732,6 +9706,47 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TQueryTab.SaveQueryMemo(Filename: String; OnlySelection: Boolean);
|
||||||
|
var
|
||||||
|
Text, LB: String;
|
||||||
|
begin
|
||||||
|
Screen.Cursor := crHourGlass;
|
||||||
|
MainForm.ShowStatusMsg('Saving file ...');
|
||||||
|
if OnlySelection then
|
||||||
|
Text := Memo.SelText
|
||||||
|
else
|
||||||
|
Text := Memo.Text;
|
||||||
|
LB := '';
|
||||||
|
case MemoLineBreaks of
|
||||||
|
lbsUnix: LB := LB_UNIX;
|
||||||
|
lbsMac: LB := LB_MAC;
|
||||||
|
lbsWide: LB := LB_WIDE;
|
||||||
|
end;
|
||||||
|
if LB <> '' then
|
||||||
|
Text := StringReplace(Text, CRLF, LB, [rfReplaceAll]);
|
||||||
|
SaveUnicodeFile( Filename, Text );
|
||||||
|
MemoFilename := Filename;
|
||||||
|
Memo.Modified := False;
|
||||||
|
LastSaveTime := GetTickCount;
|
||||||
|
MainForm.ShowStatusMsg;
|
||||||
|
Screen.Cursor := crDefault;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TQueryTab.SetMemoFilename(Value: String);
|
||||||
|
begin
|
||||||
|
FMemoFilename := Value;
|
||||||
|
MainForm.SetTabCaption(TabSheet.PageIndex, sstr(ExtractFilename(FMemoFilename), 70));
|
||||||
|
MainForm.ValidateQueryControls(Self);
|
||||||
|
if FMemoFilename <> '' then begin
|
||||||
|
DirectoryWatch.Directory := ExtractFilePath(FMemoFilename);
|
||||||
|
DirectoryWatch.Start;
|
||||||
|
end else
|
||||||
|
DirectoryWatch.Stop;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{ TResultTab }
|
{ TResultTab }
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user