📄 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,
TB2ToolWindow, TB2Item, TB2Dock, TB2Toolbar, RxGIF,
{$IFDEF USE_FLEXPLUS} FlexPlus, {$ENDIF}
FlexBase, FlexProps, FlexUtils, FlexControls, FlexPath, FlexFileFormats;
{.DEFINE DEBUG_HISTORY}
{.DEFINE DEBUG_POINTS}
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: TTBToolbar;
tbrStdTools: TTBToolbar;
tbrZoomTools: TTBToolbar;
tbrGridTools: TTBToolbar;
tbrLayoutTools: TTBToolbar;
tbrTranslateTools: TTBToolbar;
tbrAlignTools: TTBToolbar;
tbrCurveEditTools: TTBToolbar;
tbtArrowTool: TTBItem;
tbtShapeTool: TTBItem;
tbtZoomTool: TTBItem;
tbtPanTool: TTBItem;
tbtPolyLineTool: TTBItem;
tbtPolygonTool: TTBItem;
tbtConnectorTool: TTBItem;
tbtRectTool: TTBItem;
tbtEllipseTool: TTBItem;
tbtTextTool: TTBItem;
tbtPictureTool: TTBItem;
TBItem1: TTBItem;
TBItem2: TTBItem;
TBItem3: TTBItem;
TBSeparatorItem1: TTBSeparatorItem;
TBItem4: TTBItem;
TBItem5: TTBItem;
TBItem6: TTBItem;
TBItem7: TTBItem;
TBItem8: TTBItem;
TBItem9: TTBItem;
TBItem10: TTBItem;
TBSeparatorItem2: TTBSeparatorItem;
TBSeparatorItem3: TTBSeparatorItem;
TBItem11: TTBItem;
TBItem12: TTBItem;
TBItem13: TTBItem;
TBSeparatorItem4: TTBSeparatorItem;
TBItem14: TTBItem;
TBControlItem3: TTBControlItem;
TBItem15: TTBItem;
TBItem16: TTBItem;
TBItem17: TTBItem;
TBItem18: TTBItem;
TBItem19: TTBItem;
TBControlItem4: TTBControlItem;
TBSeparatorItem5: TTBSeparatorItem;
TBSeparatorItem6: TTBSeparatorItem;
TBItem20: TTBItem;
TBItem21: TTBItem;
TBItem22: TTBItem;
TBItem23: TTBItem;
TBItem24: TTBItem;
TBItem25: TTBItem;
TBItem26: TTBItem;
TBItem27: TTBItem;
TBSeparatorItem7: TTBSeparatorItem;
TBSeparatorItem8: TTBSeparatorItem;
TBSeparatorItem9: TTBSeparatorItem;
TBItem28: TTBItem;
TBItem29: TTBItem;
TBControlItem1: TTBControlItem;
TBItem30: TTBItem;
TBItem31: TTBItem;
TBItem32: TTBItem;
TBItem33: TTBItem;
TBItem34: TTBItem;
TBItem35: TTBItem;
TBItem36: TTBItem;
TBItem37: TTBItem;
TBItem38: TTBItem;
TBItem39: TTBItem;
TBItem40: TTBItem;
TBItem41: TTBItem;
TBItem42: TTBItem;
TBItem43: TTBItem;
TBItem44: TTBItem;
TBItem45: TTBItem;
TBItem46: TTBItem;
TBItem47: TTBItem;
TBSeparatorItem10: TTBSeparatorItem;
TBItem48: TTBItem;
TBItem49: TTBItem;
tdDockUp: TTBDock;
tdDockLeft: TTBDock;
tdDockRight: TTBDock;
tdDockBottom: TTBDock;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tbtToolClick(Sender: TObject);
procedure tbrStdToolsClose(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);
private
{ Private declarations }
FActiveFlex: TFlexPanel;
FActiveFlexModified: boolean;
FIniting: boolean;
FIsFileLoading: boolean;
FInspDataNeedUpdate: boolean;
FInspPropsNeedUpdate: boolean;
FFilerProgress: integer;
FToolbarItems: TList;
FColors: TList;
procedure RegisterExternalControls;
function ExecuteImportExportDialog(Kind: TFlexFileSupportKind): integer;
function GetToolScale: integer;
procedure SetCurrentOptions(Flex: TFlexPanel;
const Edited: TOptionEditPages = AllOptions);
function CreateToolWindow(ToolForm: TCustomForm;
DockTo: TTBDock): TTBToolWindow;
procedure ToolbarItemClick(Sender: TObject);
procedure ToolWindowClose(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;
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;
end;
var
EditMainForm: TEditMainForm;
implementation
uses
Consts, ColorComboEdit, ToolMngr,
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),
TColor($808080),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -