Index: oup/rewrite/Tools/Preview.dfm
===================================================================
--- oup/rewrite/Tools/Preview.dfm	(revision 97)
+++ oup/rewrite/Tools/Preview.dfm	(revision 101)
@@ -1,4 +1,7 @@
 inherited Form_Preview: TForm_Preview
   Caption = 'Preview'
+  OnCreate = FormCreate
+  ExplicitWidth = 500
+  ExplicitHeight = 450
   PixelsPerInch = 96
   TextHeight = 13
Index: oup/rewrite/Tools/Preview.pas
===================================================================
--- oup/rewrite/Tools/Preview.pas	(revision 97)
+++ oup/rewrite/Tools/Preview.pas	(revision 101)
@@ -84,17 +84,12 @@
 procedure TForm_Preview.LoadImage(fileid, index: Integer);
 var
-  Data:      TByteData;
   memstream: TMemoryStream;
   OniImage:  TOniImage;
-
 begin
   OniImage := TOniImage.Create;
   OniImage.Load(ConnectionID, fileid);
-  OniImage.GetAsBMP(Data);
+  memstream := TMemoryStream.Create;
+  OniImage.GetAsBMP(TStream(memstream));
   OniImage.Free;
-
-  memstream := TMemoryStream.Create;
-  memstream.Write(Data[0], Length(Data));
-  memstream.Seek(0, soFromBeginning);
   bitmaps[index].LoadFromStream(memstream);
   memstream.Free;
Index: oup/rewrite/Tools/Template.dfm
===================================================================
--- oup/rewrite/Tools/Template.dfm	(revision 97)
+++ oup/rewrite/Tools/Template.dfm	(revision 101)
@@ -19,5 +19,4 @@
   OnActivate = FormActivate
   OnClose = FormClose
-  OnResize = FormResize
   PixelsPerInch = 96
   TextHeight = 13
@@ -247,5 +246,5 @@
         Font.Color = clWindowText
         Font.Height = -11
-        Font.Name = 'Tahoma'
+        Font.Name = 'Courier'
         Font.Style = []
         ItemHeight = 13
Index: oup/rewrite/Tools/Template.pas
===================================================================
--- oup/rewrite/Tools/Template.pas	(revision 97)
+++ oup/rewrite/Tools/Template.pas	(revision 101)
@@ -54,5 +54,4 @@
       Shift: TShiftState; X, Y: Integer);
 
-    procedure FormResize(Sender: TObject);
     procedure FormClose(Sender: TObject; var Action: TCloseAction);
     procedure popup_importClick(Sender: TObject);
@@ -220,22 +219,40 @@
   fs: TFileStream;
 begin
-  id := ConManager.Connection[FConnectionID].ExtractFileIDOfName(filelist.Items.Strings[filelist.ItemIndex]);
-  finfo := ConManager.Connection[FConnectionID].GetFileInfo(id);
-
-  importd.Filter := 'Files of matching extension (*.' + finfo.Extension + ')|*.' +
-        finfo.Extension + '|All files|*.*';
-  if importd.Execute then
-  begin
-    fs := TFileStream.Create(importd.FileName, fmOpenRead);
-    if fs.Size <> finfo.Size then
-      ShowMessage('Can''t import ' + ExtractFilename(importd.FileName) +
-        ', file has to have same size as file in .dat.' + CrLf +
-        'Size of file in .dat: ' + FormatFileSize(finfo.Size) + CrLf +
-        'Size of chosen file: ' + FormatFileSize(fs.Size))
-    else begin
+  if CR_EditDat in ConManager.Connection[FConnectionID].ChangeRights then
+  begin
+    id := ConManager.Connection[FConnectionID].ExtractFileIDOfName(filelist.Items.Strings[filelist.ItemIndex]);
+    finfo := ConManager.Connection[FConnectionID].GetFileInfo(id);
+
+    importd.Filter := 'Files of matching extension (*.' + finfo.Extension + ')|*.' +
+          finfo.Extension + '|All files|*.*';
+    if importd.Execute then
+    begin
+      fs := TFileStream.Create(importd.FileName, fmOpenRead);
+      if fs.Size <> finfo.Size then
+      begin
+        if not (CR_ResizeDat in ConManager.Connection[FConnectionID].ChangeRights) then
+        begin
+          ShowMessage('Can''t import ' + ExtractFilename(importd.FileName) +
+            ', file has to have same size as file in .dat with this backend.' + CrLf +
+            'Size of file in .dat: ' + FormatFileSize(finfo.Size) + CrLf +
+            'Size of chosen file: ' + FormatFileSize(fs.Size));
+          Exit;
+        end else begin
+          if MessageBox(Self.Handle,
+              PChar('File has different size from the file in the .dat.' + CrLf +
+                    'Size of file in .dat: ' + FormatFileSize(finfo.Size) + CrLf +
+                    'Size of chosen file: ' + FormatFileSize(fs.Size) + CrLf +
+                    'Replace anyway?'), PChar('Different size'), MB_YESNO + MB_ICONWARNING) = ID_NO then
+          begin
+            Exit;
+          end;
+        end;
+      end;
       ConManager.Connection[FConnectionID].UpdateDatFile(id, fs);
       Self.listClick(Self);
+      fs.Free;
     end;
-    fs.Free;
+  end else begin
+    ShowMessage('Editing .dat-contents not allowed with this backend.');
   end;
 end;
@@ -449,14 +466,4 @@
 
 
-procedure TForm_ToolTemplate.FormResize(Sender: TObject);
-begin
-  if Self.Width < 300 then
-    Self.Width := 300;
-  if Self.Height < 200 then
-    Self.Height := 200;
-end;
-
-
-
 function TForm_ToolTemplate.GetToolCloseable: Boolean;
 begin
