Pārlūkot izejas kodu

Buttons to select all images and to export selected images

Source commit: 6a581c7172872f8d3a1afc8903138962992c65a9
Martin Prikryl 3 gadi atpakaļ
vecāks
revīzija
db2aff6147

+ 27 - 1
source/packages/png/PngImageListEditor.dfm

@@ -220,7 +220,7 @@ object PngImageListEditorDlg: TPngImageListEditorDlg
       Left = 193
       Top = 173
       Width = 75
-      Height = 178
+      Height = 260
       Anchors = [akLeft]
       BevelOuter = bvNone
       TabOrder = 2
@@ -452,6 +452,32 @@ object PngImageListEditorDlg: TPngImageListEditorDlg
           01C92B1C3633E7F2D20000000049454E44AE426082}
         PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
       end
+      object btnExport: TPngBitBtn
+        Left = 0
+        Top = 184
+        Width = 75
+        Height = 25
+        Caption = '&Export'
+        Layout = blGlyphTop
+        Margin = 6
+        Spacing = 3
+        TabOrder = 6
+        OnClick = btnExportClick
+        PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
+      end
+      object btnSelectAll: TPngBitBtn
+        Left = 0
+        Top = 213
+        Width = 75
+        Height = 25
+        Caption = '&Select All'
+        Layout = blGlyphTop
+        Margin = 6
+        Spacing = 3
+        TabOrder = 7
+        OnClick = btnSelectAllClick
+        PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
+      end
     end
   end
   object pnlButtons: TPanel

+ 35 - 1
source/packages/png/PngImageListEditor.pas

@@ -43,6 +43,8 @@ type
     btnOK: TPngBitBtn;
     btnCancel: TPngBitBtn;
     chkUseFilenames: TCheckBox;
+    btnExport: TPngBitBtn;
+    btnSelectAll: TPngBitBtn;
     procedure btnAddClick(Sender: TObject);
     procedure btnClearClick(Sender: TObject);
     procedure btnDeleteClick(Sender: TObject);
@@ -72,6 +74,8 @@ type
     procedure lbxImagesMeasureItem(Control: TWinControl; Index: Integer; var Height: Integer);
     procedure lbxImagesMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
     procedure lbxImagesStartDrag(Sender: TObject; var DragObject: TDragObject);
+    procedure btnExportClick(Sender: TObject);
+    procedure btnSelectAllClick(Sender: TObject);
   private
     FDraggingIndex: Integer;
     FImageHeight: Integer;
@@ -98,8 +102,10 @@ var
 
 implementation
 
+{$WARN UNIT_PLATFORM OFF}
 uses
-  SysUtils, Math;
+  SysUtils, Math, FileCtrl, IOUtils;
+{$WARN UNIT_PLATFORM ON}
 
 resourcestring
   SAreYouSureYouWantToDelete = 'Are you sure you want to delete %s?';
@@ -670,6 +676,26 @@ begin
   lbxImagesClick(nil);
 end;
 
+procedure TPngImageListEditorDlg.btnExportClick(Sender: TObject);
+var
+  Directory, FileName: string;
+  Item: TPngImageCollectionItem;
+  I: Integer;
+begin
+  if SelectDirectory('Select directory to save exported images to', '', Directory, [sdNewFolder, sdShowEdit, sdNewUI, sdValidateDir]) then
+  begin
+    for I := 0 to lbxImages.Items.Count - 1 do
+    begin
+      if lbxImages.Selected[I] then
+      begin
+        Item := Images.Items[I];
+        FileName := TPath.Combine(Directory, Item.Name + '.png');
+        Item.PngImage.SaveToFile(FileName);
+      end;
+    end;
+  end;
+end;
+
 procedure TPngImageListEditorDlg.btnReplaceClick(Sender: TObject);
 var
   Item: TPngImageCollectionItem;
@@ -712,6 +738,12 @@ begin
     end;
 end;
 
+procedure TPngImageListEditorDlg.btnSelectAllClick(Sender: TObject);
+begin
+  lbxImages.SelectAll;
+  lbxImagesClick(nil);
+end;
+
 procedure TPngImageListEditorDlg.btnUpClick(Sender: TObject);
 var
   I: Integer;
@@ -991,6 +1023,8 @@ begin
     btnClear.Enabled := Items.Count > 0;
     btnUp.Enabled := (SelCount > 0) and (FirstSelected > 0);
     btnDown.Enabled := (SelCount > 0) and (LastSelected < Items.Count - 1);
+    btnExport.Enabled := (SelCount > 0);
+    btnSelectAll.Enabled := (SelCount > 0) and (SelCount < Items.Count);
     lblName.Enabled := SelCount = 1;
     edtName.Enabled := SelCount = 1;
     lblBackgroundColor.Enabled := SelCount > 0;