mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-02 13:47:42 +00:00
Merge pull request #1242 from keymanapp/developer-new-project-closes-open-files
[Developer] Opening or creating a new project saves and closes open editor files
This commit is contained in:
commit
9df52014ec
6 changed files with 51 additions and 32 deletions
|
|
@ -479,13 +479,15 @@ end;
|
|||
|
||||
procedure TmodActionsMain.actProjectNewExecute(Sender: TObject);
|
||||
begin
|
||||
// TODO: Close all existing editor forms
|
||||
if not frmKeymanDeveloper.BeforeOpenProject then
|
||||
Exit;
|
||||
ShowNewProjectForm(frmKeymanDeveloper);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectOpenAccept(Sender: TObject);
|
||||
begin
|
||||
// TODO: Close all existing editor forms
|
||||
if not frmKeymanDeveloper.BeforeOpenProject then
|
||||
Exit;
|
||||
OpenProject(actProjectOpen.Dialog.FileName);
|
||||
end;
|
||||
|
||||
|
|
@ -767,16 +769,8 @@ begin
|
|||
end;
|
||||
|
||||
procedure TmodActionsMain.actViewProjectExecute(Sender: TObject);
|
||||
var
|
||||
frmProject: TfrmProject;
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
begin
|
||||
frmProject := ProjectForm;
|
||||
if Assigned(frmProject) and (ActiveChild = frmProject)
|
||||
then PostMessage(frmProject.Handle, WM_CLOSE, 0, 0)
|
||||
else ShowProject;
|
||||
end;
|
||||
frmKeymanDeveloper.ToggleProject;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actViewProjectUpdate(Sender: TObject);
|
||||
|
|
|
|||
|
|
@ -189,7 +189,10 @@ begin
|
|||
case MessageDlg('The file '+s+' has changed.'+#13#10+'Do you wish to save changes?',
|
||||
mtConfirmation, mbYesNoCancel, 0) of
|
||||
mrYes:
|
||||
CanClose := modActionsMain.actFileSave.Execute;
|
||||
begin
|
||||
frmKeymanDeveloper.ActiveChild := Self;
|
||||
CanClose := modActionsMain.actFileSave.Execute;
|
||||
end;
|
||||
mrNo:
|
||||
CanClose := True;
|
||||
mrCancel:
|
||||
|
|
|
|||
|
|
@ -15,8 +15,6 @@ uses
|
|||
Vcl.Dialogs,
|
||||
|
||||
Keyman.Developer.System.ImportWindowsKeyboard,
|
||||
Keyman.Developer.System.Project.Project,
|
||||
Keyman.Developer.UI.Project.ProjectUI,
|
||||
Keyman.Developer.UI.Project.UfrmNewProjectParameters,
|
||||
UfrmMain,
|
||||
UfrmSelectSystemKeyboard;
|
||||
|
|
@ -83,12 +81,7 @@ begin
|
|||
f.Free;
|
||||
end;
|
||||
|
||||
// TODO: Refactor this hunk of junk code below that is repeated all over the place
|
||||
FGlobalProject.Save;
|
||||
frmKeymanDeveloper.ProjectForm.Free;
|
||||
FreeGlobalProjectUI;
|
||||
LoadGlobalProjectUI(ProjectFilename);
|
||||
frmKeymanDeveloper.ShowProject;
|
||||
frmKeymanDeveloper.OpenProject(ProjectFilename);
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -362,8 +362,11 @@ type
|
|||
|
||||
property ActiveChildIndex: Integer read GetActiveChildIndex write SetActiveChildIndex;
|
||||
|
||||
function BeforeOpenProject: Boolean;
|
||||
procedure OpenProject(const ProjectFilename: string);
|
||||
procedure ShowProject;
|
||||
function ProjectForm: TfrmProject;
|
||||
procedure ToggleProject;
|
||||
|
||||
procedure ShowDebug(AShow: Boolean);
|
||||
|
||||
|
|
@ -887,6 +890,16 @@ begin
|
|||
ProjectForm.SetGlobalProject;
|
||||
end;
|
||||
|
||||
procedure TfrmKeymanDeveloper.ToggleProject;
|
||||
var
|
||||
frmProject: TfrmProject;
|
||||
begin
|
||||
frmProject := ProjectForm;
|
||||
if Assigned(frmProject) and (ActiveChild = frmProject)
|
||||
then PostMessage(frmProject.Handle, WM_CLOSE, 0, 0)
|
||||
else ShowProject;
|
||||
end;
|
||||
|
||||
procedure TfrmKeymanDeveloper.InitDock;
|
||||
begin
|
||||
AppStorage := TJvAppRegistryStorage.Create(self);
|
||||
|
|
@ -1165,6 +1178,32 @@ begin
|
|||
Result := OpenEditor(FFileName, TfrmOSKEditor);
|
||||
end;
|
||||
|
||||
function TfrmKeymanDeveloper.BeforeOpenProject: Boolean;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
for i := 0 to FChildWindows.Count - 1 do
|
||||
if not FChildWindows[i].CloseQuery then
|
||||
Exit(False);
|
||||
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure TfrmKeymanDeveloper.OpenProject(const ProjectFilename: string);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
// Close child windows
|
||||
for i := 0 to FChildWindows.Count - 1 do
|
||||
FChildWindows[i].Close;
|
||||
|
||||
FGlobalProject.Save;
|
||||
ProjectForm.Free;
|
||||
FreeGlobalProjectUI;
|
||||
LoadGlobalProjectUI('');
|
||||
ShowProject;
|
||||
end;
|
||||
|
||||
function TfrmKeymanDeveloper.OpenEditor(FFileName: string; frmClass: TfrmTikeEditorClass): TfrmTikeEditor;
|
||||
var
|
||||
i, n: Integer;
|
||||
|
|
|
|||
|
|
@ -108,11 +108,7 @@ begin
|
|||
Result := ShowNewProjectParameters(Owner);
|
||||
kptBlank:
|
||||
begin
|
||||
FGlobalProject.Save;
|
||||
frmKeymanDeveloper.ProjectForm.Free;
|
||||
FreeGlobalProjectUI;
|
||||
LoadGlobalProjectUI('');
|
||||
frmKeymanDeveloper.ShowProject;
|
||||
frmKeymanDeveloper.OpenProject('');
|
||||
Result := True;
|
||||
end;
|
||||
kptImportWindowsKeyboard:
|
||||
|
|
|
|||
|
|
@ -105,10 +105,8 @@ uses
|
|||
UfrmMain,
|
||||
utilstr,
|
||||
utilsystem,
|
||||
Keyman.Developer.System.Project.Project,
|
||||
Keyman.Developer.System.Project.ProjectFile,
|
||||
Keyman.Developer.System.KeyboardProjectTemplate,
|
||||
Keyman.Developer.UI.Project.ProjectUI,
|
||||
Keyman.Developer.UI.UfrmSelectBCP47Language,
|
||||
Keyman.System.KeyboardUtils;
|
||||
|
||||
|
|
@ -143,11 +141,7 @@ begin
|
|||
kpt.BCP47Tags := f.BCP47Tags;
|
||||
kpt.Generate;
|
||||
|
||||
FGlobalProject.Save;
|
||||
frmKeymanDeveloper.ProjectForm.Free;
|
||||
FreeGlobalProjectUI;
|
||||
LoadGlobalProjectUI(kpt.ProjectFilename);
|
||||
frmKeymanDeveloper.ShowProject;
|
||||
frmKeymanDeveloper.OpenProject(kpt.ProjectFilename);
|
||||
Result := True;
|
||||
|
||||
finally
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue