📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Menus, ImgList, ActnList, ExtCtrls, StdActns, Buttons,
ClipBrd, Printers, Jpeg, fChild, fOptions, Grids,
ToolWin, ToolMngr,
{$IFDEF USE_FLEXPLUS} FlexPlus, {$ENDIF}
FlexBase, FlexProps, FlexUtils, FlexControls, FlexPath, FlexFileFormats;
{.DEFINE DEBUG_HISTORY}
{.DEFINE DEBUG_POINTS}
const
WM_SETFLEXFOCUS = WM_USER + 100;
type
TEditMainForm = class(TForm)
sbrMain: TStatusBar;
imgToolIcons: TImageList;
imgStdIcons: TImageList;
pmControl: TPopupMenu;
MainMenu1: TMainMenu;
miFile: TMenuItem;
miNew: TMenuItem;
miOpen: TMenuItem;
miSave: TMenuItem;
miEdit: TMenuItem;
miArrange: TMenuItem;
miWindow: TMenuItem;
miToolBarsDelimiter: TMenuItem;
miHelp: TMenuItem;
miAddToLibrary: TMenuItem;
miView: TMenuItem;
miExit: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
BackOne1: TMenuItem;
ForwardOne1: TMenuItem;
Mnemo1: TMenuItem;
Newscheme1: TMenuItem;
Deletescheme1: TMenuItem;
Newlayer1: TMenuItem;
Deletelayer1: TMenuItem;
Cut1: TMenuItem;
Copy1: TMenuItem;
Paste1: TMenuItem;
Delete1: TMenuItem;
Cascade1: TMenuItem;
TileHorizontally1: TMenuItem;
TileVertically1: TMenuItem;
MinimizeAll1: TMenuItem;
BackOne2: TMenuItem;
Close1: TMenuItem;
Palette1: TMenuItem;
Clone1: TMenuItem;
SaveAs1: TMenuItem;
Properties1: TMenuItem;
BackOne3: TMenuItem;
ForwardOne2: TMenuItem;
Toback1: TMenuItem;
Tofront1: TMenuItem;
Group1: TMenuItem;
Ungroup1: TMenuItem;
Cut2: TMenuItem;
Copy2: TMenuItem;
Paste2: TMenuItem;
Delete2: TMenuItem;
Options1: TMenuItem;
Print1: TMenuItem;
Duplicate1: TMenuItem;
Duplicate2: TMenuItem;
Inspector1: TMenuItem;
Library1: TMenuItem;
Userdata1: TMenuItem;
About1: TMenuItem;
Prview1: TMenuItem;
Import1: TMenuItem;
Export1: TMenuItem;
Layermanager1: TMenuItem;
alMain: TActionList;
acFileNew: TAction;
acFileExit: TAction;
acFileOpen: TAction;
acFileSave: TAction;
acFileSaveAs: TAction;
acEditCut: TAction;
acEditCopy: TAction;
acEditPaste: TAction;
acEditClone: TAction;
acEditUndo: TAction;
acEditRedo: TAction;
acFilePrint: TAction;
acFileImport: TAction;
acFileExport: TAction;
acArrangeForwardOne: TAction;
acArrangeBackOne: TAction;
acArrangeToFront: TAction;
acArrangeToBack: TAction;
acArrangeGroup: TAction;
acArrangeUngroup: TAction;
acLayerNew: TAction;
acLayerDelete: TAction;
acEditDelete: TAction;
acSchemeNew: TAction;
acSchemeDelete: TAction;
acArrangeToBack1: TMenuItem;
acArrangeToFront1: TMenuItem;
acArrangeGroup1: TMenuItem;
acArrangeUngroup1: TMenuItem;
acWindowArrange: TWindowArrange;
acWindowCascade: TWindowCascade;
acWindowClose: TWindowClose;
acWindowMinimizeAll: TWindowMinimizeAll;
acWindowTileHorizontal: TWindowTileHorizontal;
acWindowTileVertical: TWindowTileVertical;
acFileProperties: TAction;
acDockerInspector: TAction;
acDockerLibrary: TAction;
acDockerLayers: TAction;
acDockerPalette: TAction;
acAlignLeft: TAction;
acAlignHCenter: TAction;
acAlignRight: TAction;
acAlignTop: TAction;
acAlignVCenter: TAction;
acAlignBottom: TAction;
acAlignCenter: TAction;
acLibItemAdd: TAction;
acViewOptions: TAction;
acFilePreview: TAction;
acZoomIn: TAction;
acZoomOut: TAction;
acZoomActual: TAction;
acEditDuplicate: TAction;
acTranslateRotateCW: TAction;
acTranslateRotateCCW: TAction;
acTranslateFlipHorz: TAction;
acTranslateFlipVertical: TAction;
acDockerUserData: TAction;
acHelpAbout: TAction;
acGridShow: TAction;
acGridPixelShow: TAction;
acGridSnap: TAction;
acGridOptions: TAction;
acLayerToBack: TAction;
acLayerToFront: TAction;
acDebugPoints: TAction;
acCurveJoin: TAction;
acCurveBreak: TAction;
acCurveClose: TAction;
acCurveToLine: TAction;
acCurveToCurve: TAction;
acCurveBreakApart: TAction;
acCurveCombine: TAction;
acCurveFlatten: TAction;
acCurveConvertToCurve: TAction;
acDebugHistory: TAction;
pd_Main: TPrintDialog;
od_Main: TOpenDialog;
sd_Main: TSaveDialog;
cd_Palette: TColorDialog;
od_Import: TOpenDialog;
sd_Export: TSaveDialog;
panColors: TPanel;
dgColors: TDrawGrid;
sptColors: TSplitter;
cbZoom: TComboBox;
cbActiveLayer: TComboBox;
cbActiveScheme: TComboBox;
tbrTools: TToolBar;
tbrStdTools: TToolBar;
tbrZoomTools: TToolBar;
tbrGridTools: TToolBar;
tbrLayoutTools: TToolBar;
tbrTranslateTools: TToolBar;
tbrAlignTools: TToolBar;
tbrCurveEditTools: TToolBar;
tbtArrowTool: TToolButton;
tbtShapeTool: TToolButton;
tbtZoomTool: TToolButton;
tbtPanTool: TToolButton;
tbtPolylineTool: TToolButton;
tbtPolygonTool: TToolButton;
tbtConnectorTool: TToolButton;
tbtRectTool: TToolButton;
tbtEllipseTool: TToolButton;
tbtTextTool: TToolButton;
tbtPictureTool: TToolButton;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton19: TToolButton;
ToolButton20: TToolButton;
ToolButton21: TToolButton;
ToolButton22: TToolButton;
ToolButton23: TToolButton;
ToolButton24: TToolButton;
ToolButton25: TToolButton;
ToolButton26: TToolButton;
ToolButton27: TToolButton;
ToolButton28: TToolButton;
ToolButton29: TToolButton;
ToolButton30: TToolButton;
ToolButton31: TToolButton;
ToolButton32: TToolButton;
ToolButton33: TToolButton;
ToolButton34: TToolButton;
ToolButton35: TToolButton;
ToolButton36: TToolButton;
ToolButton37: TToolButton;
ToolButton38: TToolButton;
ToolButton39: TToolButton;
ToolButton40: TToolButton;
ToolButton41: TToolButton;
ToolButton42: TToolButton;
ToolButton43: TToolButton;
ToolButton44: TToolButton;
ToolButton45: TToolButton;
ToolButton46: TToolButton;
ToolButton47: TToolButton;
ToolButton48: TToolButton;
ToolButton49: TToolButton;
ToolButton50: TToolButton;
ToolButton51: TToolButton;
ToolButton52: TToolButton;
ToolButton53: TToolButton;
ToolButton54: TToolButton;
ToolButton55: TToolButton;
ToolButton56: TToolButton;
ToolButton57: TToolButton;
ToolButton58: TToolButton;
ToolButton69: TToolButton;
cbrMain: TCoolBar;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tbtToolClick(Sender: TObject);
procedure tbtStdToolsClose(Sender: TObject);
procedure cbActiveLayerChange(Sender: TObject);
procedure cbActiveSchemeChange(Sender: TObject);
procedure cbZoomExit(Sender: TObject);
procedure cbZoomClick(Sender: TObject);
procedure cbZoomKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure acFileNewExecute(Sender: TObject);
procedure acLayerNewExecute(Sender: TObject);
procedure acLayerDeleteExecute(Sender: TObject);
procedure acFileExitExecute(Sender: TObject);
procedure acFileOpenExecute(Sender: TObject);
procedure acSchemeDeleteExecute(Sender: TObject);
procedure acSchemeNewExecute(Sender: TObject);
procedure acFilePropertiesExecute(Sender: TObject);
procedure acArrangeForwardOneExecute(Sender: TObject);
procedure acArrangeBackOneExecute(Sender: TObject);
procedure acArrangeToFrontExecute(Sender: TObject);
procedure acArrangeToBackExecute(Sender: TObject);
procedure acArrangeGroupExecute(Sender: TObject);
procedure acArrangeUngroupExecute(Sender: TObject);
procedure acEditDeleteExecute(Sender: TObject);
procedure acDockerExecute(Sender: TObject);
procedure acEditCopyExecute(Sender: TObject);
procedure acEditPasteExecute(Sender: TObject);
procedure acEditCutExecute(Sender: TObject);
procedure acEditPasteUpdate(Sender: TObject);
procedure acAlignExecute(Sender: TObject);
procedure acFilePreviewExecute(Sender: TObject);
procedure acLibItemAddExecute(Sender: TObject);
procedure acViewOptionsExecute(Sender: TObject);
procedure acFilePrintExecute(Sender: TObject);
procedure acZoomInExecute(Sender: TObject);
procedure acZoomOutExecute(Sender: TObject);
procedure acEditDuplicateExecute(Sender: TObject);
procedure acZoomActualExecute(Sender: TObject);
procedure acHelpAboutExecute(Sender: TObject);
procedure acFileSaveExecute(Sender: TObject);
procedure acTranslateRotateCWExecute(Sender: TObject);
procedure acTranslateRotateCCWExecute(Sender: TObject);
procedure acTranslateFlipHorzExecute(Sender: TObject);
procedure acTranslateFlipVerticalExecute(Sender: TObject);
procedure acFileImportExecute(Sender: TObject);
procedure acFileExportExecute(Sender: TObject);
procedure acGridShowExecute(Sender: TObject);
procedure acGridPixelShowExecute(Sender: TObject);
procedure acGridSnapExecute(Sender: TObject);
procedure acLayerToFrontExecute(Sender: TObject);
procedure acLayerToBackExecute(Sender: TObject);
procedure acDebugPointsExecute(Sender: TObject);
procedure acCurveJoinExecute(Sender: TObject);
procedure acCurveBreakExecute(Sender: TObject);
procedure acCurveCloseExecute(Sender: TObject);
procedure acCurveToLineExecute(Sender: TObject);
procedure acCurveToCurveExecute(Sender: TObject);
procedure acCurveBreakApartExecute(Sender: TObject);
procedure acCurveCombineExecute(Sender: TObject);
procedure acCurveFlattenExecute(Sender: TObject);
procedure acCurveConvertToCurveExecute(Sender: TObject);
procedure acGridOptionsExecute(Sender: TObject);
procedure acDockerPaletteExecute(Sender: TObject);
procedure acEditCloneExecute(Sender: TObject);
procedure acEditUndoExecute(Sender: TObject);
procedure acEditRedoExecute(Sender: TObject);
procedure acDebugHistoryExecute(Sender: TObject);
procedure acFileSaveAsExecute(Sender: TObject);
procedure panColorsResize(Sender: TObject);
procedure sptColorsMoved(Sender: TObject);
procedure dgColorsDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure dgColorsMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure sbrMainDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
const Rect: TRect);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
FActiveFlex: TFlexPanel;
FActiveFlexModified: boolean;
FIniting: boolean;
FIsFileLoading: boolean;
FInspDataNeedUpdate: boolean;
FInspPropsNeedUpdate: boolean;
FFilerProgress: integer;
FToolbarItems: TList;
FColors: TList;
FDockSites: TFormDockSites;
procedure RegisterExternalControls;
function ExecuteImportExportDialog(Kind: TFlexFileSupportKind): integer;
function GetToolScale: integer;
procedure SetCurrentOptions(Flex: TFlexPanel;
const Edited: TOptionEditPages = AllOptions);
function CreateToolWindow(ToolForm: TCustomForm; DockTo: TWinControl;
DockAlign: TAlign = alNone): TToolContainer;
procedure ToolbarItemClick(Sender: TObject);
procedure ToolWinNeedClose(Sender: TObject);
procedure ToolWinPopupChange(Sender: TObject);
procedure ControlPropChanged(Sender: TObject; Prop: TCustomProp);
procedure CheckTools;
procedure CheckToolbars;
procedure CheckToolButtons(Sender: TObject);
procedure CheckUpdates(Flex: TFlexPanel);
procedure ChildChange(Sender: TObject);
procedure HistoryChange(Sender: TObject);
procedure CustomColorsChange(Sender: TObject);
procedure ActiveLibChange(Sender: TObject);
function CreateDocument(const DocName: string): TFlexChildForm;
//function GetActiveFlex: TFlexPanel;
procedure FlexEndSelUpdate(Sender: TObject);
procedure UpdateToolWins(Flex: TFlexPanel);
procedure UpdateLayers(Flex: TFlexPanel);
procedure UpdateSchemes(Flex: TFlexPanel);
procedure UpdateAllOptions(const Edited: TOptionEditPages = AllOptions);
procedure FlexProgress(Sender: TObject; Progress: integer;
Process: TFlexFilerProcess);
function GetInFilerProcess: boolean;
procedure BeginFilerProcess;
procedure EndFilerProcess;
procedure ViewOptionsExecute(Page: TOptionEditPage = opDocument);
procedure RefreshColors;
procedure FormDockDrop(Sender: TObject);
procedure WMSetFlexFocus(var Message: TMessage); message WM_SETFLEXFOCUS;
public
{ Public declarations }
procedure ControlNotify(Sender: TObject; Control: TFlexControl;
Notify: TFlexNotify);
function SaveChanges(ChildForm: TFlexChildForm;
AskName: boolean = true): boolean;
property ActiveFlex: TFlexPanel read FActiveFlex; //GetActiveFlex;
property InFilerProcess: boolean read GetInFilerProcess;
property DockSites: TFormDockSites read FDockSites;
end;
var
EditMainForm: TEditMainForm;
implementation
uses
Consts, ColorBoxSE,
fInspector, fLibrary, fPreview, fDocProps, fUserData, fAboutPrg, fLayers,
{$IFDEF DEBUG_HISTORY} fHistoryDbg, {$ENDIF}
{$IFDEF DEBUG_POINTS} fPointsDbg, {$ENDIF}
FlexHistory, FlexActions;
{$R *.DFM}
const
SDeleteLayer = 'Do you really want to delete layer %s?';
SDeleteScheme = 'Do you really want to delete scheme %s?';
DefaultPalette: array[0..52] of TColor = (
TColor($000000),
TColor($191919),
TColor($333333),
TColor($4C4C4C),
TColor($666666),
TColor($808080),
TColor($999999),
TColor($B2B2B2),
TColor($E5E5E5),
TColor($FFFFFF),
TColor($000080),
TColor($008000),
TColor($008080),
TColor($800000),
TColor($800080),
TColor($808000),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -