Skip to content

Commit 6c918e6

Browse files
committed
fix(developer): Option to disable prompting for project upgrade
Fixes #10146. Some developers may wish to stick with kpj-1.0 for now, and the prompt to upgrade would annoying because it cannot be hidden. This resolves that. Note that I haven't at this point renamed UrlRenderer.pas, although it may be worth considering in the future.
1 parent ccbb00d commit 6c918e6

8 files changed

Lines changed: 44 additions & 8 deletions

File tree

common/windows/delphi/general/RegistryKeys.pas

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ interface
374374
SRegValue_IDEOptDebuggerAutoResetBeforeCompiling = 'debugger auto reset before compilng'; // CU
375375
SRegValue_IDEOptAutoSaveBeforeCompiling = 'auto save before compiling'; // CU
376376
SRegValue_IDEOptOSKAutoSaveBeforeImporting = 'osk auto save before importing'; // CU
377+
SRegValue_IDEOptPromptToUpgradeProjects = 'prompt to upgrade projects'; // CU
377378

378379
// Note: keeping 'web host port' reg value name to ensure settings maintained
379380
// from version 14.0 and earlier of Keyman Developer. Other values are

developer/src/tike/dialogs/UfrmOptions.dfm

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ inherited frmOptions: TfrmOptions
2929
Top = 185
3030
Width = 125
3131
Height = 25
32-
Caption = '&Proxy Settings...'
32+
Caption = 'Prox&y Settings...'
3333
TabOrder = 4
3434
OnClick = cmdProxySettingsClick
3535
end
@@ -38,7 +38,7 @@ inherited frmOptions: TfrmOptions
3838
Top = 47
3939
Width = 401
4040
Height = 45
41-
Caption = '&External Editor Path'
41+
Caption = 'E&xternal Editor Path'
4242
TabOrder = 1
4343
object editExternalEditorPath: TEdit
4444
Left = 8
@@ -61,7 +61,7 @@ inherited frmOptions: TfrmOptions
6161
Top = 216
6262
Width = 125
6363
Height = 25
64-
Caption = 'S&MTP Settings...'
64+
Caption = '&SMTP Settings...'
6565
TabOrder = 5
6666
OnClick = cmdSMTPSettingsClick
6767
end
@@ -101,7 +101,7 @@ inherited frmOptions: TfrmOptions
101101
Top = 16
102102
Width = 69
103103
Height = 21
104-
Caption = '&Browse...'
104+
Caption = 'Bro&wse...'
105105
TabOrder = 1
106106
OnClick = cmdBrowseDefaultProjectPathClick
107107
end
@@ -119,7 +119,7 @@ inherited frmOptions: TfrmOptions
119119
Top = 181
120120
Width = 218
121121
Height = 17
122-
Caption = '&Automatically save before importing OSK'
122+
Caption = 'Au&tomatically save before importing OSK'
123123
TabOrder = 7
124124
end
125125
object gbPrivacy: TGroupBox
@@ -128,13 +128,13 @@ inherited frmOptions: TfrmOptions
128128
Width = 401
129129
Height = 73
130130
Caption = 'Privacy'
131-
TabOrder = 8
131+
TabOrder = 9
132132
object chkReportUsage: TCheckBox
133133
Left = 8
134134
Top = 44
135135
Width = 311
136136
Height = 17
137-
Caption = '&Share anonymous usage statistics with keyman.com'
137+
Caption = 'Share anonymous &usage statistics with keyman.com'
138138
TabOrder = 1
139139
end
140140
object chkReportErrors: TCheckBox
@@ -146,6 +146,14 @@ inherited frmOptions: TfrmOptions
146146
TabOrder = 0
147147
end
148148
end
149+
object chkPromptToUpgradeProjects: TCheckBox
150+
Left = 151
151+
Top = 204
152+
Width = 218
153+
Height = 17
154+
Caption = '&Prompt to upgrade projects to 17.0 format'
155+
TabOrder = 8
156+
end
149157
end
150158
object tabEditor: TTabSheet
151159
Caption = 'Editor'

developer/src/tike/dialogs/UfrmOptions.pas

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ TfrmOptions = class(TTikeForm)
104104
gbServer: TGroupBox;
105105
chkListLocalURLs: TCheckBox;
106106
cmdConfigureServer: TButton;
107+
chkPromptToUpgradeProjects: TCheckBox;
107108
procedure FormCreate(Sender: TObject);
108109
procedure cmdOKClick(Sender: TObject);
109110
procedure cmdDefaultFontClick(Sender: TObject);
@@ -192,6 +193,7 @@ procedure TfrmOptions.FormCreate(Sender: TObject);
192193
chkDebuggerAutoResetBeforeCompiling.Checked := DebuggerAutoResetBeforeCompiling;
193194
chkAutoSaveBeforeCompiling.Checked := AutoSaveBeforeCompiling;
194195
chkOSKAutoSaveBeforeImporting.Checked := OSKAutoSaveBeforeImporting;
196+
chkPromptToUpgradeProjects.Checked := PromptToUpgradeProjects;
195197

196198
chkCharMapAutoLookup.Checked := CharMapAutoLookup;
197199
chkCharMapDisableDatabaseLookups.Checked := CharMapDisableDatabaseLookups;
@@ -291,6 +293,7 @@ procedure TfrmOptions.cmdOKClick(Sender: TObject);
291293
DebuggerAutoResetBeforeCompiling := chkDebuggerAutoResetBeforeCompiling.Checked;
292294
AutoSaveBeforeCompiling := chkAutoSaveBeforeCompiling.Checked;
293295
OSKAutoSaveBeforeImporting := chkOSKAutoSaveBeforeImporting.Checked;
296+
PromptToUpgradeProjects := chkPromptToUpgradeProjects.Checked;
294297

295298
ServerUseLocalAddresses := chkListLocalURLs.Checked;
296299

developer/src/tike/main/KeymanDeveloperOptions.pas

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ TKeymanDeveloperOptions = class
6969
FServerNgrokToken: string;
7070
FServerNgrokRegion: string;
7171
FServerKeepAlive: Boolean;
72+
FPromptToUpgradeProjects: Boolean;
7273
procedure CloseRegistry;
7374
procedure OpenRegistry;
7475
function regReadString(const nm, def: string): string;
@@ -102,6 +103,7 @@ TKeymanDeveloperOptions = class
102103
property DebuggerAutoResetBeforeCompiling: Boolean read FDebuggerAutoResetBeforeCompiling write FDebuggerAutoResetBeforeCompiling;
103104
property AutoSaveBeforeCompiling: Boolean read FAutoSaveBeforeCompiling write FAutoSaveBeforeCompiling;
104105
property OSKAutoSaveBeforeImporting: Boolean read FOSKAutoSaveBeforeImporting write FOSKAutoSaveBeforeImporting;
106+
property PromptToUpgradeProjects: Boolean read FPromptToUpgradeProjects write FPromptToUpgradeProjects;
105107

106108
property ReportErrors: Boolean read FReportErrors write FReportErrors;
107109
property ReportUsage: Boolean read FReportUsage write FReportUsage;
@@ -211,6 +213,7 @@ procedure TKeymanDeveloperOptions.Read;
211213
FDebuggerAutoResetBeforeCompiling := regReadBool(SRegValue_IDEOptDebuggerAutoResetBeforeCompiling, False);
212214
FAutoSaveBeforeCompiling := regReadBool(SRegValue_IDEOptAutoSaveBeforeCompiling, False);
213215
FOSKAutoSaveBeforeImporting := regReadBool(SRegValue_IDEOptOSKAutoSaveBeforeImporting, False);
216+
FPromptToUpgradeProjects := regReadBool(SRegValue_IDEOptPromptToUpgradeProjects, True);
214217

215218
FServerDefaultPort := regReadInt(SRegValue_IDEOptServerPort, 8008);
216219
FServerKeepAlive := regReadBool(SRegValue_IDEOptServerKeepAlive, False);
@@ -270,6 +273,7 @@ procedure TKeymanDeveloperOptions.Write;
270273
regWriteBool(SRegValue_IDEOptDebuggerAutoResetBeforeCompiling, FDebuggerAutoResetBeforeCompiling);
271274
regWriteBool(SRegValue_IDEOptAutoSaveBeforeCompiling, FAutoSaveBeforeCompiling);
272275
regWriteBool(SRegValue_IDEOptOSKAutoSaveBeforeImporting, FOSKAutoSaveBeforeImporting);
276+
regWriteBool(SRegValue_IDEOptPromptToUpgradeProjects, FPromptToUpgradeProjects);
273277

274278
regWriteInt(SRegValue_IDEOptServerPort, FServerDefaultPort);
275279
regWriteBool(SRegValue_IDEOptServerKeepAlive, FServerKeepAlive);

developer/src/tike/project/Keyman.Developer.System.Project.ProjectFile.pas

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ function TProject.Render: WideString;
922922
//
923923

924924
TProjectUrlRenderer.AddUrls(doc.documentElement);
925+
TProjectUrlRenderer.AddProcessState(doc.documentElement);
925926

926927
xsl := MSXMLDOMDocumentFactory.CreateDOMDocument;
927928
try

developer/src/tike/project/Keyman.Developer.System.Project.UrlRenderer.pas

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,26 @@ interface
88
type
99
TProjectUrlRenderer = class
1010
class procedure AddUrls(root: IXMLDomNode);
11+
class procedure AddProcessState(root: IXMLDomNode);
1112
end;
1213

1314
implementation
1415

1516
uses
17+
KeymanDeveloperOptions,
1618
Upload_Settings;
1719

1820
{ TProjectUrlRenderer }
1921

22+
class procedure TProjectUrlRenderer.AddProcessState(root: IXMLDomNode);
23+
var
24+
node: IXMLDomElement;
25+
begin
26+
node := root.ownerDocument.createElement('DeveloperState');
27+
node.setAttribute('promptToUpgradeProjects', FKeymanDeveloperOptions.PromptToUpgradeProjects);
28+
root.appendChild(node);
29+
end;
30+
2031
class procedure TProjectUrlRenderer.AddUrls(root: IXMLDomNode);
2132
var
2233
node: IXMLDomNode;

developer/src/tike/project/Keyman.Developer.UI.Project.UfrmProject.pas

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ TfrmProject = class(TfrmTikeChild) // I2721
9494
procedure SetGlobalProject;
9595
procedure StartClose; override;
9696
procedure CompileAll;
97+
procedure RefreshOptions; override;
9798
end;
9899

99100
implementation
@@ -202,6 +203,12 @@ procedure TfrmProject.RefreshHTML;
202203
RefreshCaption;
203204
end;
204205

206+
procedure TfrmProject.RefreshOptions;
207+
begin
208+
inherited;
209+
ProjectRefresh(nil);
210+
end;
211+
205212
procedure TfrmProject.ProjectRefresh(Sender: TObject);
206213
begin
207214
if frmKeymanDeveloper.ActiveChild <> Self

developer/src/tike/xml/project/elements.xsl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,8 @@
278278
<!-- Upgrades -->
279279

280280
<xsl:template name="upgrade-warning">
281-
<xsl:if test="KeymanDeveloperProject/Options/Version != '2.0' or not(KeymanDeveloperProject/Options/Version)">
281+
<xsl:if test="KeymanDeveloperProject/DeveloperState/@promptToUpgradeProjects != '0' and
282+
(KeymanDeveloperProject/Options/Version != '2.0' or not(KeymanDeveloperProject/Options/Version))">
282283
<div class="upgrade-warning">
283284
<p>⚠️ This project file is in an old format. You should upgrade it to the Keyman Developer 17.0 project format.
284285
<xsl:call-template name="button">

0 commit comments

Comments
 (0)