From 56577e1b2e5462540e5a27abab3a65085b98313e Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sat, 5 Aug 2023 22:21:05 +0000 Subject: [PATCH] Spready: Update to improved handling of encrypted files introduced in recent fpspreadsheet commits. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8914 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- applications/spready/smain.lfm | 3 ++- applications/spready/smain.pas | 41 ++++++++++++++++++++------------ applications/spready/spready.lpr | 1 - 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/applications/spready/smain.lfm b/applications/spready/smain.lfm index 49cfb44b8..cc71654b9 100644 --- a/applications/spready/smain.lfm +++ b/applications/spready/smain.lfm @@ -8,12 +8,13 @@ object MainForm: TMainForm ClientHeight = 709 ClientWidth = 1120 Menu = MainMenu + OnActivate = FormActivate OnCloseQuery = FormCloseQuery OnCreate = FormCreate OnDropFiles = FormDropFiles OnShow = FormShow ShowHint = True - LCLVersion = '2.3.0.0' + LCLVersion = '3.99.0.0' object WorkbookTabControl: TsWorkbookTabControl Left = 0 Height = 629 diff --git a/applications/spready/smain.pas b/applications/spready/smain.pas index 0f7f98240..94c46e50d 100644 --- a/applications/spready/smain.pas +++ b/applications/spready/smain.pas @@ -8,10 +8,12 @@ uses Classes, SysUtils, FileUtil, mrumanager, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls, ActnList, Menus, StdActns, Buttons, Grids, StdCtrls, types, fpstypes, fpspreadsheet, fpspreadsheetctrls, fpspreadsheetgrid, - fpsActions, fpsAllFormats, fpsSYLK, xlsBIFF34, xlsxml, xlsxooxml_crypto; + fpsActions, {%H-}fpsAllFormats, fpsSYLK, xlsBIFF34, xlsxml, + xlsxooxml_crypto, fpsOpenDocument_crypto; // NOTE: - // In order to use the decrypting xlsx reader put xlsxooxlm_cryto after - // xlsxooxml or fpsAllforamts. + // In order to use the decrypting xlsx and ods readers put + // xlsxooxlm_crypto and fpsOpenDocument_crypto after all other reader/writer + // units. type @@ -520,6 +522,7 @@ type procedure AcZoomMoreExecute(Sender: TObject); procedure EditCut1Execute(Sender: TObject); procedure ColorComboboxAddColors(Sender: TObject); + procedure FormActivate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCreate(Sender: TObject); procedure FormDropFiles(Sender: TObject; const FileNames: array of String); @@ -536,10 +539,10 @@ type procedure WorksheetGridMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); private - { private declarations } FOpenFormats: TsSpreadFormatIDArray; FSaveFormats: TsSpreadFormatIDArray; FMRUMenuManager: TMRUMenuManager; + FActivated: Boolean; procedure LoadFile(const AFileName: String); procedure MRUMenuManagerRecentFile(Sender: TObject; const AFileName: string); procedure SearchClose(Sender: TObject; var CloseAction: TCloseAction); @@ -552,8 +555,6 @@ type procedure ReadFromIni; procedure WriteToIni; public - { public declarations } - procedure BeforeRun; end; var @@ -1217,11 +1218,6 @@ begin AcWorksheetProtection.Checked := WorkbookSource.Worksheet.IsProtected; end; -procedure TMainForm.BeforeRun; -begin - ReadFromIni; -end; - procedure TMainForm.ColorComboboxAddColors(Sender: TObject); begin with TsCellCombobox(Sender) do begin @@ -1279,6 +1275,15 @@ begin end; end; +procedure TMainForm.FormActivate(Sender: TObject); +begin + if not FActivated then + begin + FActivated := true; + ReadFromIni; + end; +end; + procedure TMainForm.EditCut1Execute(Sender: TObject); begin // @@ -1311,14 +1316,15 @@ begin OnRecentFile := @MRUMenuManagerRecentFile; end; - priorityFormatsR[0] := ord(sfOOXML); + // These are the formats used in the FileDialogs + priorityFormatsR[0] := sfidOOXML_crypto; //ord(sfOOXML); priorityFormatsR[1] := ord(sfExcel8); priorityFormatsR[2] := ord(sfExcel5); priorityFormatsR[3] := sfidExcel4; priorityFormatsR[4] := sfidExcel3; priorityFormatsR[5] := ord(sfExcel2); priorityFormatsR[6] := ord(sfExcelXML); - priorityFormatsR[7] := ord(sfOpenDocument); + priorityFormatsR[7] := sfidOpenDocument_crypto; //ord(sfOpenDocument); priorityFormatsR[8] := ord(sfCSV); priorityFormatsR[9] := sfidSYLK; priorityFormatsR[10] := ord(sfHTML); @@ -1336,9 +1342,14 @@ begin AcFileOpen.Dialog.Filter := GetFileFormatFilter('|', ';', faRead, priorityFormatsR, true, true); FOpenFormats := GetSpreadFormats(faRead, priorityFormatsR); - // Use decrypting XLSX format instead of normal XLSX format + (* + // Use decrypting XLSX and ODS formats instead of normal XLSX/ODS formats for i:=0 to High(FOpenFormats) do - if FOpenFormats[i] = ord(sfOOXML) then FOpenFormats[i] := sfidOOXML_Crypto; + case FOpenFormats[i] of + ord(sfOOXML): FOpenFormats[i] := sfidOOXML_Crypto; + ord(sfOpenDocument): FOpenFormats[i] := sfidOpenDocument_Crypto; + end; + *) AcFileSaveAs.Dialog.Filter := GetFileFormatFilter('|', ';', faWrite, priorityFormatsW); FSaveFormats := GetSpreadFormats(faWrite, priorityFormatsW); diff --git a/applications/spready/spready.lpr b/applications/spready/spready.lpr index fbf904a97..d826f943e 100644 --- a/applications/spready/spready.lpr +++ b/applications/spready/spready.lpr @@ -16,7 +16,6 @@ begin Application.Scaled:=True; Application.Initialize; Application.CreateForm(TMainForm, MainForm); - MainForm.BeforeRun; Application.CreateForm(TZoomForm, ZoomForm); Application.Run; end.