Skip to content

Commit 0aaa1f2

Browse files
committed
fix: refresh session tree after import per More > Import settings file
Refs #2532
1 parent c2362f4 commit 0aaa1f2

3 files changed

Lines changed: 22 additions & 31 deletions

File tree

source/connections.dfm

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,9 @@ object connform: Tconnform
140140
Top = 184
141141
Width = 493
142142
Height = 25
143+
Action = MainForm.actImportSettings
143144
Anchors = [akLeft, akTop, akRight]
144-
Caption = 'Import settings ...'
145-
ImageIndex = 101
146145
TabOrder = 0
147-
OnClick = btnImportSettingsClick
148146
end
149147
end
150148
object tabSettings: TTabSheet

source/connections.pas

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ Tconnform = class(TExtForm)
175175
var NodeDataSize: Integer);
176176
procedure comboNetTypeChange(Sender: TObject);
177177
procedure splitterMainMoved(Sender: TObject);
178-
procedure btnImportSettingsClick(Sender: TObject);
179178
procedure timerSettingsImportTimer(Sender: TObject);
180179
procedure ListSessionsStructureChange(Sender: TBaseVirtualTree;
181180
Node: PVirtualNode; Reason: TChangeReason);
@@ -238,6 +237,8 @@ Tconnform = class(TExtForm)
238237
{ Public declarations }
239238
end;
240239

240+
var
241+
connform: Tconnform;
241242

242243
implementation
243244

@@ -296,6 +297,7 @@ procedure Tconnform.FormCreate(Sender: TObject);
296297
btnImportSettings.Caption := MainForm.actImportSettings.Caption;
297298
FLoaded := False;
298299
menuFoldersAtTop.Checked := AppSettings.ReadBool(asSessionManagerListFoldersAtTop);
300+
FSettingsImportWaitTime := 0;
299301

300302
comboNetType.Clear;
301303
Params := TConnectionParameters.Create;
@@ -588,22 +590,17 @@ procedure Tconnform.btnSaveAsClick(Sender: TObject);
588590
end;
589591

590592

591-
procedure Tconnform.btnImportSettingsClick(Sender: TObject);
592-
begin
593-
MainForm.actImportSettings.Execute;
594-
FSettingsImportWaitTime := 0;
595-
timerSettingsImport.Enabled := MainForm.ImportSettingsDone;
596-
end;
597-
598-
599593
procedure Tconnform.timerSettingsImportTimer(Sender: TObject);
600594
begin
601595
Inc(FSettingsImportWaitTime, timerSettingsImport.Interval);
602596
RefreshSessions(nil);
603-
if ListSessions.RootNodeCount > 0 then
597+
if ListSessions.RootNodeCount > 0 then begin
604598
timerSettingsImport.Enabled := False;
599+
FSettingsImportWaitTime := 0;
600+
end;
605601
if FSettingsImportWaitTime >= 10000 then begin
606602
timerSettingsImport.Enabled := False;
603+
FSettingsImportWaitTime := 0;
607604
MessageDialog(f_('Imported sessions could not be detected. Restarting %s may solve that.', [APPNAME]), mtWarning, [mbOK]);
608605
end;
609606
end;

source/main.pas

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,7 +1335,6 @@ TMainForm = class(TExtForm)
13351335
QueryTabs: TQueryTabList;
13361336
ActiveObjectEditor: TDBObjectEditor;
13371337
FileEncodings: TStringList;
1338-
ImportSettingsDone: Boolean;
13391338

13401339
// Data grid related stuff
13411340
DataGridHiddenColumns: TStringList;
@@ -2234,7 +2233,6 @@ procedure TMainForm.AfterFormCreate;
22342233
StatsCall: THttpDownload;
22352234
SessionPaths: TStringlist;
22362235
DlgResult: TModalResult;
2237-
SessionManager: TConnForm;
22382236
begin
22392237
if AppSettings.ReadBool(asUpdatecheck) then begin
22402238
// Do an updatecheck if checked in settings
@@ -2347,11 +2345,11 @@ procedure TMainForm.AfterFormCreate;
23472345
// Display session manager
23482346
if Connections.Count = 0 then begin
23492347
// Cannot be done in OnCreate because we need ready forms here:
2350-
SessionManager := TConnForm.Create(Self);
2348+
connform := TConnForm.Create(Self);
23512349
DlgResult := mrCancel;
23522350
try
2353-
DlgResult := SessionManager.ShowModal;
2354-
SessionManager.Free;
2351+
DlgResult := connform.ShowModal;
2352+
FreeAndNil(connform);
23552353
except
23562354
// Work around VCL bug: Suppress access violation in TCustomForm.IsFormSizeStored
23572355
// when closing dialog via Alt+F4
@@ -2637,12 +2635,10 @@ procedure TMainForm.TimerStoreTabsTimer(Sender: TObject);
26372635

26382636

26392637
procedure TMainForm.actSessionManagerExecute(Sender: TObject);
2640-
var
2641-
Dialog: TConnForm;
26422638
begin
2643-
Dialog := TConnForm.Create(Self);
2644-
Dialog.ShowModal;
2645-
Dialog.Free;
2639+
connform := TConnForm.Create(Self);
2640+
connform.ShowModal;
2641+
FreeAndNil(connform);
26462642
end;
26472643

26482644

@@ -2651,7 +2647,6 @@ procedure TMainForm.actDisconnectExecute(Sender: TObject);
26512647
Connection: TDBConnection;
26522648
Node: PVirtualNode;
26532649
DlgResult: Integer;
2654-
Dialog: TConnForm;
26552650
begin
26562651
// Disconnect active connection. If it's the last, exit application
26572652
Connection := ActiveConnection;
@@ -2662,9 +2657,9 @@ procedure TMainForm.actDisconnectExecute(Sender: TObject);
26622657
// TODO: focus last session?
26632658
SelectNode(DBtree, GetNextNode(DBtree, nil));
26642659
if FConnections.Count = 0 then begin
2665-
Dialog := TConnForm.Create(Self);
2666-
DlgResult := Dialog.ShowModal;
2667-
Dialog.Free;
2660+
connform := TConnForm.Create(Self);
2661+
DlgResult := connform.ShowModal;
2662+
FreeAndNil(connform);
26682663
if DlgResult = mrCancel then
26692664
actExitApplication.Execute;
26702665
end;
@@ -3204,15 +3199,16 @@ procedure TMainForm.actImportSettingsExecute(Sender: TObject);
32043199
Dialog := TOpenDialog.Create(Self);
32053200
Dialog.Title := f_('Import %s settings from file ...', [APPNAME]);
32063201
Dialog.Filter := _('Text files')+' (*.txt)|*.txt|'+_('Registry dump, deprecated')+' (*.reg)|*.reg|'+_('All files')+' (*.*)|*.*';
3207-
ImportSettingsDone := False;
32083202
if Dialog.Execute then try
32093203
if LowerCase(ExtractFileExt(Dialog.FileName)) = 'reg' then
32103204
ShellExec('regedit.exe', '', '"'+Dialog.FileName+'"')
3211-
else begin
3205+
else
32123206
AppSettings.ImportSettings(Dialog.FileName);
3213-
MessageDialog(f_('Settings successfully restored from %s', [Dialog.FileName]), mtInformation, [mbOK]);
3207+
// Refresh in session manager per timer interval
3208+
if Assigned(connform) then begin
3209+
connform.timerSettingsImport.Enabled := True;
32143210
end;
3215-
ImportSettingsDone := True;
3211+
MessageDialog(f_('Settings successfully restored from %s', [Dialog.FileName]), mtInformation, [mbOK]);
32163212
except
32173213
on E:Exception do
32183214
ErrorDialog(E.Message);

0 commit comments

Comments
 (0)