mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-26 01:27:42 +00:00
[Developer] Add concept of closing project to bring up welcome. Step 1.
This commit is contained in:
parent
ccaeab9889
commit
609649d00c
7 changed files with 193 additions and 46 deletions
|
|
@ -22,6 +22,7 @@ object modActionsMain: TmodActionsMain
|
|||
ImageIndex = 0
|
||||
ShortCut = 16462
|
||||
OnExecute = actFileNewExecute
|
||||
OnUpdate = actFileNewUpdate
|
||||
end
|
||||
object actViewCharacterIdentifier: TAction
|
||||
Category = 'View'
|
||||
|
|
@ -39,6 +40,7 @@ object modActionsMain: TmodActionsMain
|
|||
ImageIndex = 1
|
||||
ShortCut = 16463
|
||||
OnAccept = actFileOpenAccept
|
||||
OnUpdate = actFileOpenUpdate
|
||||
end
|
||||
object actFileSave: TAction
|
||||
Category = 'File'
|
||||
|
|
@ -260,6 +262,7 @@ object modActionsMain: TmodActionsMain
|
|||
Hint = 'Save Project As|Saves the current project with a new name'
|
||||
BeforeExecute = actProjectSaveAsBeforeExecute
|
||||
OnAccept = actProjectSaveAsAccept
|
||||
OnUpdate = actProjectSaveAsUpdate
|
||||
end
|
||||
object actProjectAddCurrentEditorFile: TAction
|
||||
Category = 'Project'
|
||||
|
|
@ -278,6 +281,7 @@ object modActionsMain: TmodActionsMain
|
|||
ImageIndex = 30
|
||||
ShortCut = 16463
|
||||
OnAccept = actProjectAddFilesAccept
|
||||
OnUpdate = actProjectAddFilesUpdate
|
||||
end
|
||||
object actProjectSettings: TAction
|
||||
Category = 'Project'
|
||||
|
|
@ -285,6 +289,7 @@ object modActionsMain: TmodActionsMain
|
|||
Hint = 'Project Settings|Edit settings for this project'
|
||||
ImageIndex = 31
|
||||
OnExecute = actProjectSettingsExecute
|
||||
OnUpdate = actProjectSettingsUpdate
|
||||
end
|
||||
object actToolsCustomise: TAction
|
||||
Category = 'Tools'
|
||||
|
|
@ -466,6 +471,12 @@ object modActionsMain: TmodActionsMain
|
|||
OnExecute = actViewCodeExecute
|
||||
OnUpdate = actViewCodeUpdate
|
||||
end
|
||||
object actProjectClose: TAction
|
||||
Category = 'Project'
|
||||
Caption = '&Close Project'
|
||||
OnExecute = actProjectCloseExecute
|
||||
OnUpdate = actProjectCloseUpdate
|
||||
end
|
||||
end
|
||||
object ActionManager1: TActionManager
|
||||
ActionBars = <
|
||||
|
|
@ -484,7 +495,7 @@ object modActionsMain: TmodActionsMain
|
|||
Left = 304
|
||||
Top = 236
|
||||
Bitmap = {
|
||||
494C01010A000E00840010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C01010A000E00880010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
0000000000003600000028000000400000003000000001002000000000000030
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
|
|
@ -893,7 +904,7 @@ object modActionsMain: TmodActionsMain
|
|||
Left = 124
|
||||
Top = 116
|
||||
Bitmap = {
|
||||
494C010112004801B00020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C010112004801B40020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
000000000000360000002800000080000000A000000001002000000000000040
|
||||
0100000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000A8CAFF00A8CA
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ type
|
|||
actViewDesign: TAction; // I4678
|
||||
actViewCode: TAction; // I4678
|
||||
actViewCharacterIdentifier: TAction; // I4807
|
||||
actProjectClose: TAction;
|
||||
procedure actFileNewExecute(Sender: TObject);
|
||||
procedure DataModuleCreate(Sender: TObject);
|
||||
procedure actFileOpenAccept(Sender: TObject);
|
||||
|
|
@ -163,7 +164,6 @@ type
|
|||
procedure actToolsOptionsExecute(Sender: TObject);
|
||||
procedure actToolsVirtualKeyIdentifierExecute(Sender: TObject);
|
||||
procedure actProjectNewExecute(Sender: TObject);
|
||||
procedure actProjectSaveExecute(Sender: TObject);
|
||||
procedure actProjectSaveAsBeforeExecute(Sender: TObject);
|
||||
procedure actProjectAddCurrentEditorFileExecute(Sender: TObject);
|
||||
procedure actProjectSettingsExecute(Sender: TObject);
|
||||
|
|
@ -222,9 +222,18 @@ type
|
|||
var CanClose: Boolean);
|
||||
procedure actProjectSaveAsSaveDialogCanClose(Sender: TObject;
|
||||
var CanClose: Boolean); // I4807
|
||||
procedure actProjectCloseExecute(Sender: TObject);
|
||||
procedure actProjectCloseUpdate(Sender: TObject);
|
||||
procedure actProjectSaveAsUpdate(Sender: TObject);
|
||||
procedure actProjectAddFilesUpdate(Sender: TObject);
|
||||
procedure actProjectSettingsUpdate(Sender: TObject);
|
||||
procedure actFileNewUpdate(Sender: TObject);
|
||||
procedure actFileOpenUpdate(Sender: TObject);
|
||||
private
|
||||
procedure AboutShowStartup(Sender: TObject);
|
||||
function CheckFilenameConventions(FileName: string): Boolean;
|
||||
function SaveAndCloseAllFiles: Boolean;
|
||||
procedure CloseProject;
|
||||
public
|
||||
procedure NewProject(pt: TProjectType);
|
||||
procedure OpenProject(FileName: WideString);
|
||||
|
|
@ -309,6 +318,11 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFileNewUpdate(Sender: TObject);
|
||||
begin
|
||||
actFileNew.Enabled := IsGlobalProjectUIReady;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFileOpenAccept(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
|
|
@ -317,10 +331,15 @@ begin
|
|||
frmKeymanDeveloper.OpenFile(actFileOpen.Dialog.Files[i], True);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFileOpenUpdate(Sender: TObject);
|
||||
begin
|
||||
actFileOpen.Enabled := IsGlobalProjectUIReady;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFilePageSetupUpdate(Sender: TObject);
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
actFilePageSetup.Enabled := Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintActions) and (Printer.Printers.Count > 0);
|
||||
actFilePageSetup.Enabled := IsGlobalProjectUIReady and Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintActions) and (Printer.Printers.Count > 0);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFilePrintExecute(Sender: TObject);
|
||||
|
|
@ -331,7 +350,7 @@ end;
|
|||
procedure TmodActionsMain.actFilePrintUpdate(Sender: TObject);
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
actFilePrint.Enabled := Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintActions) and (Printer.Printers.Count > 0);
|
||||
actFilePrint.Enabled := IsGlobalProjectUIReady and Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintActions) and (Printer.Printers.Count > 0);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFilePrintPreviewExecute(Sender: TObject);
|
||||
|
|
@ -342,7 +361,7 @@ end;
|
|||
procedure TmodActionsMain.actFilePrintPreviewUpdate(Sender: TObject);
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
actFilePrintPreview.Enabled := Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintPreviewActions) and (Printer.Printers.Count > 0);
|
||||
actFilePrintPreview.Enabled := IsGlobalProjectUIReady and Assigned(ActiveChild) and Supports(ActiveChild, IKMDPrintPreviewActions) and (Printer.Printers.Count > 0);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFileRevertExecute(Sender: TObject);
|
||||
|
|
@ -355,7 +374,7 @@ end;
|
|||
procedure TmodActionsMain.actFileRevertUpdate(Sender: TObject);
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
actFileRevert.Enabled := Assigned(ActiveEditor);
|
||||
actFileRevert.Enabled := IsGlobalProjectUIReady and Assigned(ActiveEditor);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFileSaveAsAccept(Sender: TObject);
|
||||
|
|
@ -377,6 +396,8 @@ end;
|
|||
|
||||
function TmodActionsMain.CheckFilenameConventions(FileName: string): Boolean;
|
||||
begin
|
||||
if not IsGlobalProjectUIReady then Exit(True);
|
||||
|
||||
if not FGlobalProject.Options.CheckFilenameConventions then Exit(True);
|
||||
|
||||
if (GetFileTypeFromFileName(FileName) in [ftKeymanSource, ftPackageSource]) or
|
||||
|
|
@ -407,7 +428,7 @@ end;
|
|||
procedure TmodActionsMain.actFileSaveAsUpdate(Sender: TObject);
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
actFileSaveAs.Enabled := Assigned(ActiveEditor);
|
||||
actFileSaveAs.Enabled := IsGlobalProjectUIReady and Assigned(ActiveEditor);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFileSaveCopyAsExecute(Sender: TObject);
|
||||
|
|
@ -432,7 +453,7 @@ end;
|
|||
procedure TmodActionsMain.actFileSaveCopyAsUpdate(Sender: TObject);
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
actFileSaveCopyAs.Enabled := Assigned(ActiveEditor);
|
||||
actFileSaveCopyAs.Enabled := IsGlobalProjectUIReady and Assigned(ActiveEditor);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actFileSaveExecute(Sender: TObject);
|
||||
|
|
@ -455,7 +476,7 @@ end;
|
|||
procedure TmodActionsMain.actFileSaveUpdate(Sender: TObject);
|
||||
begin
|
||||
with frmKeymanDeveloper do
|
||||
actFileSave.Enabled := Assigned(ActiveEditor) and ActiveEditor.Modified;
|
||||
actFileSave.Enabled := IsGlobalProjectUIReady and Assigned(ActiveEditor) and ActiveEditor.Modified;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.AboutShowStartup(Sender: TObject);
|
||||
|
|
@ -511,6 +532,7 @@ end;
|
|||
procedure TmodActionsMain.actProjectAddCurrentEditorFileUpdate(Sender: TObject);
|
||||
begin
|
||||
actProjectAddCurrentEditorFile.Enabled :=
|
||||
IsGlobalProjectUIReady and
|
||||
Assigned(frmKeymanDeveloper.ActiveEditor) and
|
||||
not frmKeymanDeveloper.ActiveEditor.Untitled and
|
||||
(not Assigned(frmKeymanDeveloper.ActiveEditor.ProjectFile) or
|
||||
|
|
@ -528,6 +550,21 @@ begin
|
|||
frmKeymanDeveloper.ShowProject;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectAddFilesUpdate(Sender: TObject);
|
||||
begin
|
||||
actProjectAddFiles.Enabled := IsGlobalProjectUIReady;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectCloseExecute(Sender: TObject);
|
||||
begin
|
||||
CloseProject;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectCloseUpdate(Sender: TObject);
|
||||
begin
|
||||
actProjectClose.Enabled := IsGlobalProjectUIReady;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectNewExecute(Sender: TObject);
|
||||
begin
|
||||
if not frmKeymanDeveloper.BeforeOpenProject then
|
||||
|
|
@ -550,7 +587,7 @@ begin
|
|||
Exit;
|
||||
end;
|
||||
|
||||
FGlobalProject.Save;
|
||||
if not SaveAndCloseAllFiles then Exit;
|
||||
FreeGlobalProjectUI;
|
||||
LoadGlobalProjectUI(ptUnknown, FileName); // I4687
|
||||
frmKeymanDeveloper.ProjectMRU.Add(FGlobalProject.FileName);
|
||||
|
|
@ -560,13 +597,21 @@ end;
|
|||
|
||||
procedure TmodActionsMain.NewProject(pt: TProjectType);
|
||||
begin
|
||||
FGlobalProject.Save;
|
||||
if not SaveAndCloseAllFiles then Exit;
|
||||
FreeGlobalProjectUI;
|
||||
NewGlobalProjectUI(pt);
|
||||
frmKeymanDeveloper.ShowProject;
|
||||
frmKeymanDeveloper.UpdateCaption;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.CloseProject;
|
||||
begin
|
||||
if not SaveAndCloseAllFiles then Exit;
|
||||
FreeGlobalProjectUI;
|
||||
frmKeymanDeveloper.ShowProject;
|
||||
frmKeymanDeveloper.UpdateCaption;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectSaveAsAccept(Sender: TObject);
|
||||
begin
|
||||
FGlobalProject.FileName := actProjectSaveAs.Dialog.FileName;
|
||||
|
|
@ -585,11 +630,9 @@ begin
|
|||
CanClose := CheckFilenameConventions((Sender as TSaveDialog).FileName);
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectSaveExecute(Sender: TObject);
|
||||
procedure TmodActionsMain.actProjectSaveAsUpdate(Sender: TObject);
|
||||
begin
|
||||
if FGlobalProject.Untitled
|
||||
then actProjectSaveAs.Execute
|
||||
else FGlobalProject.Save;
|
||||
actProjectSaveAs.Enabled := IsGlobalProjectUIReady;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectSettingsExecute(Sender: TObject);
|
||||
|
|
@ -602,6 +645,11 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actProjectSettingsUpdate(Sender: TObject);
|
||||
begin
|
||||
actProjectSettings.Enabled := IsGlobalProjectUIReady;
|
||||
end;
|
||||
|
||||
procedure TmodActionsMain.actSearchFindBeforeExecute(Sender: TObject;
|
||||
var Cancel: Boolean);
|
||||
begin
|
||||
|
|
@ -627,7 +675,7 @@ end;
|
|||
|
||||
procedure TmodActionsMain.actToolsFileFormatUpdate(Sender: TObject);
|
||||
begin
|
||||
actToolsFileFormat.Enabled := Assigned(frmKeymanDeveloper.ActiveChild) and
|
||||
actToolsFileFormat.Enabled := IsGlobalProjectUIReady and Assigned(frmKeymanDeveloper.ActiveChild) and
|
||||
frmKeymanDeveloper.ActiveChild.CanTextFileFormatClick;
|
||||
frmKeymanDeveloper.Reloadwithencoding1.Enabled := Assigned(frmKeymanDeveloper.ActiveChild) and // I3082 // I3502
|
||||
frmKeymanDeveloper.ActiveChild.CanReloadAsTextFileFormatClick; // because linking to the action causes the dropdown menu to break...
|
||||
|
|
@ -935,19 +983,48 @@ end;
|
|||
procedure TmodActionsMain.DataModuleCreate(Sender: TObject);
|
||||
begin
|
||||
actFileOpen.Dialog.Filter :=
|
||||
'Keyman source files|*.kmn;*.kps;*.kpp;*.txt;*.bmp;*.kpj;*.kvk;*.kct|'+
|
||||
'Keyman source files|*.kmn;*.kps;*.txt;*.bmp;*.ico;*.kpj;*.kvk;*.kvks;*.model.ts;*.tsv|'+
|
||||
'Projects files (*.kpj)|*.kpj|'+
|
||||
'Keyboard files (*.kmn)|*.kmn|'+
|
||||
'Package files (*.kps)|*.kps|'+
|
||||
'Product files (*.kpp)|*.kpp|'+
|
||||
'Customisation files (*.kct)|*.kct|'+
|
||||
'Model files (*.model.ts)|*.model.ts|'+
|
||||
'Wordlist files (*.tsv)|*.tsv|'+
|
||||
'Text files (*.txt)|*.txt|'+
|
||||
'Virtual keyboard files (*.kvk)|*.kvk|'+
|
||||
'Bitmap files (*.bmp)|*.bmp|'+
|
||||
'TIKE projects (*.kpj)|*.kpj|'+
|
||||
'Virtual keyboard files (*.kvk, *.kvks)|*.kvk;*.kvks|'+
|
||||
'Icon files (*.bmp, *.ico)|*.bmp;*.ico|'+
|
||||
'Compiled keyboard files (*.kmx)|*.kmx|'+
|
||||
'Javascript files (*.js)|*.js|'+
|
||||
'Stylesheet files (*.css)|*.css|'+
|
||||
'HTML files (*.htm, *.html)|*.htm?|'+
|
||||
'XML files (*.xml)|*.xml|'+
|
||||
'All files (*.*)|*.*';
|
||||
end;
|
||||
|
||||
function TmodActionsMain.SaveAndCloseAllFiles: Boolean;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
FGlobalProject.Save;
|
||||
for i := 0 to frmKeymanDeveloper.ChildWindows.Count - 1 do
|
||||
begin
|
||||
if frmKeymanDeveloper.ChildWindows[i] is TfrmProject then
|
||||
Continue;
|
||||
|
||||
if not frmKeymanDeveloper.ChildWindows[i].CloseQuery then
|
||||
Exit(False);
|
||||
end;
|
||||
|
||||
for i := 0 to frmKeymanDeveloper.ChildWindows.Count - 1 do
|
||||
begin
|
||||
if frmKeymanDeveloper.ChildWindows[i] is TfrmProject then
|
||||
Continue;
|
||||
|
||||
frmKeymanDeveloper.ChildWindows[i].Visible := False;
|
||||
frmKeymanDeveloper.ChildWindows[i].Parent := nil;
|
||||
frmKeymanDeveloper.ChildWindows[i].Release;
|
||||
end;
|
||||
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
|
|
|||
|
|
@ -301,7 +301,7 @@ inherited frmKeymanDeveloper: TfrmKeymanDeveloper
|
|||
Left = 304
|
||||
Top = 236
|
||||
Bitmap = {
|
||||
494C01010A000E00FC0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C01010A000E00000110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
0000000000003600000028000000400000003000000001002000000000000030
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
|
|
@ -710,7 +710,7 @@ inherited frmKeymanDeveloper: TfrmKeymanDeveloper
|
|||
Left = 236
|
||||
Top = 236
|
||||
Bitmap = {
|
||||
494C01013B004000FC0010001000C0C0C000FF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C01013B004000000110001000C0C0C000FF10FFFFFFFFFFFFFFFF424D3600
|
||||
000000000000360000002800000040000000F0000000010020000000000000F0
|
||||
000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0
|
||||
C000C0C0C000C6C6C600F7730000CE5A0000CE5A0000F7730000C6C6C600C0C0
|
||||
|
|
@ -2922,6 +2922,9 @@ inherited frmKeymanDeveloper: TfrmKeymanDeveloper
|
|||
object SaveProjectAs1: TMenuItem
|
||||
Action = modActionsMain.actProjectSaveAs
|
||||
end
|
||||
object CloseProject1: TMenuItem
|
||||
Action = modActionsMain.actProjectClose
|
||||
end
|
||||
object N25: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -268,6 +268,7 @@ type
|
|||
ReloadasUTF161: TMenuItem;
|
||||
DebugTests1: TMenuItem;
|
||||
CrashTest1: TMenuItem;
|
||||
CloseProject1: TMenuItem;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure mnuFileClick(Sender: TObject);
|
||||
|
|
@ -580,7 +581,7 @@ begin
|
|||
FChildWindows[i].Release; // I2595, probably not necessary
|
||||
end;
|
||||
|
||||
if Assigned(FGlobalProject) then
|
||||
if IsGlobalProjectUIReady then
|
||||
with TRegistryErrorControlled.Create do // I2890
|
||||
try
|
||||
if FGlobalProject.Untitled
|
||||
|
|
@ -1178,6 +1179,12 @@ function TfrmKeymanDeveloper.OpenEditor(FFileName: string; frmClass: TfrmTikeEdi
|
|||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
if not IsGlobalProjectUIReady then
|
||||
begin
|
||||
// This can happen if we get a file opened via Explorer.
|
||||
NewGlobalProjectUI(ptKeyboard);
|
||||
end;
|
||||
|
||||
for i := 0 to FChildWindows.Count - 1 do
|
||||
if FChildWindows[i] is TfrmTikeEditor then
|
||||
with FChildWindows[i] as TfrmTikeEditor do
|
||||
|
|
@ -1236,7 +1243,7 @@ procedure TfrmKeymanDeveloper.AddMRU(FileName: string);
|
|||
begin
|
||||
// Add the filename to the top of the MRU.
|
||||
|
||||
if FileName = '' then Exit;
|
||||
if (FileName = '') or not IsGlobalProjectUIReady then Exit;
|
||||
|
||||
if LowerCase(ExtractFileExt(FileName)) <> '.kpj' then
|
||||
// Don't add project files to project MRU
|
||||
|
|
@ -1251,13 +1258,16 @@ begin
|
|||
for i := 0 to mnuFileRecent.Count - 1 do
|
||||
mnuFileRecent.Items[0].Free;
|
||||
|
||||
for i := 0 to FGlobalProject.MRU.FileCount - 1 do
|
||||
if IsGlobalProjectUIReady then
|
||||
begin
|
||||
m := TMenuItem.Create(Self);
|
||||
m.Caption := '&'+IntToStr(i+1)+' '+FGlobalProject.MRU.EllipsisFile(i);
|
||||
m.Hint := FGlobalProject.MRU.Files[i];
|
||||
m.OnClick := mnuFileRecentFileClick;
|
||||
mnuFileRecent.Add(m);
|
||||
for i := 0 to FGlobalProject.MRU.FileCount - 1 do
|
||||
begin
|
||||
m := TMenuItem.Create(Self);
|
||||
m.Caption := '&'+IntToStr(i+1)+' '+FGlobalProject.MRU.EllipsisFile(i);
|
||||
m.Hint := FGlobalProject.MRU.Files[i];
|
||||
m.OnClick := mnuFileRecentFileClick;
|
||||
mnuFileRecent.Add(m);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -1439,7 +1449,9 @@ end;
|
|||
|
||||
procedure TfrmKeymanDeveloper.UpdateCaption;
|
||||
begin
|
||||
if FGlobalProject.Untitled
|
||||
if not IsGlobalProjectUIReady then
|
||||
Caption := 'Keyman Developer'
|
||||
else if FGlobalProject.Untitled
|
||||
then Caption := '(Untitled project) - Keyman Developer'
|
||||
else Caption := ChangeFileExt(ExtractFileName(FGlobalProject.FileName), '') + ' - Keyman Developer';
|
||||
|
||||
|
|
|
|||
|
|
@ -96,7 +96,8 @@ uses
|
|||
dmActionsMain,
|
||||
Keyman.Developer.System.Project.Project,
|
||||
Keyman.Developer.System.Project.ProjectFile,
|
||||
Keyman.Developer.UI.Project.ProjectFileUI;
|
||||
Keyman.Developer.UI.Project.ProjectFileUI,
|
||||
Keyman.Developer.UI.Project.ProjectUI;
|
||||
|
||||
{$R *.DFM}
|
||||
|
||||
|
|
@ -145,6 +146,9 @@ var
|
|||
FFilename: string;
|
||||
line: Integer;
|
||||
begin
|
||||
if not IsGlobalProjectUIReady then
|
||||
Exit;
|
||||
|
||||
line := SelLine; if line < 0 then Exit;
|
||||
|
||||
SelLine := line;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ function GetGlobalProjectUI: TProjectUI;
|
|||
function LoadGlobalProjectUI(pt: TProjectType; AFilename: string; ALoadPersistedUntitledProject: Boolean = False): TProjectUI;
|
||||
function NewGlobalProjectUI(pt: TProjectType): TProjectUI;
|
||||
procedure FreeGlobalProjectUI;
|
||||
function IsGlobalProjectUIReady: Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
|
|
@ -41,6 +42,11 @@ begin
|
|||
Result := FGlobalProject as TProjectUI;
|
||||
end;
|
||||
|
||||
function IsGlobalProjectUIReady: Boolean;
|
||||
begin
|
||||
Result := Assigned(FGlobalProject);
|
||||
end;
|
||||
|
||||
procedure FreeGlobalProjectUI;
|
||||
begin
|
||||
FreeAndNil(FGlobalProject);
|
||||
|
|
|
|||
|
|
@ -87,6 +87,8 @@ type
|
|||
function DoNavigate(URL: string): Boolean;
|
||||
procedure ClearMessages;
|
||||
function ShouldHandleNavigation(URL: string): Boolean;
|
||||
procedure WebCommandProject(Command: WideString; Params: TStringList);
|
||||
procedure WebCommandWelcome(Command: WideString; Params: TStringList);
|
||||
protected
|
||||
function GetHelpTopic: string; override;
|
||||
public
|
||||
|
|
@ -175,8 +177,12 @@ begin
|
|||
inherited;
|
||||
|
||||
FNextCommandParams := TStringList.Create;
|
||||
GetGlobalProjectUI.OnRefresh := ProjectRefresh; // I4687
|
||||
GetGlobalProjectUI.OnRefreshCaption := ProjectRefreshCaption; // I4687
|
||||
|
||||
if IsGlobalProjectUIReady then
|
||||
begin
|
||||
GetGlobalProjectUI.OnRefresh := ProjectRefresh; // I4687
|
||||
GetGlobalProjectUI.OnRefreshCaption := ProjectRefreshCaption; // I4687
|
||||
end;
|
||||
|
||||
cef := TframeCEFHost.Create(Self);
|
||||
cef.Parent := Self;
|
||||
|
|
@ -189,12 +195,17 @@ end;
|
|||
|
||||
procedure TfrmProject.RefreshHTML;
|
||||
begin
|
||||
if GetGlobalProjectUI.Refreshing then // I4687
|
||||
tmrRefresh.Enabled := True
|
||||
else
|
||||
if IsGlobalProjectUIReady then
|
||||
begin
|
||||
cef.Navigate(modWebHttpServer.GetAppURL('project/?path='+URLEncode(GetGlobalProjectUI.FileName)));
|
||||
end;
|
||||
if GetGlobalProjectUI.Refreshing then // I4687
|
||||
tmrRefresh.Enabled := True
|
||||
else
|
||||
begin
|
||||
cef.Navigate(modWebHttpServer.GetAppURL('project/?path='+URLEncode(GetGlobalProjectUI.FileName)));
|
||||
end;
|
||||
end
|
||||
else
|
||||
cef.Navigate(modWebHttpServer.GetAppURL('project/welcome'));
|
||||
RefreshCaption;
|
||||
end;
|
||||
|
||||
|
|
@ -214,8 +225,16 @@ procedure TfrmProject.RefreshCaption;
|
|||
var
|
||||
s: string;
|
||||
begin
|
||||
Hint := FGlobalProject.FileName;
|
||||
s := GetGlobalProjectUI.DisplayFileName; // I4687
|
||||
if IsGlobalProjectUIReady then
|
||||
begin
|
||||
Hint := FGlobalProject.FileName;
|
||||
s := GetGlobalProjectUI.DisplayFileName; // I4687
|
||||
end
|
||||
else
|
||||
begin
|
||||
Hint := 'Welcome';
|
||||
s := 'Welcome';
|
||||
end;
|
||||
Caption := s;
|
||||
end;
|
||||
|
||||
|
|
@ -227,7 +246,9 @@ end;
|
|||
|
||||
procedure TfrmProject.SetGlobalProject;
|
||||
begin
|
||||
if not Assigned(GetGlobalProjectUI.OnRefresh) then // I4687
|
||||
if not IsGlobalProjectUIReady then
|
||||
ProjectRefresh(nil)
|
||||
else if not Assigned(GetGlobalProjectUI.OnRefresh) then // I4687
|
||||
begin
|
||||
GetGlobalProjectUI.OnRefresh := ProjectRefresh; // I4687
|
||||
GetGlobalProjectUI.OnRefreshCaption := ProjectRefreshCaption; // I4687
|
||||
|
|
@ -240,7 +261,7 @@ end;
|
|||
procedure TfrmProject.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
inherited;
|
||||
if GetGlobalProjectUI <> nil then
|
||||
if IsGlobalProjectUIReady then
|
||||
begin
|
||||
GetGlobalProjectUI.OnRefresh := nil; // I4687
|
||||
GetGlobalProjectUI.OnRefreshCaption := nil; // I4687
|
||||
|
|
@ -327,6 +348,18 @@ begin
|
|||
end;
|
||||
|
||||
procedure TfrmProject.WebCommand(Command: WideString; Params: TStringList);
|
||||
begin
|
||||
if not IsGlobalProjectUIReady
|
||||
then WebCommandWelcome(Command, Params)
|
||||
else WebCommandProject(Command, Params);
|
||||
end;
|
||||
|
||||
procedure TfrmProject.WebCommandWelcome(Command: WideString; Params: TStringList);
|
||||
begin
|
||||
// TODO
|
||||
end;
|
||||
|
||||
procedure TfrmProject.WebCommandProject(Command: WideString; Params: TStringList);
|
||||
function FileTypeFromParamType: TKMFileType;
|
||||
begin
|
||||
if Params.Values['type'] = 'keyboard' then Result := ftKeymanSource
|
||||
|
|
@ -365,6 +398,7 @@ var
|
|||
begin
|
||||
pf := nil;
|
||||
|
||||
|
||||
if Command = 'fileaddnew' then
|
||||
begin
|
||||
{ create a new file, add it to the project }
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue