DEADSOFTWARE

Fix typos: promt -> prompt
[d2df-editor.git] / src / editor / f_main.pas
index 2df86ca6f40543ca72fe14c0d0ce5e2d911f3ad1..53bf85da742cf26b936bb5276e2694763f6bc7ea 100644 (file)
@@ -215,6 +215,7 @@ type
     procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure FormResize(Sender: TObject);
     procedure FormWindowStateChange(Sender: TObject);
+    procedure miRecentFileExecute(Sender: TObject);
     procedure miMacRecentClearClick(Sender: TObject);
     procedure miMacZoomClick(Sender: TObject);
     procedure lbTextureListClick(Sender: TObject);
@@ -2557,32 +2558,17 @@ end;
 //Закончились вспомогательные процедуры
 //----------------------------------------
 
-type
-  TRecentHandler = class
-    private
-      FForm: TMainForm;
-      FPath: String;
-    public
-      constructor Create (form: TMainForm; path: String);
-      procedure Execute (Sender: TObject);
-  end;
-
-constructor TRecentHandler.Create (form: TMainForm; path: String);
-begin
-  Assert(form <> nil);
-  FForm := form;
-  FPath := path;
-end;
-
-procedure TRecentHandler.Execute (Sender: TObject);
-  var fn: AnsiString;
+procedure TMainForm.miRecentFileExecute (Sender: TObject);
+var
+  s, fn: AnsiString;
 begin
-  fn := g_ExtractWadName(FPath);
+  s := RecentFiles[(Sender as TMenuItem).Tag];
+  fn := g_ExtractWadName(s);
   if FileExists(fn) then
-    OpenMap(fn, g_ExtractFilePathName(FPath))
+    OpenMap(fn, g_ExtractFilePathName(s))
   else
     Application.MessageBox('', 'File not available anymore', MB_OK);
-//  if Application.MessageBox(PChar(MsgMsgDelRecentPromt), PChar(MsgMsgDelRecent), MB_ICONQUESTION or MB_YESNO) = idYes then
+//  if Application.MessageBox(PChar(MsgMsgDelRecentPrompt), PChar(MsgMsgDelRecent), MB_ICONQUESTION or MB_YESNO) = idYes then
 //  begin
 //    RecentFiles.Delete(n);
 //    RefreshRecentMenu();
@@ -2590,40 +2576,35 @@ begin
 end;
 
 procedure TMainForm.RefillRecentMenu (menu: TMenuItem; start: Integer; fmt: AnsiString);
-  var i: Integer; MI: TMenuItem; cb: TMethod; h: TRecentHandler; s: AnsiString;
+  var i: Integer; MI: TMenuItem; s: AnsiString;
 begin
   Assert(menu <> nil);
   Assert(start >= 0);
   Assert(start <= menu.Count);
 
-  // clear all recent entries from menu
+  // clear all the recent entries from menu
   i := start;
   while i < menu.Count do
   begin
     MI := menu.Items[i];
-    cb := TMethod(MI.OnClick);
-    if cb.Code = @TRecentHandler.Execute then
+    if @MI.OnClick <> @TMainForm.miRecentFileExecute then
+      i += 1
+    else
     begin
-      // this is recent menu entry
-      // remove it and free callback handler
-      h := TRecentHandler(cb.Data);
       menu.Delete(i);
-      MI.Free();
-      h.Free();
-    end
-    else
-      Inc(i);
+      MI.Destroy();
+    end;
   end;
 
   // fill with a new ones
-  for i := 0 to RecentFiles.Count - 1 do
+  for i := 0 to RecentFiles.Count-1 do
   begin
-    s := RecentFiles[i];
-    h := TRecentHandler.Create(self, s);
     MI := TMenuItem.Create(menu);
-    MI.Caption := Format(fmt, [i + 1, g_ExtractWadNameNoPath(s), g_ExtractFilePathName(s)]);
-    MI.OnClick := h.Execute;
-    menu.Insert(start + i, MI);
+    s := RecentFiles[i];
+    MI.Caption := Format(fmt, [i+1, g_ExtractWadNameNoPath(s), g_ExtractFilePathName(s)]);
+    MI.OnClick := miRecentFileExecute;
+    MI.Tag := i;
+    menu.Insert(start + i, MI);  // transfers ownership
   end;
 end;
 
@@ -2645,7 +2626,7 @@ begin
   begin
     // Reconstruct Windows-like recent list
     start := miMenuFile.IndexOf(miWinRecent);
-    if start < 0 then start := miMenuFile.Count else start := start + 1;
+    if start < 0 then start := miMenuFile.Count else start += 1;
     RefillRecentMenu(miMenuFile, start, '%0:d %1:s:%2:s');
     miWinRecent.Enabled := False;
     miWinRecent.Visible := RecentFiles.Count = 0;
@@ -4371,7 +4352,7 @@ end;
 
 procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
 begin
-  CanClose := Application.MessageBox(PChar(MsgMsgExitPromt),
+  CanClose := Application.MessageBox(PChar(MsgMsgExitPrompt),
                          PChar(MsgMsgExit),
                          MB_ICONQUESTION or MB_YESNO or
                          MB_DEFBUTTON1) = idYes;
@@ -4539,7 +4520,7 @@ begin
       end
     end;
 
-    if Key = Ord('V') then
+    if Key = Ord('I') then
     begin // Поворот монстров и областей:
       if (SelectedObjects <> nil) then
       begin
@@ -4910,7 +4891,7 @@ begin
   if OpenedMap = '' then
     Exit;
 
-  if Application.MessageBox(PChar(MsgMsgReopenMapPromt),
+  if Application.MessageBox(PChar(MsgMsgReopenMapPrompt),
   PChar(MsgMenuFileReopen), MB_ICONQUESTION or MB_YESNO) <> idYes then
     Exit;
 
@@ -5540,7 +5521,7 @@ begin
   if i = -1 then
     Exit;
 
-  if Application.MessageBox(PChar(Format(MsgMsgDelTexturePromt,
+  if Application.MessageBox(PChar(Format(MsgMsgDelTexturePrompt,
                                 [SelectedTexture()])),
                 PChar(MsgMsgDelTexture),
                 MB_ICONQUESTION or MB_YESNO or
@@ -5566,7 +5547,7 @@ end;
 
 procedure TMainForm.aNewMapExecute(Sender: TObject);
 begin
-  if Application.MessageBox(PChar(MsgMsgClearMapPromt), PChar(MsgMsgClearMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = mrYes then
+  if Application.MessageBox(PChar(MsgMsgClearMapPrompt), PChar(MsgMsgClearMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = mrYes then
     FullClear();
 end;
 
@@ -5836,8 +5817,8 @@ begin
 
   if h > 0 then
   begin
-    xadj := -pmin.X - Floor((MapOffset.X - 32) / DotStep) * DotStep;
-    yadj := -pmin.Y - Floor((MapOffset.Y - 32) / DotStep) * DotStep;
+    xadj := Floor((-pmin.X - MapOffset.X + 32) / DotStep) * DotStep;
+    yadj := Floor((-pmin.Y - MapOffset.Y + 32) / DotStep) * DotStep;
   end
   else
   begin
@@ -6431,7 +6412,7 @@ begin
     Exit;
 
   MapName := SelectMapForm.lbMapList.Items[SelectMapForm.lbMapList.ItemIndex];
-  if Application.MessageBox(PChar(Format(MsgMsgDeleteMapPromt, [MapName, OpenDialog.FileName])), PChar(MsgMsgDeleteMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) <> mrYes then
+  if Application.MessageBox(PChar(Format(MsgMsgDeleteMapPrompt, [MapName, OpenDialog.FileName])), PChar(MsgMsgDeleteMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) <> mrYes then
     Exit;
 
   g_DeleteResource(FileName, '', MapName, res);
@@ -6442,7 +6423,7 @@ begin
   end;
 
   Application.MessageBox(
-    PChar(Format(MsgMsgMapDeletedPromt, [MapName])),
+    PChar(Format(MsgMsgMapDeletedPrompt, [MapName])),
     PChar(MsgMsgMapDeleted),
     MB_ICONINFORMATION or MB_OK or MB_DEFBUTTON1
   );