Ver código fonte

design: css style editor: apply button

mattias 2 anos atrás
pai
commit
d9b55e1bcc

+ 4 - 9
design/fresnel.register.pas

@@ -327,10 +327,10 @@ end;
 procedure TFresnelStylePropertyEditor.Edit;
 var
   TheDialog : TStylePropEditDialog;
-  AString : string;
-  LineEndPos: Integer;
+  AString: String;
 begin
-  AString := GetStrValue;
+  AString := GetStrValue; // read first to get nicer error messages
+
   TheDialog := TStylePropEditDialog.Create(nil);
   try
     TheDialog.Editor := Self;
@@ -338,12 +338,7 @@ begin
     TheDialog.CSSSynEditChange(nil);
     if (TheDialog.ShowModal = mrOK) then
     begin
-      AString := TheDialog.CSSSynEdit.Text;
-      LineEndPos := Length(AString) - Length(LineEnding) + 1;
-      //erase the last lineending if any
-      if Copy(AString, LineEndPos, Length(LineEnding)) = LineEnding then
-        Delete(AString, LineEndPos, Length(LineEnding));
-      SetStrValue(AString);
+      TheDialog.Apply;
     end;
   finally
     TheDialog.Free;

+ 26 - 5
design/fresnel.stylepropedit.lfm

@@ -545,11 +545,13 @@ object StylePropEditDialog: TStylePropEditDialog
     object SortButton: TButton
       AnchorSideLeft.Control = CSSSynEdit
       AnchorSideLeft.Side = asrBottom
+      AnchorSideTop.Control = ApplyButton
+      AnchorSideTop.Side = asrBottom
       AnchorSideRight.Control = TextGroupBox
       AnchorSideRight.Side = asrBottom
       Left = 350
       Height = 31
-      Top = 6
+      Top = 43
       Width = 75
       Anchors = [akTop, akRight]
       AutoSize = True
@@ -560,14 +562,15 @@ object StylePropEditDialog: TStylePropEditDialog
       TabOrder = 1
     end
     object ClearButton: TButton
-      AnchorSideLeft.Control = SortButton
+      AnchorSideLeft.Control = CSSSynEdit
+      AnchorSideLeft.Side = asrBottom
       AnchorSideTop.Control = SortButton
       AnchorSideTop.Side = asrBottom
       AnchorSideRight.Control = SortButton
       AnchorSideRight.Side = asrBottom
       Left = 350
       Height = 31
-      Top = 43
+      Top = 80
       Width = 75
       Anchors = [akTop, akLeft, akRight]
       AutoSize = True
@@ -576,14 +579,15 @@ object StylePropEditDialog: TStylePropEditDialog
       TabOrder = 2
     end
     object SaveButton: TButton
-      AnchorSideLeft.Control = SortButton
+      AnchorSideLeft.Control = CSSSynEdit
+      AnchorSideLeft.Side = asrBottom
       AnchorSideTop.Control = ClearButton
       AnchorSideTop.Side = asrBottom
       AnchorSideRight.Control = SortButton
       AnchorSideRight.Side = asrBottom
       Left = 350
       Height = 31
-      Top = 80
+      Top = 117
       Width = 75
       Anchors = [akTop, akLeft, akRight]
       AutoSize = True
@@ -592,6 +596,23 @@ object StylePropEditDialog: TStylePropEditDialog
       OnClick = SaveButtonClick
       TabOrder = 3
     end
+    object ApplyButton: TButton
+      AnchorSideLeft.Control = CSSSynEdit
+      AnchorSideLeft.Side = asrBottom
+      AnchorSideTop.Control = TextGroupBox
+      AnchorSideRight.Control = SortButton
+      AnchorSideRight.Side = asrBottom
+      Left = 350
+      Height = 31
+      Top = 6
+      Width = 75
+      Anchors = [akTop, akLeft, akRight]
+      AutoSize = True
+      BorderSpacing.Top = 6
+      Caption = 'Apply'
+      OnClick = ApplyButtonClick
+      TabOrder = 4
+    end
   end
   object BtnPanel: TButtonPanel
     Left = 6

+ 21 - 1
design/fresnel.stylepropedit.pas

@@ -17,12 +17,14 @@ type
     BtnPanel: TButtonPanel;
     ClearButton: TButton;
     SaveButton: TButton;
+    ApplyButton: TButton;
     SaveDialog1: TSaveDialog;
     StatusLabel: TLabel;
     SortButton: TButton;
     TextGroupBox: TGroupBox;
     CSSSynEdit: TSynEdit;
     SynCssSyn1: TSynCssSyn;
+    procedure ApplyButtonClick(Sender: TObject);
     procedure ClearButtonClick(Sender: TObject);
     procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
     procedure FormCreate(Sender: TObject);
@@ -30,9 +32,9 @@ type
     procedure SaveButtonClick(Sender: TObject);
     procedure SortButtonClick(Sender: TObject);
   private
-
   public
     Editor: TStringPropertyEditor;
+    procedure Apply; virtual;
   end;
 
 var
@@ -49,6 +51,11 @@ begin
   CSSSynEdit.Clear;
 end;
 
+procedure TStylePropEditDialog.ApplyButtonClick(Sender: TObject);
+begin
+  Apply;
+end;
+
 procedure TStylePropEditDialog.FormClose(Sender: TObject;
   var CloseAction: TCloseAction);
 begin
@@ -113,5 +120,18 @@ begin
     CSSSynEdit.Lines.Text := NewSortedText;
 end;
 
+procedure TStylePropEditDialog.Apply;
+var
+  AString: String;
+  LineEndPos: SizeInt;
+begin
+  AString := CSSSynEdit.Text;
+  LineEndPos := Length(AString) - Length(LineEnding) + 1;
+  // erase the last lineending if any
+  if Copy(AString, LineEndPos, Length(LineEnding)) = LineEnding then
+    Delete(AString, LineEndPos, Length(LineEnding));
+  Editor.SetStrValue(AString);
+end;
+
 end.